Browse Source

问题修复

liangbowen 2 months ago
parent
commit
387cbbf555

+ 18 - 0
src/api/consumCataManage-sup/index.js

@@ -179,4 +179,22 @@ export function CancMatch(data) {
         method:"post",
         data
     })
+}
+//下载模版
+export function exportMcsTemplate(data) {
+    return request({
+        url:"/web/mcsList/exportMcsTemplate",
+        method:"post",
+        data,
+        responseType: "blob",
+    })
+}
+//目录导入
+export function importMcsExcel(data) {
+    return request({
+        url:"/web/mcsList/importMcsExcel",
+        method:"post",
+        data,
+        headers: { 'Content-Type': 'application/octet-stream'}
+    })
 }

+ 9 - 0
src/api/procurement-settlement/index.js

@@ -31,3 +31,12 @@ export function insertSetlInvo(data) {
         data
     })
 }
+//明细导出
+export function exportAllSetlExcel(data) {
+    return request({
+        url:"/web/setl/exportAllSetlExcel",
+        method:"post",
+        data,
+        responseType: "blob",
+    })
+}

+ 2 - 2
src/utils/rules.js

@@ -62,10 +62,10 @@ export function checkNatureNum(rule, value, callback) {
 }
 //耗材编码
 export function proCodeRule(rule, value, callback) {
-  const reg = new RegExp("^[C]+[0-9]{26}?$");
+  const reg = new RegExp("^[A-Z]");
   if (value != "") {
     if (!reg.test(value)) {
-      return callback(new Error("请输入正确的医保编码,27位,且必须为大写C开头,其余是数字"));
+      return callback(new Error("请输入正确的医保编码,,且必须为大写字母开头"));
     } else {
       callback();
     }

+ 95 - 6
src/utils/utils.js

@@ -122,14 +122,103 @@ export const getThreeMonthAgoDate = (deadline) => {
 //表单验证错误直接滚动到错误位置
 export const moveToError = () => {
   let isError = document.getElementsByClassName('is-error');
-     if(isError.length){
-      isError[0].scrollIntoView({
-        block: 'center',
-        behavior: 'smooth'
+  if (isError.length) {
+    isError[0].scrollIntoView({
+      block: 'center',
+      behavior: 'smooth'
 
-     })
-    }
+    })
+  }
 };
+//汉字转中文
+export const numberToChineseAmount = (money) => {
+  var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆',
+    '柒', '捌', '玖');
+  // 基本单位
+  var cnIntRadice = new Array('', '拾', '佰', '仟');
+  // 对应整数部分扩展单位
+  var cnIntUnits = new Array('', '万', '亿', '兆');
+  // 对应小数部分单位
+  var cnDecUnits = new Array('角', '分', '毫', '厘');
+  // 整数金额时后面跟的字符
+  var cnInteger = '整';
+  // 整型完以后的单位
+  var cnIntLast = '元';
+  // 最大处理的数字
+  var maxNum = 999999999999999.9999;
+  // 金额整数部分
+  var integerNum;
+  // 金额小数部分
+  var decimalNum;
+  // 输出的中文金额字符串
+  var chineseStr = '';
+  // 分离金额后用的数组,预定义
+  var parts;
+  if (money == '') {
+    return '';
+  }
+  money = parseFloat(money);
+  if (money >= maxNum) {
+    // 超出最大处理数字
+    return '';
+  }
+  if (money == 0) {
+    chineseStr = cnNums[0] + cnIntLast + cnInteger;
+    return chineseStr;
+  }
+  // 转换为字符串
+  money = money.toString();
+  if (money.indexOf('.') == -1) {
+    integerNum = money;
+    decimalNum = '';
+  } else {
+    parts = money.split('.');
+    integerNum = parts[0];
+    decimalNum = parts[1].substr(0, 4);
+  }
+  // 获取整型部分转换
+  if (parseInt(integerNum, 10) > 0) {
+    var zeroCount = 0;
+    var IntLen = integerNum.length;
+    for (var i = 0; i < IntLen; i++) {
+      var n = integerNum.substr(i, 1);
+      var p = IntLen - i - 1;
+      var q = p / 4;
+      var m = p % 4;
+      if (n == '0') {
+        zeroCount++;
+      } else {
+        if (zeroCount > 0) {
+          chineseStr += cnNums[0];
+        }
+        // 归零
+        zeroCount = 0;
+        chineseStr += cnNums[parseInt(n)]
+          + cnIntRadice[m];
+      }
+      if (m == 0 && zeroCount < 4) {
+        chineseStr += cnIntUnits[q];
+      }
+    }
+    chineseStr += cnIntLast;
+  }
+  // 小数部分
+  if (decimalNum != '') {
+    var decLen = decimalNum.length;
+    for (var i = 0; i < decLen; i++) {
+      var n = decimalNum.substr(i, 1);
+      if (n != '0') {
+        chineseStr += cnNums[Number(n)] + cnDecUnits[i];
+      }
+    }
+  }
+  if (chineseStr == '') {
+    chineseStr += cnNums[0] + cnIntLast + cnInteger;
+  } else if (decimalNum == '') {
+    chineseStr += cnInteger;
+  }
+  return chineseStr;
+}
 
 
 

+ 11 - 6
src/views/components/printTable.vue

@@ -4,7 +4,7 @@
       <table class="printTable" border="1" style="table-layout: auto">
         <thead>
           <tr>
-            <td colspan="13">{{ userName }}</td>
+            <td colspan="14">供应商:{{ userName }}</td>
           </tr>
           <tr>
             <td colspan="1">医院名称</td>
@@ -25,12 +25,12 @@
         <tbody>
           <tr v-for="(item, index) in im" :key="index">
             <td v-for="(itm, idx) in tableHeader" :key="idx">
-              <span v-if="itm.value == 'mcsType'">
+              <span v-if="itm.value == 'mcType'">
                 <span v-if="item.mcsType == '0'">普通耗材</span>
                 <span v-if="item.mcsType == '1'">高值耗材</span>
                 <span v-if="item.mcsType == '2'">试剂</span>
               </span>
-              <span v-if="itm.value == 'isFas'">
+              <span v-if="itm.value == 'iFas'">
                 <span v-if="item.isFas == '0'">否</span>
                 <span v-if="item.isFas == '1'">是</span>
               </span>
@@ -40,7 +40,7 @@
           </tr>
           <tr>
             <td>合计</td>
-            <td colspan="5"></td>
+            <td colspan="6">{{ numBeroMount }}</td>
             <td>{{ amtNumber(im) }}</td>
             <td colspan="6"></td>
           </tr>
@@ -51,13 +51,15 @@
   </div>
 </template>
 <script>
+import { numberToChineseAmount } from "@/utils/utils";
 export default {
   components: {},
   data() {
     return {
       tableLabel: "",
       taData: [],
-      userName: ""
+      userName: "",
+      numBeroMount: ""
     };
   },
   props: {
@@ -84,7 +86,10 @@ export default {
       item.forEach(item => {
         nub += Number(item.amt);
       });
-      return parseFloat(nub.toFixed(4)) + "元";
+      let pasNub = parseFloat(nub.toFixed(4));
+      let newNub = numberToChineseAmount(pasNub);
+      this.numBeroMount = newNub;
+      return pasNub + "元";
     }
   },
   mounted() {

+ 30 - 1
src/views/page/catalog-inventory/index.vue

@@ -27,12 +27,33 @@
         :inline="true"
         label-width="90px"
       >
+        <el-form-item size="mini" label="耗材名称" prop="prodName" class="long">
+          <el-input
+            v-model="listQuery.prodName"
+            placeholder="请输入耗材名称"
+          ></el-input>
+        </el-form-item>
         <el-form-item size="mini" label="医保编码" prop="hiCode" class="long">
           <el-input
             v-model="listQuery.hiCode"
             placeholder="请输入医保编码"
           ></el-input>
         </el-form-item>
+        <el-form-item size="mini" label="生产厂家" prop="prodEntp" class="long">
+          <el-input
+            v-model="listQuery.prodEntp"
+            placeholder="请输入生产厂家"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="规格" prop="spec" class="long">
+          <el-input
+            v-model="listQuery.spec"
+            placeholder="请输入规格"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="型号" prop="mol" class="long">
+          <el-input v-model="listQuery.mol" placeholder="请输入型号"></el-input>
+        </el-form-item>
         <el-form-item size="mini" label="批号" prop="lotNum" class="long">
           <el-input
             v-model="listQuery.lotNum"
@@ -62,11 +83,15 @@
           <p>暂无数据</p>
         </template>
         <el-table-column fixed type="index" label="序号" width="60" />
+        <el-table-column label="耗材名称" prop="prodName" />
+        <el-table-column label="规格" prop="spec" />
+        <el-table-column label="型号" prop="mol" />
         <!-- <el-table-column label="耗材信息" min-width="340">
           <template slot-scope="scope">
             <mcs-info :info="scope.row"></mcs-info>
           </template>
         </el-table-column> -->
+        <el-table-column label="生产厂家" prop="prodEntp" />
         <el-table-column label="医保编码" prop="hiCode" />
         <el-table-column label="批号" prop="lotNum" />
         <el-table-column label="生产日期" prop="manuDate" />
@@ -111,7 +136,11 @@ export default {
         current: 1,
         size: 10,
         hiCode: "",
-        lotNum: ""
+        lotNum: "",
+        prodName: "",
+        spec: "",
+        mol: "",
+        prodEntp: ""
       }
     };
   },

+ 2 - 0
src/views/page/consumCataManage-sup/catalogdetails.vue

@@ -749,6 +749,8 @@ export default {
         { value: "桶", label: "桶" },
         { value: "节", label: "节" },
         { value: "打", label: "打" },
+        { value: "副", label: "副" },
+        { value: "人份", label: "人份" },
       ],
       prcUntData: [
         { value: "箱", label: "箱" },

+ 2 - 1
src/views/page/consumCataManage-sup/catalogdetailsadd.vue

@@ -550,7 +550,8 @@ export default {
         { value: "桶", label: "桶" },
         { value: "节", label: "节" },
         { value: "打", label: "打" },
-        { value: "副", label: "副" }
+        { value: "副", label: "副" },
+        { value: "人份", label: "人份" }
       ],
       prcUntData: [
         { value: "箱", label: "箱" },

+ 13 - 0
src/views/page/consumCataManage-sup/const.js

@@ -0,0 +1,13 @@
+export const exportData = (data,title) => {
+  let blob = new Blob([data], {
+    type: "application/vnd.ms-excel;charset=utf-8",
+  });
+  let downloadElement = document.createElement("a");
+  let href = window.URL.createObjectURL(blob);
+  downloadElement.href = href;
+  downloadElement.download = `${title}.xlsx`;
+  document.body.appendChild(downloadElement);
+  downloadElement.click();
+  document.body.removeChild(downloadElement);
+  window.URL.revokeObjectURL(href);
+};

+ 49 - 2
src/views/page/consumCataManage-sup/distributionmanage.vue

@@ -139,7 +139,7 @@
         <!-- <div class="right-button"> -->
         <el-button
           type="primary"
-          style="margin-left:30px"
+          style="margin-left: 30px"
           @click="getHospConsum('search')"
           >查询</el-button
         >
@@ -148,6 +148,25 @@
       </el-form>
 
       <div class="right-button" v-if="btnShow">
+        <el-upload
+          class="upload-demo"
+          action=""
+          :limit="3"
+          headers="application/json"
+          :file-list="fileList"
+          :on-change="handleChange"
+          :show-file-list="false"
+          :auto-upload="false"
+          accept=".xlsx"
+        >
+          <el-button type="success" icon="el-icon-upload2">目录导入 </el-button>
+        </el-upload>
+        <el-button
+          type="success"
+          icon="el-icon-download"
+          @click="downTemplate()"
+          >下载模版
+        </el-button>
         <el-button
           type="primary"
           icon="el-icon-plus"
@@ -588,10 +607,13 @@ import {
   DrugMatch,
   CancMatch,
   selectSpdList,
-  selectSplerMcsListIntf
+  selectSplerMcsListIntf,
+  exportMcsTemplate,
+  importMcsExcel
 } from "@/api/consumCataManage-sup/index";
 import rulesR from "@/utils/rules";
 import ylUpload from "@/components/yl-upload";
+import { exportData } from "./const";
 export default {
   components: {
     ylPagination,
@@ -603,6 +625,7 @@ export default {
       activeName: "grp",
       rulesR,
       spdId: null,
+      fileList: [],
       data: [],
       defaultProps: {
         children: "children",
@@ -764,6 +787,27 @@ export default {
     };
   },
   methods: {
+    handleChange(file, list) {
+      let formData = new FormData();
+      formData.append("spdId", this.listQuery.spdId);
+      formData.append("file", file.raw);
+      importMcsExcel(formData).then(res => {
+        if (res.success == true) {
+          this.$message({
+            message: "导入成功",
+            type: "success"
+          });
+          this.getData();
+        }
+      });
+    },
+    //模版下载
+    downTemplate() {
+      exportMcsTemplate({}).then(res => {
+        const _res = res.data;
+        exportData(_res, "目录模版");
+      });
+    },
     tabClick(tab) {
       if (tab.label == "按机构") {
         this.defaultProps.label = "spdName";
@@ -1130,4 +1174,7 @@ export default {
 ::v-deep .long .el-input__inner {
   width: 199px;
 }
+.upload-demo {
+  display: inline-block;
+}
 </style>

+ 24 - 1
src/views/page/procurement-settlement/invoiceManage/consumptionDetail.vue

@@ -216,6 +216,9 @@
     </div>
     <div class="common-card">
       <h3>明细信息</h3>
+      <div class="right-btn">
+        <el-button type="primary" @click="exportExal()">导出</el-button>
+      </div>
       <div id="printMe">
         <el-table
           ref="table"
@@ -284,8 +287,10 @@ import ylPagination from "@/components/yl-pagination";
 import ylUpload from "@/components/yl-upload";
 import {
   selectSetlStmtDetlD,
-  insertSetlInvo
+  insertSetlInvo,
+  exportAllSetlExcel
 } from "@/api/procurement-settlement/index";
+import { exportData } from "../../consumCataManage-sup/const.js";
 import moment from "moment";
 import rules from "@/utils/rules";
 
@@ -414,6 +419,13 @@ export default {
     this.getData();
   },
   methods: {
+    //导出
+    exportExal() {
+      exportAllSetlExcel({ stmtNo: this.$route.query.stmtNo }).then(res => {
+        const _res = res.data;
+        exportData(_res, "对账明细");
+      });
+    },
     formatDate(row) {
       return moment(row).format("YYYY-MM-DD");
     },
@@ -582,4 +594,15 @@ export default {
     margin-left: 94%;
   }
 }
+.right-btn {
+  width: 100%;
+  height: 50px;
+  padding-right: 20px;
+  position: absolute;
+  left: 0;
+  top: 0;
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
 </style>

+ 29 - 3
src/views/page/procurement-settlement/reconciliation/supplierDetail.vue

@@ -57,6 +57,9 @@
     </div>
     <div class="common-card">
       <h3>明细信息</h3>
+      <div class="right-btn">
+          <el-button type="primary" @click="exportExal()">导出</el-button>
+        </div>
       <div>
         <el-table
           ref="table"
@@ -144,8 +147,9 @@ import {
 import {
   selectSetlStmtDetlD,
   updateSetlStmtDStas,
+  exportAllSetlExcel
 } from "@/api/procurement-settlement/index";
-
+import { exportData } from "../../consumCataManage-sup/const.js";
 export default {
   components: {
     ylStep,
@@ -181,16 +185,20 @@ export default {
           value: "unt",
         },
         {
+          label: "单价",
+          value: "pric",
+        },
+        {
           label: "总计",
           value: "amt",
         },
         {
           label: "类别",
-          value: "mcsType",
+          value: "mcType",
         },
         {
           label: "是否集采",
-          value: "isFas",
+          value: "iFas",
         },
         {
           label: "批次",
@@ -308,6 +316,13 @@ export default {
     this.getData();
   },
   methods: {
+     //导出
+     exportExal() {
+      exportAllSetlExcel({ stmtNo: this.$route.query.stmtNo }).then((res) => {
+        const _res = res.data;
+        exportData(_res,'对账明细');
+      })
+    },
     printDataView() {
       this.comModal =  true;
     },
@@ -431,4 +446,15 @@ export default {
     margin-right: 20px;
   }
 }
+.right-btn{
+    width: 100%;
+    height:50px;
+    padding-right:20px;
+    position: absolute;
+    left:0;
+    top:0;
+    display: flex;
+    align-items: center;
+    justify-content:flex-end;
+}
 </style>