|
@@ -1,43 +1,26 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="imageAIVerifyErr">
|
|
<div class="imageAIVerifyErr">
|
|
|
<el-dialog
|
|
<el-dialog
|
|
|
- title=""
|
|
|
|
|
|
|
+ title="图像识别结果"
|
|
|
:visible.sync="vanPopup"
|
|
:visible.sync="vanPopup"
|
|
|
width="80%"
|
|
width="80%"
|
|
|
:append-to-body="true"
|
|
:append-to-body="true"
|
|
|
:close-on-click-modal="false"
|
|
:close-on-click-modal="false"
|
|
|
@close="close"
|
|
@close="close"
|
|
|
custom-class="AIVerifyErrdialog">
|
|
custom-class="AIVerifyErrdialog">
|
|
|
- <div class="AIVerifyErrMask">
|
|
|
|
|
- <div class="contentAIVerify">
|
|
|
|
|
- <!-- <div class="uploadImgAIVerify" @click="uploadImg(false)" v-if="shopSignChange == 0">
|
|
|
|
|
- <div class="labelAIVerify"><span class="van-f-red-AIVerify">*</span>重新拍照上传</div>
|
|
|
|
|
- <div class="iconAIVerify">
|
|
|
|
|
- <van-icon class="photoAIVerify" name="photograph" size="22px" color="#969696" />
|
|
|
|
|
- </div>
|
|
|
|
|
- </div> -->
|
|
|
|
|
- <div class="errorImg" v-if="shopSignChange == 0">
|
|
|
|
|
- <img
|
|
|
|
|
- v-if="imageAIVerifyData.url"
|
|
|
|
|
- :src="imageAIVerifyData.url"
|
|
|
|
|
- width="100%"
|
|
|
|
|
- height="200px"
|
|
|
|
|
- @click="previewsImg(imageAIVerifyData.url)" />
|
|
|
|
|
- <img v-else :src="imageEmpty" width="100%" height="200px" />
|
|
|
|
|
|
|
+ <div class="AIVerifyErrMask" v-if="npkpiData">
|
|
|
|
|
+ <!-- shopSignChange 与历史照片是否一致(是否要更换照片) 0一致(要更换),1不一致(不要更换) -->
|
|
|
|
|
+ <template v-if="shopSignChange == 0">
|
|
|
|
|
+ <div class="errorImg">
|
|
|
|
|
+ <img v-if="url" :src="url" height="300px" @click="previewsImg(url)" />
|
|
|
|
|
+ <img v-else :src="imageEmpty" width="100%" height="300px" />
|
|
|
</div>
|
|
</div>
|
|
|
<div class="AIVerify">
|
|
<div class="AIVerify">
|
|
|
- 图像识别结果:<span style="color: red">{{ contentMessage }}</span>
|
|
|
|
|
|
|
+ <span>{{ contentMessage }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- <!-- shopSignChange 与历史照片是否一致(是否要更换照片) 0一致(要更换),1不一致(不要更换) -->
|
|
|
|
|
- <template v-if="shopSignChange == 0">
|
|
|
|
|
- <template v-if="shotsNum >= 3">
|
|
|
|
|
- <!-- 拜访店招显示 -->
|
|
|
|
|
- <div class="tipsAIVerify" v-if="npkpiData.recognizeType == 1">
|
|
|
|
|
- <van-icon name="question-o" />上传后作为本店标准店招,未来每次拜访时校验。
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <template v-if="shotsNum >= maxNum">
|
|
|
<div class="feedbackMessage">
|
|
<div class="feedbackMessage">
|
|
|
- <div class="label">反馈图像识别不正确:</div>
|
|
|
|
|
|
|
+ <div class="label">若图像识别不正确,可在此反馈:</div>
|
|
|
<div class="value">
|
|
<div class="value">
|
|
|
<van-field
|
|
<van-field
|
|
|
v-model="feedbackMessage"
|
|
v-model="feedbackMessage"
|
|
@@ -50,63 +33,62 @@
|
|
|
</template>
|
|
</template>
|
|
|
<div class="uploadBtnAIVerify">
|
|
<div class="uploadBtnAIVerify">
|
|
|
<div class="confirmUploadAIVerify" @click="uploadImg(false)">重新拍照</div>
|
|
<div class="confirmUploadAIVerify" @click="uploadImg(false)">重新拍照</div>
|
|
|
- <div v-if="shotsNum >= 3" class="stillUploadAIVerify" @click="confirmUpload">
|
|
|
|
|
|
|
+ <div v-if="shotsNum >= maxNum" class="stillUploadAIVerify" @click="confirmUpload">
|
|
|
仍要上传
|
|
仍要上传
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <template v-if="shotsNum >= maxNum">
|
|
|
|
|
+ <div class="tipsAIVerify" v-if="npkpiData.recognizeType == 1">
|
|
|
|
|
+ <van-icon name="question-o" />上传后作为本店标准店招,未来每次拜访时校验。
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="shopSignChange == 1">
|
|
<template v-if="shopSignChange == 1">
|
|
|
<div class="historyImageAIVerify">
|
|
<div class="historyImageAIVerify">
|
|
|
<!-- 有门店身份证时 只显示门店身份证和本地拜访照 -->
|
|
<!-- 有门店身份证时 只显示门店身份证和本地拜访照 -->
|
|
|
- <template v-if="imageAIVerifyData.storeIDCardUrl">
|
|
|
|
|
|
|
+ <template v-if="storeIDCardUrl">
|
|
|
<div class="storeIDCardUrl imageItemAIVerify">
|
|
<div class="storeIDCardUrl imageItemAIVerify">
|
|
|
<img
|
|
<img
|
|
|
- :src="imageAIVerifyData.storeIDCardUrl"
|
|
|
|
|
|
|
+ :src="storeIDCardUrl"
|
|
|
width="100px"
|
|
width="100px"
|
|
|
height="100px"
|
|
height="100px"
|
|
|
- @click="previewsImg(imageAIVerifyData.storeIDCardUrl)" />
|
|
|
|
|
|
|
+ @click="previewsImg(storeIDCardUrl)" />
|
|
|
<span>门店标准店招</span>
|
|
<span>门店标准店招</span>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else>
|
|
<template v-else>
|
|
|
<div class="initImage imageItemAIVerify">
|
|
<div class="initImage imageItemAIVerify">
|
|
|
<img
|
|
<img
|
|
|
- v-if="imageAIVerifyData.createStoreUrl"
|
|
|
|
|
- :src="imageAIVerifyData.createStoreUrl"
|
|
|
|
|
|
|
+ v-if="createStoreUrl"
|
|
|
|
|
+ :src="createStoreUrl"
|
|
|
width="100px"
|
|
width="100px"
|
|
|
height="100px"
|
|
height="100px"
|
|
|
- @click="previewsImg(imageAIVerifyData.createStoreUrl)" />
|
|
|
|
|
|
|
+ @click="previewsImg(createStoreUrl)" />
|
|
|
<img v-else :src="imageEmpty" width="100px" height="100px" />
|
|
<img v-else :src="imageEmpty" width="100px" height="100px" />
|
|
|
<span>建店时门店照</span>
|
|
<span>建店时门店照</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="newestImage imageItemAIVerify">
|
|
<div class="newestImage imageItemAIVerify">
|
|
|
<img
|
|
<img
|
|
|
- v-if="imageAIVerifyData.lastVisitUrl"
|
|
|
|
|
- :src="imageAIVerifyData.lastVisitUrl"
|
|
|
|
|
|
|
+ v-if="lastVisitUrl"
|
|
|
|
|
+ :src="lastVisitUrl"
|
|
|
width="100px"
|
|
width="100px"
|
|
|
height="100px"
|
|
height="100px"
|
|
|
- @click="previewsImg(imageAIVerifyData.lastVisitUrl)" />
|
|
|
|
|
|
|
+ @click="previewsImg(lastVisitUrl)" />
|
|
|
<img v-else :src="imageEmpty" width="100px" height="100px" />
|
|
<img v-else :src="imageEmpty" width="100px" height="100px" />
|
|
|
<span>上次拜访店招</span>
|
|
<span>上次拜访店招</span>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
<div class="presentImage imageItemAIVerify">
|
|
<div class="presentImage imageItemAIVerify">
|
|
|
- <img
|
|
|
|
|
- v-if="imageAIVerifyData.url"
|
|
|
|
|
- :src="imageAIVerifyData.url"
|
|
|
|
|
- width="100px"
|
|
|
|
|
- height="100px"
|
|
|
|
|
- @click="previewsImg(imageAIVerifyData.url)" />
|
|
|
|
|
|
|
+ <img v-if="url" :src="url" width="100px" height="100px" @click="previewsImg(url)" />
|
|
|
<img v-else :src="imageEmpty" width="100px" height="100px" />
|
|
<img v-else :src="imageEmpty" width="100px" height="100px" />
|
|
|
<span>本次拜访店招</span>
|
|
<span>本次拜访店招</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="tipsRemarkAIVerify">
|
|
|
|
|
- <div>若历史照片拍摄不规范,请选择<span style="color: #81b337">更新门店照</span></div>
|
|
|
|
|
- <div>本次拜访店招会作为本店标准店招,未来每次拜访时校验</div>
|
|
|
|
|
|
|
+ <div class="AIVerify">
|
|
|
|
|
+ <span>{{ contentMessage }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="feedbackMessage">
|
|
<div class="feedbackMessage">
|
|
|
- <div class="label">反馈图像识别不正确:</div>
|
|
|
|
|
|
|
+ <div class="label">若图像识别不正确,可在此反馈:</div>
|
|
|
<div class="value">
|
|
<div class="value">
|
|
|
<van-field
|
|
<van-field
|
|
|
v-model="feedbackMessage"
|
|
v-model="feedbackMessage"
|
|
@@ -120,6 +102,10 @@
|
|
|
<div class="confirmUploadAIVerify" @click="uploadImg(true)">重新拍照</div>
|
|
<div class="confirmUploadAIVerify" @click="uploadImg(true)">重新拍照</div>
|
|
|
<div class="changeImageAIVerify" @click="confirmUpDataImage()">更新门店照</div>
|
|
<div class="changeImageAIVerify" @click="confirmUpDataImage()">更新门店照</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div class="tipsRemarkAIVerify">
|
|
|
|
|
+ <div>若历史照片拍摄不规范,请选择<span style="color: #81b337">更新门店照</span></div>
|
|
|
|
|
+ <div>本次拜访店招会作为本店标准店招,未来每次拜访时校验</div>
|
|
|
|
|
+ </div>
|
|
|
</template>
|
|
</template>
|
|
|
</div>
|
|
</div>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
@@ -166,6 +152,11 @@ export default {
|
|
|
shopSignChange: 0,
|
|
shopSignChange: 0,
|
|
|
npkpiData: null,
|
|
npkpiData: null,
|
|
|
feedbackMessage: '', //反馈图像识别不正确原因
|
|
feedbackMessage: '', //反馈图像识别不正确原因
|
|
|
|
|
+ url: '', // 本次图片路径
|
|
|
|
|
+ createStoreUrl: '', // 建店时店招
|
|
|
|
|
+ lastVisitUrl: '', // 上次拜访时店招
|
|
|
|
|
+ storeIDCardUrl: '', // 门店身份证
|
|
|
|
|
+ maxNum: 2,
|
|
|
};
|
|
};
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
@@ -183,7 +174,13 @@ export default {
|
|
|
this.source == 'visit'
|
|
this.source == 'visit'
|
|
|
? this.imageAIVerifyData.npkpiData
|
|
? this.imageAIVerifyData.npkpiData
|
|
|
: this.imageAIVerifyData[0].npkpiData;
|
|
: this.imageAIVerifyData[0].npkpiData;
|
|
|
|
|
+ let imageAIVerifyData =
|
|
|
|
|
+ this.source == 'visit' ? this.imageAIVerifyData : this.imageAIVerifyData[0];
|
|
|
this.shopSignMatchList = this.npkpiData.shopSignMatchList;
|
|
this.shopSignMatchList = this.npkpiData.shopSignMatchList;
|
|
|
|
|
+ this.url = imageAIVerifyData.url || ''; // 图片路径
|
|
|
|
|
+ this.createStoreUrl = imageAIVerifyData.createStoreUrl || ''; // 建店时店招
|
|
|
|
|
+ this.lastVisitUrl = imageAIVerifyData.lastVisitUrl || ''; // 上次拜访时店招
|
|
|
|
|
+ this.storeIDCardUrl = imageAIVerifyData.storeIDCardUrl || ''; // 门店身份证
|
|
|
// 先判断照片作弊情况,然后是否合格,然后是否和历史照片一致
|
|
// 先判断照片作弊情况,然后是否合格,然后是否和历史照片一致
|
|
|
// 作弊和不合格记录识别次数,超过两次弹框提醒
|
|
// 作弊和不合格记录识别次数,超过两次弹框提醒
|
|
|
if (this.npkpiData.checkInfo) {
|
|
if (this.npkpiData.checkInfo) {
|
|
@@ -235,7 +232,7 @@ export default {
|
|
|
// isUpdate:是否更新店招照片,只有门店店招需要更新
|
|
// isUpdate:是否更新店招照片,只有门店店招需要更新
|
|
|
confirmUpload() {
|
|
confirmUpload() {
|
|
|
// 拜访店招 不合格或作弊三次先提示是否仍要上传,确认后在判断是否与历史照片一致
|
|
// 拜访店招 不合格或作弊三次先提示是否仍要上传,确认后在判断是否与历史照片一致
|
|
|
- if (this.npkpiData.recognizeType == 1 && this.shotsNum >= 3) {
|
|
|
|
|
|
|
+ if (this.npkpiData.recognizeType == 1 && this.shotsNum >= this.maxNum) {
|
|
|
this.comparisonImage();
|
|
this.comparisonImage();
|
|
|
} else {
|
|
} else {
|
|
|
this.$emit('close');
|
|
this.$emit('close');
|
|
@@ -294,12 +291,29 @@ export default {
|
|
|
width: 95% !important;
|
|
width: 95% !important;
|
|
|
margin-top: 1vh !important;
|
|
margin-top: 1vh !important;
|
|
|
border-radius: 8px !important;
|
|
border-radius: 8px !important;
|
|
|
|
|
+ font-size: 32px !important;
|
|
|
}
|
|
}
|
|
|
.AIVerifyErrMask {
|
|
.AIVerifyErrMask {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
padding: 8px;
|
|
padding: 8px;
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
/* min-height: 180px; */
|
|
/* min-height: 180px; */
|
|
|
|
|
+ .errorImg {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ margin-top: 45px;
|
|
|
|
|
+ }
|
|
|
|
|
+ .AIVerify {
|
|
|
|
|
+ font-size: 30px;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ width: 40%;
|
|
|
|
|
+ margin-top: 45px;
|
|
|
|
|
+ span {
|
|
|
|
|
+ color: #9e0202;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
.van-popup {
|
|
.van-popup {
|
|
|
width: 90%;
|
|
width: 90%;
|
|
@@ -324,13 +338,6 @@ export default {
|
|
|
padding: 5px;
|
|
padding: 5px;
|
|
|
}
|
|
}
|
|
|
.contentAIVerify {
|
|
.contentAIVerify {
|
|
|
- .AIVerify {
|
|
|
|
|
- padding: 6px 0;
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- /* color: red; */
|
|
|
|
|
- /* text-align: center; */
|
|
|
|
|
- /* border-top: 1px solid #cfcfcf; */
|
|
|
|
|
- }
|
|
|
|
|
.uploadImgAIVerify {
|
|
.uploadImgAIVerify {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
@@ -341,25 +348,19 @@ export default {
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .errorImg {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
.tipsAIVerify {
|
|
.tipsAIVerify {
|
|
|
- border-top: 1px solid #cfcfcf;
|
|
|
|
|
padding: 5px 0;
|
|
padding: 5px 0;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: red;
|
|
color: red;
|
|
|
- /* white-space: nowrap; */
|
|
|
|
|
}
|
|
}
|
|
|
.uploadBtnAIVerify {
|
|
.uploadBtnAIVerify {
|
|
|
- /* border-top: 1px solid #cfcfcf; */
|
|
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
padding: 8px 0;
|
|
padding: 8px 0;
|
|
|
|
|
+ margin-top: 45px;
|
|
|
div {
|
|
div {
|
|
|
- /* width: 40%; */
|
|
|
|
|
display: flex;
|
|
display: flex;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
@@ -367,11 +368,18 @@ export default {
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
border-radius: 10px;
|
|
border-radius: 10px;
|
|
|
margin: 0 6px;
|
|
margin: 0 6px;
|
|
|
- flex: 1;
|
|
|
|
|
|
|
+ /* flex: 1; */
|
|
|
}
|
|
}
|
|
|
.confirmUploadAIVerify {
|
|
.confirmUploadAIVerify {
|
|
|
- background-color: #0057ba;
|
|
|
|
|
- padding: 8px 0;
|
|
|
|
|
|
|
+ /* background-color: #0057ba;
|
|
|
|
|
+ padding: 8px 0; */
|
|
|
|
|
+ width: 298px;
|
|
|
|
|
+ height: 68px;
|
|
|
|
|
+ background-image: linear-gradient(180deg, #ffa1a1 0%, #f6695f 35%, #ed301d 100%),
|
|
|
|
|
+ linear-gradient(#aed0f9, #aed0f9);
|
|
|
|
|
+ background-blend-mode: normal, normal;
|
|
|
|
|
+ box-shadow: 0px 3px 6px 0px rgba(183, 30, 14, 0.35);
|
|
|
|
|
+ /* border-radius: 10px; */
|
|
|
}
|
|
}
|
|
|
.changeImageAIVerify {
|
|
.changeImageAIVerify {
|
|
|
background-color: #81b337;
|
|
background-color: #81b337;
|
|
@@ -395,11 +403,13 @@ export default {
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
span {
|
|
span {
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
|
|
|
+ padding-top: 3px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
.tipsRemarkAIVerify {
|
|
.tipsRemarkAIVerify {
|
|
|
border-top: 1px solid #cfcfcf;
|
|
border-top: 1px solid #cfcfcf;
|
|
|
|
|
+ padding: 3px 0;
|
|
|
div {
|
|
div {
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
|
padding: 3px 0;
|
|
padding: 3px 0;
|