From 5e38906b578004f5a7441329cd25e85e50a29020 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周二, 06 5月 2025 17:37:58 +0800 Subject: [PATCH] 111 --- Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx | 680 ++++++++++++++++++++++++++++++-------------------------- 1 files changed, 363 insertions(+), 317 deletions(-) diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx" index ad14d54..6cacc6e 100644 --- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx" +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx" @@ -1,317 +1,363 @@ -import { - ref, - onMounted, - reactive, - computed, - Ref, - watch, - SetupContext, - h, -} 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 disabled = ref(false) - - const current = computed(() => { - return props.row || null - }) - - const inputNumber = (attrs) => { - return ( - <el-input-number - min="1" - step="1" - precision="0" - {...attrs} - ></el-input-number> - ) - } - - const visible = computed({ - get() { - return props.modelValue - }, - set(val) { - ctx.emit('update:modelValue', val) - }, - }) - /** - * 娣诲姞鐨刦orm瀛楁 - */ - const formItems = reactive([ - { - label: '鐗╂枡缂栫爜', - prop: 'materialCode', - el: 'input', - disabled: disabled, - 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: [], - rules: [{ required: true, message: '璇烽�夋嫨閲囪喘绫诲瀷', trigger: 'change' }], - }, - { - label: '鐗╂枡绫诲瀷', - prop: 'materialType', - el: 'select', - placeholder: '璇烽�夋嫨鐗╂枡绫诲瀷', - options: [], - 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: (props: any, { attrs }: SetupContext) => { - return h(inputNumber, { - ...props, - clearable: true, - ...attrs, - }) - }, - width: '100%', - placeholder: '璇疯緭鍏ュ寰�', - step: 0.01, - precision: 2, - }, - { - label: '澹佸帤(mm)', - prop: 'wallThickness', - el: (props: any, { attrs }: SetupContext) => { - return h(inputNumber, { - ...props, - clearable: true, - ...attrs, - }) - }, - width: '100%', - placeholder: '璇疯緭鍏ュ鍘�', - step: 0.01, - precision: 2, - }, - { - label: '鏉愯川', - prop: 'materialQuality', - el: 'input', - placeholder: '璇疯緭鍏ユ潗璐�(濡�: 304涓嶉攬閽�)', - }, - { - label: '闀垮害(m)', - prop: 'length', - el: (props: any, { attrs }: SetupContext) => { - return h(inputNumber, { - ...props, - clearable: true, - ...attrs, - }) - }, - width: '100%', - placeholder: '璇疯緭鍏ラ暱搴�', - step: 0.1, - precision: 2, - }, - { - label: '鏄惁涓绘敮绠�', - prop: 'isMainBranch', - el: 'select', - options: [], - }, - { - 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, - 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 updateFormItemOptions = (propName: string, enumData: any[]) => { - const item = formItems.find((item) => item.prop === propName) - if (item && enumData) { - item.options = enumData.map((item) => ({ - label: item.description, - value: item.value, - })) - } - } - /** - * 閫氱敤鏌ヨ鏋氫妇 - */ - const commonQueryEnumForFrom = async () => { - const materialTypeEnum = await wmsMaterialDrawer.getWmsEnumData({ - EnumName: 'MaterialTypeEnum', - }) - updateFormItemOptions('materialType', materialTypeEnum) - - const purchaseTypeEnum = await wmsMaterialDrawer.getWmsEnumData({ - EnumName: 'PurchaseTypeEnum', - }) - updateFormItemOptions('purchaseType', purchaseTypeEnum) - - const yesOrNoTypeEnum = await wmsMaterialDrawer.getWmsEnumData({ - EnumName: 'YesNoEnum', - }) - updateFormItemOptions('isMainBranch', yesOrNoTypeEnum) - } - commonQueryEnumForFrom() - /** - * 寮圭獥鎵撳紑鑾峰彇璇︽儏 - */ - 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, - factory: res.factory, - certification: res.certification, - remark: res.remark, - id: res.id, - } - disabled.value = true - updateCheckData() - } else { - formData.value = {} - - disabled.value = false - updateCheckData() - } - } - - watch(() => current.value, onOpen) - - return { - formItems, - formData, - visible, - formRef, - onOpen, - onClose, - onConfirm, - } -} +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} 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 disabled = ref(false) + + const current = computed(() => { + return props.row || null + }) + + const inputNumber = (attrs) => { + return ( + <el-input-number + min="1" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } + + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 娣诲姞鐨刦orm瀛楁 + */ + const formItems = reactive([ + { + label: '鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�', + prop: 'materialCode', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欑紪鐮侊紙鍞竴鏍囪瘑锛�', + rules: [{required: true, message: '鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛変笉鑳戒负绌�', trigger: 'blur' }], + }, + { + label: '鐗╂枡鍚嶇О', + prop: 'materialName', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', + rules: [{required: true, message: '鐗╂枡鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '閲囪喘绫诲瀷锛堟灇涓惧�硷級', + prop: 'purchaseType', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ラ噰璐被鍨嬶紙鏋氫妇鍊硷級', + rules: [{required: true, message: '閲囪喘绫诲瀷锛堟灇涓惧�硷級涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '鐗╂枡绫诲瀷锛堟灇涓惧�硷級', + prop: 'materialType', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欑被鍨嬶紙鏋氫妇鍊硷級', + rules: [{required: true, message: '鐗╂枡绫诲瀷锛堟灇涓惧�硷級涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�', + prop: 'primaryUnit', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ヤ富鍗曚綅锛堝锛歬g銆乵銆佷釜锛�', + }, + { + label: '瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�', + prop: 'standard', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ヨ鏍�/鏍囧噯锛堝锛欸B/T 8163-2018锛�', + }, + { + label: '澶栧緞锛堝崟浣嶏細mm锛�', + prop: 'outerDiameter', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + step: 0.01, + precision: 2, + //disabled: disabled, + placeholder: '璇疯緭鍏ュ寰勶紙鍗曚綅锛歮m锛�', + rules: [{required: true, message: '澶栧緞锛堝崟浣嶏細mm锛変笉鑳戒负绌�', trigger: 'blur' }], + }, + { + label: '澹佸帤锛堝崟浣嶏細mm锛�', + prop: 'wallThickness', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + step: 0.01, + precision: 2, + //disabled: disabled, + placeholder: '璇疯緭鍏ュ鍘氾紙鍗曚綅锛歮m锛�', + rules: [{required: true, message: '澹佸帤锛堝崟浣嶏細mm锛変笉鑳戒负绌�', trigger: 'blur' }], + }, + { + label: '鏉愯川锛堝锛�304涓嶉攬閽級', + prop: 'materialQuality', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ潗璐紙濡傦細304涓嶉攬閽級', + }, + { + label: '闀垮害锛堝崟浣嶏細m锛�', + prop: 'length', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + step: 0.01, + precision: 2, + //disabled: disabled, + placeholder: '璇疯緭鍏ラ暱搴︼紙鍗曚綅锛歮锛�', + rules: [{required: true, message: '闀垮害锛堝崟浣嶏細m锛変笉鑳戒负绌�', trigger: 'blur' }], + }, + { + label: '鏄惁涓轰富鏀', + prop: 'isMainBranch', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ槸鍚︿负涓绘敮绠�', + rules: [{required: true, message: '鏄惁涓轰富鏀涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '鐢熶骇宸ュ巶', + prop: 'factory', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ敓浜у伐鍘�', + }, + { + label: '璇佷功缂栧彿', + prop: 'certification', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ヨ瘉涔︾紪鍙�', + }, + { + label: '鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��', + prop: 'redundantField1', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�1 - 棰勭暀鎵╁睍鐢ㄩ��', + }, + { + label: '鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��', + prop: 'redundantField2', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�2 - 棰勭暀鎵╁睍鐢ㄩ��', + }, + { + label: '鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��', + prop: 'redundantField3', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�3 - 棰勭暀鎵╁睍鐢ㄩ��', + }, + { + label: '澶囨敞', + prop: 'remark', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ娉�', + }, + { + label: '鏄惁绂佺敤', + prop: 'isDisabled', + el: 'select', + //disabled: disabled, + 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, +factory: formData.value.factory, +certification: formData.value.certification, +redundantField1: formData.value.redundantField1, +redundantField2: formData.value.redundantField2, +redundantField3: formData.value.redundantField3, +remark: formData.value.remark, +isDisabled: formData.value.isDisabled, + } + 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 updateFormItemOptions = (propName: string, enumData: any[]) => { + const item = formItems.find((item) => item.prop === propName) + if (item && enumData) { + item.options = enumData.map((item) => ({ + label: item.description, + value: item.value, + })) + } + } + /** + * 閫氱敤鏌ヨ鏋氫妇 + */ + const commonQueryEnumForFrom = async () => { + const purchaseTypeEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ + EnumName: 'PurchaseTypeEnum', +}) +updateFormItemOptions('purchaseType', purchaseTypeEnumEnum) +const materialTypeEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ + EnumName: 'MaterialTypeEnum', +}) +updateFormItemOptions('materialType', materialTypeEnumEnum) +const yesNoEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ + EnumName: 'YesNoEnum', +}) +updateFormItemOptions('isMainBranch', yesNoEnumEnum) + + } + commonQueryEnumForFrom() + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + 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, +factory: res.factory, +certification: res.certification, +redundantField1: res.redundantField1, +redundantField2: res.redundantField2, +redundantField3: res.redundantField3, +remark: res.remark, +isDisabled: res.isDisabled, + id: res.id, + } + disabled.value = true + updateCheckData() + } else { + formData.value = {} + + disabled.value = false + updateCheckData() + } + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirm, + } +} -- Gitblit v1.9.3