兼容手机号隐藏、调用部分接口

master
chen 2022-05-20 17:46:27 +08:00
parent 467d0d8ea0
commit 6f0f2c2eac
41 changed files with 2392 additions and 2295 deletions

View File

@ -11,7 +11,7 @@
// //
// #ifdef H5 // #ifdef H5
// this.globalData.hostapi = 'https://7and5.cn'; // this.globalData.hostapi = 'https://7and5.cn';
this.globalData.hostapi = '/web'; // this.globalData.hostapi = '/web';
// #endif // #endif
}, },
onShow: function() { onShow: function() {

View File

@ -1,8 +1,8 @@
@font-face { @font-face {
font-family: "iconfont"; /* Project id 3180711 */ font-family: "iconfont"; /* Project id 3180711 */
src: url('https://at.alicdn.com/t/font_3180711_7fx7wl7itar.woff2?t=1647479558213') format('woff2'), src: url('https://at.alicdn.com/t/font_3180711_635f9bvlgje.woff2?t=1652863135237') format('woff2'),
url('https://at.alicdn.com/t/font_3180711_7fx7wl7itar.woff?t=1647479558213') format('woff'), url('https://at.alicdn.com/t/font_3180711_635f9bvlgje.woff?t=1652863135237') format('woff'),
url('https://at.alicdn.com/t/font_3180711_7fx7wl7itar.ttf?t=1647479558213') format('truetype'); url('https://at.alicdn.com/t/font_3180711_635f9bvlgje.ttf?t=1652863135237') format('truetype');
} }
.icon { .icon {
@ -13,6 +13,66 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-sj-left-top:before {
content: "\e603";
}
.icon-sj-top:before {
content: "\e604";
}
.icon-sj-right-top:before {
content: "\e605";
}
.icon-sj-bottom:before {
content: "\e606";
}
.icon-sj-right-bottom:before {
content: "\e607";
}
.icon-sj-left:before {
content: "\e60d";
}
.icon-zsj:before {
content: "\e6bd";
}
.icon-del:before {
content: "\e718";
}
.icon-cut:before {
content: "\e609";
}
.icon-add:before {
content: "\e60a";
}
.icon-add-picture05:before {
content: "\e639";
}
.icon-add-picture04:before {
content: "\e636";
}
.icon-add-picture03:before {
content: "\e642";
}
.icon-add-picture02:before {
content: "\e8bc";
}
.icon-add-picture01:before {
content: "\e62c";
}
.icon-sandian:before { .icon-sandian:before {
content: "\e769"; content: "\e769";
} }
@ -93,7 +153,7 @@
content: "\e73f"; content: "\e73f";
} }
.icon-shopp-cart:before { .icon-shop-cart:before {
content: "\e73d"; content: "\e73d";
} }

View File

@ -6,7 +6,7 @@
<view class="btn-picker cancel" @click="open = false">取消</view> <view class="btn-picker cancel" @click="open = false">取消</view>
<view class="btn-picker submit" @click="_onSubmit"></view> <view class="btn-picker submit" @click="_onSubmit"></view>
</view> </view>
<view class="picker-body"> <view class="picker-body" v-if="ifDate">
<picker-view :value="value" @change="_onChange"> <picker-view :value="value" @change="_onChange">
<picker-view-column> <picker-view-column>
<view class="column-item" v-for="item in years" :key="item"> <view class="column-item" v-for="item in years" :key="item">
@ -68,6 +68,7 @@
hour: "", hour: "",
minute: "", minute: "",
value: [0, 0, 0, 0, 0], value: [0, 0, 0, 0, 0],
ifDate:false
}; };
}, },
@ -148,6 +149,10 @@
} }
} }
this.minutes = minutes; this.minutes = minutes;
//
setTimeout(()=>{
this.ifDate = true;
},1000)
}, },
show() { show() {

View File

@ -126,18 +126,41 @@
break; break;
case 2: case 2:
// #ifdef APP-PLUS || MP-WEIXIN // #ifdef APP-PLUS || MP-WEIXIN
this.$toolAll.tools.showToast(3)
uni.scanCode({ uni.scanCode({
onlyFromCamera:false, // onlyFromCamera:false, //
scanType: ['qrCode'], // barCode qrCode datamatrixData Matrix pdf417PDF417 scanType: ['qrCode'], // barCode qrCode datamatrixData Matrix pdf417PDF417
autoDecodeCharset:true, // autoDecodeCharset:true, //
success: function (res) { success: function (res) {
console.log('条码类型:' + res.scanType); // console.log(res);
console.log('条码内容:' + res.result); // console.log('' + res.scanType);
// console.log('' + res.result);
let project_number = JSON.parse(res.result).project_number;
if(project_number) {
uni.navigateTo({
url:`/pagesA/repairsPage/repairsPage?project_number=${project_number}`
})
} else {
this.$toolAll.tools.showToast('请出示正确的码')
}
},fail() {
this.$toolAll.tools.showToast('扫描失败')
} }
}); });
// #endif // #endif
// #ifdef H5 // #ifdef H5
this.scanCode(); uni.showModal({
title:'提示',
content:'请使用飞猴云服务APP进行扫一扫是否马上下载APP',
confirmText:'马上下载',
cancelText:'暂不下载',
success: (res) => {
if(res.confirm) {
}
}
})
// this.scanCode();
// #endif // #endif
break; break;
case 3: case 3:
@ -157,12 +180,23 @@
sizeType: ['original'], sizeType: ['original'],
count: 1, count: 1,
success: (res)=> { success: (res)=> {
qrcode.decode(this.getObjectURL(res.tempFiles[0])) // uni.showModal({
// title:''+JSON.stringify(res) ,
// content:JSON.stringify(res.tempFilePaths[0])
// })
qrcode.decode(this.getObjectURL(res.tempFilePaths[0]))
qrcode.callback = (codeRes) => { qrcode.callback = (codeRes) => {
if (codeRes.indexOf('error') >= 0) { if (codeRes.indexOf('error') >= 0) {
this.footList[2].title = 3;
// //
console.log('不合法二维码:' + codeRes); console.log('不合法二维码:' + codeRes);
uni.showModal({
title:'请出示正确的码',
content:res
})
// this.$toolAll.tools.showToast('')
} else { } else {
this.footList[2].title = 2;
// //
let r = this.decodeStr(codeRes) let r = this.decodeStr(codeRes)
// this.qrCodeRes = r // this.qrCodeRes = r
@ -185,6 +219,8 @@
// } // }
// } // }
},fail:(err)=> { },fail:(err)=> {
this.footList[2].title = 1;
this.$toolAll.tools.showToast(err)
this.$toolAll.tools.checkQx(err.code); this.$toolAll.tools.checkQx(err.code);
} }
}); });
@ -192,13 +228,15 @@
// //
getObjectURL(file) { getObjectURL(file) {
var url = null var url = null
if (window.createObjectURL !== undefined) { // basic // if (window.createObjectURL !== undefined) { // basic
url = window.createObjectURL(file) // url = window.createObjectURL(file)
} else if (window.URL !== undefined) { // mozilla(firefox) // } else if (window.URL !== undefined) { // mozilla(firefox)
// url = window.URL.createObjectURL(file)
// } else if (window.webkitURL !== undefined) { // webkit or chrome
// url = window.webkitURL.createObjectURL(file)
// }
url = window.URL.createObjectURL(file) url = window.URL.createObjectURL(file)
} else if (window.webkitURL !== undefined) { // webkit or chrome this.footList[2].title = url;
url = window.webkitURL.createObjectURL(file)
}
return url return url
}, },
// //

1
jsFile/index.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -498,8 +498,13 @@ const tools = {
return !reg_identity.test(identity); return !reg_identity.test(identity);
}, },
// 手机号中间四位用"****"带替 // 手机号中间四位用"****"带替
hideMPhone(phone){ hideMPhone(phone,str=''){
if(str) {
return `${phone.substr(0, 3)}${str.padEnd(4,'x')}${phone.substr(7)}`
} else {
return `${phone.substr(0, 3)}****${phone.substr(7)}` return `${phone.substr(0, 3)}****${phone.substr(7)}`
}
}, },
// 手机号中间加字符 // 手机号中间加字符
phoneAddChat(phone,startNum=3,endNum=7,character=' '){ phoneAddChat(phone,startNum=3,endNum=7,character=' '){

View File

@ -9,12 +9,7 @@
"usingComponents" : true, "usingComponents" : true,
"compilerVersion" : 3, "compilerVersion" : 3,
/* 5+App */ /* 5+App */
"modules" : { "modules" : {},
"Payment" : {},
"Share" : {},
"Maps" : {},
"Geolocation" : {}
},
/* */ /* */
"distribute" : { "distribute" : {
/* */ /* */
@ -23,6 +18,9 @@
"permissions" : [ "permissions" : [
"<uses-feature android:name=\"android.hardware.camera\"/>", "<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_MOCK_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>", "<uses-permission android:name=\"android.permission.CAMERA\"/>",
@ -30,6 +28,7 @@
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.GET_TASKS\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>", "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",

View File

@ -1,6 +1,6 @@
<template> <template>
<view :style="{height: windowHeight+'px'}" style="overflow: hidden;"> <view :style="{height: windowHeight+'px'}" style="overflow: hidden;">
<image src="/static/public/icon-guide.png" mode="widthFix" style="width: 100%;"></image> <image :src="ad_img || '/static/public/icon-guide.png'" mode="widthFix" style="width: 100%;"></image>
</view> </view>
</template> </template>
@ -8,11 +8,18 @@
export default { export default {
data() { data() {
return { return {
windowHeight:uni.getSystemInfoSync().windowHeight windowHeight:uni.getSystemInfoSync().windowHeight,
ad_img:''
} }
}, },
onLoad() { onLoad() {
this.checkContext(); this.checkContext();
this.$requst.get('/universal/api.other/advertise').then(res=>{
if(res.code) {
this.ad_img = res.data.ad_img;
uni.setStorageSync('adImg',this.ad_img);
}
})
}, },
methods: { methods: {
checkContext(){ checkContext(){
@ -45,7 +52,7 @@
'/pages/login/login', '/pages/login/login',
'/pages/tabbar/pagehome/pagehome' '/pages/tabbar/pagehome/pagehome'
] ]
setTimeout(()=>{uni.reLaunch({url:arr[index]})},3000) setTimeout(()=>{uni.reLaunch({url:arr[index]})},6000)
} }
} }
} }

View File

@ -94,26 +94,24 @@
<view class="title-content"> <view class="title-content">
<view class="title"> <view class="title">
<image class="icon" src="../../static/iocn/xmlb.png" mode=""></image> <image class="icon" src="../../static/iocn/xmlb.png" mode=""></image>
<view class="text" style="font-size: 28rpx;"> <view class="text" style="font-size: 28rpx;">项目列表</view>
项目列表
</view> </view>
</view> <picker :value="currentyear" :range="yearArr" @change="bindTimeChange">
<picker mode="date" :value="time" @change="bindTimeChange"> <view class="date disac" :style="{color: chooseyear ? '#000000' : '#999999',border: chooseyear ? '2rpx solid #000000' : '2rpx solid #999999'}">
<view class="date scal09"> {{chooseyear ? chooseyear+'年' : '选择年份'}} <i class="icon icon-zsj" style="font-size: 18rpx;"></i>
选择年份 <image class="icon" src="../../static/iocn/sjx.png" mode=""></image> <!-- <image class="icon flexs" src="../../static/iocn/sjx.png" mode=""></image> -->
</view> </view>
</picker> </picker>
</view> </view>
<view class="project-list-box">
<view class="project-list-content" v-for="item in 5"> <view class="project-list-content" v-for="(item,index) in projectList" :key="index">
<view class="li"> <view class="li">
<view class="text"> <view class="text">{{item.project_name}}</view>
南城校区液晶显示屏 <view class="date">{{item.create_time}}</view>
</view> </view>
<view class="date">
2022/3/1
</view> </view>
<view v-if="!projectList.length" class="disjcac fc" style="height: 120rpx;">
<pitera textStr="查询无果"></pitera>
</view> </view>
</view> </view>
</view> </view>
@ -140,14 +138,15 @@
import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue'; import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
import statusNav from '../../components/status-nav.vue'; import statusNav from '../../components/status-nav.vue';
import {queryDetail} from '@/jsFile/public-api.js'; import {queryDetail} from '@/jsFile/public-api.js';
import pitera from '@/components/nothing/pitera.vue';
export default { export default {
components: { components: {
statusNav, statusNav,
containerSubgroupTwo containerSubgroupTwo,
pitera
}, },
data() { data() {
return { return {
time: '12:01',
dataArr:{ dataArr:{
customerName:"长沙警校", customerName:"长沙警校",
customerCode:"xxxxxxxxx", customerCode:"xxxxxxxxx",
@ -159,8 +158,11 @@
area:"长沙", area:"长沙",
}, },
projectList:[], clientId:'',//id
clientId:''//id yearArr:[],//
currentyear: '',//
chooseyear:'',//
projectList:[]//
} }
}, },
onLoad(op){ onLoad(op){
@ -170,6 +172,13 @@
// //
this.queryDetailEv(); this.queryDetailEv();
} }
let date = new Date();
this.currentyear = date.getFullYear();
for (let i = this.currentyear-10; i <= this.currentyear; i++) {
this.yearArr.push(i);
}
//
this.getProjectList(this.currentyear);
}, },
methods: { methods: {
// //
@ -182,46 +191,58 @@
} }
}) })
}, },
getData(){ //
bindTimeChange(data) {
let index = data.detail.value;
this.chooseyear = this.yearArr[index];
//
this.getProjectList(this.chooseyear);
},
//
getProjectList(year) {
this.$requst.post('/universal/api.search/project_year',{year}).then(res=>{
if(res.code) {
this.projectList = res.data;
}
})
},
essentialInformation(classText){
uni.createSelectorQuery().select('.'+classText).boundingClientRect(data=>{//id
uni.createSelectorQuery().select(".arc-content").boundingClientRect(res=>{//id
uni.pageScrollTo({
duration: 100,//
scrollTop:data.top - res.top -uni.getSystemInfoSync().statusBarHeight-50,//top
})
}).exec()
}).exec();
},
//
copyWxFun(){
uni.setClipboardData({
data: 'hello',
success: function () {}
});
}, },
// //
telFun(){ telFun(){
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: '13608235524' // phoneNumber: '13608235524' //
}); });
},
//
bindTimeChange(data) {
console.log(data.detail.value)
},
essentialInformation(classText){
// uni.createSelectorQuery().select('.'+classText).boundingClientRect(data=>{//id
// uni.createSelectorQuery().select(".arc-content").boundingClientRect(res=>{//id
// uni.pageScrollTo({
// duration: 100,//
// scrollTop:data.top - res.top -uni.getSystemInfoSync().statusBarHeight-40,//top
// })
// }).exec()
// }).exec();
},
//
copyWxFun(){
uni.setClipboardData({
data: 'hello',
success: function () {
console.log('success');
} }
});
}
} }
} }
</script> </script>
<style> <style>
.project-list-box {
min-height: 120rpx;
max-height: 520rpx;
overflow: hidden;
overflow-y: scroll;
}
.project-list-box::-webkit-scrollbar{
display: none;
}
.content { .content {
padding-right: 27rpx; padding-right: 27rpx;
padding-left: 27rpx; padding-left: 27rpx;
@ -328,15 +349,14 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border-radius: 10rpx; border-radius: 10rpx;
border: 2rpx solid #999999;
font-size: 24rpx; font-size: 24rpx;
display: flex; display: flex;
align-items: center; align-items: center;
} }
.project-list .title-content .date .icon { .project-list .title-content .date .icon {
width: 12rpx; /* width: 12rpx;
height: 12rpx; height: 12rpx; */
margin-left: 5rpx; margin-left: 5rpx;
} }

