From 20c07311de5bfcf4f7788188d3f4e3441903a223 Mon Sep 17 00:00:00 2001
From: anthonywj <yewenjie20@vip.qq.com>
Date: Sat, 20 Jan 2024 15:08:30 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E5=AD=98=E5=AF=B9=E6=AF=94=E7=9B=B8?=
 =?UTF-8?q?=E5=85=B3=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .env.production                             |   6 +-
 src/api/inventory/stockCompareApi.js        |  37 +++++
 src/views/basic/product/product.vue         |   2 +-
 src/views/basic/product/productCategory.vue |   2 +-
 src/views/basic/product/test.vue            |   2 +-
 src/views/inventory/stockCompare.js         | 106 +++++++++++---
 src/views/inventory/stockCompare.vue        | 145 +++++++++++++++++---
 7 files changed, 256 insertions(+), 44 deletions(-)

diff --git a/.env.production b/.env.production
index acf02e9f..29d69aa7 100644
--- a/.env.production
+++ b/.env.production
@@ -43,7 +43,7 @@ ENV = 'production'
 # VUE_APP_BASE_API = 'http://192.168.6.189:9150/UDI_WMS_MC/'
 
 # 三明大田医院
-VUE_APP_BASE_API = 'http://172.20.124.4:9150/UDI_WMS_MC/'
+# VUE_APP_BASE_API = 'http://172.20.124.4:9150/UDI_WMS_MC/'
 
 
 # VUE_APP_BASE_API = 'http://192.168.0.207:9150/UDI_WMS_MC/'
@@ -60,6 +60,10 @@ VUE_APP_BASE_API = 'http://172.20.124.4:9150/UDI_WMS_MC/'
 
 # VUE_APP_BASE_API = 'http://192.168.0.207:9160/UDI_WMS_MC/'
 
+# 云霄妇幼保健
+# VUE_APP_BASE_API = 'http://192.168.0.11:9150/UDI_WMS_MC/'
+VUE_APP_BASE_API = 'http://192.168.0.67:9150/UDI_WMS_MC/'
+
 # 应用访问路径 例如使用前缀 /admin/
 VUE_APP_CONTEXT_PATH = '/UDI_WMS_NEW/'
 
diff --git a/src/api/inventory/stockCompareApi.js b/src/api/inventory/stockCompareApi.js
index 6c02096d..4462b1f1 100644
--- a/src/api/inventory/stockCompareApi.js
+++ b/src/api/inventory/stockCompareApi.js
@@ -16,6 +16,7 @@ export function selectInvProductDetail(params) {
   });
 }
 
