Commit ddbfeaaf by 蒋秀川

'jxc'

1 parent 71258b46
......@@ -3,7 +3,7 @@ import {
getPatrolRecordList
} from "../../api/tour.js";
const App = getApp();
import _ from 'underscore';
Page({
/**
......@@ -47,22 +47,27 @@ Page({
],
tourItems:[{
id:1,
name: '实时监控',
icon: '8',
path: '/pages/tour/gate/index?type=view'
},{
id:2,
name: '远程巡店',
icon: '9',
path: '/pages/tour/gate/index?type=tour'
},{
id:3,
name: '点检巡店',
icon: '10',
path: '/pages/tour/point/index'
},{
},{
id:4,
name: '我发起的',
icon: '11',
path: '/pages/tour/list/index?type=create'
},{
id:5,
name: '待我处理',
icon: '12',
path: '/pages/tour/list/index?type=handle'
......@@ -84,7 +89,21 @@ Page({
this.setData({ menuItems })
}
},
onShow:function(){
let name = wx.getStorageSync('name');
Promise.all([getPatrolRecordList({status:2,createBy:name}),getPatrolRecordList({status:1,handler:name})]).then(res=>{
let total1 = res[0].data.total;
let total2 = res[1].data.total;
let tourItems = this.data.tourItems;
let titem1 = _.findWhere(tourItems,{id:4});
titem1.dot = total1;
let titem2 = _.findWhere(tourItems,{id:5});
titem2.dot = total2;
this.setData({
tourItems
})
})
},
goOtherPage: function(e) {
const { path } = e.currentTarget.dataset.value
wx.navigateTo({ url: path })
......
......@@ -31,6 +31,7 @@
<view wx:for="{{tourItems}}" wx:for-index="index" wx:for-item="n" wx:key="index" class="item" bindtap="goOtherPage" data-value="{{n}}">
<image src="{{ '../../images/icon/' + n.icon + '.png' }}" class="img" />
<view class="tit">{{n.name}}</view>
<view class="dot" wx:if="{{n.dot}}"></view>
</view>
</view>
</view>
......
......@@ -40,6 +40,15 @@
text-align: center;
margin-top: 10rpx;
}
.part-list .part .list .item .dot{
position: absolute;
width: 20rpx;
height: 20rpx;
border-radius: 50%;
background-color: #f00;
top:2px;
right: 24rpx;
}
.zong-content {
width: 100%;
height: 100%;
......
......@@ -78,7 +78,14 @@ Page({
mask: true
})
login(params).then((res) => {
this.dealData(res)
if(res.code==200){
this.dealData(res)
}else{
wx.showToast({
icon:'error',
title: '用户名密码错误',
});
}
})
},
......@@ -90,6 +97,7 @@ Page({
wx.setStorage({ data: res.data.user.type, key: 'userrole_type' })
await wx.setStorage({ data: res.data.atoken, key: 'atoken' })
wx.setStorage({ data: res.data.user.accountId||2, key: 'accountId' })
wx.setStorage({ data: res.data.user.id, key: 'uid' });
getApps({
url: '/report/auth/api/v1/auth/apps',
header: { 'Authorization': res.data.atoken }
......
......@@ -9,12 +9,15 @@ import _ from 'underscore';
import Dialog from '../../../../miniprogram_npm/@vant/weapp/dialog/dialog';
const customBehavior = require('../../../../extends/custom.behavior.js');
let tourArrayList = [];
let assosArrayList = [];
Component({
behaviors: [customBehavior],
/**
* 组件的属性列表
*/
properties: {
tval:Number,
pid:Number,
gateId: Number,
gateName:String,
mallId: Number,
......@@ -96,13 +99,14 @@ Component({
})
},
changeTourList(type){
let sopList = JSON.parse(JSON.stringify(tourArrayList));
let sopList;// JSON.parse(JSON.stringify(tourArrayList));
if(type==1){
sopList = _.where(sopList,{associated:1})
sopList = assosArrayList;
}else{
sopList = tourArrayList;
}
this.setData({
sopList,
remark: ''
sopList
},()=>{
this.setData({
activeSop: _.pluck(sopList, 'id'),
......@@ -125,12 +129,17 @@ Component({
system: 0
});
tourArrayList=[];
assosArrayList = [];
_.each(data, item => {
if (item.sopProjects.length > 0) {
let sopProjects = item.sopProjects
sopProjects.forEach(item1 => {
item1.pName = item.name
tourArrayList.push(item1);
item1.pName = item.name;
if(item1.associated==1){
assosArrayList.push(item1);
}else{
tourArrayList.push(item1);
}
})
}
})
......@@ -196,15 +205,15 @@ Component({
},
submitBtn() {
let that = this;
let noSelect = _.filter(this.data.sopList, sop => {
return ![-1, 0, 1].includes(sop.status);
})
if (noSelect.length) {
return wx.showToast({
title: '您还有未选择的记录',
icon: 'none'
});
}
// let noSelect = _.filter(this.data.sopList, sop => {
// return ![-1, 0, 1].includes(sop.status);
// })
// if (noSelect.length) {
// return wx.showToast({
// title: '您还有未选择的记录',
// icon: 'none'
// });
// }
let hasNo = _.findWhere(this.data.sopList, {
status: 0
});
......@@ -240,15 +249,21 @@ Component({
accountId: wx.getStorageSync('accountId'),
mallId: this.data.mallId,
gateId: this.data.gateId,
picUrl: fileUrls.join(',')
picUrl: fileUrls.join(','),
patrolType:this.data.tval
};
if(formData.patrolType==2){
formData.patrolCaptureRecordId = this.data.pid;
}
if (this.data.dealBody) {
formData.handler =this.data.dealBody.loginName;
}
if (this.data.remark) {
formData.remark = this.data.remark;
}
formData.sops = JSON.stringify(_.map(this.data.sopList, item => {
formData.sops = JSON.stringify(_.map(_.filter([...tourArrayList,...assosArrayList],item=>{
return [-1, 0, 1].includes(item.status);
}), item => {
return {
id: item.id,
status: item.status,
......@@ -289,6 +304,8 @@ Component({
this.setData({
dealBody: evt.detail,
selectBody: false
},()=>{
this.submitBtn();
});
}
}
......
......@@ -62,7 +62,6 @@
<view class="sbView">
<van-button type="info" bindtap="submitBtn" round block custom-style="font-size:16px;font-weight:600;letter-spacing:4px;">提交</van-button>
</view>
</view>
<van-dialog id="van-dialog" />
<van-action-sheet
......
......@@ -4,7 +4,8 @@ page{--font-weight-bold:600;}
position: relative;
width: 750rpx;
--cell-font-size:28rpx;
padding-bottom: 20rpx;
padding-bottom: 150rpx;
z-index: 9;
}
.aview{
padding:0rpx 0rpx 10rpx;
......@@ -73,8 +74,10 @@ page{--font-weight-bold:600;}
height: 176rpx;
}
.sbView{
position: fixed;
left:20rpx;
bottom:20rpx;
width: 710rpx;
margin: 40rpx auto 0;
}
van-popup{--action-sheet-max-height:60%}
van-popup button{border-bottom: 1px dashed rgba(0,0,0,0.1);}
......
......@@ -25,6 +25,11 @@ Page({
type
});
},
goBack(){
wx.switchTab({
url: '/pages/home/index'
})
},
onChange(evt) {
this.setData({
activeMall: evt.detail
......
<view class="malllist" style="padding-top: {{navHeight}}px;">
<navbar2 bg-color="#fff" navbar-color="#000">
<view class="navtitle">
<van-icon bindtap="onGoBack" size="24" name="arrow-left" custom-class="back"/>
<van-icon bindtap="goBack" size="24" name="arrow-left" custom-class="back"/>
<view class="title">选择监控点</view>
</view>
</navbar2>
......
......@@ -27,6 +27,17 @@ Page({
picUrl: '',
tourType:'1'
},
onBack(){
if(this.data.tval==2){
wx.navigateBack({
delta: 0,
});
}else{
wx.redirectTo({
url: '/pages/tour/gate/index',
})
}
},
backBtn(evt) {
this.setData({
gateSelect: false
......@@ -143,12 +154,16 @@ Page({
id,
mallId,
title,
picUrl
picUrl,
pid=0,
tval=1
} = options;
// wx.showLoading({
// title: '加载中',
// });
this.setData({
tval,
pid,
type: 'tour',
gateId: id,
gateName: decodeURIComponent(title),
......
......@@ -2,8 +2,8 @@
<view class="container" style="padding-top: {{navHeight}}px">
<navbar2 bg-color="#fff" navbar-color="#000">
<view class="navtitle">
<van-icon bindtap="onGoBack" size="24" name="arrow-left" custom-class="back"/>
<view class="title" bindtap="showGates">{{gateName}}<van-icon name="arrow-down" custom-class="drop"/></view>
<van-icon bindtap="onBack" size="24" name="arrow-left" custom-class="back"/>
<view class="title">{{gateName}}</view>
</view>
</navbar2>
<!-- 视频截图 S -->
......@@ -19,6 +19,6 @@
<van-tab title="其他检查项"></van-tab>
</van-tabs>
<!-- 开始巡店记录 S-->
<tour-upload type="{{tourType}}" bindupload="startUpload" id="upload" bindtourOther="showGates" mall-id="{{mallId}}" gate-id="{{gateId}}" gate-name="{{gateName}}"></tour-upload>
<tour-upload type="{{tourType}}" bindupload="startUpload" id="upload" bindtourOther="showGates" mall-id="{{mallId}}" gate-id="{{gateId}}" gate-name="{{gateName}}" tval="{{tval}}" pid="{{pid}}"></tour-upload>
<!-- 开始巡店记录 S-->
</view>
\ No newline at end of file
......@@ -133,7 +133,7 @@ Page({
let params = {
mallId:this.data.mallId||'',
pageSize:999,
patrolType:1,
//patrolType:1,
...this.data.date
}
if(this.data.type){
......
......@@ -63,6 +63,11 @@ Page({
})
this.loadRuleList();
},
homeBack(){
wx.switchTab({
url: '/pages/home/index',
})
},
loadRuleList(){
getRuleList({
pageNum: 1,
......@@ -159,7 +164,7 @@ Page({
let {id} = evt.currentTarget.dataset;
let titem = _.findWhere(tourArrayList,{id});
wx.navigateTo({
url: `/pages/tour/index/index?action=capture&picUrl=${titem.pic}&id=${titem.gateId}&mallId=${titem.mallId}&title=${titem.gateName}`
url: `/pages/tour/index/index?pid=${id}&tval=2&action=capture&picUrl=${titem.pic}&id=${titem.gateId}&mallId=${titem.mallId}&title=${titem.gateName}`
})
},
/**
......@@ -175,7 +180,7 @@ Page({
let mallId = wx.getStorageSync('mallId');
let mallList = wx.getStorageSync('mallList');
let params = {
mallId:this.data.mallId||'',
mallIds:this.data.mallId||_.pluck(mallList,'id').join(','),
pageSize:999,
ruleId:this.data.ruleVal,
...this.data.date
......
......@@ -17,8 +17,8 @@
<view class="container" style="padding-top: {{navHeight}}px">
<navbar2 bg-color="#001C90">
<view class="navtitle">
<van-icon bindtap="onGoBack" size="24" name="arrow-left" custom-class="back" />
<view class="title">点检巡店记录</view>
<van-icon bindtap="homeBack" size="24" name="arrow-left" custom-class="back" />
<view class="title">点检巡店</view>
</view>
</navbar2>
<view style="width: 100%;margin-top: 4rpx;">
......
......@@ -17,7 +17,8 @@ Page({
tourVal:0, //基础信息
remark:'',
fileList: [],
recordVal:0, //操作记录
recordVal:'', //操作记录
recordVal2:'', //最新操作记录
actionVal:1,
tourObj:{},
picUrl:'',
......@@ -53,6 +54,8 @@ Page({
Object.assign(item,this.getStatus(item.status));
return item;
}).reverse();
let newRecord = tourObj.handleRecords.shift();
tourObj.handleRecords.pop();
_.each(tourObj.sops,item=>{
if(item.status==0){
item.text = '不合格';
......@@ -77,12 +80,17 @@ Page({
this.setData({
recordId:id,
picUrl:picUrl,
tourVal:tourObj.type?0:1,
//recordVal:tourObj.handleRecords[0].id,
//tourVal:tourObj.type?0:1,
//recordVal2:newRecord.id,
tourObj,
newRecord,
captureUrl:captureUrl?app.globalData.ajaxUrl + '/images/'+captureUrl:''
},()=>{
if(captureUrl)this.drawInit();
this.setData({
recordVal:'',
recordVal2:newRecord.id
})
})
});
},
......@@ -283,6 +291,11 @@ Page({
recordVal:evt.detail
})
},
changeRecord2(evt){
this.setData({
recordVal2:evt.detail
})
},
async playBtn(){
let {data} = await getPatrolGate({id:this.data.tourObj.gateId});
wx.navigateTo({
......
<template name="record">
<van-collapse-item title="{{record.result==1?'处理人':'巡检人'}}:{{record.handlerName}}" value="{{record.createTime}}" name="{{record.id}}">
<view class="actinfo">
<view><text>状态:</text><text style="color:{{record.color}}">{{record.text}}</text></view>
<view wx:if="{{record.remark}}"><text>备注:</text>{{record.remark}}</view>
<image mode="widthFix" wx:for="{{record.pics}}" src="{{picUrl+item}}" />
</view>
</van-collapse-item>
</template>
<view class="container" style="padding-top: {{navHeight}}px">
<navbar2 bg-color="#fff" navbar-color="#000">
<view class="navtitle">
......@@ -6,10 +15,47 @@
</view>
</navbar2>
<view class="tour">
<view class="title">基础信息</view>
<view class="tview">
<van-collapse accordion custom-class="" value="{{ tourVal }}" bind:change="onChange">
<van-collapse-item title="巡店内容" name="{{1}}" value="{{tourObj.createTime}}">
<van-collapse accordion value="{{recordVal2}}" bind:change="changeRecord2">
<template is="record" data="{{record:newRecord,picUrl}}"></template>
</van-collapse>
</view>
<view class="mview" wx:if="{{tourObj.type==1||tourObj.type==2}}">
<view class="title">{{tourObj.type==1?'复查':'处理'}}结果</view>
<view class="maction">
<van-collapse accordion value="{{actionVal}}" bind:change="changeAction">
<van-collapse-item title="{{tourObj.type==1?('复查人:'+tourObj.createByName):('处理人:'+tourObj.handlerName)}}" name="{{1}}">
<view class="upview">
<view class="label">{{tourObj.type==1?'复查':'处理'}}完成图:</view>
<view class="acea-row action-btns">
<van-button type="info" bindtap="playBtn" custom-style="width:300rpx;">播放实时视频</van-button>
<van-button type="info" bindtap="captureBtn" custom-style="width:300rpx;">现场截图</van-button>
</view>
<!-- 视频截图 S -->
<view class="capview {{actionVal&&captureUrl?'show':'hide'}}" >
<canvas disable-scroll class="cvs" type="2d" bindtouchstart="startDraw" bindtouchmove="drawing"
bindtouchend="endDraw" bindtouchcancel="endDraw" style="width:{{cWidth}}px;height: {{cHeight}}px;" id="painter" >
</canvas>
</view>
<!-- 视频截图 E -->
<!-- <van-uploader accept="image" capture="camera" custom-class="uploader" max-count="5" slot="input" deletable multiple bind:after-read="readFileSucc" bind:delete="deleteFile" file-list="{{ fileList }}" /> -->
</view>
<view class="upview">
<!-- <view class="label">备注:</view> -->
<van-field model:value="{{ remark }}" title-width="0rpx" type="textarea" placeholder="请输入备注信息" autosize show-word-limit maxlength="300" border="{{ true }}" />
</view>
</van-collapse-item>
</van-collapse>
</view>
</view>
<view class="title">操作记录</view>
<view class="actlist">
<van-collapse accordion value="{{recordVal}}" bind:change="changeRecord">
<template is="record" wx:for="{{tourObj.handleRecords}}" data="{{record:item,picUrl}}"></template>
<!-- 巡店记录详情 S-->
<van-collapse-item title="巡检人:{{tourObj.createByName}}" name="{{tourObj.id}}" value="{{tourObj.createTime}}">
<view class="tinfo">
<view class="pictit">巡查图:</view>
<view class="piclist">
......@@ -64,57 +110,17 @@
</view>
</view>
</van-collapse-item>
</van-collapse-item>
<!-- 巡店记录详情 E-->
</van-collapse>
</view>
<view class="mview" wx:if="{{tourObj.type==1||tourObj.type==2}}">
<view class="title">{{tourObj.type==1?'复查':'处理'}}结果</view>
<view class="maction">
<van-collapse accordion value="{{actionVal}}" bind:change="changeAction">
<van-collapse-item title="{{tourObj.type==1?('复查人:'+tourObj.createByName):('处理人:'+tourObj.handlerName)}}" name="{{1}}">
<view class="upview">
<view class="label">{{tourObj.type==1?'复查':'处理'}}完成图:</view>
<view class="acea-row action-btns">
<van-button type="info" bindtap="playBtn" custom-style="width:300rpx;">播放实时视频</van-button>
<van-button type="info" bindtap="captureBtn" custom-style="width:300rpx;">现场截图</van-button>
</view>
<!-- 视频截图 S -->
<view class="capview {{actionVal&&captureUrl?'show':'hide'}}" >
<canvas disable-scroll class="cvs" type="2d" bindtouchstart="startDraw" bindtouchmove="drawing"
bindtouchend="endDraw" bindtouchcancel="endDraw" style="width:{{cWidth}}px;height: {{cHeight}}px;" id="painter" >
</canvas>
</view>
<!-- 视频截图 E -->
<!-- <van-uploader accept="image" capture="camera" custom-class="uploader" max-count="5" slot="input" deletable multiple bind:after-read="readFileSucc" bind:delete="deleteFile" file-list="{{ fileList }}" /> -->
</view>
<view class="upview">
<!-- <view class="label">备注:</view> -->
<van-field model:value="{{ remark }}" title-width="0rpx" type="textarea" placeholder="请输入备注信息" autosize show-word-limit maxlength="300" border="{{ true }}" />
</view>
</van-collapse-item>
</van-collapse>
</view>
</view>
<view class="title">操作记录</view>
<view class="actlist">
<van-collapse accordion value="{{recordVal}}" bind:change="changeRecord">
<van-collapse-item wx:for="{{tourObj.handleRecords}}" title="{{item.result==1?'处理人':'巡检人'}}:{{item.handlerName}}" value="{{item.createTime}}" name="{{item.id}}">
<view class="actinfo">
<view><text>状态:</text><text style="color:{{item.color}}">{{item.text}}</text></view>
<view wx:if="{{item.remark}}"><text>备注:</text>{{item.remark}}</view>
<image mode="widthFix" wx:for="{{item.pics}}" src="{{picUrl+item}}" />
</view>
</van-collapse-item>
</van-collapse>
</view>
<view style="height: 100rpx;"></view>
<view style="height: 160rpx;"></view>
</view>
<view class="acea-row check-btns" wx:if="{{tourObj.type==1}}">
<van-button data-value="{{2}}" bindtap="submitBtn" custom-style="width:300rpx;" type="danger">不通过</van-button>
<van-button data-value="{{3}}" bindtap="submitBtn" custom-style="width:300rpx;" type="primary">通过并完成</van-button>
</view>
<view class="acea-row check-btns btns2" wx:if="{{tourObj.type==2}}">
<van-button data-value="{{1}}" block bindtap="submitBtn" type="info" custom-style="margin-top:40rpx;" block>已处理</van-button>
<van-button data-value="{{1}}" block bindtap="submitBtn" type="info" block>已处理</van-button>
</view>
</view>
\ No newline at end of file
......@@ -15,7 +15,8 @@
--button-border-radius: 20px;
--cell-font-size: 16px;
--cell-icon-size: 20px;
--cell-right-icon-color: #000
--cell-right-icon-color: #000;
}
.tour .tview {
......@@ -72,12 +73,12 @@
}
.torlist .toritem view {
max-width: 585rpx;
max-width: 570rpx;
}
.torlist .toritem .state {
position: absolute;
right: 10px;
right: 15rpx;
top: 30%;
font-size: 30rpx;
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!