| src/views/basicData/product/ProductSelectDialog.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/procurementLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/salesManagement/salesLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/basicData/product/ProductSelectDialog.vue
@@ -2,11 +2,11 @@ <el-dialog v-model="visible" title="选择产品" width="900px" destroy-on-close :close-on-click-modal="false"> <el-form :inline="true" :model="query" class="mb-2"> <el-form-item label="产品名称"> <el-input v-model="query.productName" placeholder="输入产品名称" clearable @keyup.enter="onSearch" /> <el-input v-model="query.productName" placeholder="输入产品名称" clearable @keyup.enter="onSearch" style="width: 200px" /> </el-form-item> <el-form-item label="产品型号"> <el-input v-model="query.model" placeholder="输入产品型号" clearable @keyup.enter="onSearch" /> <el-input v-model="query.model" placeholder="输入产品型号" clearable @keyup.enter="onSearch" style="width: 200px" /> </el-form-item> <el-form-item> @@ -20,9 +20,10 @@ @selection-change="handleSelectionChange" @select="handleSelect"> <el-table-column type="selection" width="55" /> <el-table-column type="index" label="序号" width="60" /> <el-table-column prop="productName" label="产品名称" min-width="160" /> <el-table-column prop="model" label="产品型号" min-width="200" /> <el-table-column prop="unit" label="单位" min-width="160" /> <el-table-column prop="topProductName" label="产品大类" min-width="120" /> <el-table-column prop="productName" label="产品名称" min-width="140" /> <el-table-column prop="model" label="产品型号" min-width="180" /> <el-table-column prop="unit" label="单位" min-width="100" /> </el-table> <div class="mt-3 flex justify-end"> src/views/procurementManagement/procurementLedger/index.vue
@@ -277,20 +277,22 @@ @cancel="closeProductDia"> <el-form :model="productForm" label-width="140px" label-position="top" :rules="productRules" ref="productFormRef"> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="产品大类:" prop="productId"> <el-tree-select v-model="productForm.productId" placeholder="请选择" clearable filterable check-strictly @change="getModels" :data="productOptions" :render-after-expand="false" style="width: 100%" /> <el-col :span="12"> <el-form-item label="产品大类:" prop="productCategory"> <el-input v-model="productForm.productCategory" placeholder="点击选择" readonly @click="showProductSelectDialog = true" style="cursor:pointer" /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="24"> <el-col :span="12"> <el-form-item label="规格型号:" prop="productModelId"> <el-select v-model="productForm.productModelId" placeholder="请选择" filterable clearable @change="getProductModel"> <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" /> </el-select> <el-input v-model="productForm.specificationModel" placeholder="点击选择" readonly @click="showProductSelectDialog = true" style="cursor:pointer" /> </el-form-item> </el-col> </el-row> @@ -372,6 +374,9 @@ </el-row>--> </el-form> </FormDialog> <ProductSelectDialog v-model="showProductSelectDialog" @confirm="handleProductSelect" single /> <FileList v-if="fileListDialogVisible" v-model:visible="fileListDialogVisible" record-type="purchase_ledger" :record-id="recordId" /> <Detail ref="detailRef" /> @@ -445,6 +450,7 @@ const fileList = ref([]); import useUserStore from "@/store/modules/user"; import { modelList, productTreeList } from "@/api/basicData/product.js"; import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue"; import dayjs from "dayjs"; import FileUpload from "@/components/AttachmentUpload/file/index.vue"; import { tableAmountFormatter, formatDecimal, buildAmountSummaryFormat } from '@/utils/numberFormat'; @@ -648,6 +654,7 @@ // 产品表单弹框数据 const productFormVisible = ref(false); const showProductSelectDialog = ref(false); const productOperationType = ref(""); const productOperationIndex = ref(""); const currentId = ref(""); @@ -668,8 +675,8 @@ isChecked: false, }, productRules: { productId: [{ required: true, message: "请选择", trigger: "change" }], productModelId: [{ required: true, message: "请选择", trigger: "change" }], productCategory: [{ required: true, message: "请选择产品大类", trigger: "change" }], productModelId: [{ required: true, message: "请选择规格型号", trigger: "change" }], unit: [{ required: true, message: "请输入", trigger: "blur" }], quantity: [{ required: true, message: "请输入", trigger: "blur" }], taxInclusiveUnitPrice: [ @@ -1257,6 +1264,19 @@ await nextTick(); } }; // ProductSelectDialog 选中回调 const handleProductSelect = (products) => { if (!products || !products.length) return; const p = products[0]; productForm.value.productId = p.productId; productForm.value.productCategory = p.productName || ''; productForm.value.productModelId = p.id; productForm.value.specificationModel = p.model || ''; productForm.value.unit = p.unit || ''; showProductSelectDialog.value = false; }; const getProductOptions = () => { return productTreeList().then(res => { productOptions.value = convertIdToValue(res); src/views/salesManagement/salesLedger/index.vue
@@ -605,35 +605,22 @@ :rules="productRules" ref="productFormRef"> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="产品大类:" prop="productCategory"> <el-tree-select v-model="productForm.productCategory" placeholder="请选择" clearable filterable check-strictly @change="getModels" :data="productOptions" :render-after-expand="false" style="width: 100%" /> <el-col :span="12"> <el-form-item label="产品大类:" prop="productCategory"> <el-input v-model="productForm.productCategory" placeholder="点击选择" readonly @click="showProductSelectDialog = true" style="cursor:pointer" /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="规格型号:" prop="productModelId"> <el-select v-model="productForm.productModelId" placeholder="请选择" clearable @change="getProductModel" filterable> <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" /> </el-select> <el-col :span="12"> <el-form-item label="规格型号:" prop="productModelId"> <el-input v-model="productForm.specificationModel" placeholder="点击选择" readonly @click="showProductSelectDialog = true" style="cursor:pointer" /> </el-form-item> </el-col> </el-row> @@ -758,6 +745,9 @@ </el-row> </el-form> </FormDialog> <ProductSelectDialog v-model="showProductSelectDialog" @confirm="handleProductSelect" single /> <!-- 导入弹窗 --> <FormDialog v-model="importUpload.open" :title="importUpload.title" @@ -1085,6 +1075,7 @@ buildAmountSummaryFormat, } from "@/utils/numberFormat"; import ImageUpload from "@/components/AttachmentUpload/image/index.vue"; import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue"; import { getCurrentDate } from "@/utils/index.js"; import { listCustomer } from "@/api/basicData/customer.js"; @@ -1113,6 +1104,7 @@ const total = ref(0); const fileList = ref([]); const deliveryFileList = ref([]); const showProductSelectDialog = ref(false); // 用户信息表单弹框数据 const operationType = ref(""); @@ -1155,7 +1147,9 @@ const currentId = ref(""); const productFormData = reactive({ productForm: { productId: "", productCategory: "", productModelId: "", specificationModel: "", unit: "", quantity: "", @@ -1167,11 +1161,8 @@ isProduction: false, }, productRules: { productCategory: [{ required: true, message: "请选择", trigger: "change" }], productModelId: [{ required: true, message: "请选择", trigger: "change" }], specificationModel: [ { required: true, message: "请选择", trigger: "change" }, ], productCategory: [{ required: true, message: "请选择产品大类", trigger: "change" }], productModelId: [{ required: true, message: "请选择规格型号", trigger: "change" }], unit: [{ required: true, message: "请输入", trigger: "blur" }], quantity: [{ required: true, message: "请输入", trigger: "blur" }], taxInclusiveUnitPrice: [ @@ -1503,6 +1494,17 @@ } return formattedNumber(row, column, cellValue); }; // ProductSelectDialog 选中回调 const handleProductSelect = (products) => { if (!products || !products.length) return; const p = products[0]; productForm.value.productId = p.productId; productForm.value.productCategory = p.productName || ''; productForm.value.productModelId = p.id; productForm.value.specificationModel = p.model || ''; productForm.value.unit = p.unit || ''; showProductSelectDialog.value = false; }; // 获取tree子数据 const getModels = value => { productForm.value.productCategory = findNodeById(productOptions.value, value);