+
 export function stockCompareSave(params) {
   return axios({
     url: "/udiwms/stockCompare/save",
@@ -47,6 +48,23 @@ export function stockCompareDetailPage(params) {
   });
 }
 
+export function stockCompareResultPage(params) {
+  return axios({
+    url: "/udiwms/stockCompare/detail/result",
+    method: "POST",
+    data: params
+  });
+}
+
+export function dlThrCpProduct(params) {
+  return axios({
+    url: "/udiwms/stockCompare/addThrProduct",
+    method: "POST",
+    data: params
+  });
+}
+
+
 export function stockCompareDetailDel(params) {
   return axios({
     url: "/udiwms/stockCompare/detail/del",
@@ -54,3 +72,22 @@ export function stockCompareDetailDel(params) {
     data: params
   });
 }
+
+export function uploadCompare(compareId) {
+  return axios({
+    url: `/udiwms/stockCompare/compare/${compareId}`,
+    method: "POST",
+  });
+}
+
+
+
+
+export function compareExportExcel(data) {
+  return axios({
+    url: "/udiwms/stockCompare/compare/exportExcel",
+    method: "post",
+    responseType: 'blob',
+    data: data
+  });
+}
diff --git a/src/views/basic/product/product.vue b/src/views/basic/product/product.vue
index 43a7d87b..bd54be71 100644
--- a/src/views/basic/product/product.vue
+++ b/src/views/basic/product/product.vue
@@ -1392,7 +1392,7 @@
 
                   <el-collapse-item name="6">
                     <template slot="title">
-                      <p class="form-title">版本信息</p>
+                      <p class="form-title">国家DI标识数据库版本信息</p>
                     </template>
 
                     <el-row :gutter="20" class="el-row" type="flex">
diff --git a/src/views/basic/product/productCategory.vue b/src/views/basic/product/productCategory.vue
index 1a093ee3..2cfe07f0 100644
--- a/src/views/basic/product/productCategory.vue
+++ b/src/views/basic/product/productCategory.vue
@@ -1299,7 +1299,7 @@
 
               <el-collapse-item name="6">
                 <template slot="title">
-                  <p class="form-title">版本信息</p>
+                  <p class="form-title">国家DI标识数据库版本信息</p>
                 </template>
 
                 <el-row :gutter="20" class="el-row" type="flex">
diff --git a/src/views/basic/product/test.vue b/src/views/basic/product/test.vue
index 8ff7a630..a37e2b40 100644
--- a/src/views/basic/product/test.vue
+++ b/src/views/basic/product/test.vue
@@ -1237,7 +1237,7 @@
 
                     <el-collapse-item name="6">
                       <template slot="title">
-                        <p class="form-title">版本信息</p>
+                        <p class="form-title">国家DI标识数据库版本信息</p>
                       </template>
 
                       <el-row :gutter="20" class="el-row" type="flex">
diff --git a/src/views/inventory/stockCompare.js b/src/views/inventory/stockCompare.js
index f4b171bb..cd72cb1b 100644
--- a/src/views/inventory/stockCompare.js
+++ b/src/views/inventory/stockCompare.js
@@ -1,11 +1,16 @@
 import {
+  compareExportExcel,
+  dlThrCpProduct,
+  dlThrProduct,
   selectInvProductDetail, stockCompareAddProduct,
   stockCompareDelete, stockCompareDetailDel, stockCompareDetailPage,
-  stockComparePage,
-  stockCompareSave
+  stockComparePage, stockCompareResultPage,
+  stockCompareSave, uploadCompare
 } from "@/api/inventory/stockCompareApi";
 import {mainActionMap, stockCompareStatusEnum} from "@/utils/data";
 import data from "@/views/system/dict/data.vue";
+import fa from "element-ui/src/locale/lang/fa";
+import {postExcelInoutImport} from "@/api/inout/orderDetailResult";
 
 let filterQuery = {
   page: 1,
@@ -115,6 +120,8 @@ export default {
         },
         firstDayOfWeek: 1
       },
+
+      currentRow: null,
     }
   },
   created() {
@@ -134,8 +141,8 @@ export default {
         }
         this.$message.success(res.message)
         this.showAddProductDialog = false
-        this.stockCompareDetailQuery.page = 1
-        this.getStockCompareDetailList()
+        let query = {compareId: this.compareId,};
+        this.getResultList(query)
       })
     },
     addProductSelectionChange(row) {
@@ -151,10 +158,35 @@ export default {
         spinner: 'el-icon-loading',
         background: 'rgba(0, 0, 0, 0.7)'
       });
-      setTimeout(() => {
+      let query = {
+        compareId: this.compareId
+      }
+      dlThrCpProduct(query).then(res => {
         loading.close();
-      }, 2000);
+        if (res.code != 20000) {
+          this.$message.error(res.message)
+          return
+        }
+        this.getResultList(query)
+      }).catch(e => {
+        loading.close();
+      })
+    },
+
+    uploadCompare() {
+      uploadCompare(this.compareId).then(res => {
+        if (res.code != 20000) {
+          this.$message.error(res.message)
+          return
+        } else {
+          this.$message.success("提交成功!");
+          this.showDialog = false;
+          this.getList()
+        }
+      })
     },
