质量检查以及安全违章接口调试完成

This commit is contained in:
BianLzhaoMin 2025-04-07 14:41:01 +08:00
parent 5395425ba5
commit 2f39f0b71d
5 changed files with 634 additions and 193 deletions

View File

@ -10,23 +10,23 @@
style="background-color: #fff; padding: 0 30rpx 20rpx" style="background-color: #fff; padding: 0 30rpx 20rpx"
> >
<TitleTipModal :TitleTip="`项目信息`" /> <TitleTipModal :TitleTip="`项目信息`" />
<up-form-item prop="projectName" label="项目名称" required> <up-form-item prop="proName" label="项目名称" required>
<up-input <up-input
readonly readonly
border="none" border="none"
v-model="addAndEditModel.projectName"
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择项目'" :placeholder="props.addAndEditFormType == 3 ? '' : '点击选择项目'"
v-model="addAndEditModel.proName"
> >
<template #suffix v-if="props.addAndEditFormType != 3"> <template #suffix v-if="props.addAndEditFormType != 3">
<up-icon name="arrow-right" @tap="onSelectProject" /> <up-icon name="arrow-right" @tap="onSelectProject" />
</template> </template>
</up-input> </up-input>
</up-form-item> </up-form-item>
<up-form-item prop="major" label="专业"> <up-form-item prop="majorName" label="专业">
<up-input <up-input
border="none" border="none"
readonly readonly
v-model="addAndEditModel.major" v-model="addAndEditModel.majorName"
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择专业'" :placeholder="props.addAndEditFormType == 3 ? '' : '点击选择专业'"
> >
<template #suffix v-if="props.addAndEditFormType != 3"> <template #suffix v-if="props.addAndEditFormType != 3">
@ -34,11 +34,11 @@
</template> </template>
</up-input> </up-input>
</up-form-item> </up-form-item>
<up-form-item prop="procedure" label="工序"> <up-form-item prop="gxName" label="工序">
<up-input <up-input
border="none" border="none"
readonly readonly
v-model="addAndEditModel.procedure" v-model="addAndEditModel.gxName"
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择工序'" :placeholder="props.addAndEditFormType == 3 ? '' : '点击选择工序'"
> >
<template #suffix v-if="props.addAndEditFormType != 3"> <template #suffix v-if="props.addAndEditFormType != 3">
@ -48,19 +48,20 @@
</up-form-item> </up-form-item>
<TitleTipModal :TitleTip="`检查信息`" /> <TitleTipModal :TitleTip="`检查信息`" />
<up-form-item prop="examiner" label="检查人"> <up-form-item prop="checkUserName" label="检查人">
<up-input <up-input
border="none" border="none"
v-model="addAndEditModel.checkUserName"
:readonly="props.addAndEditFormType == 3" :readonly="props.addAndEditFormType == 3"
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入检查人'" :placeholder="props.addAndEditFormType == 3 ? '' : '请输入检查人'"
/> />
</up-form-item> </up-form-item>
<up-form-item prop="inspectTime" label="检查日期"> <up-form-item prop="vioDate" label="检查日期">
<up-input <up-input
readonly readonly
border="none" border="none"
inputAlign="right" inputAlign="right"
v-model="addAndEditModel.inspectTime" v-model="addAndEditModel.vioDate"
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择检查日期'" :placeholder="props.addAndEditFormType == 3 ? '' : '点击选择检查日期'"
> >
<template #suffix v-if="props.addAndEditFormType != 3"> <template #suffix v-if="props.addAndEditFormType != 3">
@ -68,12 +69,12 @@
</template> </template>
</up-input> </up-input>
</up-form-item> </up-form-item>
<up-form-item prop="correctionTerm" label="整改期限" required> <up-form-item prop="rectDate" label="整改期限" required>
<up-input <up-input
readonly readonly
border="none" border="none"
inputAlign="right" inputAlign="right"
v-model="addAndEditModel.correctionTerm" v-model="addAndEditModel.rectDate"
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择整改期限'" :placeholder="props.addAndEditFormType == 3 ? '' : '点击选择整改期限'"
> >
<template #suffix v-if="props.addAndEditFormType != 3"> <template #suffix v-if="props.addAndEditFormType != 3">
@ -81,52 +82,56 @@
</template> </template>
</up-input> </up-input>
</up-form-item> </up-form-item>
<up-form-item prop="vrLocation" label="违章地点" required> <up-form-item prop="vioPlace" label="检查地点" required>
<up-input <up-input
border="none" border="none"
v-model="addAndEditModel.vrLocation" v-model="addAndEditModel.vioPlace"
:readonly="props.addAndEditFormType == 3" :readonly="props.addAndEditFormType == 3"
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入违章地点'" :placeholder="props.addAndEditFormType == 3 ? '' : '请输入检查地点'"
/> />
</up-form-item> </up-form-item>
<up-form-item prop="vrDescribe" label="违章描述" required> <up-form-item prop="vioDesc" label="检查描述" required>
<up-textarea <up-textarea
autoHeight autoHeight
border="none" border="none"
v-model="addAndEditModel.vrDescribe" v-model="addAndEditModel.vioDesc"
:readonly="props.addAndEditFormType == 3" :readonly="props.addAndEditFormType == 3"
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入违章描述'" :placeholder="props.addAndEditFormType == 3 ? '' : '请输入检查描述'"
/> />
</up-form-item> </up-form-item>
<up-form-item <up-form-item
prop="vrImgList"
:label="props.addAndEditFormType == 3 ? '违章照片' : '违章照片(最多9张)'"
required required
prop="vrImgList"
:label="props.addAndEditFormType == 3 ? '检查照片' : '检查照片(最多9张)'"
> >
<up-upload <up-upload
name="1"
multiple multiple
@delete="onDeletePicVrImgList" @delete="onDeletePicVrImgList"
@afterRead="onAfterReadVrImgList" @afterRead="onAfterReadVrImgList"
:deletable="props.addAndEditFormType != 3"
:fileList="addAndEditModel.vrImgList" :fileList="addAndEditModel.vrImgList"
:maxCount="props.addAndEditFormType == 3 ? 1 : 9" :maxCount="
props.addAndEditFormType == 3
? addAndEditModel.vrImgList.length
: 9 - addAndEditModel.vrImgList
"
/> />
</up-form-item> </up-form-item>
<TitleTipModal :TitleTip="`整改信息`" /> <TitleTipModal :TitleTip="`整改信息`" />
<up-form-item prop="correctionPerson" label="整改人" required> <up-form-item prop="rectUserName" label="整改人" required>
<up-input <up-input
border="none" border="none"
:readonly="props.addAndEditFormType == 3" :readonly="props.addAndEditFormType == 3"
v-model="addAndEditModel.correctionPerson" v-model="addAndEditModel.rectUserName"
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入整改人'" :placeholder="props.addAndEditFormType == 3 ? '' : '请输入整改人'"
/> />
</up-form-item> </up-form-item>
<up-form-item prop="correctionTime" label="整改日期"> <up-form-item prop="rectTime" label="整改日期">
<up-input <up-input
readonly readonly
border="none" border="none"
inputAlign="right" inputAlign="right"
v-model="addAndEditModel.correctionTime" v-model="addAndEditModel.rectTime"
:placeholder="props.addAndEditFormType == 3 ? '' : '点击选择整改日期'" :placeholder="props.addAndEditFormType == 3 ? '' : '点击选择整改日期'"
> >
<template #suffix v-if="props.addAndEditFormType != 3"> <template #suffix v-if="props.addAndEditFormType != 3">
@ -134,12 +139,12 @@
</template> </template>
</up-input> </up-input>
</up-form-item> </up-form-item>
<up-form-item prop="correctionDescribe" label="整改说明" required> <up-form-item prop="rectDesc" label="整改说明" required>
<up-textarea <up-textarea
autoHeight autoHeight
border="none" border="none"
:readonly="props.addAndEditFormType == 3" :readonly="props.addAndEditFormType == 3"
v-model="addAndEditModel.correctionDescribe" v-model="addAndEditModel.rectDesc"
:placeholder="props.addAndEditFormType == 3 ? '' : '请输入整改说明'" :placeholder="props.addAndEditFormType == 3 ? '' : '请输入整改说明'"
/> />
</up-form-item> </up-form-item>
@ -148,17 +153,26 @@
:label="props.addAndEditFormType == 3 ? '整改照片' : '整改照片(最多9张)'" :label="props.addAndEditFormType == 3 ? '整改照片' : '整改照片(最多9张)'"
> >
<up-upload <up-upload
name="1"
multiple multiple
@delete="onDeleteCorrectionImgList" @delete="onDeleteCorrectionImgList"
:deletable="props.addAndEditFormType != 3"
@afterRead="onAfterReadCorrectionImgList" @afterRead="onAfterReadCorrectionImgList"
:deletable="!props.addAndEditFormType == 3"
:fileList="addAndEditModel.correctionImgList" :fileList="addAndEditModel.correctionImgList"
:maxCount="props.addAndEditFormType == 3 ? 1 : 9" :maxCount="
props.addAndEditFormType == 3
? addAndEditModel.correctionImgList.length
: 9 - addAndEditModel.correctionImgList
"
/> />
</up-form-item> </up-form-item>
<up-button type="primary" text="提交" @tap="onSubmitForm" style="width: 100%" /> <up-button
text="提交"
type="primary"
@tap="onSubmitForm"
style="width: 100%"
v-if="addAndEditFormType != 3"
/>
</up-form> </up-form>
<!-- 项目选择弹框 --> <!-- 项目选择弹框 -->
@ -180,12 +194,12 @@
<!-- 工程列表 --> <!-- 工程列表 -->
<view class="project-list"> <view class="project-list">
<up-list @scrolltolower="onScrollTolower" style="width: 100%"> <up-list @scrolltolower="onScrollTolower" style="width: 100%" pagingEnabled>
<up-list-item v-for="item in 20" :key="item"> <up-list-item v-for="(item, index) in projectList" :key="item.id">
<up-cell :title="`xxxxxxxxx工程-${item}`" @tap="onSelectProjectItem(item)"> <up-cell :title="item.name" @tap="onSelectProjectItem(item)">
<template #icon> <template #icon>
<text style="margin-right: 10rpx"> <text style="margin-right: 10rpx">
{{ item }} {{ index + 1 }}
</text> </text>
</template> </template>
</up-cell> </up-cell>
@ -197,7 +211,7 @@
<!-- 专业选择器 --> <!-- 专业选择器 -->
<up-picker <up-picker
keyName="label" keyName="name"
:show="majorShow" :show="majorShow"
:columns="majorList" :columns="majorList"
@confirm="onConfirmMajor" @confirm="onConfirmMajor"
@ -205,7 +219,7 @@
/> />
<!-- 工序选择器 --> <!-- 工序选择器 -->
<up-picker <up-picker
keyName="label" keyName="name"
:show="procedureShow" :show="procedureShow"
:columns="procedureList" :columns="procedureList"
@confirm="onConfirmProcedure" @confirm="onConfirmProcedure"
@ -221,7 +235,6 @@
@cancel="dateShow = !dateShow" @cancel="dateShow = !dateShow"
/> />
<!-- loading-page -->
<up-loading-page <up-loading-page
color="#333" color="#333"
fontSize="16" fontSize="16"
@ -233,11 +246,18 @@
</template> </template>
<script setup> <script setup>
import { reactive, ref } from 'vue' import { reactive, ref, watch } from 'vue'
import { debounce } from 'lodash-es' // import { debounce } from 'lodash-es' //
import { getProjectApi, getMajorApi, getProcedureApi } from '@/services/common.js'
import {
addQualityInspectionApi,
editQualityInspectionApi,
getQualityInspectionDetailsByIdApi,
} from '@/services/qualityInspection.js'
import getProjectAndMajorData from '@/hooks/useCommon.js'
import TitleTipModal from '@/components/TitleTipModal/index' import TitleTipModal from '@/components/TitleTipModal/index'
const addAndEditModelRef = ref(null)
const addAndEditModelRef = ref(null)
const projectShow = ref(false) // const projectShow = ref(false) //
const majorShow = ref(false) // const majorShow = ref(false) //
const procedureShow = ref(false) // const procedureShow = ref(false) //
@ -246,31 +266,45 @@ const onSearchProjectName = ref('') // 项目搜索条件
const dateValue = ref(Date.now()) // const dateValue = ref(Date.now()) //
const sendLoading = ref(false) // const sendLoading = ref(false) //
const dateType = ref(1) const dateType = ref(1)
// const { projectList, majorList, getData } = getProjectAndMajorData()
// onMounted(async () => {
// await getData()
// })
const props = defineProps({ const props = defineProps({
// 1. 2. 3. // 1. 2. 3.
addAndEditFormType: { addAndEditFormType: {
type: [Number, String], type: [Number, String],
default: () => 1, default: () => 1,
}, },
// id
detailsId: {
type: [Number, String],
default: () => '',
},
}) })
console.log(props.addAndEditFormType, '表单类型') //
const deleteFileList = []
// //
const addAndEditModel = reactive({ const addAndEditModel = reactive({
projectName: '', dataSource: 2,
procedure: '', proId: '', // id
major: '', proName: '', //
examiner: '', majorId: '', // id
inspectTime: '', majorName: '', //
correctionTerm: '', gxId: '', // id
vrLocation: '', gxName: '', //
vrDescribe: '', checkUserName: '', //
vrImgList: [], vioDate: '', //
correctionPerson: '', vioPlace: '', //
correctionDescribe: '', vioDesc: '', //
correctionTime: '', rectDate: '', //
correctionImgList: [], rectUserName: '', //
rectTime: '', //
rectDesc: '', //
vrImgList: [], //
correctionImgList: [], //
}) })
// //
@ -283,7 +317,7 @@ const addAndEditModelRules = ref({
trigger: ['blur', 'change'], trigger: ['blur', 'change'],
}, },
], ],
correctionTerm: [ rectDate: [
{ {
type: 'string', type: 'string',
required: true, required: true,
@ -291,31 +325,31 @@ const addAndEditModelRules = ref({
trigger: ['blur', 'change'], trigger: ['blur', 'change'],
}, },
], ],
vrLocation: [ vioPlace: [
{ {
type: 'string', type: 'string',
required: true, required: true,
message: '请填写违章地点', message: '请填写检查地点',
trigger: ['blur', 'change'], trigger: ['blur', 'change'],
}, },
], ],
vrDescribe: [ vioDesc: [
{ {
type: 'string', type: 'string',
required: true, required: true,
message: '请填写违章描述', message: '请填写检查描述',
trigger: ['blur', 'change'], trigger: ['blur', 'change'],
}, },
], ],
vrImgList: [ vrImgList: [
{ {
type: 'string', type: 'array',
required: true, required: true,
message: '请上传违章照片', message: '请上传检查照片',
trigger: ['blur', 'change'], trigger: ['blur', 'change'],
}, },
], ],
correctionPerson: [ rectUserName: [
{ {
type: 'string', type: 'string',
required: true, required: true,
@ -323,7 +357,7 @@ const addAndEditModelRules = ref({
trigger: ['blur', 'change'], trigger: ['blur', 'change'],
}, },
], ],
correctionDescribe: [ rectDesc: [
{ {
type: 'string', type: 'string',
required: true, required: true,
@ -334,48 +368,63 @@ const addAndEditModelRules = ref({
}) })
// //
const projectList = ref([]) const projectList = ref([])
//
const getProjectData = async () => {
console.log(
'%c🔍 获取项目请求入参 %c',
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
'',
{},
)
const res = await getProjectApi({})
projectList.value = res.data
console.log(
'%c🔍 获取项目请求出参 %c',
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
'',
res,
)
}
getProjectData()
// //
const majorList = reactive([ const majorList = reactive([])
[
{ //
label: '专业1', const getMajorData = async () => {
value: 2021, const { data: res } = await getMajorApi()
}, console.log(
{ '%c🔍 获取专业请求出参 %c',
label: '专业2', 'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
value: 2022, '',
}, res,
{ )
label: '专业3',
value: 2023, majorList.push(res)
}, }
{ getMajorData()
label: '专业4',
value: 2024,
},
],
])
// //
const procedureList = reactive([ const procedureList = reactive([])
[
{ //
label: '工序1', const getProcedureData = async (pid) => {
id: 2021, console.log(
}, '%c🔍 获取专业请求入参 %c',
{ 'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
label: '工序2', '',
id: 2022, pid,
}, )
{ const { data: res } = await getProcedureApi({ pid })
label: '工序3', console.log(
id: 2023, '%c🔍 获取工序请求出参 %c',
}, 'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
{ '',
label: '工序4', res,
id: 2024, )
}, procedureList.push(res)
], }
])
// getProcedureData()
// //
const formatter = (type, value) => { const formatter = (type, value) => {
@ -409,7 +458,8 @@ const onScrollTolower = () => {
// //
const onSelectProjectItem = (item) => { const onSelectProjectItem = (item) => {
addAndEditModel.projectName = 'xxxxxx工程' + item addAndEditModel.proName = item.name
addAndEditModel.proId = item.id
projectShow.value = false projectShow.value = false
} }
@ -426,8 +476,10 @@ const onSelectMajor = () => {
// //
const onConfirmMajor = (item) => { const onConfirmMajor = (item) => {
console.log('---确定', item.value[0].label) console.log('---确定', item.value[0].name)
addAndEditModel.major = item.value[0].label addAndEditModel.majorName = item.value[0].name
addAndEditModel.majorId = item.value[0].id
getProcedureData(item.value[0].id)
majorShow.value = false majorShow.value = false
} }
// //
@ -437,13 +489,14 @@ const onSelectProcedure = () => {
// //
const onConfirmProcedure = (item) => { const onConfirmProcedure = (item) => {
addAndEditModel.procedure = item.value[0].label addAndEditModel.gxName = item.value[0].name
addAndEditModel.gxId = item.value[0].id
procedureShow.value = false procedureShow.value = false
} }
// //
const onSelectDate = (type) => { const onSelectDate = (type) => {
// type 1. 2. 3. // type 1. 2. 3.
dateType.value = type dateType.value = type
dateShow.value = true dateShow.value = true
} }
@ -452,13 +505,13 @@ const onSelectDate = (type) => {
const onConfirmDate = (item) => { const onConfirmDate = (item) => {
const formatDateValue = formatDate(dateValue.value) const formatDateValue = formatDate(dateValue.value)
if (dateType.value === 1) { if (dateType.value === 1) {
addAndEditModel.inspectTime = formatDateValue addAndEditModel.vioDate = formatDateValue
} }
if (dateType.value === 2) { if (dateType.value === 2) {
addAndEditModel.correctionTerm = formatDateValue addAndEditModel.rectDate = formatDateValue
} }
if (dateType.value === 3) { if (dateType.value === 3) {
addAndEditModel.correctionTime = formatDateValue addAndEditModel.rectTime = formatDateValue
} }
dateShow.value = false dateShow.value = false
console.log('---日期确定', formatDateValue) console.log('---日期确定', formatDateValue)
@ -474,15 +527,25 @@ const formatDate = (timestamp) => {
// //
const onAfterReadVrImgList = (event) => { const onAfterReadVrImgList = (event) => {
console.log('event', event)
let lists = [].concat(event.file) let lists = [].concat(event.file)
lists.map((item) => { lists.map((item) => {
addAndEditModel.vrImgList.push({ addAndEditModel.vrImgList.push({
...item, ...item,
isEdit: false,
}) })
}) })
} }
// //
const onDeletePicVrImgList = (event) => { const onDeletePicVrImgList = (event) => {
if (
props.addAndEditFormType == 2 &&
addAndEditModel.vrImgList[event.index].id &&
addAndEditModel.vrImgList[event.index].idEdit
) {
deleteFileList.push({ id: addAndEditModel.vrImgList[event.index].id })
}
addAndEditModel.vrImgList.splice(event.index, 1) addAndEditModel.vrImgList.splice(event.index, 1)
} }
@ -492,37 +555,304 @@ const onAfterReadCorrectionImgList = (event) => {
lists.map((item) => { lists.map((item) => {
addAndEditModel.correctionImgList.push({ addAndEditModel.correctionImgList.push({
...item, ...item,
isEdit: false,
}) })
}) })
} }
// //
const onDeleteCorrectionImgList = (event) => { const onDeleteCorrectionImgList = (event) => {
if (
props.addAndEditFormType == 2 &&
addAndEditModel.correctionImgList[event.index].id &&
addAndEditModel.correctionImgList[event.index].idEdit
) {
deleteFileList.push({ id: addAndEditModel.correctionImgList[event.index]?.id })
}
addAndEditModel.correctionImgList.splice(event.index, 1) addAndEditModel.correctionImgList.splice(event.index, 1)
} }
// //
const onSubmitForm = debounce(() => { const onSubmitForm = debounce(() => {
console.log('---提交') addAndEditModelRef.value
sendLoading.value = true .validate()
addAndEditModelRef.value.validate().then((valid) => { .then(async (valid) => {
if (valid) { if (valid) {
console.log('校验通过') //
sendLoading.value = false sendLoading.value = true
} const uploadImages = new Promise(async (resolve, reject) => {
}) try {
let successVrImgList = []
let successCorrectionImgList = []
let successVrImgListNoEdit = []
let successCorrectionImgListNoEdit = []
if (addAndEditModel.vrImgList.length > 0) {
successVrImgListNoEdit = addAndEditModel.vrImgList.map((e) => {
if (!e.isEdit) {
return {
...e,
}
}
})
if (successVrImgListNoEdit.length > 0) {
successVrImgList = await uploadImgFun(successVrImgListNoEdit, 3)
}
}
if (addAndEditModel.correctionImgList.length > 0) {
successCorrectionImgListNoEdit = addAndEditModel.correctionImgList.map(
(e) => {
if (!e.isEdit) {
return {
...e,
}
}
},
)
if (successCorrectionImgListNoEdit.length > 0) {
successCorrectionImgList = await uploadImgFun(
successCorrectionImgListNoEdit,
4,
)
}
}
resolve({ successVrImgList, successCorrectionImgList }) //
} catch (error) {
reject(error) //
}
})
uploadImages
.then(async ({ successVrImgList, successCorrectionImgList }) => {
console.log('图片上传成功,开始提交表单...')
console.log('successVrImgList', successVrImgList)
//
//
const {
dataSource,
proId, // id
proName, //
majorId, // id
majorName, //
gxId, // id
gxName, //
checkUserName, //
vioDate, //
vioPlace, //
vioDesc, //
rectDate, //
rectUserName, //
rectTime, //
rectDesc, //
} = addAndEditModel
const addParams = {
dataSource,
proId, // id
proName, //
majorId, // id
majorName, //
gxId, // id
gxName, //
checkUserName, //
vioDate, //
vioPlace, //
vioDesc, //
rectDate, //
rectUserName, //
rectTime, //
rectDesc, //
fileList: [...successVrImgList, ...successCorrectionImgList],
uploadType: 2,
}
const SED_API =
props.addAndEditFormType == 1
? addQualityInspectionApi
: editQualityInspectionApi
if (props.addAndEditFormType == 2) {
Object.assign(addParams, {
id: props.detailsId,
delFileList: deleteFileList,
})
}
console.log(
'%c🔍 表单提交入参 %c',
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
'',
addParams,
)
const res = await SED_API(addParams)
console.log(
'%c🔍 表单提交出参 %c',
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
'',
res,
)
sendLoading.value = false
if (res.code === 200) {
uni.$u.toast(res.data)
// setTimeout(() => {
// uni.navigateBack({
// delta: 1,
// })
// }, 500)
} else {
uni.$u.toast(res.data)
}
})
.catch((error) => {
console.error('图片上传失败:', error)
})
}
})
.catch((error) => {})
}, 1000) }, 1000)
// //
const getFormDetail = () => { const uploadImgFun = async (list, type) => {
console.log('---获取详情数据') return new Promise((resolve, reject) => {
} let successList = []
// props.addAndEditFormType 2 let files = []
if (props.addAndEditFormType == 2) {
// list.forEach((f) => {
getFormDetail() let d = {
file: f.url,
name: 'files',
uri: f.url,
}
files.push(d)
})
sendLoading.value = true
uni.uploadFile({
url: '/imgTool/sys/file/uploadFile',
files: files,
name: 'files',
formData: {
params: JSON.stringify({
uploadType: 2,
sourceType: type,
sourceTypeName: type === 3 ? '质量检查-缺陷问题照片' : '质量检查-整改照片',
}),
},
success: (res) => {
sendLoading.value = false
res = JSON.parse(res.data)
console.log(res, '上传成功')
if (res.code === 200) {
successList = res.data
resolve(successList) //
} else {
uni.$u.toast('上传失败' + res.msg)
reject(new Error('上传失败: ' + res.msg))
}
},
fail: (err) => {
sendLoading.value = false
reject(new Error('网络错误: ' + err.errMsg))
},
})
})
} }
// //
const getFormDetail = async () => {
const res = await getQualityInspectionDetailsByIdApi({ id: props?.detailsId })
if (res.code === 200) {
const {
dataSource,
proId, // id
proName, //
majorId, // id
majorName, //
gxId, // id
gxName, //
checkUserName, //
vioDate, //
vioPlace, //
vioDesc, //
rectDate, //
rectUserName, //
rectTime, //
rectDesc, //
rectPhotoList,
vioPhotoList,
} = res.data
let rectPhotoListEdit = []
let vioPhotoListEdit = []
if (rectPhotoList.length > 0) {
rectPhotoListEdit = rectPhotoList.map((e) => {
return {
idEdit: true,
url: e.originalFilePath,
...e,
}
})
}
if (vioPhotoList.length > 0) {
vioPhotoListEdit = vioPhotoList.map((e) => {
return {
idEdit: true,
url: e.originalFilePath,
...e,
}
})
}
Object.assign(addAndEditModel, {
proId, // id
proName, //
majorId, // id
majorName, //
gxId, // id
gxName, //
checkUserName, //
vioDate, //
vioPlace, //
vioDesc, //
rectDate, //
rectUserName, //
rectTime, //
rectDesc, //
vrImgList: vioPhotoListEdit,
correctionImgList: rectPhotoListEdit,
})
console.log(addAndEditModel, 'addAndEditModel')
getProcedureData(majorId)
}
}
//
watch(
() => props.addAndEditFormType,
(newValue) => {
console.log('newValue当前表单的类型', newValue)
if (newValue != 1) {
getFormDetail()
}
},
{
deep: true,
immediate: true,
},
)
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

View File

@ -8,7 +8,7 @@
/> />
<view class="container"> <view class="container">
<AddAndEditForm :addAndEditFormType="addAndEditFormType" /> <AddAndEditForm :addAndEditFormType="addAndEditFormType" :detailsId="detailsId" />
</view> </view>
</view> </view>
</template> </template>
@ -20,6 +20,7 @@ import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
const { safeAreaInsets } = uni.getSystemInfoSync() const { safeAreaInsets } = uni.getSystemInfoSync()
const detailsId = ref('')
const addAndEditFormType = ref(1) const addAndEditFormType = ref(1)
const uploadRecordUrl = ref('/pages/qualityInspection/upload-record/index') const uploadRecordUrl = ref('/pages/qualityInspection/upload-record/index')
@ -27,6 +28,9 @@ onLoad((query) => {
if (query.type) { if (query.type) {
addAndEditFormType.value = query.type addAndEditFormType.value = query.type
} }
if (query.id) {
detailsId.value = query.id
}
}) })
</script> </script>

View File

@ -8,7 +8,7 @@
<up-input <up-input
clearable clearable
placeholder="输入搜索关键词" placeholder="输入搜索关键词"
v-model.trim="onSearchKeyword" v-model.trim="queryParams.keyWord"
suffixIconStyle="color: #909399" suffixIconStyle="color: #909399"
> >
<template #suffix> <template #suffix>
@ -18,55 +18,50 @@
</view> </view>
</view> </view>
<view class="upload-record-list"> <view class="upload-record-list" v-if="qualityInspectionList.length > 0">
<up-list @scrolltolower="onScrollTolower" style="width: 100%"> <up-list @scrolltolower="onScrollTolower" style="width: 100%">
<up-list-item v-for="item in 10" :key="item"> <up-list-item v-for="item in qualityInspectionList" :key="item.id">
<view class="record-item"> <view class="record-item">
<view @tap="onHandleViewDetails"> <view @tap="onHandleViewDetails(item.id)">
<!-- 日期 --> <!-- 日期 -->
<view class="item-date"> <view class="item-date">
<text>2024-05-06</text> <text>{{ item.vioDate }}</text>
<view> <view>
<up-button <up-button
size="mini" size="mini"
text="修改" text="修改"
type="primary" type="primary"
@tap="onHandleEditRecord" @tap="onHandleEditRecord(item.id)"
/> />
</view> </view>
</view> </view>
<!-- 名称 --> <!-- 名称 -->
<view class="item-name"> <view class="item-name">
<text>N3917</text> <text>{{ item.proName }}</text>
</view> </view>
<!-- 文字内容 --> <!-- 文字内容 -->
<view class="text-content"> <view class="text-content">
<up-text <up-text :lines="2" :text="item.vioDesc" />
:lines="2"
text="关于uview-plus的取名来由首字母u来自于uni-app首字母
uni-app是基VuejsVue和View(延伸为UI视图之意)同音同时view组件uni-app中
最础最重要的组件故取名uview-plus表达源于uni-app和Vue之意同时在此也对它示感谢"
/>
</view> </view>
</view> </view>
<!-- 图片内容 --> <!-- 图片内容 -->
<view class="swiper-container"> <view class="swiper-container">
<up-swiper <up-swiper
:list="list1" :list="item.vioPhotoList"
interval="5000" interval="5000"
:indicator="true" :indicator="true"
@click="onClickSwiper" @click="onClickSwiper"
/> />
<view class="swiper-count"> 3 </view> <view class="swiper-count"> {{ item.vioPhotoNum }} </view>
</view> </view>
<!-- 检查人 --> <!-- 检查人 -->
<view class="inspect-person"> <view class="inspect-person">
<view> 检查人武松 </view> <view> 检查人{{ item.checkUserName }} </view>
<view> 整改日期2025-05-06 </view> <view> 整改日期{{ item.rectTime }} </view>
</view> </view>
</view> </view>
</up-list-item> </up-list-item>
@ -76,45 +71,106 @@ uni-app是基VuejsVue和View(延伸为UI、视图之意)同音同时view
{{ finish ? '没有更多数据了~' : '正在加载...' }} {{ finish ? '没有更多数据了~' : '正在加载...' }}
</view> </view>
</view> </view>
<up-empty mode="data" v-else />
</view> </view>
</view> </view>
</template> </template>
<script setup> <script setup>
import NavBarModal from '@/components/NavBarModal/index' import NavBarModal from '@/components/NavBarModal/index'
import { ref, reactive } from 'vue' import { ref, computed } from 'vue'
import { debounce } from 'lodash-es' // import { debounce } from 'lodash-es' //
const scrollTop = ref(0) import { getQualityInspectionListApi } from '@/services/qualityInspection.js'
const onSearchKeyword = ref('') const { safeAreaInsets } = uni.getSystemInfoSync()
const finish = ref(false) const upListRef = ref(null) //
const total = ref(0)
const qualityInspectionList = ref([])
const list1 = reactive([ //
'https://img1.baidu.com/it/u=1361177696,203903602&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1455', const queryParams = ref({
'https://img1.baidu.com/it/u=1361177696,203903602&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1455', page: 1,
'https://img1.baidu.com/it/u=1361177696,203903602&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1455', limit: 10,
]) keyWord: '',
})
//
const getQualityInspectionListData = async (isTap = false) => {
try {
console.log(
'%c🔍 获取安全违章上传记录入参 %c',
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
'',
queryParams.value,
)
const res = await getQualityInspectionListApi(queryParams.value)
console.log(
'%c🔍 获取安全违章上传记录出参 %c',
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
'',
res,
)
//
total.value = res.count
//
if (isTap) {
//
qualityInspectionList.value = res?.data || []
//
queryParams.value.page = 1
} else {
//
if (res.data && res.data.length > 0) {
qualityInspectionList.value = [...qualityInspectionList.value, ...res.data]
}
}
qualityInspectionList.value.forEach((e) => {
e.vioPhotoList = e.vioPhoto?.split(',')
})
} catch (error) {
//
if (isTap) {
qualityInspectionList.value = []
}
}
}
getQualityInspectionListData()
// //
const onScrollTolower = debounce(() => { const onScrollTolower = debounce(() => {
console.log('onScrollTolower') console.log('onScrollTolower', '滚动触底')
//
if (qualityInspectionList.value.length < total.value) {
queryParams.value.page++
getQualityInspectionListData(false)
}
}, 500) }, 500)
//
const finish = computed(() => {
if (total.value === qualityInspectionList.value.length) return true
})
// //
const onSearchRecord = () => { const onSearchRecord = () => {
console.log('onSearchRecord', onSearchKeyword.value) console.log('onSearchRecord', queryParams.value.keyWord)
getQualityInspectionListData(true)
} }
// //
const onHandleEditRecord = () => { const onHandleEditRecord = (id) => {
console.log('onHandleEditRecord') console.log('onHandleEditRecord')
uni.redirectTo({ uni.redirectTo({
url: `/pages/qualityInspection/index?type=2&id=1`, // url: `/pages/qualityInspection/index?type=2&id=${id}`, //
}) })
} }
// //
const onHandleViewDetails = () => { const onHandleViewDetails = (id) => {
uni.redirectTo({ uni.redirectTo({
url: `/pages/qualityInspection/index?type=3&id=1`, // url: `/pages/qualityInspection/index?type=3&id=${id}`, //
}) })
} }
@ -122,6 +178,9 @@ const onHandleViewDetails = () => {
const onClickSwiper = (e) => { const onClickSwiper = (e) => {
console.log(e, '点击了轮播图') console.log(e, '点击了轮播图')
} }
//
const onHandleBackTop = () => {}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -109,7 +109,12 @@
@delete="onDeletePicVrImgList" @delete="onDeletePicVrImgList"
@afterRead="onAfterReadVrImgList" @afterRead="onAfterReadVrImgList"
:fileList="addAndEditModel.vrImgList" :fileList="addAndEditModel.vrImgList"
:maxCount="props.addAndEditFormType == 3 ? 1 : 9" :deletable="props.addAndEditFormType != 3"
:maxCount="
props.addAndEditFormType == 3
? addAndEditModel.vrImgList.length
: 9 - addAndEditModel.vrImgList.length
"
/> />
</up-form-item> </up-form-item>
<TitleTipModal :TitleTip="`整改信息`" /> <TitleTipModal :TitleTip="`整改信息`" />
@ -151,8 +156,13 @@
multiple multiple
@delete="onDeleteCorrectionImgList" @delete="onDeleteCorrectionImgList"
@afterRead="onAfterReadCorrectionImgList" @afterRead="onAfterReadCorrectionImgList"
:deletable="props.addAndEditFormType != 3"
:fileList="addAndEditModel.correctionImgList" :fileList="addAndEditModel.correctionImgList"
:maxCount="props.addAndEditFormType == 3 ? 1 : 9" :maxCount="
props.addAndEditFormType == 3
? addAndEditModel.correctionImgList.length
: 9 - addAndEditModel.correctionImgList.length
"
/> />
</up-form-item> </up-form-item>
@ -522,16 +532,21 @@ const onAfterReadVrImgList = (event) => {
lists.map((item) => { lists.map((item) => {
addAndEditModel.vrImgList.push({ addAndEditModel.vrImgList.push({
...item, ...item,
isEdit: false,
}) })
}) })
} }
// //
const onDeletePicVrImgList = (event) => { const onDeletePicVrImgList = (event) => {
addAndEditModel.vrImgList.splice(event.index, 1) if (
props.addAndEditFormType == 2 &&
if (props.addAndEditFormType == 2 && addAndEditModel.vrImgList[event.index]?.id) { addAndEditModel.vrImgList[event.index].id &&
deleteFileList.push(addAndEditModel.vrImgList[event.index]?.id) addAndEditModel.vrImgList[event.index].idEdit
) {
deleteFileList.push({ id: addAndEditModel.vrImgList[event.index].id })
} }
addAndEditModel.vrImgList.splice(event.index, 1)
} }
// //
@ -540,15 +555,21 @@ const onAfterReadCorrectionImgList = (event) => {
lists.map((item) => { lists.map((item) => {
addAndEditModel.correctionImgList.push({ addAndEditModel.correctionImgList.push({
...item, ...item,
isEdit: false,
}) })
}) })
} }
// //
const onDeleteCorrectionImgList = (event) => { const onDeleteCorrectionImgList = (event) => {
addAndEditModel.correctionImgList.splice(event.index, 1) if (
if (props.addAndEditFormType == 2 && addAndEditModel.correctionImgList[event.index]?.id) { props.addAndEditFormType == 2 &&
deleteFileList.push(addAndEditModel.correctionImgList[event.index]?.id) addAndEditModel.correctionImgList[event.index].id &&
addAndEditModel.correctionImgList[event.index].idEdit
) {
deleteFileList.push({ id: addAndEditModel.correctionImgList[event.index]?.id })
} }
addAndEditModel.correctionImgList.splice(event.index, 1)
} }
// //
@ -568,17 +589,35 @@ const onSubmitForm = debounce(() => {
let successCorrectionImgListNoEdit = [] let successCorrectionImgListNoEdit = []
if (addAndEditModel.vrImgList.length > 0) { if (addAndEditModel.vrImgList.length > 0) {
successVrImgListNoEdit = addAndEditModel.vrImgList.map((e) => !e.isEdit) successVrImgListNoEdit = addAndEditModel.vrImgList.map((e) => {
successVrImgList = await uploadImgFun(successVrImgListNoEdit, 1) if (!e.isEdit) {
return {
...e,
}
}
})
if (successVrImgListNoEdit.length > 0) {
successVrImgList = await uploadImgFun(successVrImgListNoEdit, 1)
}
} }
if (addAndEditModel.correctionImgList.length > 0) { if (addAndEditModel.correctionImgList.length > 0) {
successCorrectionImgListNoEdit = addAndEditModel.correctionImgList.map( successCorrectionImgListNoEdit = addAndEditModel.correctionImgList.map(
(e) => !e.isEdit, (e) => {
) if (!e.isEdit) {
successCorrectionImgList = await uploadImgFun( return {
successCorrectionImgListNoEdit, ...e,
2, }
}
},
) )
if (successCorrectionImgListNoEdit.length > 0) {
successCorrectionImgList = await uploadImgFun(
successCorrectionImgListNoEdit,
2,
)
}
} }
resolve({ successVrImgList, successCorrectionImgList }) // resolve({ successVrImgList, successCorrectionImgList }) //
@ -590,6 +629,8 @@ const onSubmitForm = debounce(() => {
uploadImages uploadImages
.then(async ({ successVrImgList, successCorrectionImgList }) => { .then(async ({ successVrImgList, successCorrectionImgList }) => {
console.log('图片上传成功,开始提交表单...') console.log('图片上传成功,开始提交表单...')
console.log('successVrImgList', successVrImgList)
// //
// //
const { const {
@ -627,7 +668,7 @@ const onSubmitForm = debounce(() => {
rectTime, // rectTime, //
rectDesc, // rectDesc, //
fileList: [...successVrImgList, ...successCorrectionImgList], fileList: [...successVrImgList, ...successCorrectionImgList],
uploadType: 1, uploadType: 2,
} }
const SED_API = const SED_API =
@ -659,11 +700,11 @@ const onSubmitForm = debounce(() => {
sendLoading.value = false sendLoading.value = false
if (res.code === 200) { if (res.code === 200) {
uni.$u.toast(res.data) uni.$u.toast(res.data)
setTimeout(() => { // setTimeout(() => {
uni.navigateBack({ // uni.navigateBack({
delta: 1, // delta: 1,
}) // })
}, 500) // }, 500)
} else { } else {
uni.$u.toast(res.data) uni.$u.toast(res.data)
} }
@ -708,6 +749,7 @@ const uploadImgFun = async (list, type) => {
sendLoading.value = false sendLoading.value = false
res = JSON.parse(res.data) res = JSON.parse(res.data)
console.log(res, '上传成功')
if (res.code === 200) { if (res.code === 200) {
successList = res.data successList = res.data
resolve(successList) // resolve(successList) //
@ -756,7 +798,8 @@ const getFormDetail = async () => {
rectPhotoListEdit = rectPhotoList.map((e) => { rectPhotoListEdit = rectPhotoList.map((e) => {
return { return {
idEdit: true, idEdit: true,
url: e.url, url: e.originalFilePath,
...e,
} }
}) })
} }
@ -764,7 +807,8 @@ const getFormDetail = async () => {
vioPhotoListEdit = vioPhotoList.map((e) => { vioPhotoListEdit = vioPhotoList.map((e) => {
return { return {
idEdit: true, idEdit: true,
url: e.url, url: e.originalFilePath,
...e,
} }
}) })
} }
@ -784,10 +828,12 @@ const getFormDetail = async () => {
rectUserName, // rectUserName, //
rectTime, // rectTime, //
rectDesc, // rectDesc, //
vrImgList: vioPhotoList, vrImgList: vioPhotoListEdit,
correctionImgList: rectPhotoList, correctionImgList: rectPhotoListEdit,
}) })
console.log(addAndEditModel, 'addAndEditModel')
getProcedureData(majorId) getProcedureData(majorId)
} }
} }

View File

@ -18,11 +18,11 @@
</view> </view>
</view> </view>
<view class="upload-record-list"> <view class="upload-record-list" v-if="safetyViolationsList.length > 0">
<up-list ref="upListRef" style="width: 100%" @scrolltolower="onScrollTolower"> <up-list ref="upListRef" style="width: 100%" @scrolltolower="onScrollTolower">
<up-list-item v-for="item in safetyViolationsList" :key="item.id"> <up-list-item v-for="item in safetyViolationsList" :key="item.id">
<view class="record-item"> <view class="record-item">
<view @tap="onHandleViewDetails"> <view @tap="onHandleViewDetails(item.id)">
<!-- 日期 --> <!-- 日期 -->
<view class="item-date"> <view class="item-date">
<text>{{ item.vioDate }}</text> <text>{{ item.vioDate }}</text>
@ -69,6 +69,8 @@
{{ finish ? '没有更多数据了~' : '正在加载...' }} {{ finish ? '没有更多数据了~' : '正在加载...' }}
</view> </view>
</view> </view>
<up-empty mode="data" v-else />
</view> </view>
</view> </view>
</template> </template>
@ -164,9 +166,9 @@ const onHandleEditRecord = (id) => {
} }
// //
const onHandleViewDetails = () => { const onHandleViewDetails = (id) => {
uni.redirectTo({ uni.redirectTo({
url: `/pages/safetyViolations/index?type=3&id=1`, // url: `/pages/safetyViolations/index?type=3&id=${id}`, //
}) })
} }