提交 67171863 authored 作者: lidongxu's avatar lidongxu

feat(conventionaldisplay.vue): 新增:常规陈列功能接口对接完毕!外层售点稽核任务接口对接完成!

上级 31e332d1
......@@ -26,9 +26,10 @@ export function createInspectionTaskAPI(data) {
}
// 售点稽查-创建/修改任务明细(4 个tab页)
export function createInspectionTaskDetailAPI(params) {
export function createInspectionTaskDetailAPI(data) {
return request({
url: '/operation/risk/create/i_store',
params
url: '/operation/risk/core/i_store_detail',
method: 'POST',
data
})
}
......@@ -5,19 +5,21 @@
v-for="(obj, index) in displayGroup">
<p class="title">常规陈列{{ index + 1 }}</p>
<van-cell-group inset>
<van-field v-model="obj.modality"
name="modality"
<van-field v-model="obj.modal"
name="modal"
label="形式"
placeholder="请输入形式"
auto-complete="off"
:rules="[{ required: true, message: '请输入形式' }]" />
:rules="[{ required: true, message: '请输入形式' }]"
@change="handleModalityChange(index)" />
<van-field v-model="obj.cost"
name="cost"
type="number"
label="费用"
placeholder="费用"
auto-complete="off"
:rules="[{ required: true, message: '请输入费用' }]" />
:rules="[{ required: true, message: '请输入费用' }]"
@change="handleCostChange(index)" />
<van-field label="常规陈列照片"
label-align="top"
class="header-photo-section">
......@@ -25,8 +27,7 @@
<van-uploader :max-count="2"
accept="image/*"
capture="camera"
reupload
:model-value="obj.displayPhotos"
:model-value="obj.photoArr"
:name="index"
:after-read="displayPhotosRead"
preview-size="78"
......@@ -37,9 +38,10 @@
<van-field label="核查结果"
label-align="top">
<template #input>
<van-checkbox-group v-model="obj.verify"
<van-checkbox-group v-model="obj.riskRArr"
direction="horizontal"
shape="square">
shape="square"
@change="handleVerifyChange(index)">
<van-checkbox name="合格">合格</van-checkbox>
<van-checkbox name="需整改">需整改</van-checkbox>
<van-checkbox name="不合格">不合格</van-checkbox>
......@@ -52,13 +54,14 @@
<!-- 新增按钮 -->
<van-button class="add-item"
type="primary"
@click="addItem">新增一组陈列</van-button>
@click="createTask">新增一组陈列</van-button>
<!-- 总体判定 -->
<div class="overall">
<p class="title">常规陈列总体判定结果:</p>
<van-checkbox-group v-model="overAll.verify"
<van-checkbox-group v-model="form.cgclRiskRArr"
direction="horizontal"
shape="square">
shape="square"
@change="handleOverallChange">
<van-checkbox name="合格">合格</van-checkbox>
<van-checkbox name="需整改">需整改</van-checkbox>
<van-checkbox name="不合格">不合格</van-checkbox>
......@@ -69,54 +72,142 @@
</template>
<script setup>
import { uploadFileToOSSAPI } from '@/api'
import { uploadFileToOSSAPI, createInspectionTaskAPI, createInspectionTaskDetailAPI } from '@/api'
import useUserStore from '@/store/modules/user'
import { v4 as uuidv4 } from 'uuid'
const route = useRoute()
const props = defineProps({
isInitializing: {
type: Boolean,
default: false
},
form: {
type: Object,
default: () => { }
}
})
const displayGroup = ref([])
/*************** 陈列组信息 ***************/
// 陈列组
const displayGroup = ref([
{
modality: '', // 形式
cost: '', // 费用
displayPhotos: [], // 陈列照片
verify: [] // 核查结果
// 特殊字段处理
const checkProperty = (list) => {
list.map(item => {
item.riskRArr = item.riskRArr || []
item.photoArr = item.photoArr?.map(o => ({
url: o
})) || []
})
}
// 创建任务组
const createTask = async () => {
const { data } = await createInspectionTaskDetailAPI({
taskDetail: {
rstId: props.form.rstId,
detailName: '常规陈列'
}
})
checkProperty([data])
displayGroup.value.push(data)
}
const init = () => {
// 查询外层是否传入初始数据
if (props.form.detailMap) {
checkProperty(props.form.detailMap['常规陈列'])
displayGroup.value = props.form.detailMap['常规陈列'] || []
} else {
// 没传递则自己至少新建 1 个
if (displayGroup.value.length === 0) {
createTask()
}
}
])
// 新增一组
const addItem = () => {
displayGroup.value.push({
modality: '', // 形式
cost: '', // 费用
displayPhotos: [], // 陈列照片
verify: [] // 核查结果
}
/*************** 基本信息 ***************/
// 形式修改
const handleModalityChange = async (index) => {
await createInspectionTaskDetailAPI({
taskDetail: {
rstId: props.form.rstId,
...displayGroup.value[index]
}
})
showNotify({ type: 'success', message: '形式,保存成功' })
}
// 费用修改
const handleCostChange = async (index) => {
await createInspectionTaskDetailAPI({
taskDetail: {
rstId: props.form.rstId,
...displayGroup.value[index]
}
})
/*************** 陈列照片 ***************/
showNotify({ type: 'success', message: '费用,保存成功' })
}
// 上传照片
const displayPhotosRead = async (file, { name, index }) => {
// name:是当前照片组件所在陈列组的索引
// index: 当前照片组的索引
const target = displayGroup.value[name]
const pictureUrl = await uploadFileToOSSAPI(`risk/${route.query.storeCode}/displayPhoto/${useUserStore().userInfo.employeeNo}/${uuidv4()}.png`, file.file)
target.displayPhotos.push({
const pictureUrl = await uploadFileToOSSAPI(`risk/displayPhoto/${useUserStore().empInfo.empNo}/${props.form.storeCode}/${uuidv4()}.png`, file.file)
target.photoArr.push({
url: pictureUrl
})
await createInspectionTaskDetailAPI({
taskDetail: {
rstId: props.form.rstId,
rstdId: target.rstdId,
photoArr: target.photoArr.map(o => o.url)
}
})
showNotify({ type: 'success', message: '常规陈列照片,上传成功' })
}
// 删除照片
const deletedisplayPhotos = async (file, { name, index }) => {
const target = displayGroup.value[name]
target.displayPhotos.splice(index, 1)
target.photoArr.splice(index, 1)
await createInspectionTaskDetailAPI({
taskDetail: {
rstId: props.form.rstId,
rstdId: target.rstdId,
photoArr: target.photoArr.map(o => o.url)
}
})
showNotify({ type: 'success', message: '常规陈列照片,删除成功' })
}
// 核查结果
const handleVerifyChange = async (index) => {
const target = displayGroup.value[index]
await createInspectionTaskDetailAPI({
taskDetail: {
rstId: props.form.rstId,
rstdId: target.rstdId,
riskRArr: target.riskRArr
}
})
showNotify({ type: 'success', message: '核查结果,保存成功' })
}
/*************** 总体核查结果 ***************/
const overAll = ref({})
const handleOverallChange = async () => {
if (props.isInitializing) return
await createInspectionTaskAPI({
rstId: props.form.rstId,
cgclRiskRArr: props.form.cgclRiskRArr
})
showNotify({ type: 'success', message: '核查结果,保存成功' })
}
defineExpose({
init
})
</script>
<style scoped
......
......@@ -24,7 +24,6 @@
<van-uploader :max-count="2"
accept="image/*"
capture="camera"
reupload
:model-value="obj.displayPhotos"
:name="index"
:after-read="displayPhotosRead"
......@@ -95,7 +94,7 @@ const addItem = () => {
/*************** 照片 ***************/
const displayPhotosRead = async (file, { name, index }) => {
const target = displayGroup.value[name]
const pictureUrl = await uploadFileToOSSAPI(`risk/${route.query.storeCode}/scheduleAdjustmentPhoto/${useUserStore().userInfo.employeeNo}/${uuidv4()}.png`, file.file)
const pictureUrl = await uploadFileToOSSAPI(`risk/scheduleAdjustmentPhoto/${useUserStore().empInfo.empNo}/${form.storeCode}.png`, file.file)
target.displayPhotos.push({
url: pictureUrl
})
......
......@@ -24,7 +24,6 @@
<van-uploader :max-count="2"
accept="image/*"
capture="camera"
reupload
:model-value="obj.displayPhotos"
:name="index"
:after-read="displayPhotosRead"
......@@ -95,7 +94,7 @@ const addItem = () => {
/*************** 照片 ***************/
const displayPhotosRead = async (file, { name, index }) => {
// 处理上传的文件
const pictureUrl = await uploadFileToOSSAPI(`risk/${route.query.storeCode}/scheduleDisplayPhoto/${useUserStore().userInfo.employeeNo}/${uuidv4()}.png`, file.file)
const pictureUrl = await uploadFileToOSSAPI(`risk/scheduleDisplayPhoto/${useUserStore().empInfo.empNo}/${form.storeCode}.png`, file.file)
displayGroup.value[name].displayPhotos.push({
url: pictureUrl
})
......
......@@ -120,8 +120,6 @@ const handleClickStore = (item) => {
query: {
storeName: item.storeName,
storeCode: item.storeCode,
dealersName: item.dealersName,
storeAddr: item.storeAddr,
storePicture: item.storePictures?.split(",")[0]
}
})
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论