重构KLPService组件目录结构,将原有组件迁移至formItems子目录并新增多个表单选择组件。主要变更包括: 1. 移除CategorySelect组件及相关引用 2. 新增CraftSelect、AmountSelect、VendorSelect等表单组件 3. 优化WarehouseSelect组件支持禁用状态 4. 重构ProductSelect和RawMaterialSelect为卡片式选择器 5. 新增统一导出机制支持按需导入 同时更新相关视图文件以适配新的组件结构,改进代码可维护性和复用性。
75 lines
2.2 KiB
Vue
75 lines
2.2 KiB
Vue
<template>
|
|
<span>
|
|
<el-form-item label="物料类型" v-show="!hideType">
|
|
<el-select v-model="_itemType" placeholder="请选择物料类型" clearable>
|
|
<el-option v-for="dict in dict.type.stock_item_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label="产品类型">
|
|
<ProductSelect v-if="_itemType === 'product'" v-model="_itemId" placeholder="请选择产品" @change="onItemChange" :multiple="multiple" />
|
|
<SemiSelect v-else-if="_itemType === 'semi'" v-model="_itemId" placeholder="请选择半成品" @change="onItemChange" :multiple="multiple" />
|
|
<RawMaterialSelect v-else-if="_itemType === 'raw_material'" v-model="_itemId" placeholder="请选择原材料" @change="onItemChange" :multiple="multiple" />
|
|
<el-input v-else disabled v-model="_itemId" placeholder="请先选择物料类型" :disabled="true" style="width: 100%;" />
|
|
</el-form-item>
|
|
</span>
|
|
</template>
|
|
|
|
<script>
|
|
import ProductSelect from '@/components/KLPService/ProductSelect/index.vue';
|
|
import SemiSelect from '@/components/KLPService/SemiSelect/index.vue';
|
|
import RawMaterialSelect from '@/components/KLPService/RawMaterialSelect/index.vue';
|
|
|
|
export default {
|
|
components: {
|
|
ProductSelect,
|
|
SemiSelect,
|
|
RawMaterialSelect
|
|
},
|
|
dicts: ['stock_item_type'],
|
|
props: {
|
|
itemType: {
|
|
type: String,
|
|
require: true
|
|
},
|
|
itemId: {
|
|
type: [String, Array],
|
|
require: true
|
|
},
|
|
hideType: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
multiple: {
|
|
default: false,
|
|
type: Boolean
|
|
},
|
|
},
|
|
// 计算属性劫持双向绑定的数据
|
|
computed: {
|
|
_itemType: {
|
|
get() {
|
|
return this.itemType;
|
|
},
|
|
set(val) {
|
|
this.$emit('update:itemType', val);
|
|
}
|
|
},
|
|
_itemId: {
|
|
get() {
|
|
if (!this.itemId) {
|
|
return this.itemId;
|
|
}
|
|
return this.itemId.toString();
|
|
},
|
|
set(val) {
|
|
this.$emit('update:itemId', val);
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
onItemChange(val) {
|
|
this.$emit('change', this._itemType, val);
|
|
}
|
|
}
|
|
}
|
|
</script> |