¶Ô±ÈÐÂÎļþ |
| | |
| | | .informationDrawerPosition { |
| | | position: relative; |
| | | } |
| | | .informationDrawer { |
| | | background: linear-gradient(180deg, #dee4ff 0%, #ffffff 40%, #ffffff 100%); |
| | | box-shadow: 0px -4px 30px 1px rgba(0, 0, 0, 0.16); |
| | | |
| | | border-radius: 6px 6px 0px 0px; |
| | | opacity: 1; |
| | | border: 1px solid #f0f3fd; |
| | | |
| | | @keyframes iconFrames { |
| | | 0% { |
| | | opacity: 1; |
| | | } |
| | | 25% { |
| | | opacity: 0.66; |
| | | } |
| | | 50% { |
| | | opacity: 0.33; |
| | | } |
| | | 75% { |
| | | opacity: 0.66; |
| | | } |
| | | |
| | | 100% { |
| | | opacity: 1; |
| | | } |
| | | } |
| | | .iconPosition { |
| | | position: absolute; |
| | | top: 38px; |
| | | right: 111px; |
| | | user-select: none; |
| | | -webkit-user-drag: none; |
| | | animation: iconFrames 2s infinite linear; |
| | | } |
| | | :global(.cs-drawer__header) { |
| | | padding-top: 36px; |
| | | .cs-drawer__close-btn { |
| | | margin-top: -16px; |
| | | font-size: 16px; |
| | | } |
| | | |
| | | > span { |
| | | font-size: 18px; |
| | | font-family: Source Han Sans CN, Source Han Sans CN; |
| | | font-weight: bold; |
| | | color: #464e54; |
| | | line-height: 0px; |
| | | } |
| | | } |
| | | :global(.cs-drawer__close-btn) { |
| | | margin-top: -16px; |
| | | font-size: 16px; |
| | | } |
| | | :global(.cs-drawer__body) { |
| | | padding: 30px; |
| | | padding-top: 13px; |
| | | } |
| | | } |
| | | |
| | | .modal { |
| | | width: var(--drawer-width); |
| | | left: calc(100% - var(--drawer-width)) !important; |
| | | } |
| | | |
| | | .csDialogFooter { |
| | | padding: 0 18px; |
| | | .csBaseBtn { |
| | | width: 98px; |
| | | height: 26px; |
| | | } |
| | | .dialogBtn { |
| | | background: #efeded; |
| | | color: #666666; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { computed, defineComponent, onMounted, ref } from 'vue' |
| | | import styles from './BaseQueryDrawer.module.scss' |
| | | import Icon from '../Icon/Icon' |
| | | //@ts-ignore |
| | | export default defineComponent<{ |
| | | [key: string]: any |
| | | }>({ |
| | | // @ts-ignore |
| | | name: 'BaseDrawer', |
| | | props: { |
| | | // é®ç½©æ¯å¦å¯ç¹å» |
| | | clickable: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: '', |
| | | }, |
| | | width: { |
| | | type: String, |
| | | default: '', |
| | | }, |
| | | // modelValue: { |
| | | // type: Boolean, |
| | | // default: false, |
| | | // }, |
| | | }, |
| | | emits: ['close', 'confirm', 'update:modelValue', 'open', 'beforeClose'], |
| | | setup(props: any, { emit, slots, attrs }: any) { |
| | | // const size = computed(() => { |
| | | // if (attrs.size.includes('px')) { |
| | | // return attrs.size |
| | | // } |
| | | // }) |
| | | |
| | | // const model = computed(() => { |
| | | // if (attrs.model.includes('')) { |
| | | // return attrs.model |
| | | // } |
| | | // }) |
| | | |
| | | return () => { |
| | | return ( |
| | | <div |
| | | class={styles.drawContent} |
| | | //@ts-ignore |
| | | // style={props.clickable ? { '--drawer-width': size.value } : {}} |
| | | > |
| | | <el-drawer |
| | | // modal-class={props.clickable ? styles.modal : ''} |
| | | class={{ |
| | | [styles.informationDrawer]: true, |
| | | // [styles.informationDrawerPosition]: props.clickable, |
| | | }} |
| | | onOpen={() => emit('open')} |
| | | onClose={() => emit('close')} |
| | | v-slots={{ |
| | | footer() { |
| | | return ( |
| | | <div class={styles.csDialogFooter}> |
| | | <el-button |
| | | onClick={() => emit('close')} |
| | | type="info" |
| | | plain |
| | | class={{ |
| | | [styles.dialogBtn]: true, |
| | | [styles.csBaseBtn]: true, |
| | | }} |
| | | > |
| | | å
³é |
| | | </el-button> |
| | | <el-button |
| | | onClick={() => emit('confirm')} |
| | | type="primary" |
| | | class={{ |
| | | [styles.csBaseBtn]: true, |
| | | }} |
| | | > |
| | | æ¥è¯¢ |
| | | </el-button> |
| | | </div> |
| | | ) |
| | | }, |
| | | }} |
| | | {...attrs} |
| | | title={props.title} |
| | | size={props.width || attrs.size} |
| | | > |
| | | <Icon |
| | | width={167} |
| | | height={54} |
| | | class={styles.iconPosition} |
| | | icon="drawer_bg" |
| | | /> |
| | | {slots.default?.()} |
| | | </el-drawer> |
| | | </div> |
| | | ) |
| | | } |
| | | }, |
| | | }) |
| | |
| | | title: '', |
| | | isAdd: false, |
| | | }) |
| | | const dialogConfigForQuery = reactive({ |
| | | visible: false, |
| | | title: '', |
| | | isAdd: false, |
| | | }) |
| | | |
| | | |
| | | const dialogSettingConfig = reactive({ |
| | | visible: false, |
| | |
| | | sort.value = params.totalCount + 1 |
| | | } |
| | | |
| | | //ç¹å»æé®ãé«çº§æ¥è¯¢ã |
| | | const onAdvancedQuery = () => { |
| | | const params = tableRef.value?.getPaginationParams() |
| | | current.value = null |
| | | dialogConfigForQuery.visible = true |
| | | dialogConfigForQuery.isAdd = true |
| | | dialogConfigForQuery.title = 'é«çº§æ¥è¯¢' |
| | | sort.value = params.totalCount + 1 |
| | | } |
| | | |
| | | const onConfirmWmsMaterial = async () => { |
| | | dialogConfig.visible = false |
| | | if (dialogConfig.isAdd) { |
| | |
| | | dataSource, |
| | | contextMenu, |
| | | dialogConfig, |
| | | dialogConfigForQuery, |
| | | dialogSettingConfig, |
| | | tableRef, |
| | | current, |
| | |
| | | onConfirmWmsMaterial, |
| | | onCheck, |
| | | onAddWmsMaterial, |
| | | onAdvancedQuery |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { |
| | | ref, |
| | | onMounted, |
| | | reactive, |
| | | computed, |
| | | Ref, |
| | | watch, |
| | | SetupContext, |
| | | h, |
| | | } from 'vue' |
| | | import { injectModel } from '@/libs/Provider/Provider' |
| | | import { WmsMaterialQueryDrawer } from '../Models/WmsMaterialQueryDrawer' |
| | | import { ElMessage } from 'element-plus' |
| | | import isEqual from 'lodash/isEqual' |
| | | import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' |
| | | import { cloneDeep } from 'lodash' |
| | | |
| | | export const useWmsMaterialQueryDrawer = (props: any, ctx?: any) => { |
| | | const WmsMaterialQueryDrawer = injectModel<WmsMaterialQueryDrawer>('WmsMaterialQueryDrawer') |
| | | /** |
| | | * ç¨æ¥å¯¹æ¯çåå§åæ°æ® |
| | | */ |
| | | 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) |
| | | }, |
| | | }) |
| | | /** |
| | | * æ·»å çformåæ®µ |
| | | */ |
| | | const formItems = reactive([ |
| | | { |
| | | label: 'ç©æç¼ç ', |
| | | prop: 'materialCode', |
| | | el: 'input', |
| | | disabled: disabled, |
| | | placeholder: '请è¾å
¥ç©æç¼ç ', |
| | | }, |
| | | { |
| | | 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 WmsMaterialQueryDrawer.addWmsMaterial(data) |
| | | } else { |
| | | const id = current.value.id |
| | | await WmsMaterialQueryDrawer.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 onOpen = async () => { |
| | | const materialTypeEnum = await WmsMaterialQueryDrawer.getWmsEnumData({ |
| | | EnumName: 'MaterialTypeEnum', |
| | | }) |
| | | updateFormItemOptions('materialType', materialTypeEnum) |
| | | |
| | | const purchaseTypeEnum = await WmsMaterialQueryDrawer.getWmsEnumData({ |
| | | EnumName: 'PurchaseTypeEnum', |
| | | }) |
| | | updateFormItemOptions('purchaseType', purchaseTypeEnum) |
| | | |
| | | const yesOrNoTypeEnum = await WmsMaterialQueryDrawer.getWmsEnumData({ |
| | | EnumName: 'YesNoEnum', |
| | | }) |
| | | updateFormItemOptions('isMainBranch', yesOrNoTypeEnum) |
| | | |
| | | if (current.value) { |
| | | const res = await WmsMaterialQueryDrawer.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 { Base } from '@/libs/Base/Base' |
| | | const request = Base.request |
| | | |
| | | /** |
| | | * æ·»å |
| | | * @returns |
| | | */ |
| | | export const addWmsMaterial = (data: any) => { |
| | | return request.post('/api/v1/hIAWms/wmsMaterial', data) |
| | | } |
| | | |
| | | /** |
| | | * è·å详æ
|
| | | * @returns |
| | | */ |
| | | export const getWmsMaterial = (id: string) => { |
| | | return request.get(`/api/v1/hIAWms/wmsMaterial/${id}`) |
| | | } |
| | | |
| | | /** |
| | | * æ´æ° |
| | | * @returns |
| | | */ |
| | | export const updateWmsMaterial = (id: string, data: Record<string, any>) => { |
| | | return request.put(`/api/v1/hIAWms/wmsMaterial/${id}`, data) |
| | | } |
| | | |
| | | /** |
| | | * è·åæä¸¾ |
| | | * @returns |
| | | */ |
| | | export const getWmsEnumData = (data: any) => { |
| | | return request.post('/api/v1/hIAWms/WmsEnum', data) |
| | | } |
| | | |
| | | /** |
| | | * è·åç©æåºç¡å表 |
| | | * @returns |
| | | */ |
| | | export const getWmsDataList = (data: any) => { |
| | | return request.post('/api/v1/hIAWms/wmsmaterial/page', data) |
| | | } |
| | | |
| | | /** |
| | | * è·åä»åºå表 |
| | | * @returns |
| | | */ |
| | | export const getStoreDataList = () => { |
| | | return request.get('/api/v1/hIAWms/WmsEnum/StoreList') |
| | | } |
| | | |
| | | /** |
| | | * è·ååºåºå表 |
| | | * @returns |
| | | */ |
| | | export const getAreaAreaDataList = () => { |
| | | return request.get('/api/v1/hIAWms/WmsEnum/AreaList') |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { Base } from '@/libs/Base/Base' |
| | | import { |
| | | addWmsMaterial, |
| | | getWmsMaterial, |
| | | updateWmsMaterial, |
| | | getWmsEnumData, |
| | | } from './Service/WmsMaterialQueryDrawer' |
| | | import { useGlobalState } from '@/libs/Store/Store' |
| | | |
| | | export class WmsMaterialQueryDrawer extends Base<{ [key: string]: any }> { |
| | | constructor() { |
| | | super({ |
| | | data: [], |
| | | wmsMaterial: {}, |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ·»å |
| | | * @param data |
| | | */ |
| | | async addWmsMaterial(data: Record<string, any>) { |
| | | return addWmsMaterial(data) |
| | | } |
| | | /** |
| | | * æ´æ° |
| | | * @param data |
| | | */ |
| | | async updateWmsMaterial(id: string, data: Record<string, any>) { |
| | | return updateWmsMaterial(id, data) |
| | | } |
| | | |
| | | /** |
| | | * è·å详æ
|
| | | */ |
| | | async getWmsMaterialDetail(current: any, id?: string) { |
| | | return getWmsMaterial(id || current?.id) |
| | | } |
| | | |
| | | // è·åæä¸¾å¼ |
| | | async getWmsEnumData(data: Record<string, any>) { |
| | | return getWmsEnumData(data) |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | .drawer { |
| | | width: 800px; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * ç©æåºç¡ä¿¡æ¯æ¥è¯¢å¼¹åºæ¡ |
| | | */ |
| | | import { SetupContext, defineComponent } from 'vue' |
| | | import BaseDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer' |
| | | import styles from './WmsMaterialQueryDrawer.module.scss' |
| | | import { useWmsMaterialQueryDrawer } from '../../../../Controllers/WmsMaterialQueryDrawer.tsx' |
| | | import DyForm from '@/components/DyForm/DyForm' |
| | | |
| | | // @ts-ignore |
| | | export default defineComponent<{ |
| | | [key: string]: any |
| | | }>({ |
| | | name: 'å¼¹çª', |
| | | props: { |
| | | modelValue: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: '', |
| | | }, |
| | | row: { |
| | | type: Object, |
| | | }, |
| | | sort: { |
| | | type: Number, |
| | | default: 0, |
| | | }, |
| | | }, |
| | | emits: ['update:modelValue', 'close', 'submit', 'confirm'], |
| | | setup(props: Record<string, any>, ctx: SetupContext) { |
| | | const { |
| | | onClose, |
| | | onConfirm, |
| | | onOpen, |
| | | formRef, |
| | | visible, |
| | | formItems, |
| | | formData, |
| | | } = useWmsMaterialQueryDrawer(props, ctx) |
| | | return () => ( |
| | | <BaseDrawer |
| | | class={styles.drawer} |
| | | size="800px" |
| | | title={props.title || 'é«çº§æ¥è¯¢'} |
| | | v-model={visible.value} |
| | | close-on-click-modal={true} |
| | | onConfirm={onConfirm} |
| | | onOpen={onOpen} |
| | | before-close={onClose} |
| | | onClose={onClose} |
| | | > |
| | | <DyForm |
| | | ref={formRef} |
| | | formData={formData.value} |
| | | labelWidth="106px" |
| | | formItemProps={formItems} |
| | | ></DyForm> |
| | | </BaseDrawer> |
| | | ) |
| | | }, |
| | | }) |
| | |
| | | import { useWmsMaterial } from '../../../Controllers/WmsMaterial' |
| | | import IconButton from '@/components/IconButton/IconButton' |
| | | import WmsMaterialDrawer from '../Dialog/WmsMaterialDrawer/WmsMaterialDrawer' |
| | | import WmsMaterialQueryDrawer from '../Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer' |
| | | import Search from '@/components/Search/Search' |
| | | import { columns } from './Config' |
| | | import TdButton from '@/components/TdButton/TdButton' |
| | |
| | | dataSource, |
| | | contextMenu, |
| | | dialogConfig, |
| | | dialogConfigForQuery, |
| | | tableRef, |
| | | current, |
| | | search, |
| | |
| | | onConfirmWmsMaterial, |
| | | onCheck, |
| | | onAddWmsMaterial, |
| | | onAdvancedQuery, |
| | | onExport, |
| | | openDetail, |
| | | onSuccess, |
| | |
| | | sort={sort.value} |
| | | onConfirm={onConfirmWmsMaterial} |
| | | /> |
| | | {/* é«çº§æ¥è¯¢ */} |
| | | <WmsMaterialQueryDrawer |
| | | v-model={dialogConfigForQuery.visible} |
| | | title={dialogConfigForQuery.title} |
| | | row={current.value} |
| | | sort={sort.value} |
| | | onConfirm={onConfirmWmsMaterial} |
| | | /> |
| | | |
| | | {/* æ°å¢çæ¥è¯¢è¡¨å */} |
| | | <ElForm |
| | |
| | | æ·»å |
| | | </IconButton> |
| | | <el-divider direction="vertical" /> |
| | | <IconButton |
| | | v-permission="wmsMaterial-add" |
| | | icon="add-p" |
| | | onClick={onAdvancedQuery} |
| | | type="primary" |
| | | > |
| | | é«çº§æ¥è¯¢ |
| | | </IconButton> |
| | | <el-divider direction="vertical" /> |
| | | <el-upload |
| | | v-permission="wmsMaterial-import" |
| | | name="file" |