+
+
     showAddProduct() {
       this.selectProductQuery = {...selectProductQuery, compareId: this.compareId}
       this.productList = []
@@ -165,18 +197,19 @@ export default {
     },
     getStockCompareDetailList() {
       this.stockCompareDetailQuery.compareId = this.compareId
-      this.stockCompareDetailLoading = true
-      stockCompareDetailPage(this.stockCompareDetailQuery).then(res => {
-        this.stockCompareDetailLoading = false
-        if (res.code != 20000) {
-          this.$message.error(res.message)
-          return
-        }
-        this.stockCompareDetailList = res.data.list || []
-        this.stockCompareDetailTotal = res.data.total || 0
-      }).catch(e => {
-        this.stockCompareDetailLoading = false
-      })
+      // this.stockCompareDetailLoading = true
+      // stockCompareDetailPage(this.stockCompareDetailQuery).then(res => {
+      //   this.stockCompareDetailLoading = false
+      //   if (res.code != 20000) {
+      //     this.$message.error(res.message)
+      //     return
+      //   }
+      //   this.stockCompareDetailList = res.data.list || []
+      //   this.stockCompareDetailTotal = res.data.total || 0
+      // }).catch(e => {
+      //   this.stockCompareDetailLoading = false
+      // })
+      this.getResultList(this.stockCompareDetailQuery)
     },
     selectInvProductDetailList() {
       this.productLoading = true
@@ -305,6 +338,43 @@ export default {
       }).catch(res => {
         this.loading = false
       })
+    },
+    handleSelectionChange(val) {
+      this.currentRow = val;
+      let query = {
+        compareId: this.currentRow.id
+      }
+      this.getResultList(query);
+    },
+
+    getResultList(query) {
+      stockCompareResultPage(query).then(res => {
+        this.loading = false
+        if (res.code != 20000) {
+          this.$message.error(res.message)
+          return
+        }
+        this.stockCompareDetailList = res.data || []
+        this.total = res.data.total || 0
+      }).catch(res => {
+        this.loading = false
+      })
+    },
+
+    exportExcel(row) {
+      let printParams = {
+        compareId: row.id
+      };
+      compareExportExcel(printParams).then((response) => {
+        let blob = new Blob([response], {type: "application/vnd.ms-excel"});
+        let url = window.URL.createObjectURL(blob); // 创建一个临时的url指向blob对象
+        let a = document.createElement("a");
+        a.href = url;
+        a.click();
+        this.$message("生成文件成功!")
+      })
     }
+
+
   }
 }
diff --git a/src/views/inventory/stockCompare.vue b/src/views/inventory/stockCompare.vue
index f41f04ea..681e9002 100644
--- a/src/views/inventory/stockCompare.vue
+++ b/src/views/inventory/stockCompare.vue
@@ -11,7 +11,8 @@
           </el-col>
           <el-col :span="6">
             <el-form-item class="query-form-item" label="状态:">
-              <el-select v-model="filterQuery.status" @clear="filterQuery.status=null"  placeholder="请选择状态" style="width: 90%" clearable>
+              <el-select v-model="filterQuery.status" @clear="filterQuery.status=null" placeholder="请选择状态"
+                         style="width: 90%" clearable>
                 <el-option v-for="item in stockCompareStatusEnum" :key="item.key" :label="item.desc" :value="item.key"/>
               </el-select>
             </el-form-item>
@@ -66,11 +67,11 @@
       <el-table
         v-loading="loading"
         :data="list"
+        @row-click="handleSelectionChange"
         style="width: 100%; margin-top: 20px"
         highlight-current-row
         border
-        max-height="300"
-        height="300">
+      >
         <el-table-column label="序号" width="50" type="index"></el-table-column>
         <el-table-column label="记录号" width="160" prop="id"/>
         <el-table-column label="备注描述" width="160" prop="remark"/>
@@ -97,7 +98,8 @@
         <el-table-column label="操作人" width="110" prop="createUserName"/>
         <el-table-column fixed="right" width="100" label="操作">
           <template slot-scope="scope">
-            <el-button type="text" @click="edit(scope.row)">编辑</el-button>
+            <el-button type="text" @click="edit(scope.row)" v-if="scope.row.status == 'DRAFT'">编辑</el-button>
+            <el-button type="text" @click="exportExcel(scope.row)" v-if="scope.row.status == 'FINISHED'">导出</el-button>
             <el-button type="text" @click="del(scope.row)">删除</el-button>
           </template>
         </el-table-column>
@@ -111,14 +113,80 @@
         @pagination="getList"
       ></pagination>
     </el-card>
