This commit is contained in:
cclu 2023-08-01 19:47:47 +08:00
parent cd6a602a56
commit ceef51971c
8 changed files with 299 additions and 48 deletions

View File

@ -1,7 +1,7 @@
<template>
<view @touchmove.prevent >
<view class="uni-mask" v-show="show" :style="{top:offsetTop + 'px'}" @click="hide" @touchmove.prevent></view>
<view :class="['uni-popup','uni-popup-'+type,round?'round':'' ]" v-show="show">
<view class="uni-mask" v-show="show" :style="{top:offsetTop + 'px',zIndex:998+showIndex}" @click="hide" @touchmove.prevent ></view>
<view :class="['uni-popup','uni-popup-'+type,round?'round':'' ]" :style="{zIndex:999+showIndex}" v-show="show">
<view class="header-top" v-if="msg!=''">{{msg}}</view>
<slot></slot>
</view>
@ -27,11 +27,15 @@
round: {
type: Boolean,
default: false
}
},
showIndex:{
type: Number,
default: 0
}
},
data() {
let offsetTop = 0;
return {
offsetTop: offsetTop
}
@ -40,7 +44,7 @@
hide: function() {
this.$emit('hidePopup');
},
doNotMove: function () {
console.log('stop user scroll it!');
return;

14
package-lock.json generated
View File

@ -5,6 +5,7 @@
"packages": {
"": {
"dependencies": {
"moment": "^2.25.3",
"sass": "^1.45.1",
"sass-loader": "^10.3.1",
"vuex-persistedstate": "^4.1.0"
@ -752,6 +753,14 @@
"node": ">= 0.6"
}
},
"node_modules/moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": {
"node": "*"
}
},
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
@ -1771,6 +1780,11 @@
"mime-db": "1.52.0"
}
},
"moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",

View File

@ -2,6 +2,7 @@
"dependencies": {
"sass": "^1.45.1",
"sass-loader": "^10.3.1",
"vuex-persistedstate": "^4.1.0"
"vuex-persistedstate": "^4.1.0",
"moment": "^2.25.3"
}
}

View File

