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

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

View File

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

View File

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 3180711 */
src: url('https://at.alicdn.com/t/font_3180711_7fx7wl7itar.woff2?t=1647479558213') format('woff2'),
url('https://at.alicdn.com/t/font_3180711_7fx7wl7itar.woff?t=1647479558213') format('woff'),
url('https://at.alicdn.com/t/font_3180711_7fx7wl7itar.ttf?t=1647479558213') format('truetype');
src: url('https://at.alicdn.com/t/font_3180711_635f9bvlgje.woff2?t=1652863135237') format('woff2'),
url('https://at.alicdn.com/t/font_3180711_635f9bvlgje.woff?t=1652863135237') format('woff'),
url('https://at.alicdn.com/t/font_3180711_635f9bvlgje.ttf?t=1652863135237') format('truetype');
}
.icon {
@ -13,6 +13,66 @@
-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 {
content: "\e769";
}
@ -93,7 +153,7 @@
content: "\e73f";
}
.icon-shopp-cart:before {
.icon-shop-cart:before {
content: "\e73d";
}

View File

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

View File

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

1
jsFile/index.js Normal file

File diff suppressed because one or more lines are too long

View File

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

View File

@ -9,12 +9,7 @@
"usingComponents" : true,
"compilerVersion" : 3,
/* 5+App */
"modules" : {
"Payment" : {},
"Share" : {},
"Maps" : {},
"Geolocation" : {}
},
"modules" : {},
/* */
"distribute" : {
/* */
@ -23,6 +18,9 @@
"permissions" : [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<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_WIFI_STATE\"/>",
"<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.FLASHLIGHT\"/>",
"<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.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",

View File

@ -1,6 +1,6 @@
<template>
<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>
</template>
@ -8,11 +8,18 @@
export default {
data() {
return {
windowHeight:uni.getSystemInfoSync().windowHeight
windowHeight:uni.getSystemInfoSync().windowHeight,
ad_img:''
}
},
onLoad() {
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: {
checkContext(){
@ -45,7 +52,7 @@
'/pages/login/login',
'/pages/tabbar/pagehome/pagehome'
]
setTimeout(()=>{uni.reLaunch({url:arr[index]})},3000)
setTimeout(()=>{uni.reLaunch({url:arr[index]})},6000)
}
}
}

View File

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

View File

@ -34,57 +34,9 @@
<view class="text">项目概况</view>
</view>
<view class="project-message-content">
<view class="li">
<view class="title-one">客户名称</view>
<view class="text">上海弘焱电子科技有限公司</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 class="li" v-for="(item,index) in projectGK" :key="index">
<view class="title-one">{{item.name}}</view>
<view class="text">{{item.value}}</view>
</view>
</view>
<view class="project-message-title">
@ -100,17 +52,19 @@
<view class="text">尺寸</view>
<view class="text">数量</view>
</view>
<view class="project-materials-text">
<view class="text">接收卡</view>
<view class="text">卡莱特</view>
<view class="text">5A-75E</view>
<view class="text">1033876</view>
<view class="text">*</view>
<view class="text">1</view>
<view class="project-material-box">
<view class="project-materials-text" v-for="(item,index) in project_material" :key="index">
<view class="text clips2">{{item.name}}</view>
<view class="text clips2">{{item.brand}}</view>
<view class="text clips2">{{item.model}}</view>
<view class="text clips2">{{item.batch}}</view>
<view class="text clips2">{{item.size}}</view>
<view class="text clips2">{{item.quantity}}</view>
</view>
</view>
</view>
<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">
{{item.title}}
</view>
@ -120,8 +74,8 @@
<view class="list">
<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="text">{{item.time_line}}</view>
<!-- <view class="date">2020-05-15 16:00</view> -->
<view class="text">{{item.value}}</view>
<view class="date">{{item.time}}</view>
</view>
</view>
<pitera v-if="recordList.length==0" :textStr="nomoreText"></pitera>
@ -168,6 +122,8 @@
recordList:[],//
nomoreText:'',
projectId: "",//id
projectGK:[],//
project_material:[]//
}
},
onLoad(op) {
@ -188,11 +144,6 @@
}
this.$requst.get('/universal/api.project/recording',params).then(res=>{
if(res.code) {
/**
* {
* time_line:''
* }
*/
this.recordList = res.data.data;
} else {
this.nomoreText = res.msg;
@ -209,6 +160,8 @@
if (res.code) {
this.projectObj = res.data;
this.imgNum = this.projectObj.completed_img.length;
this.projectGK = this.projectObj.project_overview_min;//
this.project_material = this.projectObj.project_material;//
} else {
}
@ -232,12 +185,14 @@
page {
background-color: #F7F7F7;
}
.content {
padding: 16rpx 0;
.project-material-box {
max-height: 520rpx;
overflow: hidden;
overflow-y: scroll;
}
.project-material-box::-webkit-scrollbar{
display: none;
}
.swiper {
width: 100%;
height: 500rpx;
@ -304,16 +259,16 @@
}
.last-date {
width: 100%;
/* width: 100%; */
padding: 10rpx 13rpx 10rpx;
box-shadow: 0rpx 5rpx 3rpx rgba(0, 0, 0, 0.1);
}
.last-date-content {
width: 100%;
/* width: 100%; */
height: 57rpx;
display: flex;
padding-left: 20rpx;
padding: 0 20rpx;
align-items: center;
border-radius: 10rpx;
background: linear-gradient(to right, #FFEBEB, #F7F7F7);
@ -395,7 +350,7 @@
margin-top: 10rpx;
background-color: #FFFFFF;
justify-content: space-between;
border-bottom: 2rpx solid #D5D4D4;
border-bottom: 4rpx solid #D5D4D4;
}
.record-nav .li {
@ -407,18 +362,28 @@
}
.record-nav .on {
color: #00b1ff;
color: #00B1FF;
}
.record-nav .on::after {
.record-nav .mo {
color: #000000;
}
.record-nav .on::after,.record-nav .mo::after {
content: "";
display: block;
width: 100%;
height: 2rpx;
height: 4rpx;
position: absolute;
background-color: #00B1FF;
/* #ifdef APP-PLUS || MP-WEIXIN */
top: 68rpx;
/* #endif */
/* #ifdef H5 */
top: 65rpx;
/* #endif */
left: 0rpx;
}
.record-nav .on::after{
background-color: #00B1FF;
}
.record-content {
padding: 0 52rpx;

View File

@ -7,7 +7,7 @@
<view class="queryFunction-head-nav">
<view class="li" @click="navIndex(index)"
: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}}
</view>
</view>
@ -19,7 +19,7 @@
<view class="recently-query-title">最近查询</view>
<view class="recently-query-content" v-for="(item,index) in recentlyQuery ">
<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="title clips1">{{item.name}}</view>
<view class="text">编号{{item.code}}</view>
@ -347,6 +347,7 @@
width: 37rpx;
height: 37rpx;
margin-right: 40rpx;
margin-top: 8rpx;
}
.recently-query-content .li .text-content {

View File

@ -11,24 +11,23 @@
</view>
<view class="settlement-type">
<view class="settlement-type-title">结算类型</view>
<view class="settlement-type-content">
<view class="li liB">
<view class="text">单次收费</view>
<view class="num">20</view>
<view class="text">{{settlementType[0].title}}</view>
<view class="num">{{settlementType[0].num}}</view>
</view>
<view class="li liC">
<view class="text">验收扫尾</view>
<view class="num">3</view>
<view class="text">{{settlementType[2].title}}</view>
<view class="num">{{settlementType[2].num}}</view>
</view>
<view class="li liD">
<view class="text">质保免费</view>
<view class="num">46</view>
<view class="text">{{settlementType[1].title}}</view>
<view class="num">{{settlementType[1].num}}</view>
</view>
<view class="li">
<view class="text">包年签单</view>
<view class="num">10</view>
<view class="text">{{settlementType[3].title}}</view>
<view class="num">{{settlementType[3].num}}</view>
</view>
</view>
</view>
@ -41,59 +40,16 @@
<view class="brand-analysis">
<view class="settlement-type-title">品牌分析</view>
<view class="brand-analysis-box">
<view class="li">
<view class="serial-number">1</view>
<view class="li" v-for="(item,index) in brandAnalysis" :key="index">
<view class="serial-number">{{item.id}}</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 class="title">{{item.name}}</view>
<view class="cor" v-if="item.project_count">{{item.project_count}}</view>
<view class="cor1">{{item.proportion}}%</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">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 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>
@ -135,54 +91,86 @@
title: "本月",
},
],
//
settlementType: [
{title:'单次收费',num:0},
{title:'验收扫尾',num:0},
{title:'质保免费',num:0},
{title:'包年签单',num:0},
],
//
chartData: {
series: [{
format: "tooltipDemo1",
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"
}
]
data: []
}]
},
//
brandAnalysis:[],
timestr:'all'
}
},
onLoad() {
console.log(this.getPercentage(33, 66))
// console.log(this.getPercentage(33, 66))
this.checkTJ();
},
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) {
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) {
return Math.ceil(((num - 0) / (max - 0)) * 100) + "%"

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@ -34,7 +34,7 @@
<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="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="clips1 fon24 bold">{{item.project_name}}</view>
<view class="line-h38" style="margin-left: -20rpx;height: 80%;">

View File

@ -1,220 +1,227 @@
<template>
<view class="content">
<status-nav navBarTitle="添加报修" returnColor="#c2c2c2"></status-nav>
<container-subgroup>
<view slot="content" style="margin: 0 -30rpx;">
<view class="repairs-nav" style="margin-top: -30rpx;">
<view class="li" @click="repairsNavFun(index)" :class="current==index ?'on':''"
v-for="(item,index) in navDataState" :key="index">
{{item}}
</view>
</view>
<view class="repairs-hint padding">
<image class="icon" src="../../static/iocn/lp.png" mode="aspectFill"></image>
<view class="text">
请务必拍好维保照片或视频上传,便于技术工程师作为判断依据,带齐 相关维保设备高效为您提供服务
</view>
</view>
<view class="fault-type-title padding">维保类型</view>
<view class="padding fault-type-content">
<view class="li" @click="repairsTypeFun(index)" :class="index==indexType?'on':''"
v-for="(item,index) in faultTypeData">
{{item.name}}
</view>
</view>
<view class="padding">
<view class="devicename" v-if="current==0">
<input type="text" class="fon28 width100 col3" v-model="data.project_number" placeholder="请填写设备编号或扫描二维码" />
<image @click="scanCodeFun" class="sm flexs" src="../../static/iocn/sm.png" lazy-load mode=""></image>
</view>
<input v-else v-model="data.device_name" class="devicename" placeholder="请填写设备名称和型号(例:华为LED" />
<view class="fault-pictures radius10" @click="chooseImg">
<image class="fault-pictures-img" v-if="imgsrcArr.length>=1" :src="imgsrcArr[0]" mode="aspectFill"></image>
<view class="fault-pictures-con" v-else>
<image class="img" src="../../static/iocn/gz.png" lazy-load mode="aspectFill"></image>
<view class="text">添加维保图片</view>
</view>
</view>
<textarea v-model="data.fault_describe" class="fault-description radius10" placeholder="维保情况描述"
placeholder-class="fault-description-text" />
<view class="detailed-address inputCss">
<input type="text" v-model="data.service_address" class="fon26 width100 mar-y20" placeholder="请输入详细的上门服务地址" placeholder-class="inputCss-input" />
<image @click="mapFun" src="../../static/iocn/map.png" class="map flexs" mode="aspectFill"></image>
</view>
<input type="text" class="inputCss" v-model="data.username" placeholder="请填写您的姓名" placeholder-class="inputCss-input" />
<input type="number" maxlength="11" class="inputCss" v-model="data.phone" placeholder="请填写联系电话" 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>
</view>
</view>
</container-subgroup>
</view>
<view class="content">
<status-nav navBarTitle="添加报修" returnColor="#c2c2c2"></status-nav>
<container-subgroup>
<view slot="content" style="margin: 0 -30rpx;">
<view class="repairs-nav" style="margin-top: -30rpx;">
<view class="li" @click="repairsNavFun(index)" :class="current==index ?'on':''"
v-for="(item,index) in navDataState" :key="index">
{{item}}
</view>
</view>
<view class="repairs-hint padding">
<image class="icon" src="../../static/iocn/lp.png" mode="aspectFill"></image>
<view class="text">
请务必拍好维保照片或视频上传,便于技术工程师作为判断依据,带齐 相关维保设备高效为您提供服务
</view>
</view>
<view class="fault-type-title padding">维保类型</view>
<view class="padding fault-type-content">
<view class="li" @click="repairsTypeFun(index)" :class="index==indexType?'on':''"
v-for="(item,index) in faultTypeData" :key="index">
{{item.name}}
</view>
</view>
<view class="padding">
<view class="devicename" v-if="current==0">
<input type="text" class="fon28 width100 col3" v-model="data.project_number"
placeholder="请填写设备编号或扫描二维码" />
<image @click="scanCodeFun" class="sm flexs" src="../../static/iocn/sm.png" lazy-load mode="">
</image>
</view>
<input v-else v-model="data.device_name" class="devicename" placeholder="请填写设备名称和型号(例:华为LED" />
<view class="fault-pictures radius10" @click="chooseImg">
<image class="fault-pictures-img" v-if="imgsrcArr.length>=1" :src="imgsrcArr[0]"
mode="aspectFill"></image>
<view class="fault-pictures-con" v-else>
<image class="img" src="../../static/iocn/gz.png" lazy-load mode="aspectFill"></image>
<view class="text">添加维保图片</view>
</view>
</view>
<textarea v-model="data.fault_describe" class="fault-description radius10" placeholder="维保情况描述"
placeholder-class="fault-description-text" />
<view class="detailed-address inputCss">
<input type="text" v-model="data.service_address" class="fon26 width100 mar-y20"
placeholder="请输入详细的上门服务地址" placeholder-class="inputCss-input" />
<image @click="mapFun" src="../../static/iocn/map.png" class="map flexs" mode="aspectFill">
</image>
</view>
<input type="text" class="inputCss" v-model="data.username" placeholder="请填写您的姓名"
placeholder-class="inputCss-input" />
<input type="number" maxlength="11" class="inputCss" v-model="data.phone" placeholder="请填写联系电话"
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>
</view>
</view>
</container-subgroup>
</view>
</template>
<script>
import yyMmDdHhSs from '@/components/dates/yy-mm-dd-hh-ss.vue';
import {getFaultType} from '@/jsFile/public-api.js';
import {
uploadImg
} from '@/jsFile/public-api.js';
import yyMmDdHhSs from '@/components/dates/yy-mm-dd-hh-ss.vue';
import {
getFaultType,uploadImg
} from '@/jsFile/public-api.js';
// qrcode.js qrcode.js
var qrcode = require('@/jsFile/qrcode.js');
export default {
components: {
yyMmDdHhSs
},
data() {
return {
single: "2021-04-3",
data: {
is_device: 0,
fault_type: "",
device_name: "",
project_number: "",
service_address: "",
username: "",
fault_picture: "",
fault_describe: "",
phone: "",
visit_time: ""
},
imgsrcArr: [],
indexType: 0,
navDataState: ["有设备","无设备"],
current:0,
faultTypeData: []
}
},
onLoad() {
this.getType()
},
// import jweixin from '@/jsFile/index.js';
export default {
components: {
yyMmDdHhSs
},
data() {
return {
single: "2021-04-3",
data: {
is_device: 0,
fault_type: "",
device_name: "",
project_number: "",
service_address: "",
username: "",
fault_picture: "",
fault_describe: "",
phone: "",
visit_time: ""
},
imgsrcArr: [],
indexType: 0,
navDataState: ["有设备", "无设备"],
current: 0,
faultTypeData: []
}
},
onLoad(op) {
this.getType();
if (op.project_number) this.data.project_number = op.project_number;
},
methods: {
methods: {
submitButton() {
this.data.fault_type = this.faultTypeData[this.indexType].id
if(this.current) {
this.data.fault_type = this.faultTypeData[this.indexType].id
if (this.current) {
if (!this.data.device_name) {
this.$toolAll.tools.showToast("请填写设备名称或型号");
return
this.$toolAll.tools.showToast("请填写设备名称或型号");
return
}
} else {
if (!this.data.project_number) {
this.$toolAll.tools.showToast("请填写设备编号");
return
this.$toolAll.tools.showToast("请填写设备编号");
return
}
}
if (!this.data.username) {
this.$toolAll.tools.showToast("请填写您的姓名");
return
}
if (this.$toolAll.tools.isPhone(this.data.phone)) {
this.$toolAll.tools.showToast("请正确填写您的电话");
return
}
this.data.is_device = this.current ? 0 : 1;//0: 1
this.$requst.post('/universal/api.order/repair', this.data).then(res => {
if (res.code) {
this.$toolAll.tools.showToast('提交成功');
setTimeout(()=>{
uni.navigateBack({delta:1})
},1000)
} else {
this.$toolAll.tools.showToast(res.msg);
}
})
},
//
getType() {
getFaultType().then(res=>{
if (!this.data.username) {
this.$toolAll.tools.showToast("请填写您的姓名");
return
}
if (this.$toolAll.tools.isPhone(this.data.phone)) {
this.$toolAll.tools.showToast("请正确填写您的电话");
return
}
this.data.is_device = this.current ? 0 : 1; //0: 1
this.$requst.post('/universal/api.order/repair', this.data).then(res => {
if (res.code) {
this.faultTypeData = [...res.data]
this.$toolAll.tools.showToast('提交成功');
setTimeout(() => {
uni.navigateBack({
delta: 1
})
}, 1000)
} else {
this.$toolAll.tools.showToast(res.msg);
}
})
},
//
getType() {
getFaultType().then(res => {
if (res.code) {
this.faultTypeData = [...res.data]
} else {
}
})
},
openDatetimePicker() {
this.$refs.myPicker.show();
},
handleSubmit(e) {
this.data.visit_time = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:00`;
},
//
chooseImg() {
uni.chooseImage({
count: 1,
sourceType: ['album', 'camera'],
success: (res) => {
this.imgsrcArr = []
let imgsrc = res.tempFilePaths;
imgsrc.forEach(item => {
this.imgsrcArr.push(item);
})
uploadImg({path: res.tempFilePaths[0]}).then(res => {
},
openDatetimePicker() {
this.$refs.myPicker.show();
},
handleSubmit(e) {
this.data.visit_time = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:00`;
},
//
chooseImg() {
uni.chooseImage({
count: 1,
sourceType: ['album', 'camera'],
success: (res) => {
this.imgsrcArr = []
let imgsrc = res.tempFilePaths;
imgsrc.forEach(item => {
this.imgsrcArr.push(item);
})
uploadImg({
path: res.tempFilePaths[0]
}).then(res => {
if (res.code) {
this.$toolAll.tools.showToast('上传成功');
this.data.fault_picture = res.data.id
}
})
},fail:(err)=> {
this.$toolAll.tools.showToast('上传成功');
this.data.fault_picture = res.data.id
}
})
},
fail: (err) => {
this.$toolAll.tools.checkQx(err.code);
}
})
},
scanCodeFun() {
// #ifdef APP-PLUS || MP-WEIXIN
uni.scanCode({
onlyFromCamera:false, //
scanType: ['qrCode'], // barCode qrCode datamatrixData Matrix pdf417PDF417
autoDecodeCharset:true, //
success: function (res) {
console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result);
}
});
// #endif
// #ifdef H5
this.scanCode();
// #endif
},
}
})
},
scanCodeFun() {
// #ifdef APP-PLUS || MP-WEIXIN
uni.scanCode({
onlyFromCamera: false, //
scanType: ['qrCode'], // barCode qrCode datamatrixData Matrix pdf417PDF417
autoDecodeCharset: true, //
success: (res) => {
console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result);
let project_number = JSON.parse(res.result).project_number;
if (project_number) this.data.project_number = project_number;
}
});
// #endif
// #ifdef H5
this.scanCode();
// #endif
},
scanCode() {
let that = this
// uniapi
uni.chooseImage({
sizeType: ['original'],
count: 1,
success: (res)=> {
qrcode.decode(this.getObjectURL(res.tempFiles[0]))
qrcode.callback = (codeRes) => {
if (codeRes.indexOf('error') >= 0) {
//
console.log('不合法二维码:' + codeRes);
success: (res) => {
const tempFilePaths = res.tempFilePaths[0] //
qrcode.decode(tempFilePaths); //
qrcode.callback = function(res1) {
// error decoding QR Code
if (res1 == "error decoding QR Code") {
uni.showToast({
title: "识别二维码失败,请重新上传!",
duration: 2000,
icon: 'none'
})
} else {
//
let r = this.decodeStr(codeRes)
// this.qrCodeRes = r
console.log(r);
//
let r = this.decodeStr(codeRes)
console.log(res1)
}
}
// const tempFilePaths = res.tempFilePaths[0] //
// qrcode.decode(tempFilePaths); //
// 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)=> {
},
fail: (err) => {
this.$toolAll.tools.checkQx(err.code);
}
}
});
},
//
@ -268,251 +275,245 @@
}
return out;
},
mapFun() {
const that = this
uni.getLocation({
type: 'gcj02', //uni.openLocation
success: function(res) {
const latitude = res.latitude;
const longitude = res.longitude;
uni.chooseLocation({
success: function(res) {
that.data.service_address = res.address
}
});
// uni.openLocation({
// latitude: latitude,
// longitude: longitude,
// success: function () {
// console.log('success');
// }
// });
}
});
},
repairsNavFun(index) {
this.current = index;
},
repairsTypeFun(index) {
this.indexType = index
}
}
}
mapFun() {
let that = this
uni.chooseLocation({
success: (res) => {
that.data.service_address = res.address
}
})
// uni.getLocation({
// type: 'wgs84', //uni.openLocationgcj02
// success: function(res) {
// console.log(res);
// let latitude = res.latitude;
// let longitude = res.longitude;
// }
// });
},
repairsNavFun(index) {
this.current = index;
},
repairsTypeFun(index) {
this.indexType = index
}
}
}
</script>
<style>
.repairs-nav {
display: flex;
background-color: #FFFFFF;
justify-content: space-between;
}
.repairs-nav {
display: flex;
background-color: #FFFFFF;
justify-content: space-between;
}
.repairs-nav .li {
width: 50%;
padding: 30rpx 0rpx;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #343536;
border-bottom: 2rpx solid rgba(0, 0, 0, 0);
}
.repairs-nav .li {
width: 50%;
padding: 30rpx 0rpx;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #343536;
border-bottom: 2rpx solid rgba(0, 0, 0, 0);
}
.repairs-nav .on {
color: #00a2ea;
.repairs-nav .on {
color: #00a2ea;
border-bottom: 2rpx solid #00a2ea;
}
border-bottom: 2rpx solid #00a2ea;
}
.content {
background-color: #F7F7F7;
min-height: 100vh;
}
.content {
background-color: #F7F7F7;
min-height: 100vh;
}
.repairs-hint {
width: 100%;
height: 123rpx;
background-color: #FFFFFF;
display: flex;
padding-top: 20rpx;
box-sizing: border-box;
margin-top: 23rpx;
border-top: 2rpx solid #e7e7e7;
border-bottom: 2rpx solid #e7e7e7;
}
.repairs-hint {
width: 100%;
height: 123rpx;
background-color: #FFFFFF;
display: flex;
padding-top: 20rpx;
box-sizing: border-box;
margin-top: 23rpx;
border-top: 2rpx solid #e7e7e7;
border-bottom: 2rpx solid #e7e7e7;
}
.repairs-hint .icon {
width: 30rpx;
height: 27rpx;
margin-right: 15rpx;
margin-top: 8rpx;
}
.repairs-hint .icon {
width: 30rpx;
height: 27rpx;
margin-right: 15rpx;
margin-top: 8rpx;
}
.repairs-hint .text {
flex: 1;
color: #5e5e5e;
font-size: 22rpx;
line-height: 40rpx;
}
.repairs-hint .text {
flex: 1;
color: #5e5e5e;
font-size: 22rpx;
line-height: 40rpx;
}
.fault-type-title {
margin-top: 14rpx;
/* width: 100%; */
line-height: 80rpx;
margin-bottom: 13rpx;
border-top: 2rpx solid #e7e7e7;
border-bottom: 2rpx solid #e7e7e7;
height: 80rpx;
background-color: #FFFFFF;
color: #434242;
}
.fault-type-title {
margin-top: 14rpx;
/* width: 100%; */
line-height: 80rpx;
margin-bottom: 13rpx;
border-top: 2rpx solid #e7e7e7;
border-bottom: 2rpx solid #e7e7e7;
height: 80rpx;
background-color: #FFFFFF;
color: #434242;
}
.fault-type-content {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.fault-type-content {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.fault-type-content .li {
width: 160rpx;
height: 59rpx;
background-color: #FFFFFF;
font-size: 26rpx;
color: #5e5e5e;
box-sizing: border-box;
text-align: center;
line-height: 59rpx;
border-radius: 22rpx;
border: 2rpx solid #eeeeee;
margin-bottom: 15rpx;
.fault-type-content .li {
width: 160rpx;
height: 59rpx;
background-color: #FFFFFF;
font-size: 26rpx;
color: #5e5e5e;
box-sizing: border-box;
text-align: center;
line-height: 59rpx;
border-radius: 22rpx;
border: 2rpx solid #eeeeee;
margin-bottom: 15rpx;
}
}
.fault-type-content .on {
color: #FFFFFF;
border: none;
background-color: #00a2ea;
}
.fault-type-content .on {
color: #FFFFFF;
border: none;
background-color: #00a2ea;
}
.information {}
.information {}
.devicename {
width: 100%;
height: 78rpx;
border-radius: 10rpx;
background-color: #FFFFFF;
padding: 0 16rpx;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
color: #9f9898;
font-size: 26rpx;
line-height: 78rpx;
}
.devicename {
width: 100%;
height: 78rpx;
border-radius: 10rpx;
background-color: #FFFFFF;
padding: 0 16rpx;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
color: #9f9898;
font-size: 26rpx;
line-height: 78rpx;
}
.fault-pictures {
display: flex;
align-items: center;
justify-content: center;
margin-top: 18rpx;
height: 320rpx;
box-sizing: border-box;
width: 100%;
background-color: #FFFFFF;
flex-direction: column;
}
.fault-pictures {
display: flex;
align-items: center;
justify-content: center;
margin-top: 18rpx;
height: 320rpx;
box-sizing: border-box;
width: 100%;
background-color: #FFFFFF;
flex-direction: column;
}
.fault-pictures-con {
display: flex;
flex-direction: column;
align-items: center;
}
.fault-pictures-con {
display: flex;
flex-direction: column;
align-items: center;
}
.fault-pictures .img {
width: 87rpx;
margin-bottom: 27rpx;
height: 87rpx;
}
.fault-pictures .img {
width: 87rpx;
margin-bottom: 27rpx;
height: 87rpx;
}
.fault-pictures .text {
font-size: 30rpx;
.fault-pictures .text {
font-size: 30rpx;
color: #9f9898;
color: #9f9898;
}
}
.fault-description {
height: 193rpx;
width: 100%;
box-sizing: border-box;
margin-top: 23rpx;
padding: 23rpx 19rpx;
background-color: #FFFFFF;
}
.fault-description {
height: 193rpx;
width: 100%;
box-sizing: border-box;
margin-top: 23rpx;
padding: 23rpx 19rpx;
background-color: #FFFFFF;
}
.fault-description-text {
color: #9f9898;
font-size: 26rpx
}
.fault-description-text {
color: #9f9898;
font-size: 26rpx
}
.inputCss {
height: 78rpx;
width: 100%;
box-sizing: border-box;
padding: 0rpx 17rpx;
font-size: 26rpx;
border-radius: 10rpx;
background-color: #FFFFFF;
color: #000000;
display: flex;
margin-top: 20rpx;
align-items: center;
}
.inputCss {
height: 78rpx;
width: 100%;
box-sizing: border-box;
padding: 0rpx 17rpx;
font-size: 26rpx;
border-radius: 10rpx;
background-color: #FFFFFF;
color: #000000;
display: flex;
margin-top: 20rpx;
align-items: center;
}
.detailed-address {
justify-content: space-between;
}
.detailed-address {
justify-content: space-between;
}
.inputCss-input-input {
font-size: 26rpx;
color: #9f9898;
.inputCss-input-input {
font-size: 26rpx;
color: #9f9898;
}
}
.detailed-address .map {
width: 151rpx;
height: 59rpx;
background-color: #F7F7F7;
.detailed-address .map {
width: 151rpx;
height: 59rpx;
background-color: #F7F7F7;
}
}
.uni-datetime-pickerCss {
margin-top: 20rpx;
}
.uni-datetime-pickerCss {
margin-top: 20rpx;
}
.submit-button {
width: 100%;
margin-top: 44rpx;
border-radius: 50rpx;
height: 90rpx;
background-color: #02A2ea;
line-height: 90rpx;
color: #FFFFFF;
text-align: center;
font-size: 30rpx;
}
.submit-button {
width: 100%;
margin-top: 44rpx;
border-radius: 50rpx;
height: 90rpx;
background-color: #02A2ea;
line-height: 90rpx;
color: #FFFFFF;
text-align: center;
font-size: 30rpx;
}
.devicename .sm {
width: 42rpx;
height: 36rpx;
}
.devicename .sm {
width: 42rpx;
height: 36rpx;
}
.fault-pictures-img {
width: 100%;
height: 100%;
.fault-pictures-img {
width: 100%;
height: 100%;
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,153 +1,218 @@
<template>
<view class="content">
<statusNav returnColor="#c2c2c2" navBarTitle="工单回访"></statusNav>
<container-subgroup-two>
<view slot="content" style="margin: -25rpx -30rpx 0rpx;">
<view class="hint">
客户服务重在回访仔细倾听以服务质量求发展
</view>
<view class="payReturnVisit-from">
<view class="payReturnVisit-input">
<view class="title">
<text></text>
<text></text>
<text></text>
</view>
<input class="input" placeholder="请填写联系人称呼" type="text" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-input">
<view class="title">
联系电话
</view>
<input class="input" placeholder="请输入手机号码" type="text" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-input">
<view class="title">
<text></text>
<text></text>
<text></text>
</view>
<input class="input" placeholder="请输入微信号码" type="text" placeholder-class="placeClass" />
</view>
<view class="content">
<statusNav returnColor="#c2c2c2" navBarTitle="工单回访"></statusNav>
<container-subgroup-two>
<view slot="content" style="margin: -25rpx -30rpx 0rpx;">
<view class="hint">
客户服务重在回访仔细倾听以服务质量求发展
</view>
<view class="payReturnVisit-from">
<view class="payReturnVisit-input">
<view class="title">
<text></text>
<text></text>
<text></text>
</view>
<input class="input" v-model="name" placeholder="请填写联系人称呼" type="text" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-input">
<view class="title">
联系电话
</view>
<input class="input" maxlength="11" v-model="phone" placeholder="请输入手机号码" type="number" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-input">
<view class="title">
<text></text>
<text></text>
<text></text>
</view>
<input class="input" v-model="wxcode" placeholder="请输入微信号码" type="text" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-textarea">
<view class="title">
回访内容
</view>
<textarea class="textarea" placeholder="请输入回访内容" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-input">
<view class="title">
客服电话
</view>
<input class="input" placeholder="400-765-9876" type="text" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-input">
<view class="title">
回访时间
</view>
<input class="input" placeholder="2022/02/13 14:18:00" type="text" placeholder-class="placeClass" />
</view>
</view>
<button class="submit-button" type="default">确认发送</button>
<view class="payReturnVisit-textarea">
<view class="title">
回访内容
</view>
<textarea class="textarea" v-model="content" placeholder="请输入回访内容" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-input">
<view class="title">
客服电话
</view>
<input class="input" disabled placeholder="400-765-9876" type="text" placeholder-class="placeClass" />
</view>
<view class="payReturnVisit-input">
<view class="title">
回访时间
</view>
<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>
<button class="submit-button" @tap="setVisit" type="default">确认发送</button>
</view>
</container-subgroup-two>
</view>
</container-subgroup-two>
</view>
</view>
</template>
<script>
import statusNav from '../../components/status-nav.vue';
import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
export default {
components: {
statusNav,
containerSubgroupTwo,
},
data() {
return {
import statusNav from '../../components/status-nav.vue';
import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
import yyMmDdHhSs from '@/components/dates/yy-mm-dd-hh-ss.vue';
export default {
components: {
statusNav,
containerSubgroupTwo,
yyMmDdHhSs
},
data() {
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: {
// 访
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;
}
}
},
methods: {
}
}
return result;
},
//
openDatetimePicker() {
this.$refs.myPicker.show();
},
//
handleSubmit(e) {
this.custmertime = `${e.year}/${e.month}/${e.day} ${e.hour}:${e.minute}:00`;
},
}
}
</script>
<style>
.placeClass {
color: #cccccc;
}
.placeClass{color:#cccccc;}
.hint {
color: #358ff0;
font-size: 24rpx;
padding: 25rpx 30rpx;
}
.hint {
color: #358ff0;
font-size: 24rpx;
padding: 25rpx 30rpx;
}
.submit-button {
width: 686rpx;
border-radius: 50rpx;
height: 90rpx;
background-color: #02A2ea;
line-height: 90rpx;
color: #FFFFFF;
margin-top: 60rpx;
text-align: center;
font-size: 30rpx;
}
.submit-button {
width: 686rpx;
border-radius: 50rpx;
height: 90rpx;
background-color: #02A2ea;
line-height: 90rpx;
color: #FFFFFF;
margin-top: 60rpx;
text-align: center;
font-size: 30rpx;
}
.payReturnVisit-input {
background-color: #FFFFFF;
height: 103rpx;
display: flex;
align-items: center;
width: 700rpx;
border-bottom: 2rpx solid #f4f4f4;
margin: auto;
}
.payReturnVisit-input {
background-color: #FFFFFF;
height: 103rpx;
display: flex;
align-items: center;
width: 700rpx;
border-bottom: 2rpx solid #f4f4f4;
margin: auto;
}
.payReturnVisit-input .title {
display: flex;
justify-content: space-between;
font-size: 30rpx;
font-weight: bold;
width: 120rpx;
color: #333333;
margin-right: 40rpx;
.payReturnVisit-input .title {
display: flex;
justify-content: space-between;
font-size: 30rpx;
font-weight: bold;
width: 120rpx;
color: #333333;
margin-right: 40rpx;
}
}
.payReturnVisit-input .input {
flex: 1;
font-size: 30rpx;
margin-top: 2rpx;
}
.payReturnVisit-input .input {
flex: 1;
font-size: 30rpx;
margin-top: 2rpx;
}
.payReturnVisit-from {
background-color: #FFFFFF;
}
.payReturnVisit-from {
background-color: #FFFFFF;
}
.payReturnVisit-textarea {
width: 700rpx;
border-bottom: 2rpx solid #f4f4f4;
margin: auto;
padding-bottom: 30rpx;
}
.payReturnVisit-textarea {
width: 700rpx;
border-bottom: 2rpx solid #f4f4f4;
margin: auto;
padding-bottom: 30rpx;
}
.payReturnVisit-textarea .title {
padding: 30rpx 0rpx;
font-size: 30rpx;
font-weight: bold;
}
.payReturnVisit-textarea .title {
padding: 30rpx 0rpx;
font-size: 30rpx;
font-weight: bold;
}
.payReturnVisit-textarea .textarea {
width: 100%;
height: 200rpx;
background-color: #F5F5F5;
border-radius: 10rpx;
padding: 20rpx;
box-sizing: border-box;
}
.payReturnVisit-textarea .textarea {
width: 100%;
height: 200rpx;
background-color: #F5F5F5;
border-radius: 10rpx;
padding: 20rpx;
box-sizing: border-box;
}
</style>

View File

@ -200,7 +200,7 @@
methods: {
// app
getAddress(){
this.$toolAll.tools.showToast('正在获取定位...')
// this.$toolAll.tools.showToast('...')
// #ifdef APP-PLUS
if(this.addressFlag) {
this.addressFlag = false;
@ -208,7 +208,7 @@
type: 'gcj02',
geocode:true,
success: (res)=> {
this.$toolAll.tools.showToast('定位成功');
// this.$toolAll.tools.showToast('');
// 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 || ''}`
setTimeout(()=>{
@ -240,7 +240,7 @@
location: {latitude: res.latitude, longitude: res.longitude},
success:(res)=> {
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 || ''})`
setTimeout(()=>{
this.addressFlag = true;
@ -267,7 +267,7 @@
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=>{
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 || ''})`
setTimeout(()=>{
this.addressFlag = true;

View File

@ -35,7 +35,7 @@
<view class="li animated fadeIn" @click="projectDetailsFun(item.order_status,item.order_id,item.btn.attributes.text,item.btn.attributes.color)" v-for="(item,index) in dataList" :key="index">
<view class="work-order-code">工单编号{{item.order_number}}</view>
<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="title flexs">
<view class="text clips1">{{item.project_name}}</view>
@ -43,7 +43,7 @@
</view>
<view class="disjb fc line-h36" style="margin-left: -20rpx;">
<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>
<view class="specification scal09">

View File

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

View File

@ -5,10 +5,12 @@
<view slot="content" style="margin: -6rpx -30rpx 0 -30rpx;">
<view class="bacf fon28 pad-sx30 pad-zy40">
<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 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;">
<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;" />
@ -50,14 +52,17 @@
{imgsrc:''}
],
tempImgId:[],
project_name:'长沙XXXXXXXXX项目名称',
project_number:'GD20220108-1002',
project_time:'2022-01-11 15 : 27',
rateNum:5,//
attitudeNum:5,//
serviceExperience:'',//
flag:true,
orderId:''//id
orderId:'',//id
orderObj: {
order_id:28,
order_number:"",
order_time:"",
project_name:""
}
}
},
onLoad(op) {
@ -70,7 +75,7 @@
getOrderInfo(){
this.$requst.get('/universal/api.order/evaluate_order',{order_id:this.orderId}).then(res=>{
if(res.code) {
this.orderObj = res.data;
} else {
this.$toolAll.tools.showToast(res.msg);
}

View File

@ -106,7 +106,7 @@
id_card_no:'', //
imgList:[],
flag:true,
temporaryImg:[]
temporaryImg:[],
}
},
onLoad() {
@ -140,7 +140,13 @@
this.imgList[3] = res.data.agreement_document;
//
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=>{
if(res.code==1){
if(res.code){
this.$toolAll.tools.showToast('保存成功');
setTimeout(()=>{
uni.navigateBack({delta:1})
},1000)
} else {
this.$toolAll.tools.showToast(res.msg);
}
})
} else {

View File

@ -3,7 +3,7 @@
<status-nav :navBarTitle="detailTitle" returnColor="#c2c2c2"></status-nav>
<container-subgroup>
<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>
<!-- 时间 -->
@ -25,15 +25,17 @@
export default {
data() {
return {
detailTitle:'',
detailTitle:'方案详情',
current:0,
dataObj:{},
dataObj:'',
rich_text:''//
}
},
onLoad(op) {
this.detailTitle = `${['方案详情','详情概述','产品详情'][op.index*1]}`;
this.current = op.index*1;
if(op.index!=undefined) {
this.detailTitle = `${['方案详情','详情概述','产品详情'][op.index*1]}`;
this.current = op.index*1;
}
this.getDetail(op.id);
},
methods: {

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 B

After

Width:  |  Height:  |  Size: 769 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 519 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 635 B

View File

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