|
@@ -52,7 +52,7 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="名称">
|
|
<el-form-item label="名称">
|
|
|
- <el-input v-model="form.name" :placeholder="form.biz_type === 'product' ? '产品名称' : '产品 / 工单名称'" />
|
|
|
|
|
|
|
+ <el-input v-model="form.name" :placeholder="form.biz_type === 'product' ? '产品名称' : '工单名称'" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="总数量">
|
|
<el-form-item label="总数量">
|
|
@@ -169,7 +169,10 @@ const props = defineProps({
|
|
|
bizType: { type: String, default: '' },
|
|
bizType: { type: String, default: '' },
|
|
|
bizId: { type: [Number, String], default: '' },
|
|
bizId: { type: [Number, String], default: '' },
|
|
|
templateId: { type: [Number, String], default: '' },
|
|
templateId: { type: [Number, String], default: '' },
|
|
|
|
|
+ no: { type: String, default: '' },
|
|
|
|
|
+ name: { type: String, default: '' },
|
|
|
})
|
|
})
|
|
|
|
|
+const syncing = ref(false)
|
|
|
const emit = defineEmits(['update:modelValue', 'done'])
|
|
const emit = defineEmits(['update:modelValue', 'done'])
|
|
|
|
|
|
|
|
const templates = ref([])
|
|
const templates = ref([])
|
|
@@ -220,9 +223,18 @@ function optionValue(item) {
|
|
|
return item.code || item.name || ''
|
|
return item.code || item.name || ''
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+function pickName(row, fallback = '') {
|
|
|
|
|
+ if (!row) {
|
|
|
|
|
+ return String(fallback || '').trim()
|
|
|
|
|
+ }
|
|
|
|
|
+ return String(
|
|
|
|
|
+ row.product_name || (row.product && row.product.name) || row.name || fallback || ''
|
|
|
|
|
+ ).trim()
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
function optionLabel(item) {
|
|
function optionLabel(item) {
|
|
|
if (form.biz_type === 'workorder') {
|
|
if (form.biz_type === 'workorder') {
|
|
|
- const name = item.product_name || (item.product && item.product.name) || ''
|
|
|
|
|
|
|
+ const name = pickName(item)
|
|
|
return name ? (item.no + ' / ' + name) : (item.no || '')
|
|
return name ? (item.no + ' / ' + name) : (item.no || '')
|
|
|
}
|
|
}
|
|
|
return (item.code || '无编号') + ' / ' + (item.name || '')
|
|
return (item.code || '无编号') + ' / ' + (item.name || '')
|
|
@@ -328,6 +340,9 @@ function onBizTypeChange() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function onNoChange(val) {
|
|
async function onNoChange(val) {
|
|
|
|
|
+ if (syncing.value || lockBiz.value) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
preview.value = null
|
|
preview.value = null
|
|
|
const key = String(val || '').trim()
|
|
const key = String(val || '').trim()
|
|
|
if (!key) {
|
|
if (!key) {
|
|
@@ -350,23 +365,28 @@ async function loadBizDetail(id) {
|
|
|
if (!id) {
|
|
if (!id) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- if (form.biz_type === 'workorder') {
|
|
|
|
|
- const row = await workorderInfo(id)
|
|
|
|
|
- form.biz_id = row.id
|
|
|
|
|
- form.no = row.no || ''
|
|
|
|
|
- form.name = row.product_name || (row.product && row.product.name) || form.name || ''
|
|
|
|
|
- const procs = row.processes && row.processes.length
|
|
|
|
|
- ? row.processes
|
|
|
|
|
- : ((row.product && row.product.processes) || [])
|
|
|
|
|
- applySavedProcesses(procs)
|
|
|
|
|
- } else {
|
|
|
|
|
- const row = await productInfo(id)
|
|
|
|
|
- form.biz_id = row.id
|
|
|
|
|
- form.no = row.code || ''
|
|
|
|
|
- form.name = row.name || ''
|
|
|
|
|
- applySavedProcesses(row.processes || [])
|
|
|
|
|
- }
|
|
|
|
|
- syncPlateRange()
|
|
|
|
|
|
|
+ syncing.value = true
|
|
|
|
|
+ try {
|
|
|
|
|
+ if (form.biz_type === 'workorder') {
|
|
|
|
|
+ const row = await workorderInfo(id)
|
|
|
|
|
+ form.biz_id = row.id
|
|
|
|
|
+ form.no = row.no || form.no || ''
|
|
|
|
|
+ form.name = pickName(row, form.name)
|
|
|
|
|
+ const procs = row.processes && row.processes.length
|
|
|
|
|
+ ? row.processes
|
|
|
|
|
+ : ((row.product && row.product.processes) || [])
|
|
|
|
|
+ applySavedProcesses(procs)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const row = await productInfo(id)
|
|
|
|
|
+ form.biz_id = row.id
|
|
|
|
|
+ form.no = row.code || form.no || ''
|
|
|
|
|
+ form.name = pickName(row, form.name)
|
|
|
|
|
+ applySavedProcesses(row.processes || [])
|
|
|
|
|
+ }
|
|
|
|
|
+ syncPlateRange()
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ syncing.value = false
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function selectedProcesses() {
|
|
function selectedProcesses() {
|
|
@@ -461,26 +481,38 @@ watch(
|
|
|
savedProcesses.value = []
|
|
savedProcesses.value = []
|
|
|
checkedProcessKeys.value = []
|
|
checkedProcessKeys.value = []
|
|
|
draftProcesses.value = []
|
|
draftProcesses.value = []
|
|
|
|
|
+ syncing.value = true
|
|
|
form.template_id = Number(props.templateId || 0) || ''
|
|
form.template_id = Number(props.templateId || 0) || ''
|
|
|
form.biz_type = props.bizType || 'workorder'
|
|
form.biz_type = props.bizType || 'workorder'
|
|
|
form.biz_id = Number(props.bizId || 0) || ''
|
|
form.biz_id = Number(props.bizId || 0) || ''
|
|
|
- form.no = ''
|
|
|
|
|
- form.name = ''
|
|
|
|
|
|
|
+ form.no = String(props.no || '').trim()
|
|
|
|
|
+ form.name = String(props.name || '').trim()
|
|
|
form.sheet_qty = ''
|
|
form.sheet_qty = ''
|
|
|
form.qty = ''
|
|
form.qty = ''
|
|
|
form.sheet_from = 1
|
|
form.sheet_from = 1
|
|
|
form.sheet_to = 1
|
|
form.sheet_to = 1
|
|
|
form.copies = 1
|
|
form.copies = 1
|
|
|
- const [t, w, p] = await Promise.all([
|
|
|
|
|
- templateList({ printable: 1, limit: 100 }),
|
|
|
|
|
- workorderList({ limit: 100 }),
|
|
|
|
|
- productList({ limit: 100 }),
|
|
|
|
|
- ])
|
|
|
|
|
- templates.value = t.rows || []
|
|
|
|
|
- workorders.value = w.rows || []
|
|
|
|
|
- products.value = p.rows || []
|
|
|
|
|
- if (form.biz_id) {
|
|
|
|
|
- await loadBizDetail(form.biz_id)
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ const [t, w, p] = await Promise.all([
|
|
|
|
|
+ templateList({ printable: 1, limit: 100 }),
|
|
|
|
|
+ workorderList({ limit: 100 }),
|
|
|
|
|
+ productList({ limit: 100 }),
|
|
|
|
|
+ ])
|
|
|
|
|
+ templates.value = t.rows || []
|
|
|
|
|
+ workorders.value = w.rows || []
|
|
|
|
|
+ products.value = p.rows || []
|
|
|
|
|
+ if (form.biz_id) {
|
|
|
|
|
+ const listed = (form.biz_type === 'product' ? products.value : workorders.value).find(
|
|
|
|
|
+ (item) => Number(item.id) === Number(form.biz_id)
|
|
|
|
|
+ )
|
|
|
|
|
+ if (listed) {
|
|
|
|
|
+ form.no = form.no || (form.biz_type === 'product' ? listed.code : listed.no) || ''
|
|
|
|
|
+ form.name = form.name || pickName(listed)
|
|
|
|
|
+ }
|
|
|
|
|
+ await loadBizDetail(form.biz_id)
|
|
|
|
|
+ }
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ syncing.value = false
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|