@ -382,11 +382,11 @@ export default {
this.backType = option.type
},
onShow(){
this.carTypeList.forEach(item=>{
item.select = false
})
this.selectProvinceName = ''
this.carType = ''
this.carTypeList.forEach(item=>{
item.select = false
})
this.selectProvinceName = ''
this.carType = ''
this.isFirst = true
// bi 西
//
@ -405,6 +405,7 @@ export default {
this.searchText = this.time
const date = new Date(this.time)
//
let searchYear = date.getFullYear()
let m = date.getMonth() + 1
if (m<10){
m = '0' + m
@ -413,7 +414,8 @@ export default {
if (d<10){
d = '0'+ d
}
this.thisMonth = m
this.thisMonth = m
let systemInfo = uni.getSystemInfoSync()
//
this.statusBarHeight = Number(systemInfo.statusBarHeight)
@ -435,8 +437,8 @@ export default {
ProvinceCode: 340000,
ServerpartIds: "",
ShopAnalysisType: 0,
month: `${y}${m}`,
time: `${y}-${m}-${d}`,
month: `${searchYear}${m}`,
time: `${searchYear}-${m}-${d}`,
}
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达' || this.isShowAllProvince==='true'){
this.isShowAllProvince = true

View File

@ -123,7 +123,7 @@ export default {
handler(value) {
console.log('value',value)
this.info = value
this.addAreaCarNumber = Math.abs((this.info.VehicleCount / this.info.MonthVehicleCount - 1)*100).toFixed(2)
this.addAreaCarNumber = this.info.VehicleCount ? Math.abs((this.info.VehicleCount / this.info.MonthVehicleCount - 1)*100).toFixed(2):''
this.oneCarPrice = this.info.MonthVehicleAmount?Math.abs(((this.info.AvgVehicleAmount / this.info.MonthVehicleAmount) - 1) *100).toFixed(2):''
this.$forceUpdate()
},

View File

@ -117,6 +117,7 @@ export default {
this.time = storeTime
}
this.single = this.$util.getThisMonthHave(this.time)
console.log('this.single',this.single)
const date = new Date(this.single)
//
let m = date.getMonth() + 1
@ -203,7 +204,7 @@ export default {
const date = new Date(this.single)
let y = date.getFullYear()
let m = date.getMonth() + 1
const nowDate = new Date()
const nowDate = new Date(this.time)
let nowYear = nowDate.getFullYear()
let nowMonth = nowDate.getMonth() + 1
if (y===nowYear && m===nowMonth){
@ -211,6 +212,7 @@ export default {
}else{
time = this.endTime
}
console.log('time',time)
const req = {
Province_Code:'340000',
Statistics_Date:time,
@ -229,7 +231,7 @@ export default {
const date = new Date(this.single)
let y = date.getFullYear()
let m = date.getMonth() + 1
const nowDate = new Date()
const nowDate = new Date(this.time)
let nowYear = nowDate.getFullYear()
let nowMonth = nowDate.getMonth() + 1
if (y===nowYear && m===nowMonth){
@ -283,7 +285,7 @@ export default {
const date = new Date(this.single)
let y = date.getFullYear()
let m = date.getMonth() + 1
const nowDate = new Date()
const nowDate = new Date(this.time)
let nowYear = nowDate.getFullYear()
let nowMonth = nowDate.getMonth() + 1
if (y===nowYear && m===nowMonth){
@ -334,7 +336,7 @@ export default {
const date = new Date(this.single)
let y = date.getFullYear()
let m = date.getMonth() + 1
const nowDate = new Date()
const nowDate = new Date(this.time)
let nowYear = nowDate.getFullYear()
let nowMonth = nowDate.getMonth() + 1
if (y===nowYear && m===nowMonth){
@ -363,7 +365,7 @@ export default {
const date = new Date(this.single)
let y = date.getFullYear()
let m = date.getMonth() + 1
const nowDate = new Date()
const nowDate = new Date(this.time)
let nowYear = nowDate.getFullYear()
let nowMonth = nowDate.getMonth() + 1
if (y===nowYear && m===nowMonth){

View File

@ -103,7 +103,7 @@
<view class="detail" v-for="(subItem,subIndex) in item.list" :key="subIndex">
<view class="detailTop">
<view class="left">
<image class="icon" :src="subItem.REGION_NAME==='南' || subItem.REGION_NAME==='北'?'https://eshangtech.com/ShopICO/ahyd-BID/examine/NS.svg':'/static/images/examine/ES.svg'">
<image class="icon" :src="subItem.REGION_NAME==='南' || subItem.REGION_NAME==='北'?'https://eshangtech.com/ShopICO/ahyd-BID/examine/NS.svg':'/static/images/examine/ES.svg'" />
<span class="type">{{subItem.REGION_NAME}}</span>
<span class="number">({{subItem.SERVERPARTList.length}})</span>
</view>
@ -190,7 +190,7 @@
</scroll-view>
</view>
<uniPopup type="bottom" :round="true" :show="showPop" @hidePopup="hidePopup">
<uniPopup type="bottom" :round="true" :showIndex="1" :show="showPop" @hidePopup="hidePopup">
<view class="popup" :style="{height:selectTab!==2?'60vh':'78vh'}">
<view class="top">
<text class="popupTitle">{{ selectTab===1?popupShow===4?'':'选择片区':selectTab===2?`${popupServiceName}`:'会议内容' }}</text>
@ -200,29 +200,59 @@
<view @click="handleChangeArea(item)" :class="selectAreaValue===item.value?'selectItem item':'item'" v-for="(item,index) in areaList" :key="index">{{item.label}}<text class="unit">片区</text></view>
</view>
<view class="serviceList" v-if="popupShow===2">
<view class="tab">
<view :class="popupTabSelect===item.value?'tabItem selectTabItem':'tabItem'" v-for="(item,index) in popupTab" :key="index" @click="handleChangePopupTab(item.value)">{{item.label}}</view>
</view>
<view class="list">
<view class="item" v-for="(item,index) in popupServiceShowList.SERVERPARTList" :key="index">
<view class="person">
<p class="value">{{item.PATROL_PERSON}}</p>
<p class="label">检查人</p>
</view>
<view class="person">
<p class="value">{{item.PATROL_DATE}}</p>
<p class="label">检查日期</p>
</view>
<view class="person">
<p class="value">{{item.PATROL_ROUTE}}</p>
<p class="label">路线</p>
</view>
<view class="person">
<image v-if="item.PATROL_IMG.length>0" class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/haveImg.svg"></image>
<p v-if="item.PATROL_IMG.length>0" class="label">图片</p>
</view>
<view class="tab">
<view :class="popupTabSelect===item.value?'tabItem selectTabItem':'tabItem'" v-for="(item,index) in popupTab" :key="index" @click="handleChangePopupTab(item.value)">{{item.label}}</view>
</view>
<view class="assessmentTable">
<view class="bigBox" v-for="(item,index) in popupServiceShowList.DetailList" :key="index" >
<view class="assessmentItem" @click="handleNoShow(item)">
<view class="left">{{item.PATROL_POSITION}}</view>
<view class="right">
<image :style="{transform:item.showChild?'':'rotate(-90deg)'}" class="more" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/arrow_bottom.svg"/>
</view>
</view>
<view v-if="item.showChild">
<view class="smallItem" v-for="(subItem,subIndex) in item.PositionDetailList" :key="subIndex" :style="{borderBottomWidth:subIndex===item.PositionDetailList.length-1?'0px':'2px'}" @click="handleShowImgDetail(subItem)">
<view class="top">
<view class="time">{{subItem.PATROL_DATE.split(' ')[1]}}</view>
<view class="label">检查人: <span class="name">{{subItem.PATROL_PERSON}}</span></view>
</view>
<view class="itemBox" v-if="subItem.PATROL_SITUATION" @click="changeDetail(subItem)">
<view class="detailItem" >
<view class="detailValue">
<view class="detailText">{{ subItem.PATROL_SITUATION || "-"}}</view>
</view>
<view class="detailLabel">情况及问题</view>
</view>
<view class="detailItem">
<view class="detailValue">{{ subItem.RECTIFICATION_PERIOD || "-" }}</view>
<view class="detailLabel">整改期限</view>
</view>
<view class="detailItem">
<view class="detailValue">{{ subItem.RECTIFICATION_RESULT || "-" }}</view>
<view class="detailLabel">整改结果</view>
</view>
</view>
<view class="itemBox" v-else>
<view class="detailItem" >
<view class="detailValue">
<view class="detailValue"><image class="right" src="/static/images/examine/gou.svg"/></view>
</view>
<view class="detailLabel">情况及问题</view>
</view>
<view class="detailItem">
<view class="detailValue"><image class="right" src="/static/images/examine/gou.svg"/></view>
<view class="detailLabel">整改期限</view>
</view>
<view class="detailItem">
<view class="detailValue"><image class="right" src="/static/images/examine/gou.svg"/></view>
<view class="detailLabel">整改结果</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="meetList" v-if="popupShow===3">
<view class="message" style="margin-bottom: 8px">
@ -258,6 +288,21 @@
</view>
</view>
</uniPopup>
<uniPopup type="bottom" :round="true" :showIndex="2" :show="showImg" @hidePopup="hideShowImg" style="z-index: 1001!important;">
<view class="previewImg">
<view class="top">
<text class="popupTitle"></text>
<image @click="hideShowImg" class="close" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/close.svg"></image>
</view>
<view class="content">
<view class="contentTitle">整改前</view>
<image class="img" :src="showImgUrl.PATROLDETAIL_URL" @click="previewShowImage($event,showImgUrl)"/>
<view class="contentTitle" v-if="showImgUrl.PATROLDEAL_URL">整改后</view>
<image v-if="showImgUrl.PATROLDEAL_URL" class="img" :src="showImgUrl.PATROLDEAL_URL" @click="previewShowImage($event,showImgUrl)"/>
<view class="contentTitle" v-if="!showImgUrl.PATROLDEAL_URL">暂未整改完成</view>
</view>
</view>
</uniPopup>
</view>
</template>
<script>
@ -279,6 +324,7 @@ export default {
menu:{},
statusBarHeight:'',
showPop:false,
showImg:false,//
areaList:[],//
selectAreaValue:'',// value
selectAreaName:'',//
@ -300,7 +346,8 @@ export default {
popupServiceName:'',//
popupMeetDetail:{},//
come:'',//
examineList:[]
examineList:[],
showImgUrl:{},//
}
},
onLoad(query){
@ -374,8 +421,15 @@ export default {
this.popupServiceName = obj.SERVERPART_NAME
//
this.popupServiceList = obj.list
this.popupServiceList.forEach(item=>{
item.DetailList.forEach(subItem=>{
subItem.showChild = true
})
})
//
this.popupServiceShowList = this.popupServiceList[0]
console.log('this.popupServiceShowList',this.popupServiceShowList)
console.log('obj',obj)
//
let list = []
obj.list.forEach((item,index)=>{
@ -398,7 +452,7 @@ export default {
item.SERVERPARTList.forEach(subItem=>{
subItem.showChild = true
mark+=subItem.DEDUCTION_SCORE
subItem.imgList = subItem.EXAMINEDETAIL_URL.split('')
subItem.imgList = subItem.EXAMINEDETAIL_URL.split(',')
})
item.mark = mark
})
@ -409,6 +463,16 @@ export default {
console.log('subItem',subItem)
subItem.showChild = !subItem.showChild
},
//
handleShowImgDetail(subItem){
if (subItem.PATROL_SITUATION){
this.showImg = true
}
},
changeDetail(subItem){
this.showImgUrl=subItem
this.$forceUpdate()
},
previewImage(event,subItem){
console.log('event',event)
console.log('subItem',subItem)
@ -417,6 +481,14 @@ export default {
urls: subItem.imgList // http
})
},
//
previewShowImage(event,subItem){
let _this = this
wx.previewImage({
current: event.currentTarget.dataset.src, // http
urls: _this.showImgUrl.PATROLDEAL_URL?[_this.showImgUrl.PATROLDETAIL_URL,_this.showImgUrl.PATROLDEAL_URL]:[_this.showImgUrl.PATROLDETAIL_URL] // http
})
},
//
hidePopup(){
this.showPop = false
@ -483,6 +555,9 @@ export default {
//
handleChangeTab(value){
this.selectTab = value
uni.showLoading({
title: '正在加载...'
})
if (value===1){
//
this.getManagerList()
@ -533,6 +608,16 @@ export default {
}
}
},
//
handleNoShow(item){
console.log('item',item)
item.showChild = !item.showChild
this.$forceUpdate()
},
hideShowImg(){
this.showImg = false
this.showImgUrl = {}
},
//
handleChangePopupTab(value){
this.popupTabSelect = value
@ -541,9 +626,7 @@ export default {
},
//
async getAreaList(){
uni.showLoading({
title: '正在加载...'
})
const total = await request.$webGet(`CommercialApi/BaseInfo/GetSPRegionList`,{Province_Code:Store.state.userData.ProvinceCode})
uni.hideLoading()
if (total.Result_Code===100){
@ -565,7 +648,11 @@ export default {
// id
this.selectAreaValue = item.value
this.selectAreaName = item.label
uni.showLoading({
title: '正在加载...'
})
if (this.selectTab===1){
//
this.getManagerList()
}else if (this.selectTab===2){
@ -600,6 +687,7 @@ export default {
Serverpart_ID:'',// ","
})
this.serviceList = res.Result_Data
uni.hideLoading()
},
//
async getDailyInspectionList(){
@ -610,6 +698,8 @@ export default {
Serverpart_ID:'',// ","
})
this.inspectionList = res.Result_Data
console.log('inspectionList',this.inspectionList)
uni.hideLoading()
},
//
async getMeetingDetail(){
@ -620,6 +710,7 @@ export default {
Serverpart_ID:'',// ","
})
this.meetDetailList = res.Result_Data
uni.hideLoading()
}
}
}
@ -1248,6 +1339,120 @@ export default {
}
}
.serviceList{
.assessmentTable{
width: 100%;
height: calc(78vh - 150px);
box-sizing: border-box;
overflow-y: scroll;
.bigBox{
border-radius: 16rpx;
border: 2rpx solid #D9DBE0;
margin-top: 12px;
.assessmentItem{
width: 100%;
box-sizing: border-box;
padding: 16px;
display: flex;
justify-content: space-between;
align-items: center;
background: linear-gradient(314deg, #EAEFFF 0%, #F3F5FF 32%, #F5FCFF 50%, #F0F7FF 67%, #DBE5FF 100%);
border-radius: 16rpx;
border-bottom: 2rpx solid #D9DBE0;
.left{
font-size: 16px;
font-family: AlimamaShuHeiTi;
color: #1A5FFF;
line-height: 22px;
background: rgba(26, 95, 255, 0.1);
border-radius: 14px;
padding: 4px 16px;
display: inline-block;
}
.right{
display: flex;
align-items: center;
.label{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: 400;
color: #160002;
.name{
font-size: 16px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: 600;
color: #160002;
margin-left: 4px;
}
}
.more{
width: 14px;
height: 26px;
margin-left: 8px;
}
}
}
.smallItem{
box-sizing: border-box;
padding: 16px;
border-bottom: 2px solid #EEEEEE;
.top{
width: 100%;
display: flex;
justify-content: space-between;
margin-bottom: 12px;
.time{
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
}
.label{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: 400;
color: #160002;
.name{
font-size: 16px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: 600;
color: #160002;
margin-left: 4px;
}
}
}
.itemBox{
width: 100%;
display: flex;
align-items: center;
.detailItem{
width: 100%;
.detailValue{
.right{
width: 20px;
height: 20px;
}
.detailText{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
}
}
.detailLabel{
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 36rpx;
}
}
}
}
}
}
.tab{
width: 100%;
height: 38px;
@ -1256,6 +1461,7 @@ export default {
margin-top: 16px;
box-sizing: border-box;
padding: 4px;
margin-bottom: 8px;
.tabItem{
display: inline-block;
width: 50%;
@ -1375,6 +1581,27 @@ export default {
}
}
}
.previewImg{
width: 100%;
height: 60vh;
box-sizing: border-box;
padding: 16px;
.top{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.close{
width: 20px;
height: 20px;
}
}
.content{
width: 100%;
height: 55vh;
overflow-y: scroll;
}
}
::-webkit-scrollbar {
width: 4px;
height: 4px;

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1690861320580" class="icon" viewBox="0 0 1397 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2273" xmlns:xlink="http://www.w3.org/1999/xlink" width="272.8515625" height="200"><path d="M1396.363636 121.018182c0 0-223.418182 74.472727-484.072727 372.363636-242.036364 269.963636-297.890909 381.672727-390.981818 530.618182C512 1014.690909 372.363636 744.727273 0 549.236364l195.490909-186.181818c0 0 176.872727 121.018182 297.890909 344.436364 0 0 307.2-474.763636 902.981818-707.490909L1396.363636 121.018182 1396.363636 121.018182zM1396.363636 121.018182" fill="#272636" p-id="2274"></path></svg>

After

Width:  |  Height:  |  Size: 753 B