+    <el-tabs type="border-card" style="margin: 15px">
+      <el-tab-pane>
+        <span slot="label"> {{ currentRow == null ? '' : currentRow.id }}-库存对比结果</span>
+        <el-table v-loading="stockCompareDetailLoading"
+                  :data="stockCompareDetailList"
+                  highlight-current-row
+                  max-height="300"
+                  height="300">
+          <el-table-column label="序号" width="50" type="index"/>
+          <el-table-column label="DI/物资编码" width="120" prop="nameCode" show-overflow-tooltip/>
+          <!--          <el-table-column label="第三方产品编码" width="120" prop="nameCode" show-overflow-tooltip/>-->
+          <el-table-column label="产品名称" width="120" prop="productName" show-overflow-tooltip/>
+          <el-table-column label="规格型号" width="120" prop="ggxh" show-overflow-tooltip/>
+          <el-table-column label="批次号" width="110" prop="batchNo" show-overflow-tooltip/>
+          <el-table-column label="出入库类型" width="90" prop="mainAction" show-overflow-tooltip>
+            <template scope="scope">
+              {{ mainActionMap[scope.row.mainAction] }}
+            </template>
+          </el-table-column>
+
+          <el-table-column label="数量" header-align="center">
+            <el-table-column header-align="center"
+                             label="UDI" width="100"
+                             prop="count"
+                             show-overflow-tooltip
+            ></el-table-column>
+            <el-table-column header-align="center"
+                             label="第三方" width="100"
+                             prop="thrCount"
+                             show-overflow-tooltip
+            ></el-table-column>
+          </el-table-column>
+
+          <el-table-column label="价格" header-align="center">
+            <el-table-column header-align="center"
+                             label="UDI" width="100"
+                             prop="price"
+                             show-overflow-tooltip
+            ></el-table-column>
+            <el-table-column header-align="center"
+                             label="第三方" width="100"
+                             prop="thrPrice"
+                             show-overflow-tooltip
+            ></el-table-column>
+          </el-table-column>
+
+          <el-table-column label="产品描述" width="110" prop="cpms" show-overflow-tooltip/>
+          <el-table-column label="生产厂家" width="110" prop="manufactory" show-overflow-tooltip/>
+          <el-table-column label="注册/备案人名称" width="220" prop="ylqxzcrbarmc" show-overflow-tooltip/>
+          <el-table-column label="注册/备案证号" width="220" prop="zczbhhzbapzbh" show-overflow-tooltip/>
+          <!--          <el-table-column label="操作" v-if="editRow&&editRow.status==stockCompareStatusEnum.DRAFT.key" width="80"-->
+          <!--                           fixed="right">-->
+          <!--            <template scope="scope">-->
+          <!--              <el-button type="text" @click="removeDetail(scope.row)">移除</el-button>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+        </el-table>
+        <pagination
+          v-show="stockCompareDetailTotal>0"
+          :total="stockCompareDetailTotal"
+          :limit.sync="stockCompareDetailQuery.limit"
+          :page.sync="stockCompareDetailQuery.page"
+          @pagination="getList"
+        ></pagination>
 
+      </el-tab-pane>
+    </el-tabs>
     <el-dialog
       append-to-body
       :title="compareId?'编辑对比':'新增对比'"
       :visible="true"
       v-if="showDialog"
       @close="showDialog = false;filterQuery.page = 1;getList()"
-      width="60%"
+      width="80%"
     >
       <el-card class="dialogCard">
         <el-form :model="param" ref="stockCompare" :disabled="compareId" :rules="paramRules" class="query-form"
@@ -177,10 +245,15 @@
       <el-card v-if="compareId" class="dialogSecCard">
         <el-row v-if="editRow&&editRow.status==stockCompareStatusEnum.DRAFT.key">
           <el-col align="right">
-            <el-button icon="el-icon-refresh" @click="stockCompareDetailQuery.page=1;getStockCompareDetailList()">刷新
-            </el-button>
-            <el-button type="primary" @click="showAddProduct">添加产品</el-button>
-            <el-button type="primary" @click="compareFunc">立即对比</el-button>
+            <el-button-group>
+              <el-button type="primary" icon="el-icon-plus" @click="showAddProduct">添加本地产品</el-button>
+              <el-button type="primary" icon="el-icon-download" @click="compareFunc">下载第三产品</el-button>
+              <el-button type="primary" icon="el-icon-upload2"
+                         @click="uploadCompare">提交比对
+              </el-button>
+            </el-button-group>
+
+
           </el-col>
         </el-row>
         <el-row style="margin-top: 10px">
@@ -190,19 +263,46 @@
                     max-height="300"
                     height="300">
             <el-table-column label="序号" width="50" type="index"/>
