From 27ba504441037666e787ded85b4af2f65be65c17 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周二, 29 4月 2025 18:06:07 +0800 Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo --- HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.ts | 251 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 251 insertions(+), 0 deletions(-) diff --git a/HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.ts b/HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.ts new file mode 100644 index 0000000..377b8fb --- /dev/null +++ b/HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.ts @@ -0,0 +1,251 @@ +import { ref, onMounted, reactive, computed, Ref, watch } from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsMaterialDrawer } from '../Models/WmsMaterialDrawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' + +export const useWmsMaterialDrawer = (props: any, ctx?: any) => { + const wmsMaterialDrawer = injectModel<WmsMaterialDrawer>('wmsMaterialDrawer') + /** + * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const current = computed(() => { + return props.row || null + }) + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 娣诲姞鐨刦orm瀛楁 + */ + const formItems = reactive([ + { + label: '鐗╂枡缂栫爜', + prop: 'materialCode', + el: 'input', + placeholder: '璇疯緭鍏ョ墿鏂欑紪鐮�', + rules: [{ required: true, message: '鐗╂枡缂栫爜涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '鐗╂枡鍚嶇О', + prop: 'materialName', + el: 'input', + placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', + rules: [{ required: true, message: '鐗╂枡鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '閲囪喘绫诲瀷', + prop: 'purchaseType', + el: 'select', + placeholder: '璇烽�夋嫨閲囪喘绫诲瀷', + options: [ + { label: '绫诲瀷1', value: 1 }, + { label: '绫诲瀷2', value: 2 }, + // Add all enum values + ], + rules: [{ required: true, message: '璇烽�夋嫨閲囪喘绫诲瀷', trigger: 'change' }], + }, + { + label: '鐗╂枡绫诲瀷', + prop: 'materialType', + el: 'select', + placeholder: '璇烽�夋嫨鐗╂枡绫诲瀷', + options: [ + { label: '绫诲瀷A', value: 1 }, + { label: '绫诲瀷B', value: 2 }, + // Add all enum values + ], + rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡绫诲瀷', trigger: 'change' }], + }, + { + label: '涓诲崟浣�', + prop: 'primaryUnit', + el: 'input', + placeholder: '璇疯緭鍏ヤ富鍗曚綅(濡�: kg, m, 涓�)', + }, + { + label: '瑙勬牸/鏍囧噯', + prop: 'standard', + el: 'input', + placeholder: '璇疯緭鍏ヨ鏍�/鏍囧噯(濡�: GB/T 8163-2018)', + }, + { + label: '澶栧緞(mm)', + prop: 'outerDiameter', + el: 'input-number', + placeholder: '璇疯緭鍏ュ寰�', + step: 0.01, + precision: 2, + }, + { + label: '澹佸帤(mm)', + prop: 'wallThickness', + el: 'input-number', + placeholder: '璇疯緭鍏ュ鍘�', + step: 0.01, + precision: 2, + }, + { + label: '鏉愯川', + prop: 'materialQuality', + el: 'input', + placeholder: '璇疯緭鍏ユ潗璐�(濡�: 304涓嶉攬閽�)', + }, + { + label: '闀垮害(m)', + prop: 'length', + el: 'input-number', + placeholder: '璇疯緭鍏ラ暱搴�', + step: 0.1, + precision: 2, + }, + { + label: '鏄惁涓绘敮绠�', + prop: 'isMainBranch', + el: 'select', + options: [ + { label: '鏄�', value: 1 }, + { label: '鍚�', value: 2 }, + ], + }, + { + label: '鐢熶骇宸ュ巶', + prop: 'factory', + el: 'input', + placeholder: '璇疯緭鍏ョ敓浜у伐鍘�', + }, + { + label: '璇佷功缂栧彿', + prop: 'certification', + el: 'input', + placeholder: '璇疯緭鍏ヨ瘉涔︾紪鍙�', + }, + { + label: '澶囨敞', + prop: 'remark', + el: 'input', + type: 'textarea', + placeholder: '璇疯緭鍏ュ娉�', + }, + ]) + /** + * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + + const onClose = (done: () => void) => { + if (visible.value) { + if (checkIsEqualObject()) { + visible.value = false + done && done() + } else { + ConfirmBox('鏄惁淇濆瓨璁剧疆锛�') + .then(() => { + onConfirm() + }) + .catch(() => { + visible.value = false + done && done() + }) + } + } + } + /** + * 淇濆瓨 + */ + const onConfirm = async () => { + await formRef.value?.validate() + const data = { + materialCode: formData.value.materialCode, + materialName: formData.value.materialName, + purchaseType: formData.value.purchaseType, + materialType: formData.value.materialType, + primaryUnit: formData.value.primaryUnit, + standard: formData.value.standard, + outerDiameter: formData.value.outerDiameter, + wallThickness: formData.value.wallThickness, + materialQuality: formData.value.materialQuality, + length: formData.value.length, + isMainBranch: formData.value.isMainBranch === 1, + factory: formData.value.factory, + certification: formData.value.certification, + remark: formData.value.remark, + } + if (!current.value) { + await wmsMaterialDrawer.addWmsMaterial(data) + } else { + const id = current.value.id + await wmsMaterialDrawer.updateWmsMaterial(id, data) + } + ElMessage.success('淇濆瓨鎴愬姛') + ctx.emit('confirm') + } + + const updateCheckData = () => { + initiateData.value = { + formData: { + ...formData.value, + }, + } + } + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + const onOpen = async () => { + if (current.value) { + const res = await wmsMaterialDrawer.getWmsMaterialDetail(current.value) + + formData.value = { + materialCode: res.materialCode, + materialName: res.materialName, + purchaseType: res.purchaseType, + materialType: res.materialType, + primaryUnit: res.primaryUnit, + standard: res.standard, + outerDiameter: res.outerDiameter, + wallThickness: res.wallThickness, + materialQuality: res.materialQuality, + length: res.length, + isMainBranch: res.isMainBranch ? 1 : 2, + factory: res.factory, + certification: res.certification, + remark: res.remark, + id: res.id, + } + updateCheckData() + } else { + formData.value = {} + updateCheckData() + } + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirm, + } +} -- Gitblit v1.9.3