From 4e57ca14321ccd86003b718db05f0bf70815729b Mon Sep 17 00:00:00 2001 From: ljx120 <10717296+ljx120@user.noreply.gitee.com> Date: Mon, 13 Jan 2025 17:18:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=9F=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages.json | 12 + pages/documentary/detail.vue | 389 +++++++++++++++++++++--------- pages/documentary/documentary.vue | 12 +- pages/documentary/ex-factory.vue | 299 +++++++++++++++++++++++ pages/maintenance/p-details.vue | 18 +- 5 files changed, 602 insertions(+), 128 deletions(-) create mode 100644 pages/documentary/ex-factory.vue diff --git a/pages.json b/pages.json index 4f0ecb9..5234d2a 100644 --- a/pages.json +++ b/pages.json @@ -339,6 +339,18 @@ "bounce": "none" } } + }, + { + "path" : "pages/documentary/ex-factory", + "style" : + { + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "disableScroll": true, + "app-plus": { + "bounce": "none" + } + } } ], "globalStyle": { diff --git a/pages/documentary/detail.vue b/pages/documentary/detail.vue index 4940a18..f394577 100644 --- a/pages/documentary/detail.vue +++ b/pages/documentary/detail.vue @@ -3,7 +3,7 @@ import { showToast } from 'vant'; import { ref, watch } from 'vue'; import { getAction, postAction, uploadAction } from '../../common/http'; -import { formatDate } from '../../utils/date'; + import { formatDate } from '../../utils/date'; // 定义 props defineProps<{ item ?: string; @@ -16,26 +16,68 @@ import { formatDate } from '../../utils/date'; const specialPro = ref([] as any[]) const list = ref([] as any[]) const special = ref('' as any) - const content = ref([] as any[]) - const form = ref({czrq:formatDate(new Date())} as any) + const getLog = ref([] as any[]) + const form = ref({ czrq: formatDate(new Date()), yjxybrq: formatDate(new Date()) } as any) onLoad(async (option : any) => { if (option) { try { itemList.value = JSON.parse(option.item) - if (itemList.value.sd === '门店') { - processes.value = {} + if (itemList.value.sd === '门店' && !itemList.value.processes) { + let res : any = await getAction('/flowBind') + if (res.code === 200) { + let item = res.data.find((l : any) => l.craftName === itemList.value.craft) + let item2 = item.flows.find((l : any) => l.bind === "仅现货") + if (item2) { + let url = '/craftFlows/byName?name=' + item2.name + let res1 : any = await getAction(url) + if (res1.code === 200) { + processes.value = res1.data + } else { + showToast('暂无此工艺!') + } + } else { + showToast('暂无此工艺!') + } + } } else { processes.value = JSON.parse(itemList.value.processes) } - console.log(itemList.value); indexData.value = processes.value.processes.findIndex((l : any) => l.name == itemList.value.zt) - let name=processes.value.processes.find((l:any)=>l.name!=itemList.value.zt&&(l.necessary)) - postAction('/process/getNext',[itemList.value.zt,name.name]).then((res:any)=>{ - if(res.code===200){ - specialPro.value=res.data + let nameZt = '' + if (indexData.value > 0 && !processes.value.processes[indexData.value].id) { + nameZt = processes.value.processes[indexData.value - 1].name + } else if (indexData.value == 0 && !processes.value.processes[indexData.value].id) { + nameZt = '待进厂' + } else { + nameZt = itemList.value.zt + } + let name = processes.value.processes.find((l : any) => l.name != nameZt && (l.necessary)) + postAction('/process/getNext', [nameZt, name ? name.name : '0x7c00']).then((res : any) => { + if (res.code === 200) { + specialPro.value = res.data } }) + getAction('/tracking/getLog?id=' + itemList.value.subId).then((res : any) => { + if (res.code === 200) { + let index=false + processes.value.processes.forEach((m : any) => { + if (!m.id||!index) { + let a = res.data.find((l : any) => l.details.zt == m.name) + if (a) { + m.rq = a.details.form.czrq + } + } else { + index=true + let a = res.data.find((l : any) => l.details.zt == m.name && l.trackingLogId == itemList.value.id) + if (a) { + m.rq = a.details.form.czrq + } + } + }) + } + }) + console.log(processes.value); } catch (error) { console.error('Failed to parse item JSON:', error); // 可以选择在这里显示错误消息给用户 @@ -43,27 +85,15 @@ import { formatDate } from '../../utils/date'; } }) - watch(status, () => { - if (status.value === '出厂') { - postAction('/craftComment/getByIds', itemList.value.craftCmt.value).then((res : any) => { - if (res.code === 200) { - res.data.forEach((l : any) => { - content.value = content.value.concat(l.content) - }) - } - }) - } - }) - const onClickLeft = () => { history.back() } - + //选择框事件 const show = ref(false) const dataType = ref() - const chooseDate = (val:any) => { - dataType.value=val + const chooseDate = (val : any) => { + dataType.value = val show.value = true } //日期选择 @@ -71,18 +101,32 @@ import { formatDate } from '../../utils/date'; form.value[dataType.value] = formatDate(val) show.value = false } - + const showPicker = ref(false) const popuList = ref([] as any[]) const indexType = ref() //选择框事件 - const choosePic = (index:any) => { - indexType.value=index + const choosePic = (index : any) => { + indexType.value = index showPicker.value = true } //选择框确认 const pickerConfirm = (val : any) => { - list.value[indexType.value].value = val.selectedValues[0] + if (indexType.value === 'craftFlow') { + let url = '/craftFlows/byName?name=' + val.selectedValues[0] + getAction(url).then((res : any) => { + if (res.code === 200) { + craftFlowLc.value = JSON.stringify(res.data) + craftFlowLc.value.unshift({ name: special.value }) + craftFlow.value = val.selectedValues[0] + } else { + showToast('请重新选择工艺流程!') + craftFlow.value = '' + } + }) + } else { + list.value[indexType.value].value = val.selectedValues[0] + } showPickerCancel() } //取消 @@ -91,10 +135,31 @@ import { formatDate } from '../../utils/date'; } //弹窗开启事件 const handleOpen = () => { - popuList.value = list.value[indexType.value].chooses.map((l:any)=>({text:l.value,value:l.value})) + if (indexType.value === 'craftFlow') { + popuList.value = flowList.value + let item = {} as any + flowList.value.forEach((l : any) => { + if (l.craftName === itemList.value.craft) { + item = l; + } + }) + popuList.value = [] + if (item.flows) { + item.flows.forEach((l : any) => { + if (itemList.value.sd === '门店' && l.bind === '仅现货') { + popuList.value.push({ value: l.name, text: l.name }) + } else if (l.bind === '通用') { + popuList.value.push({ value: l.name, text: l.name }) + } + }) + } + } else { + popuList.value = list.value[indexType.value].chooses.map((l : any) => ({ text: l.value, value: l.value })) + } } const chooseStatus = (item : any, index : any) => { + if (indexData.value >= index) return try { special.value = '' processes.value.processes.forEach((l : any, j : any) => { @@ -106,9 +171,9 @@ import { formatDate } from '../../utils/date'; status.value = item.name } }) - getAction('/process/byName?name='+status.value).then((res:any)=>{ - if(res.code===200){ - list.value=res.data.evidence + getAction('/process/byName?name=' + status.value).then((res : any) => { + if (res.code === 200) { + list.value = res.data.evidence } }) } catch (err) { @@ -118,47 +183,115 @@ import { formatDate } from '../../utils/date'; const showDialog = ref(false) const contentType = ref([]) const bhList = ref([] as any[]) + const czyy = ref() + const mls1 = ref([] as any[]) + const mls2 = ref([] as any[]) + const specialItem = ref() + const craftFlow = ref() + const craftFlowLc = ref() + const flowList = ref([] as any[]) //选择特殊工艺 - const chooseSpecial = (item:any) =>{ + const chooseSpecial = (item : any) => { special.value = item.name - status.value='' - let a=specialPro.value.find((l:any)=>l.name===item.name) - list.value=a.evidence - showDialog.value=true + specialItem.value = item + status.value = '' + let a = specialPro.value.find((l : any) => l.name === item.name) + list.value = a.evidence + showDialog.value = true + getAction('/flowBind').then((res : any) => { + if (res.code === 200) { + flowList.value = res.data + } + }) } - - const addBh = (item:any) =>{ - let index=bhList.value.findIndex((l:any)=>l===item.bh) - if(index>=0){ - bhList.value.splice(index,1) - }else{ - bhList.value.push(item.bh) + + const addBh = (item : any, itemz : any) => { + let index = bhList.value.findIndex((l : any) => l.bh === item.bh && l.ms === item.ms) + if (index >= 0) { + bhList.value.splice(index, 1) + } else { + bhList.value.push({ ...item, mz: itemz.mz, sh: itemz.sh }) } } - const confirmSecond = () =>{ - + const confirmSecond = () => { + mls1.value = [] + mls2.value = [] + itemList.value.mls.forEach((l : any) => { + l.xxs.forEach((j : any) => { + let item = bhList.value.find((m : any) => m.mz == l.mz && m.sh == l.sh && m.bh == j.bh && m.ms == j.ms) + if (item) { + let item1 = mls2.value.find((k : any) => k.mz == item.mz && k.sh == item.sh) + if (item1) { + item1.xxs.push({ bh: item.bh, index: item.index, ms: item.ms }) + } else { + mls2.value.push({ mz: item.mz, sh: item.sh, xxs: [{ bh: item.bh, index: item.index, ms: item.ms }] }) + } + } else { + let item1 = mls1.value.find((k : any) => k.mz == l.mz && k.sh == l.sh) + if (item1) { + item1.xxs.push({ bh: j.bh, index: j.index, ms: j.ms }) + } else { + mls1.value.push({ mz: l.mz, sh: l.sh, xxs: [{ bh: j.bh, index: j.index, ms: j.ms }] }) + } + } + }) + }) + if (indexData.value == -1) { + if (!processes.value.processes[0].id) { + processes.value.processes[0] = { name: special.value, } + } else { + processes.value.processes.unshift({ name: special.value, }) + } + } else { + if (!processes.value.processes[indexData.value + 1].id) { + processes.value.processes[indexData.value + 1] = { name: special.value, } + } else { + processes.value.processes.splice(indexData.value + 1, 0, { name: special.value, }) + } + } + showDialog.value = false } - + //提交 - const onSubmit = () =>{ - console.log(list.value); - if(!status.value&&!special.value) return showToast('请选择工序!') - let data={ - trackingLogId:itemList.value.id, - details:{ - zt:status.value, - list:list.value, - form:form.value, - }, + const onSubmit = () => { + if (!status.value && !special.value) return showToast('请选择工序!') + let data = {} + if (special.value) { + if (mls2.value.length == 0) return showToast(specialItem.value.nextStep + '未选择面料!') + data = { + trackingLogId: itemList.value.id, + subId: itemList.value.subId, + details: { + zt: special.value, + list: list.value, + form: form.value, + type: specialItem.value.nextStep, + mls1: mls1.value.length == 0 ? [] : mls1.value, + mls2: mls1.value.length == 0 ? [] : mls2.value, + craftFlow: craftFlow.value ? craftFlow.value : null, + processes: specialItem.value.nextStep == 'ChangeCraft' ? craftFlowLc.value : processes.value, + czyy: czyy.value, + }, + } + } else if (status.value) { + data = { + subId: itemList.value.subId, + trackingLogId: itemList.value.id, + details: { + zt: indexData.value + 2 === processes.value.processes.length ? '待出厂' : status.value, + list: list.value, + form: form.value, + }, + } } - postAction('/tracking',data).then((res:any)=>{ - if(res.code===200){ + postAction('/tracking', data).then((res : any) => { + if (res.code === 200) { showToast('提交成功!') window.history.back() } }) } - + const fileList = ref([] as any[]) const afterRead = (file : any) => { file.status = 'uploading'; @@ -167,7 +300,7 @@ import { formatDate } from '../../utils/date'; if (res.code === 200) { file.status = 'success'; file.message = '成功!'; - list.value[indexType.value].pic=res.data + list.value[indexType.value].pic = res.data } }) }; @@ -181,18 +314,18 @@ import { formatDate } from '../../utils/date'; - + - {{item.name}} +

{{item.rq}}

- + - {{item.name}} + {{item.name}} @@ -200,26 +333,30 @@ import { formatDate } from '../../utils/date'; - + @@ -229,44 +366,53 @@ import { formatDate } from '../../utils/date'; - - - - - - -

如果无法辨认,请选择米数相近的面料

- - - - {{item.mz}}
{{itemSecond.ms}}米/{{itemSecond.bh}}
+ + + + + + + + +

如果无法辨认,请选择米数相近的面料

+ + + + {{item.mz}}
{{itemSecond.ms}}米/{{itemSecond.bh}} +
+
+
+ +
-
-
- + + + 取消 + + + 确认 + + + +
- + - + @@ -292,7 +438,7 @@ import { formatDate } from '../../utils/date'; flex-direction: column; text-align: center; align-items: center; - justify-content: center; + margin-top: 10rpx; .btn { border: 1rpx solid #d7d7d7; @@ -300,6 +446,14 @@ import { formatDate } from '../../utils/date'; border-radius: 10rpx; } + .btn2 { + border: 1rpx solid red; + padding: 10rpx 30rpx; + border-radius: 10rpx; + background-color: red; + color: #fff; + } + .btn1 { border: 1rpx solid #169bd5; padding: 10rpx 30rpx; @@ -309,32 +463,33 @@ import { formatDate } from '../../utils/date'; } } } - + .content { flex: 1; overflow-y: scroll; font-size: 16px; } } - + .grid-container1 { display: grid; grid-template-columns: 1fr 1fr; padding: 10rpx 15rpx; - + .grid-item { display: flex; flex-direction: column; text-align: center; align-items: center; justify-content: center; - + margin-top: 10rpx; + .btn { border: 1rpx solid #d7d7d7; padding: 10rpx 30rpx; border-radius: 10rpx; } - + .btn1 { border: 1rpx solid #169bd5; padding: 10rpx 30rpx; @@ -344,14 +499,15 @@ import { formatDate } from '../../utils/date'; } } } - + .bor { ::v-deep .van-field__control { border: 1px solid #d7d7d7; text-align: center; } } - .bor-n{ + + .bor-n { ::v-deep .van-field__control { border-bottom: 1px solid #d7d7d7; text-align: center; @@ -369,6 +525,7 @@ import { formatDate } from '../../utils/date'; ::v-deep .van-field__control { font-size: 16px; } + .footer-button { margin: 20px; display: flex; diff --git a/pages/documentary/documentary.vue b/pages/documentary/documentary.vue index 75cc676..3eaeb6b 100644 --- a/pages/documentary/documentary.vue +++ b/pages/documentary/documentary.vue @@ -279,9 +279,15 @@ } //工序详情 const toDetile = (item:any) =>{ - uni.navigateTo({ - url:'./detail?item='+JSON.stringify(item) - }) + if(item.zt==='待出厂'){ + uni.navigateTo({ + url:'./ex-factory?item='+JSON.stringify(item) + }) + }else{ + uni.navigateTo({ + url:'./detail?item='+JSON.stringify(item) + }) + } } diff --git a/pages/documentary/ex-factory.vue b/pages/documentary/ex-factory.vue new file mode 100644 index 0000000..4da982b --- /dev/null +++ b/pages/documentary/ex-factory.vue @@ -0,0 +1,299 @@ + + + + + \ No newline at end of file diff --git a/pages/maintenance/p-details.vue b/pages/maintenance/p-details.vue index 15cd7e2..1af2e5c 100644 --- a/pages/maintenance/p-details.vue +++ b/pages/maintenance/p-details.vue @@ -110,20 +110,20 @@ @click.stop="item.chooses.splice(index,1)" v-else />
- - - + + + - +