-            <el-table-column label="最小销售标识" width="110" prop="nameCode"/>
-            <el-table-column label="产品名称" width="110" prop="productName"/>
-            <el-table-column label="规格型号" width="110" prop="ggxh"/>
-            <el-table-column label="出入库类型" width="90" prop="mainAction">
+            <el-table-column label="DI/物资编码" width="120" prop="nameCode" show-overflow-tooltip/>
+            <!--            <el-table-column label="第三方产品编码" width="120" prop="nameCode" show-overflow-tooltip/>-->
+            <el-table-column label="产品名称" width="120" prop="productName" show-overflow-tooltip/>
+            <el-table-column label="规格型号" width="120" prop="ggxh" show-overflow-tooltip/>
+            <el-table-column label="出入库类型" width="90" prop="mainAction" show-overflow-tooltip>
               <template scope="scope">
                 {{ mainActionMap[scope.row.mainAction] }}
               </template>
             </el-table-column>
-            <el-table-column label="数量" width="80" prop="count"/>
-            <el-table-column label="产品描述" width="110" prop="cpms"/>
-            <el-table-column label="生产厂家" width="110" prop="manufactory"/>
-            <el-table-column label="医疗器械注册/备案人名称" width="220" prop="ylqxzcrbarmc"/>
-            <el-table-column label="注册证/备案批准编号" width="220" prop="zczbhhzbapzbh"/>
+            <el-table-column label="批次号" width="110" prop="batchNo" show-overflow-tooltip/>
+            <el-table-column label="数量" header-align="center">
+              <el-table-column header-align="center"
+                               label="UDI" width="100"
+                               prop="count"
+                               show-overflow-tooltip
+              ></el-table-column>
+              <el-table-column header-align="center"
+                               label="第三方" width="100"
+                               prop="thrCount"
+                               show-overflow-tooltip
+              ></el-table-column>
+            </el-table-column>
+
+            <el-table-column label="价格" header-align="center">
+              <el-table-column header-align="center"
+                               label="UDI" width="100"
+                               prop="price"
+                               show-overflow-tooltip
+              ></el-table-column>
+              <el-table-column header-align="center"
+                               label="第三方" width="100"
+                               prop="thrPrice"
+                               show-overflow-tooltip
+              ></el-table-column>
+            </el-table-column>
+
+            <el-table-column label="产品描述" width="110" prop="cpms" show-overflow-tooltip/>
+            <el-table-column label="生产厂家" width="110" prop="manufactory" show-overflow-tooltip/>
+            <el-table-column label="注册/备案人名称" width="220" prop="ylqxzcrbarmc" show-overflow-tooltip/>
+            <el-table-column label="注册/备案证号" width="220" prop="zczbhhzbapzbh" show-overflow-tooltip/>
             <el-table-column label="操作" v-if="editRow&&editRow.status==stockCompareStatusEnum.DRAFT.key" width="80"
                              fixed="right">
               <template scope="scope">
@@ -233,12 +333,13 @@
           <el-row>
             <el-col :span="12" align="left">选择产品</el-col>
             <el-col :span="12" align="right">
-              <el-button icon="el-icon-refresh" @click="selectProductQuery.page = 1;selectInvProductDetailList()">刷新
-              </el-button>
               <el-button icon="el-icon-check" type="primary" :disabled="!checkProductList.length"
                          @click="checkProduct(false)">选中选入
               </el-button>
               <el-button icon="el-icon-check" type="primary" @click="checkProduct(true)">结果全部选入</el-button>
+
+              <el-button icon="el-icon-refresh" @click="selectProductQuery.page = 1;selectInvProductDetailList()">刷新
+              </el-button>
             </el-col>
           </el-row>
         </template>
@@ -265,8 +366,8 @@
           <el-table-column label="数量" width="80" prop="count"/>
           <el-table-column label="产品描述" width="120" prop="cpms"/>
           <el-table-column label="生产厂家" width="110" prop="manufactory"/>
-          <el-table-column label="医疗器械注册/备案人名称" width="220" prop="ylqxzcrbarmc"/>
-          <el-table-column label="注册证/备案批准编号" width="220" prop="zczbhhzbapzbh"/>
+          <el-table-column label="注册/备案人名称" width="220" prop="ylqxzcrbarmc" show-overflow-tooltip/>
+          <el-table-column label="注册/备案证号" width="220" prop="zczbhhzbapzbh" show-overflow-tooltip/>
         </el-table>
         <pagination
           v-show="productTotal>0"