Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

guoyujia 9 mesiacov pred
rodič
commit
bb5af70055

+ 45 - 0
src/api/business/company.js

@@ -0,0 +1,45 @@
+import request from '@/utils/request'
+
+const baseUrl = import.meta.env.VITE_APP_BASE_API
+// 查询客户名称列表
+export function listCompany(query) {
+  return request({
+    url: baseUrl + '/business/company/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询客户名称详细
+export function getCompany(id) {
+  return request({
+    url: baseUrl + '/business/company/' + id,
+    method: 'get'
+  })
+}
+
+// 新增客户名称
+export function addCompany(data) {
+  return request({
+    url: baseUrl + '/business/company',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改客户名称
+export function updateCompany(data) {
+  return request({
+    url: baseUrl + '/business/company',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除客户名称
+export function delCompany(id) {
+  return request({
+    url: baseUrl + '/business/company/' + id,
+    method: 'delete'
+  })
+}

+ 54 - 0
src/api/business/companyProductPackage.js

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+const baseUrl = import.meta.env.VITE_APP_BASE_API
+const p2Url = import.meta.env.VITE_APP_P2_API
+
+// 查询产品包装客户关联列表
+export function listCompanyProductPackage(query) {
+  return request({
+    url: baseUrl + '/business/companyProductPackage/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询产品包装客户关联详细
+export function getCompanyProductPackage(id) {
+  return request({
+    url: baseUrl + '/business/companyProductPackage/' + id,
+    method: 'get'
+  })
+}
+
+// 新增产品包装客户关联
+export function addCompanyProductPackage(data) {
+  return request({
+    url: baseUrl + '/business/companyProductPackage',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改产品包装客户关联
+export function updateCompanyProductPackage(data) {
+  return request({
+    url: baseUrl + '/business/companyProductPackage',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除产品包装客户关联
+export function delCompanyProductPackage(id) {
+  return request({
+    url: baseUrl + '/business/companyProductPackage/' + id,
+    method: 'delete'
+  })
+}
+
+export function getP2CompanyProductPackage() {
+  return request({
+    url: p2Url + '/business/inc10101/getP2CompanyProductPackage',
+    method: 'get'
+  })
+}

+ 115 - 0
src/views/business/companyProductPackage/ChoiceAccessoriesDialog.vue

@@ -0,0 +1,115 @@
+<template>
+  <el-dialog title="添加客户" v-model="visible" width="800px" height="400px" @close="close" append-to-body draggable>
+    <el-form ref="dialogForm" class="master-container" :model="queryParams" :inline="true" style="align-items: center">
+      <div style="display: flex">
+        <el-form-item label="辅料编号:" prop="accessoriesCode">
+          <el-input v-model.trim="queryParams.accessoriesCode" type="text" @keydown.enter.prevent style="width: 120px"
+            placeholder="请输入关键字" :clearable="true" @keyup.enter="handleSearch" />
+        </el-form-item>
+        <el-form-item label="物料描述:" prop="description">
+          <el-input v-model.trim="queryParams.description" type="text" @keydown.enter.prevent style="width: 120px"
+            placeholder="请输入关键字" :clearable="true" @keyup.enter="handleSearch" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="info" icon="Search" @click="handleSearch">搜索</el-button>
+        </el-form-item>
+      </div>
+    </el-form>
+
+    <el-table ref="dialogTable" :data="dataList" size="small" v-loading="loading" border height="370px">
+      <el-table-column type="index" label="行号" width="50" align="center" />
+      <el-table-column label="辅料编号" align="center" prop="accessoriesCode" width="100" />
+      <el-table-column label="账号" align="center" prop="itype" width="80" />
+      <el-table-column label="主管部门" align="center" prop="cusven" width="80" />
+      <el-table-column label="物料描述" align="center" prop="description" />
+      <el-table-column label="操作" width="64" align="center">
+        <template #default="scope">
+          <el-button type="success" icon="finished" circle @click="handleSingleSelected(scope.row)" />
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize" @pagination="getList" />
+  </el-dialog>
+</template>
+<script setup>
+import { listAccessories } from "@/api/business/accessories";
+const { proxy } = getCurrentInstance();
+/** 字典数组区 */
+const { process_status } = proxy.useDict("process_status");
+/** 工序变量 */
+const total = ref(0);
+const props = defineProps({
+  singleSelected: {
+    type: Function,
+    default: null,
+  },
+});
+
+const { singleSelected } = toRefs(props);
+const dataList = ref([]);
+const visible = ref(false);
+const loading = ref(false);
+const queryParams = ref({
+  name: "",
+  pageNum: 1,
+  pageSize: 10,
+});
+const selections = ref([]);
+
+/**
+ * 对话框打开 事件
+ */
+function open() {
+  visible.value = true;
+  getList();
+}
+
+/**
+ * 对话框关闭 事件
+ */
+function close() {
+  proxy.$refs.dialogForm.resetFields();
+  proxy.$refs.dialogTable.clearSelection();
+  queryParams.value.pageNum = 1;
+  visible.value = false;
+}
+
+/**
+ * 加载数据
+ */
+function getList() {
+  loading.value = true;
+  queryParams.value.supplierId = props.supplierId;
+  listAccessories(queryParams.value).then((res) => {
+    dataList.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+  });
+}
+
+/**
+ * 列表checkbox列选择 事件
+ */
+function handleSelectionChange(selection) {
+  selections.value = selection;
+}
+
+/**  搜索 事件 */
+function handleSearch() {
+  getList();
+}
+
+/** 单选事件 */
+function handleSingleSelected(row) {
+  if (singleSelected.value) {
+    singleSelected.value(row);
+  }
+  close();
+}
+
+defineExpose({
+  open,
+});
+</script>

+ 115 - 0
src/views/business/companyProductPackage/ChoiceCompanyDialog.vue

@@ -0,0 +1,115 @@
+<template>
+  <el-dialog title="添加客户" v-model="visible" width="800px" height="400px" @close="close" append-to-body draggable>
+    <el-form ref="dialogForm" class="master-container" :model="queryParams" :inline="true" style="align-items: center">
+      <div style="display: flex">
+        <el-form-item label="客户名称:" prop="companyName">
+          <el-input v-model.trim="queryParams.companyName" type="text" @keydown.enter.prevent style="width: 120px"
+            placeholder="请输入关键字" :clearable="true" @keyup.enter="handleSearch" />
+        </el-form-item>
+        <el-form-item label="助记码:" prop="mnemonicCode">
+          <el-input v-model.trim="queryParams.mnemonicCode" type="text" @keydown.enter.prevent style="width: 120px"
+            placeholder="请输入关键字" :clearable="true" @keyup.enter="handleSearch" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="info" icon="Search" @click="handleSearch">搜索</el-button>
+        </el-form-item>
+      </div>
+    </el-form>
+
+    <el-table ref="dialogTable" :data="dataList" size="small" v-loading="loading" border height="370px">
+      <el-table-column type="index" label="行号" width="50" align="center" />
+      <el-table-column label="公司编码" align="center" prop="companyCode" width="80" />
+      <el-table-column label="公司名称" align="center" prop="companyName" />
+      <el-table-column label="公司别名" align="center" prop="companyAlias" />
+      <el-table-column label="助记码" align="center" prop="mnemonicCode" />
+      <el-table-column label="操作" width="64" align="center">
+        <template #default="scope">
+          <el-button type="success" icon="finished" circle @click="handleSingleSelected(scope.row)" />
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize" @pagination="getList" />
+  </el-dialog>
+</template>
+<script setup>
+import { listCompany } from "@/api/business/company";
+const { proxy } = getCurrentInstance();
+/** 字典数组区 */
+const { process_status } = proxy.useDict("process_status");
+/** 工序变量 */
+const total = ref(0);
+const props = defineProps({
+  singleSelected: {
+    type: Function,
+    default: null,
+  },
+});
+
+const { singleSelected } = toRefs(props);
+const dataList = ref([]);
+const visible = ref(false);
+const loading = ref(false);
+const queryParams = ref({
+  name: "",
+  pageNum: 1,
+  pageSize: 10,
+});
+const selections = ref([]);
+
+/**
+ * 对话框打开 事件
+ */
+function open() {
+  visible.value = true;
+  getList();
+}
+
+/**
+ * 对话框关闭 事件
+ */
+function close() {
+  proxy.$refs.dialogForm.resetFields();
+  proxy.$refs.dialogTable.clearSelection();
+  queryParams.value.pageNum = 1;
+  visible.value = false;
+}
+
+/**
+ * 加载数据
+ */
+function getList() {
+  loading.value = true;
+  queryParams.value.supplierId = props.supplierId;
+  listCompany(queryParams.value).then((res) => {
+    dataList.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+  });
+}
+
+/**
+ * 列表checkbox列选择 事件
+ */
+function handleSelectionChange(selection) {
+  selections.value = selection;
+}
+
+/**  搜索 事件 */
+function handleSearch() {
+  getList();
+}
+
+/** 单选事件 */
+function handleSingleSelected(row) {
+  if (singleSelected.value) {
+    singleSelected.value(row);
+  }
+  close();
+}
+
+defineExpose({
+  open,
+});
+</script>

+ 116 - 0
src/views/business/companyProductPackage/ChoiceProductDialog.vue

@@ -0,0 +1,116 @@
+<template>
+  <el-dialog title="选择产品" v-model="visible" width="800px" height="400px" @close="close" append-to-body draggable>
+    <el-form ref="dialogForm" class="master-container" :model="queryParams" :inline="true" style="align-items: center">
+      <div style="display: flex">
+        <el-form-item label="料号:" prop="productCode">
+          <el-input v-model.trim="queryParams.productCode" type="text" @keydown.enter.prevent style="width: 120px"
+            placeholder="请输入关键字" :clearable="true" @keyup.enter="handleSearch" />
+        </el-form-item>
+        <el-form-item label="产品描述:" prop="description">
+          <el-input v-model.trim="queryParams.description" type="text" @keydown.enter.prevent style="width: 120px"
+            placeholder="请输入关键字" :clearable="true" @keyup.enter="handleSearch" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="info" icon="Search" @click="handleSearch">搜索</el-button>
+        </el-form-item>
+      </div>
+    </el-form>
+
+    <el-table ref="dialogTable" :data="dataList" size="small" v-loading="loading" border height="370px">
+      <el-table-column type="index" label="行号" width="50" align="center" />
+      <el-table-column label="料号" align="center" prop="productCode" />
+      <el-table-column label="规格" align="center" prop="specification" />
+      <el-table-column label="图号" align="center" width="110" prop="drawingNumber" />
+      <el-table-column label="客户集团简称" align="center" width="120px" prop="companyAlias" />
+      <el-table-column label="产品描述" align="center" width="200px" prop="description" />
+      <el-table-column label="操作" width="64" align="center">
+        <template #default="scope">
+          <el-button type="success" icon="finished" circle @click="handleSingleSelected(scope.row)" />
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize" @pagination="getList" />
+  </el-dialog>
+</template>
+<script setup>
+import { listProduct } from "@/api/business/product";
+const { proxy } = getCurrentInstance();
+/** 字典数组区 */
+const { process_status } = proxy.useDict("process_status");
+/** 工序变量 */
+const total = ref(0);
+const props = defineProps({
+  singleSelected: {
+    type: Function,
+    default: null,
+  },
+});
+
+const { singleSelected } = toRefs(props);
+const dataList = ref([]);
+const visible = ref(false);
+const loading = ref(false);
+const queryParams = ref({
+  name: "",
+  pageNum: 1,
+  pageSize: 10,
+});
+const selections = ref([]);
+
+/**
+ * 对话框打开 事件
+ */
+function open() {
+  visible.value = true;
+  getList();
+}
+
+/**
+ * 对话框关闭 事件
+ */
+function close() {
+  proxy.$refs.dialogForm.resetFields();
+  proxy.$refs.dialogTable.clearSelection();
+  queryParams.value.pageNum = 1;
+  visible.value = false;
+}
+
+/**
+ * 加载数据
+ */
+function getList() {
+  loading.value = true;
+  queryParams.value.supplierId = props.supplierId;
+  listProduct(queryParams.value).then((res) => {
+    dataList.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+  });
+}
+
+/**
+ * 列表checkbox列选择 事件
+ */
+function handleSelectionChange(selection) {
+  selections.value = selection;
+}
+
+/**  搜索 事件 */
+function handleSearch() {
+  getList();
+}
+
+/** 单选事件 */
+function handleSingleSelected(row) {
+  if (singleSelected.value) {
+    singleSelected.value(row);
+  }
+  close();
+}
+
+defineExpose({
+  open,
+});
+</script>

+ 168 - 95
src/views/business/companyProductPackage/index.vue

@@ -4,17 +4,19 @@
     <section class="list-part-container" style="flex: 2">
       <!-- 搜索区域 -->
       <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true">
-        <el-form-item class="section-title" label="辅料管理" />
+        <el-form-item class="section-title" label="客户产品包装关联管理" />
 
         <!-- <el-form-item label="辅料名称:" prop="code">
           <el-input v-model="queryParams.name" placeholder="请输入辅料名称" clearable @keyup.enter="handleQuery"
             style="width: 160px;" />
         </el-form-item> -->
-        <el-form-item label="辅料编号:" prop="accessoriesCode">
-          <el-input v-model="queryParams.accessoriesCode" placeholder="请输入辅料编号" clearable @keyup.enter="handleQuery" />
+        <el-form-item label="辅料编号:" prop="packageCode">
+          <el-input v-model="queryParams.packageCode" placeholder="请输入辅料编号" clearable @keyup.enter="handleQuery"
+            style="width:180px" />
         </el-form-item>
-        <el-form-item label="物料描述:" prop="description">
-          <el-input v-model="queryParams.description" placeholder="请输入物料描述" clearable @keyup.enter="handleQuery" />
+        <el-form-item label="产品描述:" prop="productDescription">
+          <el-input v-model="queryParams.productDescription" placeholder="请输入产品描述" clearable @keyup.enter="handleQuery"
+            style="width:180px" />
         </el-form-item>
         <el-form-item>
           <el-button type="info" icon="Search" @click="handleQuery">搜索</el-button>
@@ -34,156 +36,185 @@
             @selection-change="handleSelectionChange">
             <el-table-column type="selection" width="55" align="center" />
             <el-table-column type="index" label="行号" width="50" align="center" />
-            <el-table-column label="辅料编号" align="center" prop="accessoriesCode">
+            <el-table-column label="产品编码" align="center" prop="productCode" width="140">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="辅料编号" v-model="scope.row.accessoriesCode"
-                  style="width: 100%;" />
-                <div v-else>{{ scope.row.accessoriesCode }}</div>
+                <el-input v-if="scope.row.editStatus" placeholder="产品编码" v-model="scope.row.productCode"
+                  style="width: 100%;" readonly>
+                  <template #append>
+                    <el-button icon="Search" @click="handleSelectProduct(scope.row)" />
+                  </template>
+                </el-input>
+                <div v-else>{{ scope.row.productCode }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="账号" align="center" prop="itype">
+            <el-table-column label="客户编码" align="center" prop="companyCode" width="140">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="账号" v-model="scope.row.itype" style="width: 100%;" />
-                <div v-else>{{ scope.row.itype }}</div>
+                <el-input v-if="scope.row.editStatus" placeholder="客户编码" v-model="scope.row.companyCode"
+                  style="width: 100%;" readonly>
+                  <template #append>
+                    <el-button icon="Search" @click="handleSelectCompany(scope.row)" />
+                  </template>
+                </el-input>
+                <div v-else>{{ scope.row.companyCode }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="主管部门" align="center" prop="cusven">
+            <el-table-column label="包装形式码" align="center" prop="packageTypeCode">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="主管部门" v-model="scope.row.cusven"
+                <el-input v-if="scope.row.editStatus" placeholder="包装形式码" v-model="scope.row.packageTypeCode"
                   style="width: 100%;" />
-                <div v-else>{{ scope.row.cusven }}</div>
+                <div v-else>{{ scope.row.packageTypeCode }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="物料描述" align="center" prop="description" width="200">
+            <el-table-column label="产品描述" align="center" prop="productDescription" width="240">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="物料描述" v-model="scope.row.description"
-                  style="width: 100%;" />
-                <div v-else>{{ scope.row.description }}</div>
+                <el-input v-if="scope.row.editStatus" placeholder="产品描述" v-model="scope.row.productDescription"
+                  style="width: 100%;" readonly>
+                </el-input>
+                <div v-else>{{ scope.row.productDescription }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="采购单位" align="center" prop="unit">
+            <el-table-column label="客户助记码" align="center" prop="mnemonicCode">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="采购单位" v-model="scope.row.unit"
-                  style="width: 100%;" />
-                <div v-else>{{ scope.row.unit }}</div>
+                <el-input v-if="scope.row.editStatus" placeholder="客户助记码" v-model="scope.row.mnemonicCode"
+                  style="width: 100%;" readonly />
+                <div v-else>{{ scope.row.mnemonicCode }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="客户简称" align="center" prop="companyAlias" width="120">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="客户简称" v-model="scope.row.companyAlias"
+                  style="width: 100%;" readonly />
+                <div v-else>{{ scope.row.companyAlias }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="包装箱辅料编码" align="center" prop="packageCode" width="140">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="包装箱辅料编码" v-model="scope.row.packageCode"
+                  style="width: 100%;" readonly>
+                  <template #append>
+                    <el-button icon="Search" @click="handleSelectAccessories(scope.row)" />
+                  </template>
+                </el-input>
+                <div v-else>{{ scope.row.packageCode }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="换算单位" align="center" prop="pouom">
+            <el-table-column label="包装箱号" align="center" prop="packageNo" width="140">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="换算单位" v-model="scope.row.pouom"
+                <el-input v-if="scope.row.editStatus" placeholder="包装箱号" v-model="scope.row.packageNo"
                   style="width: 100%;" />
-                <div v-else>{{ scope.row.pouom }}</div>
+                <div v-else>{{ scope.row.packageNo }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="环保大类码" align="center" prop="htype">
+            <el-table-column label="包装尺寸" align="center" prop="packageStandard" width="140">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="环保大类码" v-model="scope.row.htype"
+                <el-input v-if="scope.row.editStatus" placeholder="包装尺寸" v-model="scope.row.packageStandard"
                   style="width: 100%;" />
-                <div v-else>{{ scope.row.htype }}</div>
+                <div v-else>{{ scope.row.packageStandard }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="环保大类简称" align="center" prop="htyna" width="120">
+            <el-table-column label="包装长度" align="center" prop="packageLength">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="环保大类简称" v-model="scope.row.htyna"
+                <el-input v-if="scope.row.editStatus" placeholder="包装长度" v-model="scope.row.packageLength"
                   style="width: 100%;" />
-                <div v-else>{{ scope.row.htyna }}</div>
+                <div v-else>{{ scope.row.packageLength }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="月用量" align="center" prop="monthUseAmount">
+            <el-table-column label="包装宽度" align="center" prop="packageWidth">
               <template #default="scope">
-                <el-input-number v-if="scope.row.editStatus" placeholder="月用量" v-model="scope.row.monthUseAmount"
-                  style="width: 100%;" :step="0.01" step-strictly :controls="false" />
-                <div v-else>{{ scope.row.monthUseAmount }}</div>
+                <el-input v-if="scope.row.editStatus" placeholder="包装宽度" v-model="scope.row.packageWidth"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.packageWidth }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="类别" align="center" prop="ltype">
+            <el-table-column label="包装箱高度" align="center" prop="packageHeight">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="类别" v-model="scope.row.ltype" style="width: 100%;" />
-                <div v-else>{{ scope.row.ltype }}</div>
+                <el-input v-if="scope.row.editStatus" placeholder="包装箱高度" v-model="scope.row.packageHeight"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.packageHeight }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="交货天数" align="center" prop="deliveryDate">
+            <el-table-column label="单箱毛重" align="center" prop="singleGrossWeight">
               <template #default="scope">
-                <el-input-number v-if="scope.row.editStatus" placeholder="交货天数" v-model="scope.row.deliveryDate"
-                  style="width: 100%;" :step="1" step-strictly :controls="false" />
-                <div v-else>{{ scope.row.deliveryDate }}</div>
+                <el-input-number v-if="scope.row.editStatus" placeholder="单箱毛重" v-model="scope.row.singleGrossWeight"
+                  style="width: 100%;" :step="0.0001" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.singleGrossWeight }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="安全库存量" align="center" prop="safetyStock">
+            <el-table-column label="单箱支数" align="center" prop="singleNumber">
               <template #default="scope">
-                <el-input-number v-if="scope.row.editStatus" placeholder="安全库存量" v-model="scope.row.safetyStock"
-                  style="width: 100%;" :step="0.01" step-strictly :controls="false" />
-                <div v-else>{{ scope.row.safetyStock }}</div>
+                <el-input-number v-if="scope.row.editStatus" placeholder="单箱支数" v-model="scope.row.singleNumber"
+                  style="width: 100%;" :step="1" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.singleNumber }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="单价" align="center" prop="price">
+            <el-table-column label="每层箱数" align="center" prop="perNumber">
               <template #default="scope">
-                <el-input-number v-if="scope.row.editStatus" placeholder="单价" v-model="scope.row.price"
-                  style="width: 100%;" :step="0.00000001" step-strictly :controls="false" />
-                <div v-else>{{ scope.row.price }}</div>
+                <el-input-number v-if="scope.row.editStatus" placeholder="每层箱数" v-model="scope.row.perNumber"
+                  style="width: 100%;" :step="1" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.perNumber }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="状态" align="center" prop="status">
+            <el-table-column label="满托最小箱数" align="center" prop="minNumber">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="状态" v-model="scope.row.status"
-                  style="width: 100%;" />
-                <div v-else>{{ scope.row.status }}</div>
+                <el-input-number v-if="scope.row.editStatus" placeholder="满托最小箱数" v-model="scope.row.minNumber"
+                  style="width: 100%;" :step="1" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.minNumber }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="环保标志" align="center" prop="ecoMark">
+            <el-table-column label="满托最大箱数" align="center" prop="maxNumber">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="环保标志" v-model="scope.row.ecoMark"
-                  style="width: 100%;" />
-                <div v-else>{{ scope.row.ecoMark }}</div>
+                <el-input-number v-if="scope.row.editStatus" placeholder="满托最大箱数" v-model="scope.row.maxNumber"
+                  style="width: 100%;" :step="1" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.maxNumber }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="单位换算比例" align="center" prop="conversionRatio" width="120">
+            <el-table-column label="满托支数" align="center" prop="maxBranchNumber">
               <template #default="scope">
-                <el-input-number v-if="scope.row.editStatus" placeholder="单位换算比例" v-model="scope.row.conversionRatio"
-                  style="width: 100%;" :step="0.0001" step-strictly :controls="false" />
-                <div v-else>{{ scope.row.conversionRatio }}</div>
+                <el-input-number v-if="scope.row.editStatus" placeholder="满托支数" v-model="scope.row.maxBranchNumber"
+                  style="width: 100%;" :step="1" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.maxBranchNumber }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="包装箱尺寸" align="center" prop="packageStandard">
+            <el-table-column label="托盘规格" align="center" prop="palletStandard" width="140">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="包装箱尺寸" v-model="scope.row.packageStandard"
+                <el-input v-if="scope.row.editStatus" placeholder="托盘规格" v-model="scope.row.palletStandard"
                   style="width: 100%;" />
-                <div v-else>{{ scope.row.packageStandard }}</div>
+                <div v-else>{{ scope.row.palletStandard }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="美捷原系统物料编码" align="center" prop="ypart">
+            <el-table-column label="托盘类型" align="center" prop="palletType">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="美捷原系统物料编码" v-model="scope.row.ypart"
+                <el-input v-if="scope.row.editStatus" placeholder="托盘类型" v-model="scope.row.palletType"
                   style="width: 100%;" />
-                <div v-else>{{ scope.row.ypart }}</div>
+                <div v-else>{{ scope.row.palletType }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="当月加权平均单价" align="center" prop="monthAvgPrice">
+            <el-table-column label="放置区域" align="center" prop="areaType">
               <template #default="scope">
-                <el-input-number v-if="scope.row.editStatus" placeholder="当月加权平均单价" v-model="scope.row.monthAvgPrice"
-                  style="width: 100%;" :step="0.000001" step-strictly :controls="false" />
-                <div v-else>{{ scope.row.monthAvgPrice }}</div>
+                <el-input v-if="scope.row.editStatus" placeholder="放置区域" v-model="scope.row.areaType"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.areaType }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="费用类别" align="center" prop="ftype">
+            <el-table-column label="库存单位" align="center" prop="unit">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="费用类别" v-model="scope.row.ftype"
+                <el-input v-if="scope.row.editStatus" placeholder="库存单位" v-model="scope.row.unit"
                   style="width: 100%;" />
-                <div v-else>{{ scope.row.ftype }}</div>
+                <div v-else>{{ scope.row.unit }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="领用计费形式" align="center" prop="ktype">
+            <el-table-column label="传送状态" align="center" prop="deliveryStatus">
               <template #default="scope">
-                <el-input v-if="scope.row.editStatus" placeholder="领用计费形式" v-model="scope.row.ktype"
+                <el-input v-if="scope.row.editStatus" placeholder="传送状态" v-model="scope.row.deliveryStatus"
                   style="width: 100%;" />
-                <div v-else>{{ scope.row.ktype }}</div>
+                <div v-else>{{ scope.row.deliveryStatus }}</div>
               </template>
             </el-table-column>
-            <el-table-column label="标准寿命天数" align="center" prop="ktyts">
+            <el-table-column label="外箱高度" align="center" prop="outboxHeight">
               <template #default="scope">
-                <el-input-number v-if="scope.row.editStatus" placeholder="标准寿命天数" v-model="scope.row.ktyts"
+                <el-input-number v-if="scope.row.editStatus" placeholder="外箱高度" v-model="scope.row.outboxHeight"
                   style="width: 100%;" :step="1" step-strictly :controls="false" />
-                <div v-else>{{ scope.row.ktyts }}</div>
+                <div v-else>{{ scope.row.outboxHeight }}</div>
               </template>
             </el-table-column>
             <el-table-column label="备注" align="center" prop="remark">
@@ -211,12 +242,18 @@
       </div>
       <pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
         @pagination="getList" />
+      <choice-accessories-dialog ref="choiceAccessoriesDialogRef" :singleSelected="handleChoiceAccessories" />
+      <choice-company-dialog ref="choiceCompanyDialogRef" :singleSelected="handleChoiceCompany" />
+      <choice-product-dialog ref="choiceProductDialogRef" :singleSelected="handleChoiceProduct" />
     </section>
   </div>
 </template>
 
 <script setup name="Equipment">
-import { listAccessories, delAccessories, addAccessories, updateAccessories, getP2Accessories } from "@/api/business/accessories";
+import { listCompanyProductPackage, delCompanyProductPackage, addCompanyProductPackage, updateCompanyProductPackage, getP2CompanyProductPackage } from "@/api/business/companyProductPackage";
+import ChoiceCompanyDialog from "./ChoiceCompanyDialog.vue";
+import ChoiceProductDialog from "./ChoiceProductDialog.vue";
+import ChoiceAccessoriesDialog from "./ChoiceAccessoriesDialog.vue";
 const { proxy } = getCurrentInstance();
 const processList = ref([]);
 const loading = ref(true);
@@ -224,6 +261,10 @@ const ids = ref([])
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
+const choiceAccessoriesDialogRef = ref(null)
+const choiceCompanyDialogRef = ref(null)
+const choiceProductDialogRef = ref(null)
+const currentDetail = ref(null)
 /** 查询对象 */
 const queryParams = ref({
   pageNum: 1,
@@ -238,7 +279,7 @@ const queryParams = ref({
 /** 查询检查类别列表 */
 function getList() {
   loading.value = true;
-  listAccessories(queryParams.value).then(response => {
+  listCompanyProductPackage(queryParams.value).then(response => {
     processList.value = response.rows;
     total.value = response.total;
     loading.value = false;
@@ -269,7 +310,6 @@ function handleUpdate(row) {
   row.editStatus = true
 }
 
-
 /** 删除按钮操作 */
 function handleDelete(row, index) {
   const _ids = row.id || ids.value;
@@ -279,7 +319,7 @@ function handleDelete(row, index) {
     return
   }
   proxy.$modal.confirm('是否确认删除选中的数据项?').then(function () {
-    return delAccessories(_ids);
+    return delCompanyProductPackage(_ids);
   }).then(() => {
     getList();
     proxy.$modal.msgSuccess("删除成功!");
@@ -288,23 +328,23 @@ function handleDelete(row, index) {
 
 function handleSave(row) {
   // 保存判断
-  if (row.accessoriesCode == null || row.accessoriesCode == '') {
-    proxy.$modal.msgError("请输入辅料编码!")
+  if (row.companyId == null || row.companyAlias == '') {
+    proxy.$modal.msgError("请选择对应客户")
     return
   }
-  if (row.itype == null || row.itype == '') {
-    proxy.$modal.msgError("请输入账号")
+  if (row.productId == null || row.productDescription == '') {
+    proxy.$modal.msgError("请选择对应产品")
     return
   }
-  if (row.ltype == null || row.ltype == '') {
-    proxy.$modal.msgError("请输入辅料类别")
+  if (row.accessoriesId == null || row.packageCode == '') {
+    proxy.$modal.msgError("请输选择包装辅料")
     return
   }
   loading.value = true;
   if (row.id == null) {
-    addAccessories(row).then(afterSave)
+    addCompanyProductPackage(row).then(afterSave)
   } else {
-    updateAccessories(row).then(afterSave)
+    updateCompanyProductPackage(row).then(afterSave)
   }
 }
 
@@ -324,7 +364,7 @@ function handleCancel(row) {
 function handleSync() {
   // pullP2Accessories
   loading.value = true;
-  getP2Accessories().then(res => {
+  getP2CompanyProductPackage().then(res => {
     if (res.code === 200) {
       getList()
       proxy.$modal.msgSuccess("拉取成功")
@@ -334,6 +374,39 @@ function handleSync() {
   })
 }
 
+function handleSelectAccessories(row) {
+  currentDetail.value = row
+  choiceAccessoriesDialogRef.value.open()
+}
+
+function handleSelectCompany(row) {
+  currentDetail.value = row
+  choiceCompanyDialogRef.value.open()
+}
+
+function handleSelectProduct(row) {
+  currentDetail.value = row
+  choiceProductDialogRef.value.open()
+}
+
+function handleChoiceAccessories(data) {
+  currentDetail.value.accessoriesId = data.id
+  currentDetail.value.packageCode = data.accessoriesCode
+}
+
+function handleChoiceCompany(data) {
+  currentDetail.value.companyId = data.id
+  currentDetail.value.companyAlias = data.companyAlias
+  currentDetail.value.companyCode = data.companyCode
+  currentDetail.value.mnemonicCode = data.mnemonicCode
+}
+
+function handleChoiceProduct(data) {
+  currentDetail.value.productId = data.id
+  currentDetail.value.productDescription = data.description
+  currentDetail.value.productCode = data.productCode
+}
+
 getList();
 </script>
 <style scoped>

+ 4 - 0
src/views/business/inventoryCheck/OutsourceCheckDialog.vue

@@ -151,6 +151,10 @@ function handleEdit(row, index) {
 }
 //一键盘点
 function handleTaksLot() {
+  if (dataList.value.length == 0) {
+    proxy.$message.error('没有可盘点批次')
+    return
+  }
   batchTaksStockLot(dataList.value).then(res => {
     if (res.code == 200) {
       proxy.$modal.msgSuccess(res.msg);

+ 2 - 2
src/views/business/inventoryCheck/form.vue

@@ -55,7 +55,7 @@
           <el-button :disabled="queryParams.deptId == null || queryParams.deptId == '0'" type="primary" icon="Check"
             @click="handleTaksLot">一键盘点未开始批次
           </el-button>
-          <el-button type="primary" icon="List" @click="showOutsourceCheckDialog">外协发出单盘点
+          <el-button v-if="detailInfo.status != 2" type="primary" icon="List" @click="showOutsourceCheckDialog">外协发出单盘点
           </el-button>
         </el-form-item>
       </el-form>
@@ -181,7 +181,7 @@ const queryParams = ref({
 const open = (row) => {
   visible.value = true;
   console.log(is_identification.value)
-  is_identification.value = is_identification.value.filter(item =>item.value !=0)
+  is_identification.value = is_identification.value.filter(item => item.value != 0)
   reset();
   detailInfo.value = proxy.deepClone(row);
   getDeptList().then((response) => {