Parcourir la source

task-120 药斗补货复核
component: drugs/storage/into-recheck
权限
- 复核 drugs-storage:into:recheck

cc12458 il y a 9 mois
Parent
commit
18e04c4667
2 fichiers modifiés avec 219 ajouts et 0 suppressions
  1. 21 0
      src/api/drugs/storage.js
  2. 198 0
      src/views/drugs/storage/into-recheck.vue

+ 21 - 0
src/api/drugs/storage.js

@@ -21,3 +21,24 @@ export function editMedicineStorageCupboard(model) {
     data: model,
   });
 }
+
+// 编辑药斗补货复核
+export function editMedicineStorageIntoRecheck(model) {
+  if (!Array.isArray(model)) model = model ? [model] : [];
+  return request({
+    url: `/yfc-admin/web/restock/doReview`,
+    method: 'post',
+    data: model.map(item => item.id),
+  });
+}
+
+// 查询药斗补货复核列表
+export function listMedicineStorageIntoRecheck(query) {
+  const {pageNum, pageSize, ...data} = query;
+  return request({
+    url: `/yfc-admin/web/restock/review-list`,
+    method: 'post',
+    data,
+    params: {pageNum, pageSize},
+  });
+}

+ 198 - 0
src/views/drugs/storage/into-recheck.vue

@@ -0,0 +1,198 @@
+<script>
+import dayjs from 'dayjs';
+import {editMedicineStorageIntoRecheck, listMedicineStorageIntoRecheck} from '@/api/drugs/storage';
+import {listSupplier} from '@/api/pharmacy/supplier';
+
+/**
+ * 药斗补货复核
+ */
+export default {
+  name: 'MedicineStorageIntoRecheck',
+  components: {},
+  data() {
+    return {
+      supplierArr: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+
+        date: [],
+        supplierId: void 0,
+        supplierName: void 0,
+        param: void 0,
+      },
+      loading: false,
+      dataset: [],
+      total: 0,
+
+      // 选择的
+      selected: [],
+    };
+  },
+  created() {
+    listSupplier().then((res) => { this.supplierArr = res.rows; });
+    this.resetQuery();
+  },
+  methods: {
+    getQueryParams() {
+      const {date, ...params} = this.queryParams;
+      if (date && date.length) {
+        params.startTime = date[0];
+        params.endTime = date[1];
+      } else {
+        params.startTime = '';
+        params.endTime = '';
+      }
+      return params;
+    },
+    async getList() {
+      this.loading = true;
+      try {
+        const res = await listMedicineStorageIntoRecheck(this.getQueryParams());
+        this.dataset = res.rows;
+        this.total = res.total;
+      } catch (e) {}
+      this.loading = false;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm');
+      const now = dayjs();
+      this.queryParams.date = [now.startOf('d').format('YYYY-MM-DD HH:mm:ss'), now.endOf('d').format('YYYY-MM-DD HH:mm:ss')];
+      this.queryParams.pharmacyId = window.localStorage.getItem("pharmacyId");
+      this.handleQuery();
+    },
+    handleSelectionChange(selection) {
+      this.selected = [...selection];
+    },
+
+    async handleRecheck(model) {
+      const selected = model ? [model] : this.selected;
+      this.$confirm(`是否确定${selected.length > 1 ? '一键' : ''}复核?`, '提示', {
+        type: 'warning',
+        confirmButtonText: '复核',
+        cancelButtonText: '取消',
+        beforeClose: (action, instance, done) => {
+          if (action === 'confirm') {
+            instance.confirmButtonLoading = true;
+            instance.confirmButtonText = '复核中...';
+            editMedicineStorageIntoRecheck(selected)
+              .then(() => {
+                this.$message.success(`复核成功`);
+                instance.confirmButtonLoading = false;
+                this.getList();
+                done();
+              })
+              .catch((err) => {
+                instance.confirmButtonText = '复核';
+                instance.confirmButtonLoading = false;
+              });
+          } else {
+            done();
+          }
+        }
+      });
+    },
+  },
+};
+</script>
+
+<template>
+  <div class="app-container">
+    <el-row :gutter="24">
+      <el-col :span="24" :xs="24">
+        <el-form ref="queryForm" label-width="68px" :inline="true" :model="queryParams">
+          <div class="query-box">
+            <div class="query-box__left">
+              <el-form-item label="" prop="date">
+                <el-date-picker v-model="queryParams.date" size="mini"
+                                type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss"
+                                range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
+                />
+              </el-form-item>
+              <el-form-item label="" prop="supplierName">
+                <!--<el-input placeholder="请输入供货商" clearable size="small"
+                          v-model="queryParams.supplierName" @keyup.enter.native="handleQuery"/>-->
+                <el-select v-model="queryParams.supplierId" placeholder="供货商" filterable clearable>
+                  <el-option v-for="item in supplierArr" :key="item.id" :label="item.name" :value="item.id"/>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="快捷查询" prop="param">
+                <el-input style="width: 240px" placeholder="请输入药品名称、药斗号" clearable size="small"
+                          v-model="queryParams.param" @keyup.enter.native="handleQuery"/>
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+                <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+                <el-button size="mini" :disabled="selected.length === 0"
+                           @click="handleRecheck()"
+                           v-has-permi="['drugs-storage:into:recheck']"
+                >一键复核
+                </el-button>
+              </el-form-item>
+            </div>
+          </div>
+        </el-form>
+
+        <el-table v-loading="loading" :data="dataset" @selection-change="handleSelectionChange" border>
+          <el-table-column type="selection" width="50" align="center"/>
+          <el-table-column type="index" label="序号" align="center" width="55"/>
+          <el-table-column label="补货申请时间" align="center" prop="applyDate" :show-overflow-tooltip="true"/>
+          <el-table-column label="药品名称" align="center" prop="drugsName"/>
+          <el-table-column label="申请药斗" align="center" prop="locatorNum"/>
+          <el-table-column label="申请数量" align="center" prop="stock"/>
+          <el-table-column label="药品编码" align="center" prop="drugsCode"/>
+          <el-table-column label="规格" align="center" prop="specsName"/>
+          <el-table-column label="供货商" align="center" prop="supplierName" :show-overflow-tooltip="true"/>
+          <el-table-column label="批号" align="center" prop="approvalCode"/>
+          <el-table-column label="生产日期" align="center" prop="produceDate"/>
+          <el-table-column label="申请人" align="center" prop="applyUser"/>
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button type="primary" style="width: 40px" size="mini"
+                         @click="handleRecheck(scope.row)"
+                         v-has-permi="['drugs-storage:into:recheck']"
+              >复核
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination v-show="total > 0" :total="total"
+                    :page.sync="queryParams.pageNum"
+                    :limit.sync="queryParams.pageSize"
+                    @pagination="getList"/>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<style scoped lang="scss">
+.edit-dialog-wrapper {
+  ::v-deep {
+    .el-select {
+      width: 100%;
+    }
+
+    .el-input-group {
+      border-top-left-radius: 8px;
+      border-bottom-left-radius: 8px;
+
+      .el-input__inner {
+        border-radius: inherit;
+      }
+
+      .el-input-group__append {
+        border-top-right-radius: 8px;
+        border-bottom-right-radius: 8px;
+      }
+    }
+  }
+}
+</style>