This commit is contained in:
ylj20011123 2025-05-12 19:31:04 +08:00
parent 451116e601
commit dce88d549e
4 changed files with 734 additions and 339 deletions

View File

@ -222,7 +222,6 @@ export default {
userInfo = JSON.parse(userInfo);
if (userInfo) {
this.useInfo = JSON.parse(JSON.stringify(userInfo));
console.log("this.useInfo", this.useInfo);
}
//
this.handleGetServerpartList();
@ -230,7 +229,6 @@ export default {
methods: {
//
handleGoDetail(obj) {
console.log("obj", obj);
//
if (obj.situation === 1) {
this.$util.toNextRoute(

View File

@ -7,29 +7,123 @@
: '100%',
}" :scroll-y="true">
<view class="topContent">
<view class="placeBox">
<image class="itemIcon" src="/static/images/mbwa/fixed.svg" />
<view class="placeName">{{ detailObj.placeName || "-" }}</view>
<view class="statusBox" :style="{
color:
<view class="placeBox"
:style="{ backgroundImage: `url(${extendObj.situation === 0 ? 'https://eshangtech.com/minTestImg/normalBg.png' : 'https://eshangtech.com/minTestImg/errorBg.png'})` }">
<view class="placeBoxTop">
<view class="placeLeft">
<image class="itemIcon" src="/static/images/mbwa/fixed.svg" />
<view class="placeName">{{ detailObj.placeName || "-" }}</view>
</view>
<view class="statusBox" :style="{
color:
extendObj.situation === 0
? '#139942'
: extendObj.situation === 1
? '#F75031'
: '',
background:
extendObj.situation === 0
? '#EBF7EF'
: extendObj.situation === 1
? '#FEF0ED'
: '',
}">{{
extendObj.situation === 0
? '#139942'
? "正常情况"
: extendObj.situation === 1
? '#F75031'
: '',
background:
extendObj.situation === 0
? '#EBF7EF'
: extendObj.situation === 1
? '#FEF0ED'
: '',
}">{{
extendObj.situation === 0
? "正常情况"
: extendObj.situation === 1
? "急需处理"
: "-"
}}</view>
? "急需处理"
: "-"
}}</view>
</view>
<view class="placeBoxBottom">
<view class="topBox">巡检进度</view>
<view class="progressContent">
<view class="progressItem">
<view class="itemLeft">
<image class="img" :src="user.Membership_Headimage" />
<image class="successIcon" src="/static/images/mbwa/successSmallIcon.svg" />
</view>
<view class="itemRight">
<view class="itemTop">
<text class="name">{{ detailObj.userName || "-" }}</text>
<text class="time">{{
detailObj.createdAt
? $moment(detailObj.createdAt).format(
"YYYY-MM-DD HH:mm:ss"
)
: "-"
}}</text>
</view>
<view class="itemBottom">
<view class="itemBottonLeft">{{ extendObj.uploadResult }}</view>
<view class="itemBottonRight">提交</view>
</view>
</view>
</view>
<view class="progressItem" style="margin-top: 40rpx" v-if="extendObj.errorStatus >= 1"
@click="handleShowPopup(1)">
<view class="itemLeft">
<image class="img" :src="user.Membership_Headimage" />
<image class="successIcon" src="/static/images/mbwa/successSmallIcon.svg" />
</view>
<view class="itemRight">
<view class="itemTop">
<text class="name">{{
extendObj.personMemberShipName || "-"
}}</text>
<text class="time">{{
extendObj.suggestTime
? $moment(extendObj.suggestTime).format(
"YYYY-MM-DD HH:mm:ss"
)
: "-"
}}</text>
</view>
<view class="itemBottom">
<view class="itemBottonLeft">{{ extendObj.suggestion }}</view>
<view style="display: flex;">
<view class="itemBottonRight" style="margin-right: 20rpx;" @click="handleOpenChangePopup"
v-if="canChangePerson">更换指派人</view>
<view class="itemBottonRight" v-if="extendObj.suggestTime">指派</view>
</view>
</view>
<!-- <view class="itemBottom">{{ extendObj.suggestion }}</view> -->
</view>
</view>
<view class="progressItem" style="margin-top: 40rpx" v-if="extendObj.errorStatus === 2"
@click="handleShowPopup(2)">
<view class="itemLeft">
<image class="img" :src="user.Membership_Headimage" />
<image class="successIcon" src="/static/images/mbwa/successSmallIcon.svg" />
</view>
<view class="itemRight">
<view class="itemTop">
<text class="name">{{
extendObj.personMemberShipName || "-"
}}</text>
<text class="time">{{
extendObj.feedbackTime
? $moment(extendObj.feedbackTime).format(
"YYYY-MM-DD HH:mm:ss"
)
: "-"
}}</text>
</view>
<view class="itemBottom">
<view class="itemBottonLeft">{{ extendObj.feedbackContent }}</view>
<view class="itemBottonRight" v-if="extendObj.feedbackTime">反馈</view>
</view>
<!-- <view class="itemBottom">{{ extendObj.feedbackContent }}</view> -->
</view>
</view>
</view>
</view>
<!-- <view class="userBox">
<view class="userTop">
@ -47,6 +141,47 @@
</view> -->
</view>
<!-- 指派人 -->
<view class="assignedPerson" v-if="extendObj.situation === 1 && isManager">
<view class="contentTop">
整改意见<span class="required">*</span>
</view>
<div class="inputBox">
<textarea auto-height v-model="suggestion" placeholder="请输入整改意见"
:disabled="extendObj.errorStatus !== 0"></textarea>
</div>
<view class="contentTop" style="margin-top: 40rpx;">
指派异常处理人<span class="required">*</span>
</view>
<view class="radioSelectPersonBox">
<radio-group class="radioGroup" @change="handleNewChangePerson">
<label class="choiceItem" v-for="(item, index) in selectPersonList" :key="index"
:style="{ marginTop: index > 2 ? '16rpx' : '' }">
<view>
<radio :value="index" color="#409eff" style="transform: scale(0.8)" />
</view>
<view>{{ item.MEMBERSHIP_NAME }}</view>
</label>
</radio-group>
</view>
</view>
<!-- 反馈的 -->
<view class="assignedPerson" v-if="extendObj.errorStatus >= 1 && isFeedback">
<view class="contentTop">
反馈内容<span class="required">*</span>
</view>
<div class="inputBox">
<textarea auto-height v-model="feedbackContent" placeholder="请输入反馈内容"
:disabled="extendObj.errorStatus === 2"></textarea>
</div>
</view>
<view class="inspectionContent">
<view class="contentTop">
巡检内容<span class="required">*</span>
@ -105,24 +240,51 @@
<!-- 单选题 -->
<view v-if="requestionRadioList && requestionRadioList.length > 0">
<view class="questionItem" v-for="(item, index) in requestionRadioList" :key="index">
<view class="quetionTitle">{{ item.question.title
}}<text class="required" v-if="item.isRequired">*</text></view>
<template>
<view class="quetionTitle">{{ item.question.title
}}<text class="required" v-if="item.isRequired">*</text></view>
<view class="checkedBottom" v-if="item.isChecked && item.isChecked.length > 0">
<view class="bottomItem" style="margin-bottom: 0" v-for="(subItem, subIndex) in item.isChecked"
:key="subIndex">
<view>{{ subItem || "" }}</view>
<!-- <image
<view class="checkedBottom" v-if="item.isChecked && item.isChecked.length > 0">
<view class="bottomItem" style="margin-bottom: 0" v-for="(subItem, subIndex) in item.isChecked"
:key="subIndex">
<view>{{ subItem || "" }}</view>
<!-- <image
@click="handDeleteChecked(item, subItem)"
class="closeIcon"
src="/static/images/mbwa/closeIcon.svg"
/> -->
</view>
</view>
</view>
<view class="imgItem" v-for="(subItem, subIndex) in item.imageResponse" :key="subIndex">
<image :src="subItem" @click="showImg2(subIndex, item.imageResponse)" mode="aspectFill" />
</view>
<view class="beforeRectification" v-if="extendObj.errorStatus >= 1">整改前</view>
<view style="display: flex;flex-wrap: wrap;">
<view class="imgItem" v-for="(subItem, subIndex) in item.imageResponse" :key="subIndex">
<image :src="subItem" @click="showImg2(subIndex, item.imageResponse)" mode="aspectFill" />
</view>
</view>
<view class="afterRectification" v-if="extendObj.errorStatus >= 1">整改后</view>
<view class="uploadImgBox" v-if="extendObj.errorStatus >= 1">
<div v-if="extendObj.errorStatus === 1" class="submitImgBox"
@click="submitImg($event, item, 'feedback')">
<image class="addIcon" src="/static/images/mbwa/addImageIcon.svg" />
</div>
<view style="display: flex;flex-wrap: wrap;">
<div class="imgItem" v-for="(subItem, subIndex) in item.feedbackImg" :key="subIndex">
<image :src="subItem" @tap="showImg2(subIndex, item.feedbackImg)" mode="aspectFill" />
<view v-if="extendObj.errorStatus === 1" class="closeBox" @click.stop="
deleteImgFuncResponse(item.feedbackImg, subIndex)
">
<image class="closeIcon" src="/static/images/mbwa/closeIcon.svg" />
</view>
</div>
</view>
</view>
</template>
<!-- <radio-group
class="radioGroup"
@ -187,7 +349,7 @@
</view>
<!-- 只有异常的时候才会出现的巡检进度 -->
<view class="progressBox">
<view class="progressBox" v-if="false">
<view class="progress">
<view class="topBox">巡检进度</view>
@ -281,7 +443,7 @@
</view>
<!-- 正常指派人 反馈的弹出框 -->
<uniPopup ref="checkPopup" type="bottom" :show="isShowPopup" @hidePopup="handleClosePopup">
<uniPopup v-if="false" ref="checkPopup" type="bottom" :show="isShowPopup" @hidePopup="handleClosePopup">
<view class="popupBox">
<view class="contentTop">
<view class="left"></view>
@ -851,7 +1013,8 @@ export default {
},
//
handleAssign() {
this.isShowPopup = true;
// this.isShowPopup = true;
this.handleGetUpdate()
},
//
handleClosePopup() {
@ -862,6 +1025,18 @@ export default {
deleteImgFunc(item, index) {
this.feedbackImgList.splice(index, 1);
},
//
handleNewChangePerson(e) {
console.log('eeeee', e);
let index = Number(e.detail.value);
this.selectPersonIndex = index;
console.log('this.selectPersonIndexthis.selectPersonIndex', this.selectPersonIndex);
let list = JSON.parse(JSON.stringify(this.selectPersonList));
let personObj = list[this.selectPersonIndex]
this.selectPersonObj = personObj;
},
//
handleChangePerson(e) {
let index = Number(e.detail.value);
@ -1011,6 +1186,18 @@ export default {
//
this.isFeedback = true;
}
if (extend.errorStatus === 2) {
//
if (requestionRadioList && requestionRadioList.length > 0) {
requestionRadioList.forEach((item) => {
if (extend.newFeedbackImgList[item.id]) {
item.feedbackImg = extend.newFeedbackImgList[item.id]
}
})
}
this.requestionRadioList = requestionRadioList;
}
}
@ -1099,7 +1286,7 @@ export default {
let req = {};
if (this.extendObj.errorStatus === 0) {
if (!this.selectPersonObj) {
if (!this.selectPersonObj.MEMBERSHIP_ID) {
uni.showToast({
title: "请选择处理人!",
icon: "none",
@ -1127,6 +1314,11 @@ export default {
personMemberShipName: this.user.Membership_Name,
personId: this.user.UserId,
personName: this.user.UserName,
suggestMemberShipId: this.detailObj.suggestMemberShipId || personObj.MEMBERSHIP_ID,
suggestMemberShipName: this.detailObj.suggestMemberShipName || personObj.MEMBERSHIP_NAME,
suggestPersonId: this.detailObj.suggestPersonId || personObj.STAFF_ID,
suggestPersonName: this.detailObj.suggestPersonName || personObj.STAFF_NAME,
// suggestPerson: {
// STAFF_NAME: this.user.UserName,
// STAFF_ID: this.user.UserId,
@ -1144,6 +1336,10 @@ export default {
// key
let newResImgList = {};
let list = this.detailObj.questionResponses;
console.log('listlistlistlistlistlist', list);
if (list && list.length > 0) {
list.forEach((item) => {
if (!(item.score > 0)) {
@ -1218,9 +1414,9 @@ export default {
// // id: this.detailObj.id,
// // extend: JSON.stringify(req)
// }
// )
// )
console.log('req', req);
// return
const data = await this.$request.$webJavaPOST(
`questionnaire-responses/extend/update`,
{
@ -1306,6 +1502,16 @@ export default {
`https://es.eshangtech.com/${data.data.path}`,
];
}
// if (obj.feedbackImg && obj.feedbackImg.length > 0) {
// obj.feedbackImg.push(
// `https://es.eshangtech.com/${data.data.path}`
// );
// } else {
// obj.feedbackImg = [
// `https://es.eshangtech.com/${data.data.path}`,
// ];
// }
_this.$forceUpdate();
console.log("objobjobjobj21321", obj);
} else {
@ -1357,6 +1563,15 @@ export default {
`https://es.eshangtech.com/${data.data.path}`,
];
}
// if (obj.feedbackImg && obj.feedbackImg.length > 0) {
// obj.feedbackImg.push(
// `https://es.eshangtech.com/${data.data.path}`
// );
// } else {
// obj.feedbackImg = [
// `https://es.eshangtech.com/${data.data.path}`,
// ];
// }
console.log("objobjobjobj21321", obj);
} else {
_this.feedbackImgList.push(
@ -1408,41 +1623,166 @@ export default {
padding: 24rpx;
border-radius: 16rpx;
background: #fff;
background-image: url("https://eshangtech.com/minTestImg/placeBg.png");
background-image: url("https://eshangtech.com/minTestImg/errorBg.png");
background-size: 100% 100%;
background-position: 2rpx 2rpx;
// background-position: 2rpx 2rpx;
background-repeat: no-repeat;
display: flex;
align-items: center;
.itemIcon {
width: 36rpx;
height: 36rpx;
margin-right: 4rpx;
.placeBoxTop {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.placeLeft {
display: flex;
align-items: center;
.itemIcon {
width: 24rpx;
height: 24rpx;
margin-right: 10rpx;
}
.placeName {
font-family: "PingFangSC";
font-weight: 400;
font-size: 30rpx;
color: #010b18;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
}
.statusBox {
margin-left: 12rpx;
font-family: "PingFangSC";
font-weight: 400;
font-size: 24rpx;
color: #139942;
line-height: 36rpx;
text-align: left;
font-style: normal;
padding: 2rpx 8rpx;
border-radius: 4rpx;
}
}
.placeName {
font-family: "PingFangSC";
font-weight: 400;
font-size: 30rpx;
color: #010b18;
line-height: 40rpx;
text-align: left;
font-style: normal;
.placeBoxBottom {
width: 100%;
border-radius: 16rpx;
box-sizing: border-box;
// padding: 24rpx;
margin-top: 20rpx;
.topBox {
font-family: "PingFangSC";
font-weight: 400;
font-size: 28rpx;
color: #676d74;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.progressContent {
width: 100%;
margin-top: 24rpx;
.progressItem {
width: 100%;
display: flex;
align-items: center;
.itemLeft {
width: 80rpx;
height: 80rpx;
margin-right: 16rpx;
position: relative;
.img {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
}
.successIcon {
width: 32rpx;
height: 32rpx;
position: absolute;
right: 0;
bottom: 4rpx;
}
}
.itemRight {
width: 100%;
.itemTop {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.name {
font-family: "PingFangSC";
font-weight: 500;
font-size: 26rpx;
color: #010b18;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.time {
font-family: "PingFangSC";
font-weight: 400;
font-size: 24rpx;
color: #676d74;
line-height: 32rpx;
text-align: left;
font-style: normal;
}
}
.itemBottom {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 8rpx;
.itemBottonLeft {
font-family: "PingFangSC";
font-weight: 400;
font-size: 24rpx;
color: #676d74;
line-height: 32rpx;
text-align: left;
font-style: normal;
margin-top: 4rpx;
}
.itemBottonRight {
font-family: "PingFangSC";
font-weight: 500;
font-size: 22rpx;
color: #425EA4;
text-align: center;
font-style: normal;
text-transform: none;
padding: 0 14rpx;
background-color: #D9E4FF;
border-radius: 8rpx;
}
}
}
}
}
}
.statusBox {
margin-left: 12rpx;
font-family: "PingFangSC";
font-weight: 400;
font-size: 24rpx;
color: #139942;
line-height: 36rpx;
text-align: left;
font-style: normal;
padding: 2rpx 8rpx;
border-radius: 4rpx;
}
.userBox {
width: 100%;
@ -1498,6 +1838,57 @@ export default {
}
}
.assignedPerson {
width: 100%;
margin-top: 24rpx;
background: #fff;
border-radius: 16rpx;
box-sizing: border-box;
padding: 24rpx;
.contentTop {
font-family: "PingFangSC";
font-weight: 400;
font-size: 28rpx;
color: #676d74;
line-height: 40rpx;
text-align: left;
font-style: normal;
.required {
font-family: "PingFangSC";
font-weight: 400;
font-size: 24rpx;
color: #ff0000;
line-height: 40rpx;
text-align: left;
font-style: normal;
margin-left: 4rpx;
}
}
.inputBox {
width: 100%;
margin-top: 8rpx;
}
.radioSelectPersonBox {
.radioGroup {
width: 100%;
display: flex;
flex-wrap: wrap;
margin-top: 30rpx;
.choiceItem {
width: 33%;
display: flex;
align-items: flex-start;
padding-right: 0;
}
}
}
}
.inspectionContent {
width: 100%;
margin-top: 24rpx;
@ -1672,6 +2063,21 @@ export default {
}
}
.beforeRectification {
font-family: "PingFangSC";
font-weight: 500;
font-size: 24rpx;
line-height: 30rpx;
color: #FF0004;
text-align: center;
font-style: normal;
padding: 2rpx 4rpx;
background-color: #FFD9D9;
border-radius: 8rpx;
display: inline-block;
margin-bottom: 10rpx;
}
.imgItem {
width: 148rpx;
height: 148rpx;
@ -1703,6 +2109,79 @@ export default {
}
}
}
.afterRectification {
font-family: "PingFangSC";
font-weight: 500;
font-size: 24rpx;
line-height: 30rpx;
color: #00AC4F;
text-align: center;
font-style: normal;
padding: 2rpx 4rpx;
background-color: #D9FFEB;
border-radius: 8rpx;
display: inline-block;
margin-bottom: 10rpx;
}
.uploadImgBox {
width: 100%;
margin-top: 16rpx;
display: flex;
align-items: center;
flex-wrap: wrap;
.submitImgBox {
width: 148rpx;
height: 148rpx;
background: #f7f7f8;
border-radius: 8rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 16rpx;
.addIcon {
width: 48rpx;
height: 48rpx;
color: #b4b5ba;
}
}
.imgItem {
width: 148rpx;
height: 148rpx;
margin-right: 16rpx;
position: relative;
border-radius: 8rpx;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
.closeBox {
width: 32rpx;
height: 32rpx;
border-radius: 0rpx 8rpx 0rpx 8rpx;
background: rgba(6, 10, 25, 0.5);
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
right: 0;
.closeIcon {
width: 24rpx;
height: 24rpx;
}
}
}
}
}
.requestionCheckedItem {

View File

@ -21,32 +21,17 @@
<view class="contentTop">
巡检内容<span class="required">*</span>
</view>
<textarea
v-model="uploadResult"
class="contentBox"
placeholder="请输入巡查内容,并上传现场照片"
placeholderStyle="font-size: 24rpx;color: #CDCED1"
:auto-height="true"
></textarea>
<textarea v-model="uploadResult" class="contentBox" placeholder="请输入巡查内容,并上传现场照片"
placeholderStyle="font-size: 24rpx;color: #CDCED1" :auto-height="true"></textarea>
<view class="uploadImgBox">
<div class="submitImgBox" @click="submitImg">
<image
class="addIcon"
src="/static/images/mbwa/addImageIcon.svg"
/>
<image class="addIcon" src="/static/images/mbwa/addImageIcon.svg" />
</div>
<div class="imgItem" v-for="(item, index) in imgsList" :key="index">
<image
:src="item"
@tap="showImg2(index, imgsList)"
mode="aspectFill"
/>
<image :src="item" @tap="showImg2(index, imgsList)" mode="aspectFill" />
<view class="closeBox" @click.stop="deleteImgFunc(item, index)">
<image
class="closeIcon"
src="/static/images/mbwa/closeIcon.svg"
/>
<image class="closeIcon" src="/static/images/mbwa/closeIcon.svg" />
</view>
</div>
</view>
@ -59,135 +44,83 @@
<!-- 单选题 -->
<view v-if="requestionRadioList && requestionRadioList.length > 0">
<view
class="questionItem"
v-for="(item, index) in requestionRadioList"
:key="index"
>
<view
class="quetionTitle"
@click="handleShowCheckPopup(item, 'radio')"
>
<view class="questionItem" v-for="(item, index) in requestionRadioList" :key="index">
<view class="quetionTitle">
<!-- @click="handleShowCheckPopup(item, 'radio')" -->
<view class="quetionLeft">
{{ item.question.title
}}<text class="required" v-if="item.isRequired">*</text>
</view>
<view class="quetionRight">
<text
class="placeSelect"
v-if="
!(item.choiceResponse && item.choiceResponse.length > 0)
"
>请选择</text
>
<image
class="rightArrow"
src="/static/images/mbwa/rightArrow.svg"
/>
</view>
<!-- <view class="quetionRight">
<text class="placeSelect" v-if="
!(item.choiceResponse && item.choiceResponse.length > 0)
">请选择</text>
<image class="rightArrow" src="/static/images/mbwa/rightArrow.svg" />
</view> -->
</view>
<!-- v-if="!(item.choiceResponse && item.choiceResponse.length > 0)" -->
<view class="choiceResList">
<radio-group @change="handleOutRadioChange($event, item)">
<label class="choiceItem" v-for="(subItem, subIndex) in item.question.options" :key="subItem.text"
:style="{ marginBottom: subIndex + 1 === item.question.options.length ? '0' : '' }">
<view>
<radio :value="subItem.text" color="#409eff" style="transform: scale(0.8)" />
<!-- :checked="subIndex === current" -->
</view>
<view>{{ subItem.text }}</view>
</label>
</radio-group>
</view>
<view
class="checkedBottom"
v-if="item.choiceResponse && item.choiceResponse.length > 0"
>
<view
class="bottomItem"
v-for="(subItem, subIndex) in item.choiceResponse"
:key="subIndex"
>
<!--
<view class="checkedBottom" v-if="item.choiceResponse && item.choiceResponse.length > 0">
<view class="bottomItem" v-for="(subItem, subIndex) in item.choiceResponse" :key="subIndex">
{{ subItem || "" }}
<image
@click="handDeleteChecked(item, subItem, 'radio')"
class="closeIcon"
src="/static/images/mbwa/closeIcon.svg"
/>
<image @click="handDeleteChecked(item, subItem, 'radio')" class="closeIcon"
src="/static/images/mbwa/closeIcon.svg" />
</view>
</view>
</view> -->
<view class="uploadImgBox" v-if="item.showAddImg">
<div
class="submitImgBox"
@click="submitImg($event, item, 'response')"
>
<image
class="addIcon"
src="/static/images/mbwa/addImageIcon.svg"
/>
<div class="submitImgBox" @click="submitImg($event, item, 'response')">
<image class="addIcon" src="/static/images/mbwa/addImageIcon.svg" />
</div>
<div
class="imgItem"
v-for="(subItem, subIndex) in item.imageResponse"
:key="subIndex"
>
<image
:src="subItem"
@tap="showImg2(subIndex, item.imageResponse)"
mode="aspectFill"
/>
<view
class="closeBox"
@click.stop="
deleteImgFuncResponse(item.imageResponse, subIndex)
"
>
<image
class="closeIcon"
src="/static/images/mbwa/closeIcon.svg"
/>
<div class="imgItem" v-for="(subItem, subIndex) in item.imageResponse" :key="subIndex">
<image :src="subItem" @tap="showImg2(subIndex, item.imageResponse)" mode="aspectFill" />
<view class="closeBox" @click.stop="
deleteImgFuncResponse(item.imageResponse, subIndex)
">
<image class="closeIcon" src="/static/images/mbwa/closeIcon.svg" />
</view>
</div>
</view>
</view>
</view>
<view v-if="requestionCheckedList && requestionCheckedList.length > 0">
<view
class="requestionCheckedItem"
v-for="(item, index) in requestionCheckedList"
:key="index"
>
<view
class="checkedTop"
@click="handleShowCheckPopup(item, 'checked')"
>
<!-- 多选题 暂时没有不进行显示 -->
<!-- <view v-if="requestionCheckedList && requestionCheckedList.length > 0">
<view class="requestionCheckedItem" v-for="(item, index) in requestionCheckedList" :key="index">
<view class="checkedTop" @click="handleShowCheckPopup(item, 'checked')">
<view class="topLeft">
{{ item.question.title || ""
}}<text class="required" v-if="item.isRequired">*</text>
</view>
<view class="topRight">
<text
class="placeSelect"
v-if="!(item.isChecked && item.isChecked.length > 0)"
>请选择</text
>
<image
class="rightArrow"
src="/static/images/mbwa/rightArrow.svg"
/>
<text class="placeSelect" v-if="!(item.isChecked && item.isChecked.length > 0)">请选择</text>
<image class="rightArrow" src="/static/images/mbwa/rightArrow.svg" />
</view>
</view>
<view
class="checkedBottom"
v-if="item.isChecked && item.isChecked.length > 0"
>
<view
class="bottomItem"
v-for="(subItem, subIndex) in item.isChecked"
:key="subIndex"
>
<view class="checkedBottom" v-if="item.isChecked && item.isChecked.length > 0">
<view class="bottomItem" v-for="(subItem, subIndex) in item.isChecked" :key="subIndex">
{{ subItem.text || "" }}
<image
@click="handDeleteChecked(item, subItem, 'checked')"
class="closeIcon"
src="/static/images/mbwa/closeIcon.svg"
/>
<image @click="handDeleteChecked(item, subItem, 'checked')" class="closeIcon"
src="/static/images/mbwa/closeIcon.svg" />
</view>
</view>
</view> -->
<!-- <checkbox-group @change="handleChangeCheck">
<!-- <checkbox-group @change="handleChangeCheck">
<label
class="checkItem"
v-for="(subItem, subIndex) in item.question.options"
@ -199,15 +132,15 @@
<view>{{ subItem.text }}</view>
</label>
</checkbox-group> -->
</view>
</view>
<!-- </view>
</view> -->
</view>
<view class="otherBox">
<view class="questionItem">
<view class="quetionTitle"
>情况类型<text class="required">*</text></view
>
<view class="quetionTitle">情况类型<text class="required">*</text></view>
<radio-group class="radioGroup" @change="handleChangeSituationType">
<label class="radioItem">
@ -225,6 +158,8 @@
</radio-group>
</view>
</view>
</scroll-view>
<view class="bottomBtnBox">
@ -244,11 +179,7 @@
<div class="addressBox">
<div class="contentBox">
<image
src="/static/images/publicity/dingwei.png"
mode="aspectFit"
class="addressIcon"
></image>
<image src="/static/images/publicity/dingwei.png" mode="aspectFit" class="addressIcon"></image>
<div>
<p class="xuncha address">{{ detailObj.title || "-" }}</p>
<div>
@ -261,51 +192,33 @@
<div class="formBox">
<ul>
<li>
<span
:class="
inputfocus
? 'circle circleActive circle-first '
: 'circle circle-first'
"
></span>
<span :class="inputfocus
? 'circle circleActive circle-first '
: 'circle circle-first'
"></span>
<div class="examineContent">
<div class="titleBox">
<i :class="inputfocus ? 'img-zds activezds' : 'img-zds'"></i>
<div
:class="inputfocus ? 'titleTextActive' : 'titleText'"
style="display: flex"
>
<div :class="inputfocus ? 'titleTextActive' : 'titleText'" style="display: flex">
<i style="color: red; margin-right: 5px">*</i>巡查内容
</div>
</div>
<div class="inputBox">
<textarea
auto-height
v-model="uploadResult"
placeholder="请输入巡查内容"
focus="true"
@focus="inputfocus = true"
@blur="inputfocus = false"
></textarea>
<textarea auto-height v-model="uploadResult" placeholder="请输入巡查内容" focus="true"
@focus="inputfocus = true" @blur="inputfocus = false"></textarea>
</div>
<div class="tagList" v-for="(tags, i) in tagList" :key="i">
<div class="tagName">
<span
style="display: inline-block; max-width: calc(100% - 10rpx)"
>
<span style="display: inline-block; max-width: calc(100% - 10rpx)">
{{ tags.question.title || "" }}
</span>
<span v-if="tags.isRequired" style="color: red">*</span>
</div>
<div class="tagsBox">
<div
v-for="(tag, s) in tags.question.options"
:key="s"
@tap="selectTag(tag, tags.question)"
:class="tag.ischecked ? 'tagUnit active ' : 'tagUnit'"
>
<div v-for="(tag, s) in tags.question.options" :key="s" @tap="selectTag(tag, tags.question)"
:class="tag.ischecked ? 'tagUnit active ' : 'tagUnit'">
{{ tag.text }}
</div>
</div>
@ -317,32 +230,15 @@
<span :class="imgfocus ? 'circleActive' : 'circle'"></span>
<div class="examineContent">
<div class="titleBox">
<i
:class="imgfocus ? 'img-upload activeupload' : 'img-upload'"
></i>
<div
style="display: flex"
:class="imgfocus ? 'titleTextActive' : 'titleText'"
>
<i :class="imgfocus ? 'img-upload activeupload' : 'img-upload'"></i>
<div style="display: flex" :class="imgfocus ? 'titleTextActive' : 'titleText'">
<i style="color: red; margin-right: 5px">*</i>请上传现场图片
</div>
</div>
<div class="uploadBox">
<div
class="uploadList"
v-for="(item, index) in imgsList"
:key="index"
>
<span
class="upload-file-remove"
@click.stop="deleteImgFunc(item, index)"
>×</span
>
<image
:src="item"
@tap="showImg2(index, imgsList)"
mode="aspectFill"
/>
<div class="uploadList" v-for="(item, index) in imgsList" :key="index">
<span class="upload-file-remove" @click.stop="deleteImgFunc(item, index)">×</span>
<image :src="item" @tap="showImg2(index, imgsList)" mode="aspectFill" />
</div>
<div class="uploadAdd" @click="submitImg">
<div class="upload-file-add-container">
@ -354,33 +250,17 @@
</li>
<li>
<span
:class="
radiofocus
? 'circle circleActive circle-last'
: 'circle circle-last'
"
>
<span :class="radiofocus
? 'circle circleActive circle-last'
: 'circle circle-last'
">
</span>
<div class="examineContent">
<radio-group
@change="radioChange"
style="display: flex"
@click="radioFocus"
@blur="radiofocus = false"
>
<label
class="uni-list-cell"
v-for="(item, index) in options"
:key="item.value"
>
<radio-group @change="radioChange" style="display: flex" @click="radioFocus" @blur="radiofocus = false">
<label class="uni-list-cell" v-for="(item, index) in options" :key="item.value">
<view>
<radio
:value="item.value"
color="#409eff"
:checked="index === current"
style="transform: scale(0.8)"
/>
<radio :value="item.value" color="#409eff" :checked="index === current"
style="transform: scale(0.8)" />
</view>
<view>{{ item.name }}</view>
</label>
@ -393,53 +273,29 @@
</div>
</view>
<uniPopup
ref="checkPopup"
type="bottom"
:show="isShowPopup"
@hidePopup="handleClosePopup"
>
<uniPopup ref="checkPopup" type="bottom" :show="isShowPopup" @hidePopup="handleClosePopup">
<view class="popupBox">
<scroll-view class="checkPopupContent" :scroll-y="true">
<view v-if="questionType === 'checked'">
<view class="anwersList" v-if="popupShowObj">
<view
class="anwersItem"
v-for="(item, index) in popupShowObj.question.options"
:key="index"
@click="handleCheckAnwers(popupShowObj, item)"
>
<view
:class="item.checked ? 'anwers selectAnwersItem' : 'anwers'"
>
{{ item.text || "" }}</view
>
<view class="anwersItem" v-for="(item, index) in popupShowObj.question.options" :key="index"
@click="handleCheckAnwers(popupShowObj, item)">
<view :class="item.checked ? 'anwers selectAnwersItem' : 'anwers'">
{{ item.text || "" }}</view>
</view>
</view>
</view>
<view v-if="questionType === 'radio'">
<radio-group
class="radioGroup"
v-if="
popupShowObj.question &&
popupShowObj.question.options &&
popupShowObj.question.options.length > 0
"
@change="radioChange($event, popupShowObj)"
>
<label
class="radioItem"
v-for="(subItem, subIndex) in popupShowObj.question.options"
:key="subIndex"
>
<radio-group class="radioGroup" v-if="
popupShowObj.question &&
popupShowObj.question.options &&
popupShowObj.question.options.length > 0
" @change="radioChange($event, popupShowObj)">
<label class="radioItem" v-for="(subItem, subIndex) in popupShowObj.question.options" :key="subIndex">
<view>
<radio
color="#3B72FF"
iconColor="#3B72FF"
:value="subItem.text"
:checked="popupShowObj.choiceResponse[0] === subItem.text"
/>
<radio color="#3B72FF" iconColor="#3B72FF" :value="subItem.text"
:checked="popupShowObj.choiceResponse[0] === subItem.text" />
</view>
<view style="font-size: 24rpx; text-align: left">{{
subItem.text
@ -511,6 +367,49 @@ export default {
this.handleGetModalData(query.id);
},
methods: {
//
handleOutRadioChange(e, obj) {
console.log('eeee', e);
console.log('objobjobjobjobj', obj);
let requestionList = obj.question.options
let score = 0
requestionList.forEach(item => {
if (item.text === e.detail.value) {
score = item.mark
if (item.mark !== 1) {
obj.showAddImg = true;
} else {
obj.showAddImg = false;
}
}
})
obj.choiceResponse = [e.detail.value]
obj.score = score
// obj.question = {
// ...obj.question,
// choiceResponse: [e.detail.value],
// score: score
// }
console.log("requestionRadioList", this.requestionRadioList);
if (this.requestionRadioList && this.requestionRadioList.length > 0) {
// 0
// markundefined 0 1
let haveError = false;
this.requestionRadioList.forEach((item) => {
if (item.score === 0) {
haveError = true;
}
});
if (haveError) {
this.current = 1;
} else {
this.current = 0;
}
}
this.$forceUpdate()
},
//
deleteImgFunc(item, index) {
this.imgsList.splice(index, 1);
@ -565,13 +464,21 @@ export default {
}
}
if (item.showAddImg) {
if (item.imageResponse && item.imageResponse.length > 0) {
} else {
AllOK = false;
}
}
if (item.choiceResponse && item.choiceResponse.length > 0) {
questionResponsesList.push({
questionId: item.questionId,
textResponse: "",
choiceResponse: item.choiceResponse,
imageResponse: item.imageResponse,
score: item.choiceResponse[0].mark || (item.mark ? item.mark : 0),
// score: item.choiceResponse[0].mark || (item.mark ? item.mark : 0),
score: item.score,
});
let mark =
item.choiceResponse[0].mark || (item.mark ? item.mark : 0);
@ -647,6 +554,7 @@ export default {
};
console.log("req", req);
// return
// node
// const data = await this.$request.$webNodePOST(
// `questionnaire-responses`,
@ -1108,7 +1016,7 @@ export default {
// },
// });
},
fail: function (err) {},
fail: function (err) { },
});
},
//
@ -1227,30 +1135,30 @@ export default {
background: #fff;
background-image: url("https://eshangtech.com/minTestImg/placeBg.png");
background-size: 100% 100%;
background-position: 2rpx 2rpx;
// background-position: 2rpx 2rpx;
background-repeat: no-repeat;
.placeName {
font-family: "PingFangSC";
font-weight: 400;
font-family: "PingFang SC";
font-weight: 500;
font-size: 26rpx;
color: #010b18;
line-height: 40rpx;
line-height: 36rpx;
color: #000000;
text-align: left;
font-style: normal;
}
.userBox {
width: 100%;
margin-top: 12rpx;
margin-top: 16rpx;
.userTop {
.userName {
font-family: "PingFangSC";
font-weight: 400;
font-family: "PingFang SC";
font-weight: 500;
font-size: 26rpx;
color: #010b18;
line-height: 40rpx;
line-height: 36rpx;
color: #000000;
text-align: left;
font-style: normal;
margin-right: 12rpx;
@ -1259,13 +1167,13 @@ export default {
.labelBox {
font-family: "PingFangSC";
font-weight: 400;
font-size: 24rpx;
color: #676d74;
font-size: 22rpx;
color: #5D77B5;
line-height: 32rpx;
text-align: left;
font-style: normal;
padding: 2rpx 8rpx;
background: #f0f2f7;
background: #D4E0FC;
border-radius: 4rpx;
}
}
@ -1276,9 +1184,9 @@ export default {
margin-top: 8rpx;
.timeIcon {
width: 32rpx;
height: 32rpx;
margin-right: 4rpx;
width: 30rpx;
height: 30rpx;
margin-right: 6rpx;
}
.nowTime {
@ -1405,6 +1313,7 @@ export default {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 30rpx;
.quetionLeft {
font-family: "PingFangSC";
@ -1547,6 +1456,17 @@ export default {
}
}
}
.choiceResList {
width: 100%;
.choiceItem {
display: flex;
align-items: flex-start;
margin-bottom: 20rpx;
}
}
}
.requestionCheckedItem {

View File

@ -1,12 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组_8@2x</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-50.000000, -25.000000)">
<g id="编组-8" transform="translate(50.000000, 25.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M10,2 C13.8659932,2 17,5.13400675 17,9 C17,11.5773288 14.6666667,14.5773288 10,18 C5.33333333,14.5773288 3,11.5773288 3,9 C3,5.13400675 6.13400675,2 10,2 Z M10,7 C8.8954305,7 8,7.8954305 8,9 C8,10.1045695 8.8954305,11 10,11 C11.1045695,11 12,10.1045695 12,9 C12,7.8954305 11.1045695,7 10,7 Z" id="形状结合" fill="#3B72FF"></path>
</g>
</g>
</g>
</svg>
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#229;&#157;&#144;&#230;&#160;&#135;" clip-path="url(#clip0_8_534)">
<path id="Vector" d="M5.99997 0C3.12564 0 0.795532 2.33011 0.795532 5.20444C0.795532 8.61328 5.99997 12 5.99997 12C5.99997 12 11.2044 8.58984 11.2044 5.20444C11.2044 2.33011 8.8743 0 5.99997 0ZM5.99997 6.9767C4.80263 6.9767 3.832 6.00607 3.832 4.80873C3.832 3.61139 4.80263 2.64076 5.99997 2.64076C7.19731 2.64076 8.16794 3.61139 8.16794 4.80873C8.16794 6.00607 7.19731 6.9767 5.99997 6.9767Z" fill="#4C4C4C"/>
</g>
<defs>
<clipPath id="clip0_8_534">
<rect width="12" height="12" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 925 B

After

Width:  |  Height:  |  Size: 694 B