From de5d72a1ee25654826103e38f67188b1f444ec2a Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期六, 25 四月 2026 11:02:58 +0800
Subject: [PATCH] 阳光印刷web 生产订单工艺路线增加书号单据类型增加切料图示的选择
---
src/views/productionManagement/productionOrder/BindRouteDialog.vue | 93 ++++++++++++++++++++++++++++++++--------------
1 files changed, 64 insertions(+), 29 deletions(-)
diff --git a/src/views/productionManagement/productionOrder/BindRouteDialog.vue b/src/views/productionManagement/productionOrder/BindRouteDialog.vue
index 484b950..e2b6337 100644
--- a/src/views/productionManagement/productionOrder/BindRouteDialog.vue
+++ b/src/views/productionManagement/productionOrder/BindRouteDialog.vue
@@ -45,8 +45,9 @@
<el-descriptions-item label="鍗曟嵁绫诲瀷" :span="2" align="center">
<el-checkbox-group v-model="introductionLetterList" :disabled="isDetail">
<el-checkbox label="浠嬬粛淇�" value="浠嬬粛淇�" />
- <el-checkbox label="鍟嗘爣娉ㄥ唽涔�" value="鍟嗘爣娉ㄥ唽涔�" />
+ <el-checkbox label="鍟嗘爣娉ㄥ唽" value="鍟嗘爣娉ㄥ唽" />
<el-checkbox label="濮斿嵃鍗�" value="濮斿嵃鍗�" />
+ <el-checkbox label="涔﹀彿" value="涔﹀彿" />
</el-checkbox-group>
</el-descriptions-item>
</el-descriptions>
@@ -58,23 +59,26 @@
</div>
<el-table border :data="formData.materialInfo" style="width: 100%">
<el-table-column label="鏉愭枡鍚嶇О">
- <template #default="{ row }" >
+ <template #default="{ row, $index }" >
<el-tree-select
v-if="!isDetail"
- v-model="row.productId"
+ v-model="row.productById"
placeholder="璇烽�夋嫨"
clearable
check-strictly
- @change="(val) => getModels(val, row)"
+ @change="(val) => getModels(val, row, $index)"
:data="productOptions"
:render-after-expand="false"
:disabled="isDetail"
style="width: 100%"
/>
- <span v-else>{{ row.name }}</span>
+ <span v-else>{{ row.name }}</span>
</template>
</el-table-column>
- <el-table-column label="瑙勬牸">
+ <el-table-column>
+ <template #header>
+ <span class="required">*</span>瑙勬牸
+ </template>
<template #default="{ row }">
<el-select
v-if="!isDetail"
@@ -86,7 +90,7 @@
:disabled="isDetail"
>
<el-option
- v-for="item in row.modelOptions || []"
+ v-for="item in row.modelOptions"
:key="item.id"
:label="item.model"
:value="item.id"
@@ -125,8 +129,19 @@
</el-table>
<el-descriptions border :column="2" :span="2">
<el-descriptions-item
- label="娉ㄦ剰浜嬮」"
- :span="2"
+ label="鍒囨枡鍥剧ず閫夋嫨"
+ :span="1"
+ align="center"
+ style="white-space: pre-line; word-break: break-all; min-height: 60px;"
+ >
+ <el-radio-group v-model="formData.cuttingDiagramCheckout">
+ <el-radio value="骞冲紶">骞冲紶</el-radio>
+ <el-radio value="鍗风瓛">鍗风瓛</el-radio>
+ </el-radio-group>
+ </el-descriptions-item>
+ <el-descriptions-item
+ label="鍒囨枡娉ㄦ剰浜嬮」"
+ :span="1"
align="center"
style="white-space: pre-line; word-break: break-all; min-height: 60px;"
>
@@ -140,8 +155,9 @@
</el-descriptions-item>
</el-descriptions>
<!-- ================= 鍒囨枡鍥剧ず ================= -->
- <div class="section-title">鍒囨枡鍥剧ず</div>
+ <div class="section-title" v-if="formData.cuttingFileVo.length > 0">鍒囨枡鍥剧ず</div>
<ActionFileUpload
+ v-if="formData.cuttingFileVo.length > 0"
style="width: 50%;float: left;"
v-model:file-list="formData.cuttingFileVo"
:action="upload.url"
@@ -384,18 +400,18 @@
</template>
<script setup>
-import { ref, reactive, computed, onMounted, watch, getCurrentInstance } from 'vue'
+import {computed, getCurrentInstance, onMounted, reactive, ref, watch} from 'vue'
import dayjs from 'dayjs'
import FormDialog from '@/components/Dialog/FormDialog.vue'
import ActionFileUpload from "@/components/Upload/ActionFileUpload.vue";
-import { list } from "@/api/productionManagement/productionProcess.js"
-import { modelList, productTreeList } from "@/api/basicData/product.js"
+import {list} from "@/api/productionManagement/productionProcess.js"
+import {modelList, productTreeList} from "@/api/basicData/product.js"
import {getSalesLedgerWithProducts} from "@/api/salesManagement/salesLedger.js"
-import { getDeviceLedger } from "@/api/equipmentManagement/ledger.js"
-import { userListNoPageByTenantId } from "@/api/system/user.js"
-import { getToken } from "@/utils/auth";
+import {getDeviceLedger} from "@/api/equipmentManagement/ledger.js"
+import {userListNoPageByTenantId} from "@/api/system/user.js"
+import {getToken} from "@/utils/auth";
import filePreview from '@/components/filePreview/index.vue'
-import { ElMessage } from "element-plus";
+import {ElMessage} from "element-plus";
const props = defineProps({
modelValue: {
@@ -513,7 +529,6 @@
})
const getUploadFileUrl = (file) => {
- console.log("file", file)
const response = file?.response
const data = response?.data
if (Array.isArray(data) && data.length) {
@@ -638,7 +653,6 @@
}
const resolveFileUrl = (rawUrl) => {
- console.log("rawUrl", rawUrl)
const u = String(rawUrl || "")
if (!u) return ""
if (/^(https?:)?\/\//i.test(u)) return u
@@ -651,7 +665,6 @@
// 鏂囦欢棰勮/涓嬭浇
const onDownload = (file) => {
- console.log(file)
const url = resolveFileUrl(getUploadFileUrl(file))
if (!url) return
proxy?.$modal?.loading?.("姝e湪涓嬭浇鏂囦欢锛岃绋嶅��...")
@@ -723,7 +736,6 @@
if(res){
formData.productOrderList = res
}
- console.log(formData)
})
}
@@ -792,11 +804,9 @@
}
const handleProcessChange = (val, row) => {
- console.log(row)
const process = processOptions.value.find(item => item.id === val)
if (process) {
row.processName = process.name
- console.log(process)
if (process.deviceId) {
row.deviceId = process.deviceId || ""
row.deviceName = process.deviceName || ""
@@ -820,24 +830,40 @@
}))
}
-const getModels = (val, row) => {
+const getModels = async (val, row, index) => {
+ const targetRow = formData.materialInfo[index]
row.productId = val || ""
+ row.productById = val || ""
row.name = val ? findProductLabelById(productOptions.value, val) : ""
+
row.productModelId = ""
row.model = ""
row.unit = ""
row.modelOptions = []
- if (!val) {
- return
+
+ if (!val) return
+
+ const res = await modelList({ id: val })
+ formData.materialInfo[index] = {
+ ...targetRow,
+ modelOptions: Array.isArray(res) ? res :
+ Array.isArray(res?.data) ? res.data :
+ Array.isArray(res?.rows) ? res.rows :
+ Array.isArray(res?.data?.records) ? res.data.records :
+ []
}
- modelList({ id: val }).then(res => {
- row.modelOptions = Array.isArray(res) ? res : Array.isArray(res?.data) ? res.data : []
- })
+ // row.modelOptions = Array.isArray(res) ? res :
+ // Array.isArray(res?.data) ? res.data :
+ // Array.isArray(res?.rows) ? res.rows :
+ // Array.isArray(res?.data?.records) ? res.data.records :
+ // []
+
}
const handleMaterialModelChange = (val, row) => {
const currentModel = (row.modelOptions || []).find(item => item.id === val)
row.productModelId = val || ""
+ row.productId = currentModel?.id || ""
row.model = currentModel?.model || ""
row.unit = currentModel?.unit || ""
}
@@ -906,6 +932,15 @@
if (isDetail.value) {
return
}
+ const materialRows = Array.isArray(formData.materialInfo) ? formData.materialInfo : []
+ for (let i = 0; i < materialRows.length; i++) {
+ const row = materialRows[i] || {}
+ if (!row.productId) {
+ ElMessage.warning(`鏉愭枡淇℃伅绗�${i + 1}琛岋細 瑙勬牸蹇呭~`)
+ return
+ }
+
+ }
const rows = Array.isArray(formData.processContent) ? formData.processContent : []
for (let i = 0; i < rows.length; i++) {
const row = rows[i] || {}
--
Gitblit v1.9.3