兼容手机号隐藏、调用部分接口
2
App.vue
|
@ -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() {
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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:二维码, datamatrix:Data Matrix 码, pdf417:PDF417 条码
|
scanType: ['qrCode'], // barCode:一维码, qrCode:二维码, datamatrix:Data Matrix 码, pdf417:PDF417 条码
|
||||||
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
|
||||||
},
|
},
|
||||||
// 解码,输出:中文
|
// 解码,输出:中文
|
||||||
|
|
|
@ -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=' '){
|
||||||
|
|
|
@ -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\"/>",
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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) + "%"
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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:'湖南省株洲市xxxxxxxx小区1栋202室',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:'湖南省株洲市xxxxxxxx小区1栋202室',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:'湖南省株洲市xxxxxxxx小区1栋202室',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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@
|
||||||
return {
|
return {
|
||||||
autoplay: true,
|
autoplay: true,
|
||||||
interval: 3000,
|
interval: 3000,
|
||||||
index: 1,
|
index: 0,
|
||||||
projectId: "",
|
projectId: "",
|
||||||
recordState: [{
|
recordState: [{
|
||||||
title: '维保记录',
|
title: '维保记录',
|
||||||
|
|
|
@ -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%;">
|
||||||
|
|
|
@ -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:二维码, datamatrix:Data Matrix 码, pdf417:PDF417 条码
|
scanType: ['qrCode'], // barCode:一维码, qrCode:二维码, datamatrix:Data Matrix 码, pdf417:PDF417 条码
|
||||||
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.openLocation的经纬度gcj02
|
||||||
// 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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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: {
|
||||||
|
|
|
@ -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();
|
||||||
},
|
},
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
|
@ -142,7 +142,61 @@
|
||||||
},
|
},
|
||||||
// 检测版本事件
|
// 检测版本事件
|
||||||
checkEdition(){
|
checkEdition(){
|
||||||
console.log('检测版本事件');
|
// status int 升级标志,1:需要升级;0:无需升级
|
||||||
|
// 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) {
|
||||||
|
//ios用户pkgUrl是苹果市场App地址,android自定义下载地址
|
||||||
|
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) {
|
||||||
|
|
19
readme.md
|
@ -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>
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
Before Width: | Height: | Size: 375 B After Width: | Height: | Size: 799 B |
Before Width: | Height: | Size: 395 B After Width: | Height: | Size: 769 B |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 699 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 488 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 646 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 600 B |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 756 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 519 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 697 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 635 B |
|
@ -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){
|
||||||
|
|