View File

@ -34,57 +34,9 @@
<view class="text">项目概况</view> <view class="text">项目概况</view>
</view> </view>
<view class="project-message-content"> <view class="project-message-content">
<view class="li"> <view class="li" v-for="(item,index) in projectGK" :key="index">
<view class="title-one">客户名称</view> <view class="title-one">{{item.name}}</view>
<view class="text">上海弘焱电子科技有限公司</view> <view class="text">{{item.value}}</view>
</view>
<view class="li">
<view class="title-one">竣工日期</view>
<view class="text">2022/2/26</view>
</view>
<view class="li">
<view class="title-one">质保年限</view>
<view class="text">1 </view>
</view>
<view class="li">
<view class="title-one">产品品类</view>
<view class="text">单色LED屏</view>
</view>
<view class="li">
<view class="title-one">品牌</view>
<view class="text">海康威视</view>
</view>
<view class="li">
<view class="title-one">维保次数</view>
<view class="text">4 </view>
</view>
<view class="li">
<view class="title">规格型号</view>
<view class="text">DS-CK15FI</view>
</view>
<view class="li">
<view class="title">尺寸</view>
<view class="text">4.57m*2.88m</view>
</view>
<view class="li">
<view class="title">合同类型</view>
<view class="text">制作安装</view>
</view>
<view class="li">
<view class="title">合同开始</view>
<view class="text"> 2021/02/26</view>
</view>
<view class="li">
<view class="title">合同结束</view>
<view class="text">2021/02/2</view>
</view>
<view class="li">
<view class="title">应用场景 </view>
<view class="text">会议室</view>
</view>
<view class="li">
<view class="title">安装位置</view>
<view class="text">地下负二层总控电机室</view>
</view> </view>
</view> </view>
<view class="project-message-title"> <view class="project-message-title">
@ -100,17 +52,19 @@
<view class="text">尺寸</view> <view class="text">尺寸</view>
<view class="text">数量</view> <view class="text">数量</view>
</view> </view>
<view class="project-materials-text"> <view class="project-material-box">
<view class="text">接收卡</view> <view class="project-materials-text" v-for="(item,index) in project_material" :key="index">
<view class="text">卡莱特</view> <view class="text clips2">{{item.name}}</view>
<view class="text">5A-75E</view> <view class="text clips2">{{item.brand}}</view>
<view class="text">1033876</view> <view class="text clips2">{{item.model}}</view>
<view class="text">*</view> <view class="text clips2">{{item.batch}}</view>
<view class="text">1</view> <view class="text clips2">{{item.size}}</view>
<view class="text clips2">{{item.quantity}}</view>
</view>
</view> </view>
</view> </view>
<view class="record-nav"> <view class="record-nav">
<view class="li" @click="recordNav(index)" :class="item.state?'on':''" <view class="li" @click="recordNav(index)" :class="item.state?'on':'mo'"
v-for="(item,index) in recordState"> v-for="(item,index) in recordState">
{{item.title}} {{item.title}}
</view> </view>
@ -120,8 +74,8 @@
<view class="list"> <view class="list">
<view class="li pad-z40 fon27 col9" :class="index==0 ? 'activeTrack' : ''" v-for="(item,index) in recordList" :key="index"> <view class="li pad-z40 fon27 col9" :class="index==0 ? 'activeTrack' : ''" v-for="(item,index) in recordList" :key="index">
<view class="disac fw line-h60"> <view class="disac fw line-h60">
<view class="text">{{item.time_line}}</view> <view class="text">{{item.value}}</view>
<!-- <view class="date">2020-05-15 16:00</view> --> <view class="date">{{item.time}}</view>
</view> </view>
</view> </view>
<pitera v-if="recordList.length==0" :textStr="nomoreText"></pitera> <pitera v-if="recordList.length==0" :textStr="nomoreText"></pitera>
@ -168,6 +122,8 @@
recordList:[],// recordList:[],//
nomoreText:'', nomoreText:'',
projectId: "",//id projectId: "",//id
projectGK:[],//
project_material:[]//
} }
}, },
onLoad(op) { onLoad(op) {
@ -188,11 +144,6 @@
} }
this.$requst.get('/universal/api.project/recording',params).then(res=>{ this.$requst.get('/universal/api.project/recording',params).then(res=>{
if(res.code) { if(res.code) {
/**
* {
* time_line:''
* }
*/
this.recordList = res.data.data; this.recordList = res.data.data;
} else { } else {
this.nomoreText = res.msg; this.nomoreText = res.msg;
@ -209,6 +160,8 @@
if (res.code) { if (res.code) {
this.projectObj = res.data; this.projectObj = res.data;
this.imgNum = this.projectObj.completed_img.length; this.imgNum = this.projectObj.completed_img.length;
this.projectGK = this.projectObj.project_overview_min;//
this.project_material = this.projectObj.project_material;//
} else { } else {
} }
@ -232,12 +185,14 @@
page { page {
background-color: #F7F7F7; background-color: #F7F7F7;
} }
.project-material-box {
.content { max-height: 520rpx;
padding: 16rpx 0; overflow: hidden;
overflow-y: scroll;
}
.project-material-box::-webkit-scrollbar{
display: none;
} }
.swiper { .swiper {
width: 100%; width: 100%;
height: 500rpx; height: 500rpx;
@ -304,16 +259,16 @@
} }
.last-date { .last-date {
width: 100%; /* width: 100%; */
padding: 10rpx 13rpx 10rpx; padding: 10rpx 13rpx 10rpx;
box-shadow: 0rpx 5rpx 3rpx rgba(0, 0, 0, 0.1); box-shadow: 0rpx 5rpx 3rpx rgba(0, 0, 0, 0.1);
} }
.last-date-content { .last-date-content {
width: 100%; /* width: 100%; */
height: 57rpx; height: 57rpx;
display: flex; display: flex;
padding-left: 20rpx; padding: 0 20rpx;
align-items: center; align-items: center;
border-radius: 10rpx; border-radius: 10rpx;
background: linear-gradient(to right, #FFEBEB, #F7F7F7); background: linear-gradient(to right, #FFEBEB, #F7F7F7);
@ -395,7 +350,7 @@
margin-top: 10rpx; margin-top: 10rpx;
background-color: #FFFFFF; background-color: #FFFFFF;
justify-content: space-between; justify-content: space-between;
border-bottom: 2rpx solid #D5D4D4; border-bottom: 4rpx solid #D5D4D4;
} }
.record-nav .li { .record-nav .li {
@ -407,18 +362,28 @@
} }
.record-nav .on { .record-nav .on {
color: #00b1ff; color: #00B1FF;
} }
.record-nav .mo {
.record-nav .on::after { color: #000000;
}
.record-nav .on::after,.record-nav .mo::after {
content: ""; content: "";
display: block;
width: 100%; width: 100%;
height: 2rpx; height: 4rpx;
position: absolute; position: absolute;
background-color: #00B1FF; /* #ifdef APP-PLUS || MP-WEIXIN */
top: 68rpx;
/* #endif */
/* #ifdef H5 */
top: 65rpx; top: 65rpx;
/* #endif */
left: 0rpx; left: 0rpx;
} }
.record-nav .on::after{
background-color: #00B1FF;
}
.record-content { .record-content {
padding: 0 52rpx; padding: 0 52rpx;

View File

@ -7,7 +7,7 @@
<view class="queryFunction-head-nav"> <view class="queryFunction-head-nav">
<view class="li" @click="navIndex(index)" <view class="li" @click="navIndex(index)"
:class="[dataIndex==0?'li1':'',dataIndex==1?'li2':'',dataIndex==2?'li3':'' ]" :class="[dataIndex==0?'li1':'',dataIndex==1?'li2':'',dataIndex==2?'li3':'' ]"
v-for="(item,index) in dataList"> v-for="(item,index) in dataList" :key="index">
{{item.title}} {{item.title}}
</view> </view>
</view> </view>
@ -19,7 +19,7 @@
<view class="recently-query-title">最近查询</view> <view class="recently-query-title">最近查询</view>
<view class="recently-query-content" v-for="(item,index) in recentlyQuery "> <view class="recently-query-content" v-for="(item,index) in recentlyQuery ">
<view class="li" @click="goDetail()"> <view class="li" @click="goDetail()">
<image class="icon" src="../../static/iocn/jfd.png" mode=""></image> <image class="icon" src="../../static/iocn/jfd.png" mode="widthFix"></image>
<view class="text-content"> <view class="text-content">
<view class="title clips1">{{item.name}}</view> <view class="title clips1">{{item.name}}</view>
<view class="text">编号{{item.code}}</view> <view class="text">编号{{item.code}}</view>
@ -347,6 +347,7 @@
width: 37rpx; width: 37rpx;
height: 37rpx; height: 37rpx;
margin-right: 40rpx; margin-right: 40rpx;
margin-top: 8rpx;
} }
.recently-query-content .li .text-content { .recently-query-content .li .text-content {

View File

@ -11,24 +11,23 @@
</view> </view>
<view class="settlement-type"> <view class="settlement-type">
<view class="settlement-type-title">结算类型</view> <view class="settlement-type-title">结算类型</view>
<view class="settlement-type-content"> <view class="settlement-type-content">
<view class="li liB"> <view class="li liB">
<view class="text">单次收费</view> <view class="text">{{settlementType[0].title}}</view>
<view class="num">20</view> <view class="num">{{settlementType[0].num}}</view>
</view> </view>
<view class="li liC"> <view class="li liC">
<view class="text">验收扫尾</view> <view class="text">{{settlementType[2].title}}</view>
<view class="num">3</view> <view class="num">{{settlementType[2].num}}</view>
</view> </view>
<view class="li liD"> <view class="li liD">
<view class="text">质保免费</view> <view class="text">{{settlementType[1].title}}</view>
<view class="num">46</view> <view class="num">{{settlementType[1].num}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="text">包年签单</view> <view class="text">{{settlementType[3].title}}</view>
<view class="num">10</view> <view class="num">{{settlementType[3].num}}</view>
</view> </view>
</view> </view>
</view> </view>
@ -41,59 +40,16 @@
<view class="brand-analysis"> <view class="brand-analysis">
<view class="settlement-type-title">品牌分析</view> <view class="settlement-type-title">品牌分析</view>
<view class="brand-analysis-box"> <view class="brand-analysis-box">
<view class="li"> <view class="li" v-for="(item,index) in brandAnalysis" :key="index">
<view class="serial-number">1</view> <view class="serial-number">{{item.id}}</view>
<view class="brand-analysis-center"> <view class="brand-analysis-center">
<view class="title-box"> <view class="title-box">
<view class="title">海康威视</view> <view class="title">{{item.name}}</view>
<view class="cor">10</view> <view class="cor" v-if="item.project_count">{{item.project_count}}</view>
<view class="cor1">23.3%</view> <view class="cor1">{{item.proportion}}%</view>
</view> </view>
<view class="percentage"> <view class="percentage">
<view class="percentage-box" :style="{width:getPercentage(33,900)}"></view> <view class="percentage-box" :class="index%2!=0 ? 'percentage-box-ber' : ''" :style="{width:getPercentage(item.proportion,100)}"></view>
</view>
</view>
<image class="icon" src="../../static/iocn/xl.png" mode=""></image>
</view>
<view class="li">
<view class="serial-number">2</view>
<view class="brand-analysis-center">
<view class="title-box">
<view class="title">海康威视</view>
<view class="cor">10</view>
<view class="cor1">23.3%</view>
</view>
<view class="percentage">
<view class="percentage-box" :style="{width:getPercentage(33,900)}"></view>
</view>
</view>
<image class="icon" src="../../static/iocn/xl.png" mode=""></image>
</view>
<view class="li">
<view class="serial-number">3</view>
<view class="brand-analysis-center">
<view class="title-box">
<view class="title">海康威视</view>
<view class="cor">10</view>
<view class="cor1">23.3%</view>
</view>
<view class="percentage">
<view class="percentage-box" :style="{width:getPercentage(33,100)}"></view>
</view>
</view>
<image class="icon" src="../../static/iocn/xl.png" mode=""></image>
</view>
<view class="li">
<view class="serial-number">4</view>
<view class="brand-analysis-center">
<view class="title-box">
<view class="title">海康威视</view>
<view class="cor">10</view>
<view class="cor1">23.3%</view>
</view>
<view class="percentage">
<view class="percentage-box percentage-box-ber"
:style="{width:getPercentage(33,80)}"></view>
</view> </view>
</view> </view>
<image class="icon" src="../../static/iocn/xl.png" mode=""></image> <image class="icon" src="../../static/iocn/xl.png" mode=""></image>
@ -135,54 +91,86 @@
title: "本月", title: "本月",
}, },
], ],
//
settlementType: [
{title:'单次收费',num:0},
{title:'验收扫尾',num:0},
{title:'质保免费',num:0},
{title:'包年签单',num:0},
],
//
chartData: { chartData: {
series: [{ series: [{
format: "tooltipDemo1", format: "tooltipDemo1",
data: [{ data: []
name: "网络故障",
value: 50,
style: "straight",
color: "#7F90A4"
},
{
name: "模组故障",
value: 30,
style: "straight",
color: "#67E0FF",
style: "straight",
},
{
name: "网络错误",
value: 20,
style: "straight",
color: "#2D8DFE"
},
{
name: "信息错误",
value: 18,
color: "#44D2C1",
style: "straight",
},
{
name: "供电不足",
value: 8,
style: "straight",
color: "#F47936"
}
]
}] }]
}, },
//
brandAnalysis:[],
timestr:'all'
} }
}, },
onLoad() { onLoad() {
console.log(this.getPercentage(33, 66)) // console.log(this.getPercentage(33, 66))
this.checkTJ();
}, },
methods: { methods: {
//
checkTJ() {
this.$requst.get('/universal/api.statistics/statistics_fault',{time:this.timestr}).then(res=>{
if(res.code) {
this.settlementType = [];
//
for (let key in res.data.settlement_type) {
let obj = {
title: key,
num: res.data.settlement_type[key],
}
this.settlementType.push(obj)
}
//
let fault_type = [];
for (let key in res.data.fault_type) {
let obj = {
name: key,
value: parseFloat(res.data.fault_type[key]),
style: "straight",
color: ""
}
fault_type.push(obj)
}
this.chartData.series[0].data = fault_type;
this.chartData.series[0].data[0].color = '#56ddff';
this.chartData.series[0].data[1].color = '#2d8dfe';
this.chartData.series[0].data[2].color = '#7f90a4';
this.chartData.series[0].data[3].color = '#44d2c1';
this.chartData.series[0].data[4].color = '#2d8dfe';
//
this.brandAnalysis = res.data.brand_analyze;
}
})
},
navlistIndexFun(index) { navlistIndexFun(index) {
this.navlistIndex = index this.navlistIndex = index;
switch (index){
case 0:
this.timestr = 'all';
break;
case 1:
this.timestr = 'all';
break;
case 2:
this.timestr = 'yesterday';
break;
case 3:
this.timestr = 'week';
break;
case 4:
this.timestr = 'month';
break;
}
this.checkTJ();
}, },
getPercentage(num, max) { getPercentage(num, max) {
return Math.ceil(((num - 0) / (max - 0)) * 100) + "%" return Math.ceil(((num - 0) / (max - 0)) * 100) + "%"

View File

@ -4,314 +4,165 @@
<container-subgroup-two> <container-subgroup-two>
<view slot="content" style="margin: 0 -30rpx;"> <view slot="content" style="margin: 0 -30rpx;">
<view class="project-overview"> <view class="project-overview">
<view class="settlement-type-title"> <view class="settlement-type-title">项目概况</view>
项目概况
</view>
<view class="project-gross"> <view class="project-gross">
<view class="project-gross-title"> <view class="project-gross-title">累计总项目量</view>
累计总项目量
</view>
<view class="project-gross-num"> <view class="project-gross-num">
<view class="li"> <view class="li">0</view>
0 <view class="li">2</view>
<view class="li">9</view>
<view class="li">8</view>
<view class="li">5</view>
</view> </view>
<view class="li">
2
</view>
<view class="li">
9
</view>
<view class="li">
8
</view>
<view class="li">
5
</view>
</view>
<view class="project-gross-box"> <view class="project-gross-box">
<view class="li"> <view class="li">
<view class="date"> <view class="date">今日</view>
今日
</view>
<view class="date-con"> <view class="date-con">
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">新增项目量</view>
新增项目量 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view>
</view> </view>
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">新增工单量</view>
新增工单量 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view>
</view> </view>
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">项目维保率</view>
项目维保率 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view> </view>
</view> </view>
</view> </view>
</view>
<view class="li"> <view class="li">
<view class="date"> <view class="date">本周</view>
本周
</view>
<view class="date-con"> <view class="date-con">
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">新增项目量</view>
新增项目量 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view>
</view> </view>
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">新增工单量</view>
新增工单量 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view>
</view> </view>
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">项目维保率</view>
项目维保率 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view> </view>
</view> </view>
</view> </view>
</view>
<view class="li"> <view class="li">
<view class="date"> <view class="date">本月</view>
本月
</view>
<view class="date-con"> <view class="date-con">
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">新增项目量</view>
新增项目量 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view>
</view> </view>
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">新增工单量</view>
新增工单量 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view>
</view> </view>
<view class="date-con-li"> <view class="date-con-li">
<view class="text"> <view class="text">项目维保率</view>
项目维保率 <view class="single-amount">0</view>
</view>
<view class="single-amount">
0
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view>
</view> </view>
</view> </view>
<view class="data-icon"> <view class="data-icon">
<view class="settlement-type-title"> <view class="settlement-type-title">年度项目数据明细</view>
年度项目数据明细
</view>
<view class=""> <view class="">
<view class="charts-box"> <view class="charts-box">
<qiun-data-charts type="mix" :chartData="chartData" background="none" /> <qiun-data-charts type="mix" :chartData="chartData" background="none" />
</view> </view>
</view> </view>
</view> </view>
<view class="serve-data"> <view class="serve-data">
<view class="settlement-type-title"> <view class="settlement-type-title">服务数据</view>
服务数据
</view>
<view class="serve-data-box"> <view class="serve-data-box">
<view class="serve-data-left"> <view class="serve-data-left">
<view class="title"> <view class="title">本月服务量</view>
本月服务量
</view>
<view class="text-con"> <view class="text-con">
<view class="li"> <view class="li">
<view class="text"> <view class="text">维保工单:</view>
维保工单: <view class="num">3</view>
</view>
<view class="num">
3
</view>
</view> </view>
<view class="li"> <view class="li">
<view class="text"> <view class="text">巡检服务单:</view>
巡检服务单: <view class="num">65465</view>
</view>
<view class="num">
65465
</view>
</view> </view>
<view class="li"> <view class="li">
<view class="text"> <view class="text">移屏服务单:</view>
移屏服务单: <view class="num">32132</view>
</view>
<view class="num">
32132
</view>
</view> </view>
<view class="li"> <view class="li">
<view class="text"> <view class="text">拆屏工单:</view>
拆屏工单: <view class="num">32132</view>
</view>
<view class="num">
32132
</view>
</view> </view>
</view> </view>
</view> </view>
<view class="serve-data-left"> <view class="serve-data-left">
<view class="title"> <view class="title">累计服务量</view>
累计服务量
</view>
<view class="text-con"> <view class="text-con">
<view class="li"> <view class="li">
<view class="text"> <view class="text">维保工单:</view>
维保工单: <view class="num">3</view>
</view>
<view class="num">
3
</view>
</view> </view>
<view class="li"> <view class="li">
<view class="text"> <view class="text">巡检服务单:</view>
巡检服务单: <view class="num">65465</view>
</view>
<view class="num">
65465
</view>
</view> </view>
<view class="li"> <view class="li">
<view class="text"> <view class="text">移屏服务单:</view>
移屏服务单: <view class="num">32132</view>
</view>
<view class="num">
32132
</view>
</view> </view>
<view class="li"> <view class="li">
<view class="text"> <view class="text">拆屏工单:</view>
拆屏工单: <view class="num">32132</view>
</view>
<view class="num">
32132
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view>
<view class="data-icon"> <view class="data-icon">
<view class="settlement-type-title"> <view class="settlement-type-title">年度服务数据汇总</view>
年度服务数据汇总
</view>
<view class=""> <view class="">
<view class="charts-box"> <view class="charts-box">
<qiun-data-charts type="mix" :chartData="chartDataA" background="none" /> <qiun-data-charts type="mix" :chartData="chartDataA" background="none" />
</view> </view>
</view> </view>
</view> </view>
<view class="expire-project"> <view class="expire-project">
<view class="settlement-type-title settlement-type-titlea"> <view class="settlement-type-title settlement-type-titlea">质保即将到期项目</view>
质保即将到期项目
</view>
<view class="expire-project-box"> <view class="expire-project-box">
<view class="li-title li"> <view class="li-title li">
<view class="name"> <view class="name">项目名称</view>
项目名称 <view class="work-order">工单</view>
</view> <view class="date">日期</view>
<view class="work-order">
工单
</view>
<view class="date">
日期
</view>
</view>
<view class="li-text li">
<view class="name">
1.五岭新天地二期停车场xxxxxxxxxxxxx
</view>
<view class="work-order">
6
</view>
<view class="date">
22/2/24
</view>
</view> </view>
<view class="li-text li"> <view class="li-text li">
<view class="name"> <view class="name">1.五岭新天地二期停车场xxxxxxxxxxxxx</view>
1.五岭新天地二期停车场xxxxxxxxxxxxx <view class="work-order">6</view>
</view> <view class="date">22/2/24</view>
<view class="work-order">
6
</view>
<view class="date">
22/2/24
</view>
</view> </view>
<view class="li-text li"> <view class="li-text li">
<view class="name"> <view class="name">1.五岭新天地二期停车场xxxxxxxxxxxxx</view>
1.五岭新天地二期停车场xxxxxxxxxxxxx <view class="work-order">6</view>
</view> <view class="date">22/2/24</view>
<view class="work-order">
6
</view>
<view class="date">
22/2/24
</view>
</view> </view>
<view class="li-text li"> <view class="li-text li">
<view class="name"> <view class="name">1.五岭新天地二期停车场xxxxxxxxxxxxx</view>
1.五岭新天地二期停车场xxxxxxxxxxxxx <view class="work-order">6</view>
<view class="date">22/2/24</view>
</view> </view>
<view class="work-order"> <view class="li-text li">
6 <view class="name">1.五岭新天地二期停车场xxxxxxxxxxxxx</view>
</view> <view class="work-order">6</view>
<view class="date"> <view class="date">22/2/24</view>
22/2/24
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view>
</container-subgroup-two> </container-subgroup-two>
</view> </view>
</template> </template>
@ -327,59 +178,25 @@
data() { data() {
return { return {
chartDataA: { chartDataA: {
categories: [ categories: ["1月","2月","3月","4月","5月","6月"],
"1月",
"2月",
"3月",
"4月",
"5月",
"6月"
],
series: [ series: [
{ {
name: "", name: "",
index: 1, index: 1,
data: [ data: [40,30,55,110,24,58],
40,
{
value: 30,
},
55,
110,
24,
58
],
type: "column", type: "column",
"color": "#308de1" "color": "#308de1"
}, },
{ {
"name": "", "name": "",
"data": [ "data": [40,30,55,110,24,58],
40,
30,
55,
110,
24,
58
],
"type": "line", "type": "line",
"color": "#308de1" "color": "#308de1"
}, },
{ {
"name": "", "name": "",
"index": 2, "index": 2,
"data": [ "data": [40,30,55,110,24,58],
40,
30,
55,
110,
24,
58
],
"type": "point", "type": "point",
"color": "#308de1" "color": "#308de1"
} }
@ -387,80 +204,57 @@
] ]
}, },
chartData: { chartData: {
categories: [ categories: ["1月","2月","3月","4月","5月","6月"],
"1月",
"2月",
"3月",
"4月",
"5月",
"6月"
],
series: [ series: [
{ {
name: "", name: "",
index: 1, index: 1,
data: [ data: [40,30,55,110,24,58],
40,
{
value: 30,
},
55,
110,
24,
58
],
type: "column", type: "column",
"color": "#fe4141" "color": "#fe4141"
}, },
{ {
"name": "", "name": "",
"data": [ "data": [40,30,55,110,24,58],
40,
30,
55,
110,
24,
58
],
"type": "line", "type": "line",
"color": "#fe4141" "color": "#fe4141"
}, },
{ {
"name": "", "name": "",
"index": 2, "index": 2,
"data": [ "data": [40,30,55,110,24,58],
40,
30,
55,
110,
24,
58
],
"type": "point", "type": "point",
"color": "#fe4141" "color": "#fe4141"
} }
] ]
}, },
} }
}, },
onLoad() {
this.checkSJ();
},
methods: { methods: {
//
checkSJ() {
this.$requst.get('/universal/api.statistics/data_kanban').then(res=>{
if(res.code) {
} }
})
}
}
} }
</script> </script>
<style> <style>
.content { .content {
padding:0rpx 10rpx; padding: 0rpx 10rpx;
} }
.charts-box{
.charts-box {
width: 100%; width: 100%;
} }
.settlement-type-title { .settlement-type-title {
font-size: 32rpx; font-size: 32rpx;
color: #2c2c2c; color: #2c2c2c;
@ -642,7 +436,8 @@
.serve-data-box .serve-data-left:nth-child(2) { .serve-data-box .serve-data-left:nth-child(2) {
padding-left: 32rpx; padding-left: 32rpx;
} }
.expire-project{
.expire-project {
padding: 26rpx 24rpx; padding: 26rpx 24rpx;
margin-top: 27rpx; margin-top: 27rpx;
box-shadow: 0rpx 10rpx 20rpx rgba(0, 0, 0, 0.1); box-shadow: 0rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);
@ -659,29 +454,35 @@
border-radius: 50rpx; border-radius: 50rpx;
background: linear-gradient(#2ed5b6, #2fd9cf) background: linear-gradient(#2ed5b6, #2fd9cf)
} }
.expire-project-box .li-title{
.expire-project-box .li-title {
display: flex; display: flex;
width: 100%; width: 100%;
font-size: 28rpx; font-size: 28rpx;
color: #a2a2a2; color: #a2a2a2;
margin-top: 20rpx; margin-top: 20rpx;
} }
.expire-project-box .li-title .name{
.expire-project-box .li-title .name {
padding-left: 80rpx; padding-left: 80rpx;
box-sizing: border-box; box-sizing: border-box;
} }
.expire-project-box .li .name{
.expire-project-box .li .name {
width: 455rpx; width: 455rpx;
} }
.expire-project-box .li .work-order{
.expire-project-box .li .work-order {
width: 80rpx; width: 80rpx;
text-align: center; text-align: center;
} }
.expire-project-box .li .date{
.expire-project-box .li .date {
flex: 1; flex: 1;
text-align: center; text-align: center;
} }
.expire-project-box .li-text{
.expire-project-box .li-text {
display: flex; display: flex;
padding: 17rpx 0rpx; padding: 17rpx 0rpx;
font-size: 24rpx; font-size: 24rpx;
@ -689,10 +490,11 @@ margin-top: 20rpx;
color: #27cdc9; color: #27cdc9;
} }
.expire-project-box .li-text .name{ .expire-project-box .li-text .name {
color: #333333; color: #333333;
} }
.expire-project-box .li-text:last-child{
.expire-project-box .li-text:last-child {
border: none; border: none;
} }
</style> </style>

View File

@ -4,53 +4,56 @@
<container-subgroup-two> <container-subgroup-two>
<view slot="content" style="margin: -30rpx;"> <view slot="content" style="margin: -30rpx;">
<view class="peopleManagement-input"> <view class="peopleManagement-input">
<input type="text" class="int" value="" placeholder="请输入关键字" placeholder-style="color:#999999;" /> <input type="text" class="int" @confirm="callEv" v-model="keyword" placeholder="请输入关键字" placeholder-style="color:#999999;" />
<image class="search" src="../../static/iocn/ss.png" mode=""></image> <image class="search" @tap="callEv" src="../../static/iocn/ss.png" mode=""></image>
<view class="xian"></view> <view class="xian"></view>
</view> </view>
<view class="peopleManagement-content"> <view class="peopleManagement-content pad-x50">
<view class="li" v-for="(item,index) in dataList"> <view class="li" v-for="(item,index) in dataList">
<view class="head"> <view class="head">
<view class="name" @click="listStateFun(item)"> <view class="name" @click="listStateFun(item)">
<view class="icon" v-if="item.state"></view> <!-- 选中 -->
<view class="icon" v-if="!item.state"></view>
<!-- 未选中 -->
<image class="iconImg" v-else src="../../static/iocn/pxz.png" mode=""></image> <image class="iconImg" v-else src="../../static/iocn/pxz.png" mode=""></image>
<view class=""> <view class="">
{{item.title}}<text class="cor" v-if="item.isJob">()</text> {{item.name}}<text :class="item.isJob ? 'cor' : 'cor1'">({{item.isJob ? '正在作业' : '空闲中'}})</text>
<text class="cor1" v-else>()</text>
</view> </view>
</view> </view>
<view class="state">已审核</view> <view class="state">已审核</view>
</view> </view>
<view class="con"> <view class="con">
<image class="img" src="../../static/del/500478055.png" mode=""></image> <image class="img" :src="item.imgsrc" mode="aspectFill"></image>
<view class="text scal09"> <view class="text scal09">
<view class="code"> <view class="code">
<view class="">编号: YG20211207-001</view> <view class="">编号: {{item.number}}</view>
<view class="iconCon"> <view class="iconCon">
<view v-for="(item,index) in 5"> <view v-for="(item1,index) in 5">
<image class="icon" v-if="index<=2" src="../../static/iocn/6.png" ></image> <image class="icon" v-if="index < item.rate" src="../../static/iocn/6.png" mode="aspectFill" ></image>
<image class="icon" v-else src="../../static/iocn/7.png" ></image> <image class="icon" v-else src="../../static/iocn/7.png" mode="aspectFill" ></image>
</view> </view>
</view> </view>
</view> </view>
<view class="p"> <view class="p">
<view class="one">待处理1 </view> <view class="one">待处理{{item.num}} </view>
<view class="">已处理1305 </view> <view class="">已处理{{item.allnum}} </view>
</view> </view>
<view class="address">当前定位湖南省株洲市xxxxxxxx小区1栋202室</view> <view class="address">当前定位{{item.address}}</view>
</view> </view>
</view> </view>
<view class="bottom"> <view class="bottom">
<view class="bottom-content"> <view class="bottom-content">
联系电话 <text class="cor3">157xxxx8279</text> 联系电话 <text class="cor3">{{$toolAll.tools.hideMPhone(item.phone,'x')}}</text>
</view> </view>
<view class="bottom-content"> <view class="bottom-content">
注册时间 <text class="cor3">2018-12-12</text> 注册时间 <text class="cor3">{{item.time}}</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<button class="submit-button" type="default">派发工单</button> <pitera v-if="total == dataList.length && dataList.length" textStr="暂无更多人员列表"></pitera>
<nothing-page v-if="!dataList.length" content="暂无人员状态数据"></nothing-page>
<button class="submit-button" type="default" :style="{display: tianxuan ? 'flex' : 'none'}">派发工单</button>
</view> </view>
</container-subgroup-two> </container-subgroup-two>
</view> </view>
@ -59,40 +62,80 @@
<script> <script>
import statusNav from '../../components/status-nav.vue'; import statusNav from '../../components/status-nav.vue';
import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue'; import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
import pitera from '@/components/nothing/pitera.vue';
export default { export default {
components: { components: {
statusNav, statusNav,
containerSubgroupTwo containerSubgroupTwo,
pitera
}, },
data() { data() {
return { return {
dataList: [{ dataList: [
title: "陈志远", // {id:'1',name: "",state: false,isJob: false,imgsrc:'https://s6.jpg.cm/2022/02/14/L4oDhy.jpg',number:'YG20211207-001',rate:5,num:2,allnum:2000,address:'xxxxxxxx1202',phone:'173xxxx1088',time:'2018-12-12'},
state: true, // {id:'1',name: "",state: false,isJob: false,imgsrc:'https://s6.jpg.cm/2022/02/14/L4oDhy.jpg',number:'YG20211207-001',rate:3,num:2,allnum:2000,address:'xxxxxxxx1202',phone:'173xxxx1088',time:'2018-12-12'},
isJob: true, // {id:'1',name: "",state: false,isJob: false,imgsrc:'https://s6.jpg.cm/2022/02/14/L4oDhy.jpg',number:'YG20211207-001',rate:2,num:2,allnum:2000,address:'xxxxxxxx1202',phone:'173xxxx1088',time:'2018-12-12'},
],
}, keyword:'',//
{ page:1,
title: "瓜皮", list_rows:20,
state: false, total:0,
isJob: true, tianxuan:''
},
{
title: "瓜娃子",
state: true,
isJob: false,
},
{
title: "憨批",
state: true,
isJob: false,
},
]
} }
}, },
onReachBottom() {
if(this.total!=this.dataList.length) {
this.page++;
this.checkList();
}
},
onLoad() {
this.checkList();
},
methods: { methods: {
//
checkList() {
let params = {
list_rows:this.list_rows,
page:this.page,
keyword:this.keyword
}
this.$requst.get('/universal/api.user/user_location',params).then(res=>{
if(res.code) {
this.total = res.data.total;
if(this.page==1) this.dataList = [];
if(res.data.data.length) {
res.data.data.forEach(item=>{
let obj = {
id:1,
name: item.name,
imgsrc:'https://s6.jpg.cm/2022/02/14/L4oDhy.jpg',
number:'YG20211207-001',
rate:5,
num:2,
allnum:2000,
address:item.address,
phone:'17366921088',
time:item.register_time,
state: false,
isJob: item.is_working ? true : false,
}
this.dataList.push(obj);
})
}
}
})
},
//
callEv() {
this.page = 1;
this.checkList();
},
listStateFun(item){ listStateFun(item){
item.state=!item.state this.dataList.forEach(item1=>{item1.state = false})
item.state = !item.state;
item.state ? this.tianxuan = item.id : '';
console.log(this.tianxuan);
} }
} }
} }
@ -100,6 +143,11 @@
<style> <style>
.submit-button { .submit-button {
position: fixed;
display: none;
bottom: 30rpx;
left: 50%;
transform: translateX(-50%);
width: 686rpx; width: 686rpx;
border-radius: 50rpx; border-radius: 50rpx;
height: 90rpx; height: 90rpx;
@ -144,7 +192,6 @@
top: 50%; top: 50%;
margin-top: -14rpx; margin-top: -14rpx;
} }
.peopleManagement-content .li { .peopleManagement-content .li {
background-color: #FFFFFF; background-color: #FFFFFF;
padding-right: 30rpx; padding-right: 30rpx;
@ -222,8 +269,8 @@
} }
.peopleManagement-content .li .con .text .icon { .peopleManagement-content .li .con .text .icon {
width: 24rpx; width: 28rpx;
height: 24rpx; height: 26rpx;
margin-left: 10rpx; margin-left: 10rpx;
} }

View File

@ -99,7 +99,7 @@
return { return {
autoplay: true, autoplay: true,
interval: 3000, interval: 3000,
index: 1, index: 0,
projectId: "", projectId: "",
recordState: [{ recordState: [{
title: '维保记录', title: '维保记录',

View File

@ -34,7 +34,7 @@
<view class="project-list"> <view class="project-list">
<view class="li animated fadeIn" @click="projectDetailsFun(item.project_id)" v-for="(item,index) in dataList.data" :key="index"> <view class="li animated fadeIn" @click="projectDetailsFun(item.project_id)" v-for="(item,index) in dataList.data" :key="index">
<view class="message"> <view class="message">
<image class="img" src="../../static/del/img001.png" mode="aspectFill" lazy-load></image> <image class="img" :src="item.completed_img" mode="aspectFill" lazy-load></image>
<view class="text disjb fc" style="height: 180rpx;"> <view class="text disjb fc" style="height: 180rpx;">
<view class="clips1 fon24 bold">{{item.project_name}}</view> <view class="clips1 fon24 bold">{{item.project_name}}</view>
<view class="line-h38" style="margin-left: -20rpx;height: 80%;"> <view class="line-h38" style="margin-left: -20rpx;height: 80%;">

View File

@ -18,18 +18,21 @@
<view class="fault-type-title padding">维保类型</view> <view class="fault-type-title padding">维保类型</view>
<view class="padding fault-type-content"> <view class="padding fault-type-content">
<view class="li" @click="repairsTypeFun(index)" :class="index==indexType?'on':''" <view class="li" @click="repairsTypeFun(index)" :class="index==indexType?'on':''"
v-for="(item,index) in faultTypeData"> v-for="(item,index) in faultTypeData" :key="index">
{{item.name}} {{item.name}}
</view> </view>
</view> </view>
<view class="padding"> <view class="padding">
<view class="devicename" v-if="current==0"> <view class="devicename" v-if="current==0">
<input type="text" class="fon28 width100 col3" v-model="data.project_number" placeholder="请填写设备编号或扫描二维码" /> <input type="text" class="fon28 width100 col3" v-model="data.project_number"
<image @click="scanCodeFun" class="sm flexs" src="../../static/iocn/sm.png" lazy-load mode=""></image> placeholder="请填写设备编号或扫描二维码" />
<image @click="scanCodeFun" class="sm flexs" src="../../static/iocn/sm.png" lazy-load mode="">
</image>
</view> </view>
<input v-else v-model="data.device_name" class="devicename" placeholder="请填写设备名称和型号(例:华为LED" /> <input v-else v-model="data.device_name" class="devicename" placeholder="请填写设备名称和型号(例:华为LED" />
<view class="fault-pictures radius10" @click="chooseImg"> <view class="fault-pictures radius10" @click="chooseImg">
<image class="fault-pictures-img" v-if="imgsrcArr.length>=1" :src="imgsrcArr[0]" mode="aspectFill"></image> <image class="fault-pictures-img" v-if="imgsrcArr.length>=1" :src="imgsrcArr[0]"
mode="aspectFill"></image>
<view class="fault-pictures-con" v-else> <view class="fault-pictures-con" v-else>
<image class="img" src="../../static/iocn/gz.png" lazy-load mode="aspectFill"></image> <image class="img" src="../../static/iocn/gz.png" lazy-load mode="aspectFill"></image>
<view class="text">添加维保图片</view> <view class="text">添加维保图片</view>
@ -38,13 +41,19 @@
<textarea v-model="data.fault_describe" class="fault-description radius10" placeholder="维保情况描述" <textarea v-model="data.fault_describe" class="fault-description radius10" placeholder="维保情况描述"
placeholder-class="fault-description-text" /> placeholder-class="fault-description-text" />
<view class="detailed-address inputCss"> <view class="detailed-address inputCss">
<input type="text" v-model="data.service_address" class="fon26 width100 mar-y20" placeholder="请输入详细的上门服务地址" placeholder-class="inputCss-input" /> <input type="text" v-model="data.service_address" class="fon26 width100 mar-y20"
<image @click="mapFun" src="../../static/iocn/map.png" class="map flexs" mode="aspectFill"></image> placeholder="请输入详细的上门服务地址" placeholder-class="inputCss-input" />
<image @click="mapFun" src="../../static/iocn/map.png" class="map flexs" mode="aspectFill">
</image>
</view> </view>
<input type="text" class="inputCss" v-model="data.username" placeholder="请填写您的姓名" placeholder-class="inputCss-input" /> <input type="text" class="inputCss" v-model="data.username" placeholder="请填写您的姓名"
<input type="number" maxlength="11" class="inputCss" v-model="data.phone" placeholder="请填写联系电话" placeholder-class="inputCss-input" /> placeholder-class="inputCss-input" />
<input type="text" class="inputCss" @tap="openDatetimePicker" disabled v-model="data.visit_time" placeholder="请选择上门时间" placeholder-class="inputCss-input" /> <input type="number" maxlength="11" class="inputCss" v-model="data.phone" placeholder="请填写联系电话"
<yy-mm-dd-hh-ss ref="myPicker" @submit="handleSubmit" :start-year="2022" :end-year="2122"></yy-mm-dd-hh-ss> placeholder-class="inputCss-input" />
<input type="text" class="inputCss" @tap="openDatetimePicker" disabled v-model="data.visit_time"
placeholder="请选择上门时间" placeholder-class="inputCss-input" />
<yy-mm-dd-hh-ss ref="myPicker" @submit="handleSubmit" :start-year="2022" :end-year="2122">
</yy-mm-dd-hh-ss>
<button class="submit-button" @click="submitButton()" type="default">提交维保申报</button> <button class="submit-button" @click="submitButton()" type="default">提交维保申报</button>
</view> </view>
</view> </view>
@ -54,12 +63,12 @@
<script> <script>
import yyMmDdHhSs from '@/components/dates/yy-mm-dd-hh-ss.vue'; import yyMmDdHhSs from '@/components/dates/yy-mm-dd-hh-ss.vue';
import {getFaultType} from '@/jsFile/public-api.js';
import { import {
uploadImg getFaultType,uploadImg
} from '@/jsFile/public-api.js'; } from '@/jsFile/public-api.js';
// qrcode.js qrcode.js // qrcode.js qrcode.js
var qrcode = require('@/jsFile/qrcode.js'); var qrcode = require('@/jsFile/qrcode.js');
// import jweixin from '@/jsFile/index.js';
export default { export default {
components: { components: {
yyMmDdHhSs yyMmDdHhSs
@ -81,19 +90,20 @@
}, },
imgsrcArr: [], imgsrcArr: [],
indexType: 0, indexType: 0,
navDataState: ["有设备","无设备"], navDataState: ["有设备", "无设备"],
current:0, current: 0,
faultTypeData: [] faultTypeData: []
} }
}, },
onLoad() { onLoad(op) {
this.getType() this.getType();
if (op.project_number) this.data.project_number = op.project_number;
}, },
methods: { methods: {
submitButton() { submitButton() {
this.data.fault_type = this.faultTypeData[this.indexType].id this.data.fault_type = this.faultTypeData[this.indexType].id
if(this.current) { if (this.current) {
if (!this.data.device_name) { if (!this.data.device_name) {
this.$toolAll.tools.showToast("请填写设备名称或型号"); this.$toolAll.tools.showToast("请填写设备名称或型号");
return return
@ -112,13 +122,15 @@
this.$toolAll.tools.showToast("请正确填写您的电话"); this.$toolAll.tools.showToast("请正确填写您的电话");
return return
} }
this.data.is_device = this.current ? 0 : 1;//0: 1 this.data.is_device = this.current ? 0 : 1; //0: 1
this.$requst.post('/universal/api.order/repair', this.data).then(res => { this.$requst.post('/universal/api.order/repair', this.data).then(res => {
if (res.code) { if (res.code) {
this.$toolAll.tools.showToast('提交成功'); this.$toolAll.tools.showToast('提交成功');
setTimeout(()=>{ setTimeout(() => {
uni.navigateBack({delta:1}) uni.navigateBack({
},1000) delta: 1
})
}, 1000)
} else { } else {
this.$toolAll.tools.showToast(res.msg); this.$toolAll.tools.showToast(res.msg);
} }
@ -126,7 +138,7 @@
}, },
// //
getType() { getType() {
getFaultType().then(res=>{ getFaultType().then(res => {
if (res.code) { if (res.code) {
this.faultTypeData = [...res.data] this.faultTypeData = [...res.data]
} else { } else {
@ -151,13 +163,16 @@
imgsrc.forEach(item => { imgsrc.forEach(item => {
this.imgsrcArr.push(item); this.imgsrcArr.push(item);
}) })
uploadImg({path: res.tempFilePaths[0]}).then(res => { uploadImg({
path: res.tempFilePaths[0]
}).then(res => {
if (res.code) { if (res.code) {
this.$toolAll.tools.showToast('上传成功'); this.$toolAll.tools.showToast('上传成功');
this.data.fault_picture = res.data.id this.data.fault_picture = res.data.id
} }
}) })
},fail:(err)=> { },
fail: (err) => {
this.$toolAll.tools.checkQx(err.code); this.$toolAll.tools.checkQx(err.code);
} }
}) })
@ -165,12 +180,14 @@
scanCodeFun() { scanCodeFun() {
// #ifdef APP-PLUS || MP-WEIXIN // #ifdef APP-PLUS || MP-WEIXIN
uni.scanCode({ uni.scanCode({
onlyFromCamera:false, // onlyFromCamera: false, //
scanType: ['qrCode'], // barCode qrCode datamatrixData Matrix pdf417PDF417 scanType: ['qrCode'], // barCode qrCode datamatrixData Matrix pdf417PDF417
autoDecodeCharset:true, // autoDecodeCharset: true, //
success: function (res) { success: (res) => {
console.log('条码类型:' + res.scanType); console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result); console.log('条码内容:' + res.result);
let project_number = JSON.parse(res.result).project_number;
if (project_number) this.data.project_number = project_number;
} }
}); });
// #endif // #endif
@ -184,35 +201,25 @@
uni.chooseImage({ uni.chooseImage({
sizeType: ['original'], sizeType: ['original'],
count: 1, count: 1,
success: (res)=> { success: (res) => {
qrcode.decode(this.getObjectURL(res.tempFiles[0])) const tempFilePaths = res.tempFilePaths[0] //
qrcode.callback = (codeRes) => { qrcode.decode(tempFilePaths); //
if (codeRes.indexOf('error') >= 0) { qrcode.callback = function(res1) {
// // error decoding QR Code
console.log('不合法二维码:' + codeRes); if (res1 == "error decoding QR Code") {
uni.showToast({
title: "识别二维码失败,请重新上传!",
duration: 2000,
icon: 'none'
})
} else { } else {
// //
let r = this.decodeStr(codeRes) let r = this.decodeStr(codeRes)
// this.qrCodeRes = r console.log(res1)
console.log(r);
} }
} }
// const tempFilePaths = res.tempFilePaths[0] // },
// qrcode.decode(tempFilePaths); // fail: (err) => {
// qrcode.callback = function(res1) {
// // error decoding QR Code
// if (res1 == "error decoding QR Code") {
// uni.showToast({
// title: "",
// duration: 2000,
// icon: 'none'
// })
// } else {
// //
// console.log(res1)
// }
// }
},fail:(err)=> {
this.$toolAll.tools.checkQx(err.code); this.$toolAll.tools.checkQx(err.code);
} }
}); });
@ -269,26 +276,20 @@
return out; return out;
}, },
mapFun() { mapFun() {
const that = this let that = this
uni.getLocation({
type: 'gcj02', //uni.openLocation
success: function(res) {
const latitude = res.latitude;
const longitude = res.longitude;
uni.chooseLocation({ uni.chooseLocation({
success: function(res) { success: (res) => {
that.data.service_address = res.address that.data.service_address = res.address
} }
}); })
// uni.openLocation({ // uni.getLocation({
// latitude: latitude, // type: 'wgs84', //uni.openLocationgcj02
// longitude: longitude, // success: function(res) {
// success: function () { // console.log(res);
// console.log('success'); // let latitude = res.latitude;
// let longitude = res.longitude;
// } // }
// }); // });
}
});
}, },
repairsNavFun(index) { repairsNavFun(index) {
this.current = index; this.current = index;

View File

@ -1,5 +1,5 @@
<template> <template>
<view class="content" > <view class="content">
<statusNav returnColor="#c2c2c2" navBarTitle="工单详情"></statusNav> <statusNav returnColor="#c2c2c2" navBarTitle="工单详情"></statusNav>
<container-subgroup-two> <container-subgroup-two>
<view slot="content" style="margin:-30rpx -30rpx 0 -30rpx;"> <view slot="content" style="margin:-30rpx -30rpx 0 -30rpx;">
@ -28,7 +28,8 @@
</view> </view>
<view class="li"> <view class="li">
<view class="title">项目名称</view> <view class="title">项目名称</view>
<input type="text" disabled class="input input-black" :value="detailObj.project_name" /> <input type="text" disabled class="input input-black"
:value="detailObj.project_name" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">产品类型</view> <view class="title">产品类型</view>
@ -36,7 +37,8 @@
</view> </view>
<view class="li"> <view class="li">
<view class="title">安装位置</view> <view class="title">安装位置</view>
<input type="text" disabled class="input" :value="detailObj.installation_location" /> <input type="text" disabled class="input"
:value="detailObj.installation_location" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">维保类型</view> <view class="title">维保类型</view>
@ -44,11 +46,13 @@
</view> </view>
<view class="li"> <view class="li">
<view class="title">紧急程度</view> <view class="title">紧急程度</view>
<input type="text" disabled class="input" :value="detailObj.emergency_level_view" /> <input type="text" disabled class="input"
:value="detailObj.emergency_level_view" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">维保说明</view> <view class="title">维保说明</view>
<textarea style="overflow: hidden;overflow-y: scroll;height: auto;max-height: 200rpx;" disabled class="input" :value="detailObj.failure_description" /> <view style="overflow: hidden;overflow-y: scroll;max-height: 200rpx;"
class="input line-h36">{{detailObj.failure_description}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="title">维保图片</view> <view class="title">维保图片</view>
@ -68,7 +72,8 @@
</view> </view>
<view class="li"> <view class="li">
<view class="title">服务方式</view> <view class="title">服务方式</view>
<input type="text" disabled class="input input-black" :value="detailObj.service_method_view" /> <input type="text" disabled class="input input-black"
:value="detailObj.service_method_view" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">定位地址</view> <view class="title">定位地址</view>
@ -92,15 +97,18 @@
</view> </view>
<view class="li"> <view class="li">
<view class="title">结束时间</view> <view class="title">结束时间</view>
<input type="text" disabled class="input " :value="handleDetail.completion_times" /> <input type="text" disabled class="input "
:value="handleDetail.completion_times" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">维保用时 </view> <view class="title">维保用时 </view>
<input type="text" disabled class="input input-black" :value="handleDetail.maintenance_time" /> <input type="text" disabled class="input input-black"
:value="handleDetail.maintenance_time" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">维保费用</view> <view class="title">维保费用</view>
<input type="text" disabled class="input " :value="`¥${handleDetail.pay_price}元`" /> <input type="text" disabled class="input "
:value="`¥${handleDetail.pay_price}元`" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">等待时长</view> <view class="title">等待时长</view>
@ -108,7 +116,8 @@
</view> </view>
<view class="li"> <view class="li">
<view class="title">主维保人</view> <view class="title">主维保人</view>
<input type="text" disabled class="input " :value="handleDetail.maintenance_name" /> <input type="text" disabled class="input "
:value="handleDetail.maintenance_name" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">更换配件</view> <view class="title">更换配件</view>
@ -129,23 +138,28 @@
</view> </view>
<view class="li"> <view class="li">
<view class="title">工作描述</view> <view class="title">工作描述</view>
<textarea style="overflow: hidden;overflow-y: scroll;height: auto;max-height: 200rpx;" disabled class="input " :value="handleDetail.work_explanation"/> <view style="overflow: hidden;overflow-y: scroll;max-height: 200rpx;"
class="input line-h36">{{handleDetail.work_explanation}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="title">维保图片</view> <view class="title">维保图片</view>
<view class="input add-display"> <view class="input add-display">
<view class=""> <view class="">
<image class="img" v-for="(item,index) in handleDetail.maintenance_pictures" :key="index" :src="item" mode="aspectFill" lazy-load></image> <image class="img"
v-for="(item,index) in handleDetail.maintenance_pictures"
:key="index" :src="item" mode="aspectFill" lazy-load></image>
</view> </view>
</view> </view>
</view> </view>
<view class="li"> <view class="li">
<view class="title">维保原因</view> <view class="title">维保原因</view>
<textarea auto-height disabled class="input " :value="handleDetail.failure_reason"/> <textarea auto-height disabled class="input "
:value="handleDetail.failure_reason" />
</view> </view>
<view class="li"> <view class="li">
<view class="title">维保人员 </view> <view class="title">维保人员 </view>
<input type="text" disabled class="input " :value="handleDetail.maintenance_more" /> <input type="text" disabled class="input "
:value="handleDetail.maintenance_more" />
</view> </view>
</view> </view>
</view> </view>
@ -162,7 +176,8 @@
<view class="state" :style="{backgroundColor: statusColor}">状态{{statusText}}</view> <view class="state" :style="{backgroundColor: statusColor}">状态{{statusText}}</view>
<view class="list"> <view class="list">
<view class="li" v-for="(item,index) in replaceParts" :key="index"> <view class="li" v-for="(item,index) in replaceParts" :key="index">
<image class="img" src="../../static/del/img001.png" mode="aspectFill" lazy-load></image> <image class="img" src="../../static/del/img001.png" mode="aspectFill"
lazy-load></image>
<view class="text-content"> <view class="text-content">
<view class="title"> <view class="title">
<view class="text clips1">全彩LED显示屏电源</view> <view class="text clips1">全彩LED显示屏电源</view>
@ -187,7 +202,8 @@
</view> </view>
</view> </view>
<view class="li"> <view class="li">
<image class="img" src="../../static/del/img001.png" mode="aspectFill" lazy-load></image> <image class="img" src="../../static/del/img001.png" mode="aspectFill"
lazy-load></image>
<view class="text-content"> <view class="text-content">
<view class="title"> <view class="title">
<view class="text clips1">全彩LED显示屏电源</view> <view class="text clips1">全彩LED显示屏电源</view>
@ -221,14 +237,16 @@
<view class="record-content"> <view class="record-content">
<view class="title">过程追踪</view> <view class="title">过程追踪</view>
<view class="list"> <view class="list">
<view class="li pad-z40 fon27 col9 pad-x20" :class="index==0 ? 'activeTrack' : ''" v-for="(item,index) in handleProcess.time_line" :key="index"> <view class="li pad-z40 fon27 col9 pad-x20"
:class="index==0 ? 'activeTrack' : ''"
v-for="(item,index) in handleProcess.time_line" :key="index">
<view class="disac fw line-h40"> <view class="disac fw line-h40">
<view class="text">{{item.value}}</view> <view class="text">{{item.value}}</view>
<view class="date">{{item.create_time}}</view> <view class="date">{{item.create_time}}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="button" @tap="goEvaluate()"></view> <view v-if="order_status==8" class="button" @tap="goEvaluate()"></view>
</view> </view>
</view> </view>
</view> </view>
@ -246,7 +264,9 @@
import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue'; import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
import statusNav from '../../components/status-nav.vue'; import statusNav from '../../components/status-nav.vue';
import footTabOne from "../../components/foot-tabs/foot-tab-one.vue" import footTabOne from "../../components/foot-tabs/foot-tab-one.vue"
import {handleWorkOrderGet} from '../../jsFile/public-api.js'; import {
handleWorkOrderGet
} from '../../jsFile/public-api.js';
export default { export default {
components: { components: {
footTabOne, footTabOne,
@ -256,10 +276,10 @@
data() { data() {
return { return {
swiperCurrent: 0, swiperCurrent: 0,
swiHeight:0, swiHeight: 0,
statusBarHeight:uni.getSystemInfoSync().statusBarHeight + 40, statusBarHeight: uni.getSystemInfoSync().statusBarHeight + 40,
statusText:'',// statusText: '', //
statusColor:'',// statusColor: '', //
detailsNav: [{ detailsNav: [{
title: "基础信息", title: "基础信息",
state: true state: true
@ -278,11 +298,12 @@
}, },
], ],
orderId:'',//id orderId: '', //id
detailObj:{},// detailObj: {}, //
handleDetail:{},// handleDetail: {}, //
replaceParts:[],// replaceParts: [], //
handleProcess:{}// handleProcess: {}, //
order_status: '' //
} }
}, },
mounted() { mounted() {
@ -296,8 +317,7 @@
onLoad(op) { onLoad(op) {
this.statusText = op.statusText; this.statusText = op.statusText;
this.statusColor = op.statusColor; this.statusColor = op.statusColor;
console.log(this.statusColor,299); if (op.orderId != undefined) {
if(op.orderId!=undefined) {
this.orderId = op.orderId; this.orderId = op.orderId;
// //
this.getDetail(1); this.getDetail(1);
@ -305,16 +325,17 @@
}, },
methods: { methods: {
// //
getDetail(type){ getDetail(type) {
let params = { let params = {
order_id:this.orderId, order_id: this.orderId,
type type
} }
this.$requst.get('/universal/api.order/order_info',params).then(res=>{ this.$requst.get('/universal/api.order/order_info', params).then(res => {
if(res.code) { if (res.code) {
switch (type){ switch (type) {
case 1: case 1:
this.detailObj = res.data; this.detailObj = res.data;
this.order_status = this.detailObj.order_status;
break; break;
case 2: case 2:
this.handleDetail = res.data; this.handleDetail = res.data;
@ -326,12 +347,12 @@
this.handleProcess = res.data; this.handleProcess = res.data;
break; break;
} }
setTimeout(()=>{ setTimeout(() => {
const query = uni.createSelectorQuery().in(this); const query = uni.createSelectorQuery().in(this);
query.select(`#swi${type}`).boundingClientRect(data => { query.select(`#swi${type}`).boundingClientRect(data => {
this.swiHeight = data.height this.swiHeight = data.height
}).exec(); }).exec();
},100) }, 500)
} }
}) })
}, },
@ -371,14 +392,14 @@
this.detailSwitch(index); this.detailSwitch(index);
}, },
// //
detailSwitch(index){ detailSwitch(index) {
let type = [1,2,3,4][index]; let type = [1, 2, 3, 4][index];
this.getDetail(type); this.getDetail(type);
}, },
// //
goEvaluate() { goEvaluate() {
uni.navigateTo({ uni.navigateTo({
url:`/pagesB/i-want-evaluate/i-want-evaluate?id=${this.orderId}` url: `/pagesB/i-want-evaluate/i-want-evaluate?orderId=${this.orderId}`
}) })
} }
@ -420,9 +441,9 @@
.work-order-from .li .title { .work-order-from .li .title {
font-size: 26rpx; font-size: 26rpx;
text-align: right; text-align: right;
white-space: nowrap; white-space: nowrap;
/* flex: 1; */ /* flex: 1; */
} }
.work-order-from .li .input { .work-order-from .li .input {
@ -723,6 +744,7 @@ white-space: nowrap;
.work-order-from .isrideo .on .icon-content { .work-order-from .isrideo .on .icon-content {
background-color: #D81E06 background-color: #D81E06
} }
.record-content { .record-content {
padding: 0 52rpx; padding: 0 52rpx;
@ -746,6 +768,7 @@ white-space: nowrap;
border-left: 2rpx solid #999999; border-left: 2rpx solid #999999;
} }
.record-content .list .li::before { .record-content .list .li::before {
content: ''; content: '';
display: block; display: block;
@ -756,18 +779,21 @@ white-space: nowrap;
background-color: #999999; background-color: #999999;
border-radius: 100%; border-radius: 100%;
} }
.record-content .list .activeTrack { .record-content .list .activeTrack {
color: #0084ff; color: #0084ff;
padding-top: 0rpx; padding-top: 0rpx;
} }
.record-content .list .activeTrack::before { .record-content .list .activeTrack::before {
background-color: rgba(0,132,255,.5); background-color: rgba(0, 132, 255, .5);
top: -4rpx; top: -4rpx;
width: 22rpx; width: 22rpx;
height: 22rpx; height: 22rpx;
left: -12rpx; left: -12rpx;
z-index: 1; z-index: 1;
} }
.record-content .list .activeTrack::after { .record-content .list .activeTrack::after {
content: ''; content: '';
display: block; display: block;
@ -779,10 +805,12 @@ white-space: nowrap;
background-color: #999999; background-color: #999999;
border-radius: 100%; border-radius: 100%;
} }
.record-content .list .activeTrack .line-h40 { .record-content .list .activeTrack .line-h40 {
margin-top: -20rpx; margin-top: -20rpx;
line-height: 60rpx; line-height: 60rpx;
} }
.record-content .list .date { .record-content .list .date {
margin-left: 20rpx; margin-left: 20rpx;
} }

View File

@ -13,13 +13,13 @@
<text></text> <text></text>
<text></text> <text></text>
</view> </view>
<input class="input" placeholder="请填写联系人称呼" type="text" placeholder-class="placeClass" /> <input class="input" v-model="name" placeholder="请填写联系人称呼" type="text" placeholder-class="placeClass" />
</view> </view>
<view class="payReturnVisit-input"> <view class="payReturnVisit-input">
<view class="title"> <view class="title">
联系电话 联系电话
</view> </view>
<input class="input" placeholder="请输入手机号码" type="text" placeholder-class="placeClass" /> <input class="input" maxlength="11" v-model="phone" placeholder="请输入手机号码" type="number" placeholder-class="placeClass" />
</view> </view>
<view class="payReturnVisit-input"> <view class="payReturnVisit-input">
<view class="title"> <view class="title">
@ -27,30 +27,31 @@
<text></text> <text></text>
<text></text> <text></text>
</view> </view>
<input class="input" placeholder="请输入微信号码" type="text" placeholder-class="placeClass" /> <input class="input" v-model="wxcode" placeholder="请输入微信号码" type="text" placeholder-class="placeClass" />
</view> </view>
<view class="payReturnVisit-textarea"> <view class="payReturnVisit-textarea">
<view class="title"> <view class="title">
回访内容 回访内容
</view> </view>
<textarea class="textarea" placeholder="请输入回访内容" placeholder-class="placeClass" /> <textarea class="textarea" v-model="content" placeholder="请输入回访内容" placeholder-class="placeClass" />
</view> </view>
<view class="payReturnVisit-input"> <view class="payReturnVisit-input">
<view class="title"> <view class="title">
客服电话 客服电话
</view> </view>
<input class="input" placeholder="400-765-9876" type="text" placeholder-class="placeClass" /> <input class="input" disabled placeholder="400-765-9876" type="text" placeholder-class="placeClass" />
</view> </view>
<view class="payReturnVisit-input"> <view class="payReturnVisit-input">
<view class="title"> <view class="title">
回访时间 回访时间
</view> </view>
<input class="input" placeholder="2022/02/13 14:18:00" type="text" placeholder-class="placeClass" /> <input class="input colc" v-model="custmertime" disabled placeholder="2022/02/13 14:18:00" type="text" placeholder-class="placeClass" />
<!-- <input class="input" v-model="custmertime" @tap="openDatetimePicker" disabled placeholder="2022/02/13 14:18:00" type="text" placeholder-class="placeClass" />
<yy-mm-dd-hh-ss ref="myPicker" @submit="handleSubmit" :start-year="2022" :end-year="2122"></yy-mm-dd-hh-ss> -->
</view> </view>
</view> </view>
<button class="submit-button" type="default">确认发送</button> <button class="submit-button" @tap="setVisit" type="default">确认发送</button>
</view> </view>
</container-subgroup-two> </container-subgroup-two>
@ -60,25 +61,89 @@
<script> <script>
import statusNav from '../../components/status-nav.vue'; import statusNav from '../../components/status-nav.vue';
import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue'; import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
import yyMmDdHhSs from '@/components/dates/yy-mm-dd-hh-ss.vue';
export default { export default {
components: { components: {
statusNav, statusNav,
containerSubgroupTwo, containerSubgroupTwo,
yyMmDdHhSs
}, },
data() { data() {
return { return {
name:'',//
phone:'',//
wxcode:'',//
content:'',//访
custmerphone:'400-765-9876',//
custmertime:'',//访
workId:'',//id
flag:true
} }
}, },
onLoad(op) {
if(op.id) {this.workId = op.id}
this.custmertime = this.$toolAll.tools.returnCurrentTime('/',1);
},
methods: { methods: {
// 访
setVisit() {
if(this.checkEmpty() && this.flag) {
this.flag = false;
uni.showLoading({
title:'正在发送',
mask:true
})
let parmas = {
id:this.workId,
a:this.name,
b:this.phone,
c:this.wxcode,
d:this.custmerphone,
e:this.custmertime,
f:this.content
}
this.$request.post('',parmas).then(res=>{
if(res.code) {
// ,
this.$toolAll.tools.automaticBack();
}
uni.hideLoading();
this.flag = true;
})
}
},
//
checkEmpty() {
let result = false;
if(!this.name) {
this.$toolAll.tools.showToast('请填写联系人称呼');
} else if(this.$toolAll.tools.isPhone(this.phone)) {
this.$toolAll.tools.showToast('请正确填写手机号码');
} else if(!this.content) {
this.$toolAll.tools.showToast('请输入回访内容');
} else {
result = true;
}
return result;
},
//
openDatetimePicker() {
this.$refs.myPicker.show();
},
//
handleSubmit(e) {
this.custmertime = `${e.year}/${e.month}/${e.day} ${e.hour}:${e.minute}:00`;
},
} }
} }
</script> </script>
<style> <style>
.placeClass {
color: #cccccc;
}
.placeClass{color:#cccccc;}
.hint { .hint {
color: #358ff0; color: #358ff0;
font-size: 24rpx; font-size: 24rpx;

View File

@ -200,7 +200,7 @@
methods: { methods: {
// app // app
getAddress(){ getAddress(){
this.$toolAll.tools.showToast('正在获取定位...') // this.$toolAll.tools.showToast('...')
// #ifdef APP-PLUS // #ifdef APP-PLUS
if(this.addressFlag) { if(this.addressFlag) {
this.addressFlag = false; this.addressFlag = false;
@ -208,7 +208,7 @@
type: 'gcj02', type: 'gcj02',
geocode:true, geocode:true,
success: (res)=> { success: (res)=> {
this.$toolAll.tools.showToast('定位成功'); // this.$toolAll.tools.showToast('');
// console.log(res,'app'); // console.log(res,'app');
this.targetObj.address = `${res.address.province}${res.address.city}${res.address.district}${res.address.street || ''}${res.address.streetNum || ''}${res.address.poiName || ''}` this.targetObj.address = `${res.address.province}${res.address.city}${res.address.district}${res.address.street || ''}${res.address.streetNum || ''}${res.address.poiName || ''}`
setTimeout(()=>{ setTimeout(()=>{
@ -240,7 +240,7 @@
location: {latitude: res.latitude, longitude: res.longitude}, location: {latitude: res.latitude, longitude: res.longitude},
success:(res)=> { success:(res)=> {
console.log(res,'WX'); console.log(res,'WX');
this.$toolAll.tools.showToast('定位成功'); // this.$toolAll.tools.showToast('');
this.targetObj.address = `${res.result.address_component.province}${res.result.address_component.city}${res.result.address_component.district}${res.result.address_component.street || ''}(${res.result.address_component.street_number || ''})` this.targetObj.address = `${res.result.address_component.province}${res.result.address_component.city}${res.result.address_component.district}${res.result.address_component.street || ''}(${res.result.address_component.street_number || ''})`
setTimeout(()=>{ setTimeout(()=>{
this.addressFlag = true; this.addressFlag = true;
@ -267,7 +267,7 @@
let str = `output=jsonp&key=QNHBZ-55RKF-OMFJJ-NPU7O-EPSDH-ACBAA&location=${res.latitude},${res.longitude}` let str = `output=jsonp&key=QNHBZ-55RKF-OMFJJ-NPU7O-EPSDH-ACBAA&location=${res.latitude},${res.longitude}`
jsonp('https://apis.map.qq.com/ws/geocoder/v1/?'+str,{}).then(res=>{ jsonp('https://apis.map.qq.com/ws/geocoder/v1/?'+str,{}).then(res=>{
console.log(res,'H5'); console.log(res,'H5');
this.$toolAll.tools.showToast('定位成功'); // this.$toolAll.tools.showToast('');
this.targetObj.address = `${res.result.address_component.province}${res.result.address_component.city}${res.result.address_component.district}${res.result.address_component.street || ''}(${res.result.address_component.street_number || ''})` this.targetObj.address = `${res.result.address_component.province}${res.result.address_component.city}${res.result.address_component.district}${res.result.address_component.street || ''}(${res.result.address_component.street_number || ''})`
setTimeout(()=>{ setTimeout(()=>{
this.addressFlag = true; this.addressFlag = true;

View File

@ -35,7 +35,7 @@
<view class="li animated fadeIn" @click="projectDetailsFun(item.order_status,item.order_id,item.btn.attributes.text,item.btn.attributes.color)" v-for="(item,index) in dataList" :key="index"> <view class="li animated fadeIn" @click="projectDetailsFun(item.order_status,item.order_id,item.btn.attributes.text,item.btn.attributes.color)" v-for="(item,index) in dataList" :key="index">
<view class="work-order-code">工单编号{{item.order_number}}</view> <view class="work-order-code">工单编号{{item.order_number}}</view>
<view class="message"> <view class="message">
<image class="img" src="../../static/del/img001.png" mode="aspectFill" lazy-load></image> <image class="img" :src="item.cover_picture" mode="aspectFill" lazy-load></image>
<view class="text disjb fc" style="height: 180rpx;"> <view class="text disjb fc" style="height: 180rpx;">
<view class="title flexs"> <view class="title flexs">
<view class="text clips1">{{item.project_name}}</view> <view class="text clips1">{{item.project_name}}</view>
@ -43,7 +43,7 @@
</view> </view>
<view class="disjb fc line-h36" style="margin-left: -20rpx;"> <view class="disjb fc line-h36" style="margin-left: -20rpx;">
<view class="serial-number scal09"> <view class="serial-number scal09">
<view class="type">#{{item.fault_type}}#</view> <view class="type" v-if="item.fault_type">#{{item.fault_type}}#</view>
<view class="date">{{item.failure_time}}</view> <view class="date">{{item.failure_time}}</view>
</view> </view>
<view class="specification scal09"> <view class="specification scal09">

View File

@ -1,5 +1,5 @@
<template> <template>
<view class="content"> <view class="content" :style="{paddingBottom: bottomHeight}">
<statusNav returnColor="#c2c2c2" navBarTitle="处理工单"></statusNav> <statusNav returnColor="#c2c2c2" navBarTitle="处理工单"></statusNav>
<container-subgroup-two> <container-subgroup-two>
<view slot="content" style="margin: -20rpx -25rpx 0rpx;"> <view slot="content" style="margin: -20rpx -25rpx 0rpx;">
@ -99,17 +99,13 @@
</view> </view>
<view class="customerSignature"> <view class="customerSignature">
<view class="title"> <view class="title">
<view class=""> <view class="">客户签名</view>
客户签名 <view class="" @click="clearClick" v-if="!isCanvas"> </view>
</view>
<view class="" @click="clearClick" v-if="!isCanvas">
清除
</view>
</view> </view>
<view class='contents'> <view class='contents'>
<canvas class='firstCanvas' canvas-id="firstCanvas" @touchmove='move' <canvas class='firstCanvas' canvas-id="firstCanvas" @touchmove='move'
@touchstart='start($event)' @touchend='end' @touchcancel='cancel' @longtap='tap' @touchstart='start($event)' @touchend='end' @touchcancel='cancel' @longtap='tap'
disable-scroll='true' @error='error'> disable-scroll='false' @error='error'>
</canvas> </canvas>
<!-- <button @click='clearClick'>清除</button> --> <!-- <button @click='clearClick'>清除</button> -->
<!-- <button @click='saveClick'>保存图片</button> --> <!-- <button @click='saveClick'>保存图片</button> -->
@ -134,7 +130,7 @@
</view> </view>
<view class="remark"> <view class="remark">
<view class="title">备注内容</view> <view class="title">备注内容</view>
<textarea class="textarea" v-model="remarkText" placeholder="请输入备注内容" /> <textarea @focus="remarkEv" class="textarea" v-model="remarkText" placeholder="请输入备注内容" />
</view> </view>
</view> </view>
<button class="submit-button" type="default" @tap="submitEv"></button> <button class="submit-button" type="default" @tap="submitEv"></button>
@ -197,13 +193,13 @@
billingIndex:0,// 0: 1 2 billingIndex:0,// 0: 1 2
isMoney: true,// isMoney: true,//
isCanvas: true, isCanvas: true,
signImage: '',//
ifCollectionCode:false,// ifCollectionCode:false,//
remarkText:'',// remarkText:'',//
saveTimer:null,// saveTimer:null,//
flag:true,// flag:true,//
signId:'',//id signId:'',//id
orderId:''//id orderId:'',//id
bottomHeight:''
} }
}, },
computed:{ computed:{
@ -306,9 +302,12 @@
} }
handleWorkOrderSubmit(params).then(res=>{ handleWorkOrderSubmit(params).then(res=>{
if(res.code) { if(res.code) {
this.$toolAll.tools.showToast('提交成功,即将返回工单列表');
setTimeout(()=>{
uni.navigateTo({ uni.navigateTo({
url: `/pagesA/workOrder/workorderTwo?id=${this.orderId}` url: `/pagesA/workOrder/workOrderLlsit`
}) })
},2000)
} else { } else {
this.$toolAll.tools.showToast(res.msg); this.$toolAll.tools.showToast(res.msg);
} }
@ -325,7 +324,7 @@
// } else // } else
if(!this.paymentMode) { if(!this.paymentMode) {
this.$toolAll.tools.showToast('请选择付款方式'); this.$toolAll.tools.showToast('请选择付款方式');
} else if(!this.signImage) { } else if(!this.signId) {
this.$toolAll.tools.showToast('请签名'); this.$toolAll.tools.showToast('请签名');
} else { } else {
result = true; result = true;
@ -437,23 +436,54 @@
}, },
// //
saveClick: function() { saveClick: function() {
var that = this
uni.canvasToTempFilePath({ uni.canvasToTempFilePath({
canvasId: 'firstCanvas', canvasId: 'firstCanvas',
success: function(res) { success:(res)=> {
// base64 // base64
base64ToPath(res.tempFilePath).then(path => { // #ifdef APP-PLUS
that.signImage = path; uni.saveImageToPhotosAlbum({
console.log(that.signImage); filePath: res.tempFilePath,
uploadImg({path:that.signImage}).then(res=>{ success:(resimg)=> {
if(res.code) { uploadImg({path:resimg.path}).then(result=>{
that.signId = res.data.id; if(result.code) {
this.signId = result.data.id;
} else { } else {
that.$toolAll.tools.showToast(res.msg); this.$toolAll.tools.showToast(result.msg);
} }
}) })
}).catch(error => {})
} }
});
// #endif
// #ifdef MP-WEIXIN
wx.saveFile({
tempFilePath: res.tempFilePath,
success:(wximg)=> {
uploadImg({path:wximg.savedFilePath}).then(result=>{
if(result.code) {
this.signId = result.data.id;
} else {
this.$toolAll.tools.showToast(result.msg);
}
})
}
})
// #endif
// #ifdef H5
uploadImg({path:res.tempFilePath}).then(result=>{
if(result.code) {
this.signId = result.data.id;
} else {
this.$toolAll.tools.showToast(result.msg);
}
})
// #endif
}
})
},
remarkEv(){
uni.onKeyboardHeightChange(res => {
console.log(res.height)
this.bottomHeight = res.height + 'px'
}) })
} }
} }
@ -696,6 +726,8 @@
background-color: #FFFFFF; background-color: #FFFFFF;
width: 100%; width: 100%;
height: 320rpx; height: 320rpx;
border: 2rpx dashed #cccccc;
border-radius: 10rpx;
} }
.contents image { .contents image {
@ -704,11 +736,6 @@
background-color: orange; background-color: orange;
} }
.firstCanvas {
border: 2rpx dashed #cccccc;
border-radius: 10rpx;
}
.money-receiving-code { .money-receiving-code {
width: 100%; width: 100%;
height: 80rpx; height: 80rpx;

View File

@ -5,10 +5,12 @@
<view slot="content" style="margin: -6rpx -30rpx 0 -30rpx;"> <view slot="content" style="margin: -6rpx -30rpx 0 -30rpx;">
<view class="bacf fon28 pad-sx30 pad-zy40"> <view class="bacf fon28 pad-sx30 pad-zy40">
<view class=" bold disjbac fw line-h50"> <view class=" bold disjbac fw line-h50">
<view class="mar-y20">{{project_name}}</view> <!-- 项目名称 -->
<view>{{project_number}}</view> <view class="mar-y20">{{orderObj.project_name || '项目名称'}}</view>
<!-- 项目编号 -->
<view>{{orderObj.order_number || '项目编号'}}</view>
</view> </view>
<view class="mar-s10 mar-x30" style="color: #6b6a6a;">服务时间{{project_time}}</view> <view class="mar-s10 mar-x30" style="color: #6b6a6a;">服务时间{{orderObj.order_time}}</view>
<view class="radius20 pad30 dis" style="border: 2rpx solid #dcdcdc;"> <view class="radius20 pad30 dis" style="border: 2rpx solid #dcdcdc;">
<image src="/static/public/icon-evaluate-pen.png" mode="widthFix" lazy-load style="width: 25rpx;height: 30rpx;"></image> <image src="/static/public/icon-evaluate-pen.png" mode="widthFix" lazy-load style="width: 25rpx;height: 30rpx;"></image>
<textarea v-model="serviceExperience" maxlength="-1" class="fon24 mar-z20 width100" style="height: 200rpx;" placeholder="写下您的服务体验,帮助我们更好的管理提升" placeholder-style="font-size:24rpx;color: #aaaaaa;" /> <textarea v-model="serviceExperience" maxlength="-1" class="fon24 mar-z20 width100" style="height: 200rpx;" placeholder="写下您的服务体验,帮助我们更好的管理提升" placeholder-style="font-size:24rpx;color: #aaaaaa;" />
@ -50,14 +52,17 @@
{imgsrc:''} {imgsrc:''}
], ],
tempImgId:[], tempImgId:[],
project_name:'长沙XXXXXXXXX项目名称',
project_number:'GD20220108-1002',
project_time:'2022-01-11 15 : 27',
rateNum:5,// rateNum:5,//
attitudeNum:5,// attitudeNum:5,//
serviceExperience:'',// serviceExperience:'',//
flag:true, flag:true,
orderId:''//id orderId:'',//id
orderObj: {
order_id:28,
order_number:"",
order_time:"",
project_name:""
}
} }
}, },
onLoad(op) { onLoad(op) {
@ -70,7 +75,7 @@
getOrderInfo(){ getOrderInfo(){
this.$requst.get('/universal/api.order/evaluate_order',{order_id:this.orderId}).then(res=>{ this.$requst.get('/universal/api.order/evaluate_order',{order_id:this.orderId}).then(res=>{
if(res.code) { if(res.code) {
this.orderObj = res.data;
} else { } else {
this.$toolAll.tools.showToast(res.msg); this.$toolAll.tools.showToast(res.msg);
} }

View File

@ -106,7 +106,7 @@
id_card_no:'', // id_card_no:'', //
imgList:[], imgList:[],
flag:true, flag:true,
temporaryImg:[] temporaryImg:[],
} }
}, },
onLoad() { onLoad() {
@ -140,7 +140,13 @@
this.imgList[3] = res.data.agreement_document; this.imgList[3] = res.data.agreement_document;
// //
this.imgList[4] = res.data.skills_certificate; this.imgList[4] = res.data.skills_certificate;
// this.temporaryImg = this.imgList[4]; this.temporaryImg = [
res.data.idcard_front_value,
res.data.idcard_reverse_value,
res.data.accident_insurance_value,
res.data.agreement_document_value,
res.data.skills_certificate_value
];
} }
}) })
}, },
@ -164,12 +170,14 @@
} }
this.$requst.post('/universal/api.user/user_info',params).then(res=>{ this.$requst.post('/universal/api.user/user_info',params).then(res=>{
if(res.code==1){ if(res.code){
this.$toolAll.tools.showToast('保存成功'); this.$toolAll.tools.showToast('保存成功');
setTimeout(()=>{ setTimeout(()=>{
uni.navigateBack({delta:1}) uni.navigateBack({delta:1})
},1000) },1000)
} else {
this.$toolAll.tools.showToast(res.msg);
} }
}) })
} else { } else {

View File

@ -3,7 +3,7 @@
<status-nav :navBarTitle="detailTitle" returnColor="#c2c2c2"></status-nav> <status-nav :navBarTitle="detailTitle" returnColor="#c2c2c2"></status-nav>
<container-subgroup> <container-subgroup>
<view slot="content" style="margin: 0 -30rpx;" class="fon28"> <view slot="content" style="margin: 0 -30rpx;" class="fon28">
<view class="bacf pad-zy30 pad-sx20" style="margin-top: -10rpx;"> <view class="bacf pad-zy30 pad-sx20" style="margin-top: -10rpx;" v-if="dataObj">
<!-- 标题 --> <!-- 标题 -->
<view class="fon38 col0 tcenter">{{dataObj.title}}</view> <view class="fon38 col0 tcenter">{{dataObj.title}}</view>
<!-- 时间 --> <!-- 时间 -->
@ -25,15 +25,17 @@
export default { export default {
data() { data() {
return { return {
detailTitle:'', detailTitle:'方案详情',
current:0, current:0,
dataObj:{}, dataObj:'',
rich_text:''// rich_text:''//
} }
}, },
onLoad(op) { onLoad(op) {
if(op.index!=undefined) {
this.detailTitle = `${['方案详情','详情概述','产品详情'][op.index*1]}`; this.detailTitle = `${['方案详情','详情概述','产品详情'][op.index*1]}`;
this.current = op.index*1; this.current = op.index*1;
}
this.getDetail(op.id); this.getDetail(op.id);
}, },
methods: { methods: {

View File

@ -42,7 +42,7 @@
data() { data() {
return { return {
rateNum:5, rateNum:5,
ifPlanFault:'', ifPlanFault:'解决方案',
current:'', current:'',
size:20, size:20,
page:1, page:1,
@ -59,8 +59,10 @@
} }
}, },
onLoad(op) { onLoad(op) {
if(op.index!=undefined) {
this.ifPlanFault = `${['解决方案','常见故障'][op.index*1]}`; this.ifPlanFault = `${['解决方案','常见故障'][op.index*1]}`;
this.current = op.index*1; this.current = op.index*1;
}
if(op.type_id!=undefined) this.type_id = op.type_id; if(op.type_id!=undefined) this.type_id = op.type_id;
this.getPlanFault(); this.getPlanFault();
}, },

View File

@ -17,7 +17,6 @@
</view> </view>
<view class="bbot disac pad-sx30 pad-zy30"> <view class="bbot disac pad-sx30 pad-zy30">
<view class="mar-y30 flexs disjbac" :style="{width: eareWidth + 'px'}"> <view><text style="color: red;">*</text></view></view> <view class="mar-y30 flexs disjbac" :style="{width: eareWidth + 'px'}"> <view><text style="color: red;">*</text></view></view>
<!-- <view class="disjbac width100" @tap="chooseRegion"> -->
<view class="disjbac width100" @tap="openPicker"> <view class="disjbac width100" @tap="openPicker">
<view>{{region}}</view> <view>{{region}}</view>
<i class="icon icon-next col9" style="font-size: 30rpx;"></i> <i class="icon icon-next col9" style="font-size: 30rpx;"></i>
@ -68,12 +67,12 @@
cityName:'', cityName:'',
townName:'', townName:'',
}, },
region:'湖南省株洲市芦淞区', region:'',//
newProvice:'', newProvice:'',///
newCity:'', newCity:'',///
newDistrict:'', newDistrict:'',//
detailed_address:'', detailed_address:'',//
remarkText:'', remarkText:'',//
eareWidth:'', eareWidth:'',
flag:true flag:true
} }
@ -83,6 +82,7 @@
query.select('#timeBox').boundingClientRect((rect) => { query.select('#timeBox').boundingClientRect((rect) => {
this.eareWidth = rect.width; this.eareWidth = rect.width;
}).exec() }).exec()
this.getDistrict();
}, },
methods: { methods: {
// //
@ -93,20 +93,22 @@
let params = { let params = {
is_working:this.personnelStatus[this.statusNum].id,// is_working:this.personnelStatus[this.statusNum].id,//
working_hours:this.workingHours[this.hoursNum].id ,// working_hours:this.workingHours[this.hoursNum].id ,//
area_id:272,
area:this.region,// area:this.region,//
address:this.detailed_address,// address:this.detailed_address,//
service_distance: parseFloat(this.serviceRange[this.rangeNum]) || 0,// service_distance: parseFloat(this.serviceRange[this.rangeNum]) || 0,//
remark:this.remarkText// remark:this.remarkText//
} }
console.log(params,87); this.$requst.post('/universal/api.user/service_area',params).then(res=>{
// this.$requst.post('/universal/api.user/service_area',params).then(res=>{ if(res.code) {
// if(res.code) { this.$toolAll.tools.showToast('保存成功');
// this.$toolAll.tools.showToast(''); setTimeout(()=>{
// setTimeout(()=>{ uni.navigateBack({delta:1})
// uni.navigateBack({delta:1}) },1000)
// },1000) } else {
// } this.$toolAll.tools.showToast(res.msg);
// }) }
})
} }
} }
}, },
@ -122,33 +124,6 @@
} }
return result; return result;
}, },
//
chooseRegion(){
uni.getLocation({
type: 'gcj02', //uni.openLocation
success: function (res) {
const latitude = res.latitude;
const longitude = res.longitude;
console.log(latitude,longitude,78);
uni.chooseLocation({
success: function (res) {
console.log(res,81);
console.log('位置名称:' + res.name);
console.log('详细地址:' + res.address);
console.log('纬度:' + res.latitude);
console.log('经度:' + res.longitude);
}
});
// uni.openLocation({
// latitude: latitude,
// longitude: longitude,
// success: function () {
// console.log('success');
// }
// });
}
});
},
getDistrict() { getDistrict() {
let ya = this let ya = this
uni.getLocation({ uni.getLocation({
@ -158,11 +133,22 @@
header: { header: {
'Content-Type':'application/json' 'Content-Type':'application/json'
}, },
success:function(res) { success:(res)=> {
// console.log('',res) // console.log('',res)
ya.newProvice = res.data.result.address_component.province let provinceStr = res.data.result.address_component.province;
ya.newCity = res.data.result.address_component.city if(provinceStr=='北京市') {
ya.newDistrict = res.data.result.address_component.district provinceStr = '北京';
} else if(provinceStr=='天津市') {
provinceStr = '天津';
} else if(provinceStr=='上海市') {
provinceStr = '上海';
} else if(provinceStr=='重庆市') {
provinceStr = '重庆';
}
ya.newProvice = provinceStr;
ya.newCity = res.data.result.address_component.city;
ya.newDistrict = res.data.result.address_component.district;
this.region = ya.newProvice + ya.newCity + ya.newDistrict;
} }
}) })
}, },

View File

@ -142,7 +142,61 @@
}, },
// //
checkEdition(){ checkEdition(){
console.log('检测版本事件'); // status int 10
// note string
// android_url string
// ios_url string
//
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
var platform = uni.getSystemInfoSync().platform;
this.$requst.get('/universal/api.other/update_version',{version:widgetInfo.version}).then(res=>{
if(res.code) {
//
if (res.data.status) {
//content \n
uni.showModal({
title:`检测到有新版本`,
content:res.data.note,
confirmText:'更新',
cancelText:'取消',
success: (result) => {
if(result.confirm) {
//iospkgUrlAppandroid
if(platform == 'ios'){
// plus.runtime.launchApplication({
// action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`
// }, function(e) {
// console.log('Open system default browser failed: ' + e.message);
// });
plus.runtime.openURL(res.data.ios_url);
}else{
var downloadTask = uni.downloadFile({
url: res.data.android_url,
success: (downloadResult) => {
if (downloadResult.statusCode === 200) {
plus.runtime.install(downloadResult.tempFilePath, {force: false }, function() {
plus.runtime.restart();
}, (e) => {
uni.showToast({
title: '安装升级包失败',
icon: 'none'
})
});
}
}
});
downloadTask.onProgressUpdate((e)=>{
//
// this.progress = e.progress
})
}
}
}
})
}
}
})
});
}, },
// //
gopageEv(index) { gopageEv(index) {

View File

@ -1,19 +0,0 @@
<!-- 暂无更多组件参数的使用
组件一
<nothing-page
:imgSrc="图片路径可相对、可绝对、可网络"
:currentType="0,1,2,..."
:content="'-- NO MORE --'"></nothing-page>
组件二
<pitera
:textColor="'#999999'"
:textStr="'-- NO MORE --'"
:textFontSize="'24rpx'"
:ifBold="false"
:ifCenter="true"
:paddingStr="'20rpx'"></pitera>
-->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 B

After

Width:  |  Height:  |  Size: 769 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 519 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 635 B

View File

@ -64,7 +64,7 @@ const cfu = {
if(index==0){ if(index==0){
return '随便用'+item.data+'年' return '随便用'+item.data+'年'
}else{ }else{
return item.name+item.data+'' return item.name+item.data+'%'
} }
}, },
"pieDemo":function(val, index, series){ "pieDemo":function(val, index, series){