Эх сурвалжийг харах

task-119 药斗药品信息
component: drugs/storage/cupboard
权限
- 设置 drugs-storage:cupboard:edit

cc12458 9 сар өмнө
parent
commit
07a830f887

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

@@ -0,0 +1,23 @@
+import request from '@/utils/request';
+
+// 查询药斗药品信息列表
+export function listMedicineStorageCupboard(query) {
+  const {pageNum, pageSize, ...data} = query;
+  return request({
+    url: `/yfc-admin/web/bucket/pageList`,
+    method: 'post',
+    data,
+    params: {pageNum, pageSize},
+  });
+}
+
+// 编辑药斗药品信息
+export function editMedicineStorageCupboard(model) {
+  if (typeof model.createTime === 'string') model.createTime = model.createTime.replace(' ', 'T');
+  if (typeof model.updateTime === 'string') model.updateTime = model.updateTime.replace(' ', 'T');
+  return request({
+    url: model.id ? `/yfc-admin/web/bucket/update` : `/yfc-admin/web/bucket/add`,
+    method: 'post',
+    data: model,
+  });
+}

+ 2 - 2
src/components/DictTag/index.vue

@@ -2,7 +2,7 @@
   <div>
     <template v-for="(item, index) in options">
       <template
-        v-if="values.includes(item.dictValue) || item.id==value"
+        v-if="values.includes(item.dictValue) || (item.id==value && value != null)"
       >
         <span
           v-if="item.listClass == 'default' || item.listClass == '' || !item.listClass"
@@ -51,4 +51,4 @@ export default {
 .el-tag + .el-tag {
   margin-left: 10px;
 }
-</style>
+</style>

+ 212 - 0
src/views/drugs/storage/cupboard.vue

@@ -0,0 +1,212 @@
+<script>
+import {editMedicineStorageCupboard, listMedicineStorageCupboard} from '@/api/drugs/storage';
+
+/**
+ * 药斗药品信息
+ */
+export default {
+  name: 'MedicineStorageCupboard',
+  components: {},
+  data() {
+    return {
+      chinesMedicineTypeArr: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+
+        drugType: void 0,
+        param: void 0,
+      },
+      loading: false,
+      dataset: [],
+      total: 0,
+      // 编辑参数
+      editTitle: '',
+      editOpen: false,
+      editModel: {
+        locatorNum: void 0,
+        capacity: void 0,
+      },
+      editRules: {
+        capacity: [{required: true, message: '承载量不能为空', trigger: 'blur'}],
+        locatorNum: [{required: true, message: '药斗号不能为空', trigger: 'blur'}],
+      },
+      editError: '',
+      submitting: false,
+
+      // 选择的
+      selected: [],
+    };
+  },
+  created() {
+    this.getDicts('chinese_medicine_type').then((res) => {this.chinesMedicineTypeArr = res.data;});
+    this.resetQuery();
+  },
+  methods: {
+    async getList() {
+      this.loading = true;
+      try {
+        const res = await listMedicineStorageCupboard(this.queryParams);
+        this.dataset = res.rows;
+        this.total = res.total;
+      } catch (e) {}
+      this.loading = false;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm');
+      this.queryParams.pharmacyId = window.localStorage.getItem("pharmacyId");
+      this.handleQuery();
+    },
+    handleSelectionChange(selection) {
+      this.selected = [...selection];
+    },
+
+    async handleEdit(model) {
+      this.editModel = Object.assign({
+        locatorNum: void 0,
+        capacity: void 0,
+      }, model);
+
+      this.editTitle = model.drugsName || `设置`;
+      this.editOpen = true;
+      this.editError = '';
+      this.$nextTick(() => {
+        this.$refs['editForm'].clearValidate();
+      });
+    },
+    async handleEditSubmit() {
+      this.editError = '';
+      const valid = await this.$refs['editForm'].validate().then(() => true, (err) => {
+        this.$message.warning({showClose: true, message: `请补充完整表单`});
+        return false;
+      });
+      if (!valid) return;
+
+      this.submitting = true;
+      try {
+        await editMedicineStorageCupboard(this.editModel);
+        this.$message.success('保存成功');
+        this.editOpen = false;
+        await this.getList();
+      } catch (e) {
+        this.editError = e.message;
+      }
+      this.submitting = false;
+    },
+  },
+};
+</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="param">
+                <el-input style="width: 240px" placeholder="请输入药品名称、药斗号" clearable size="small"
+                          v-model="queryParams.param" @keyup.enter.native="handleQuery"/>
+              </el-form-item>
+              <el-form-item label="" prop="drugType">
+                <el-select v-model="queryParams.drugType" placeholder="中药类型" filterable clearable>
+                  <el-option :label="item.dictLabel" :value="item.dictValue" v-for="item in chinesMedicineTypeArr"
+                             :key="item.dictCode"></el-option>
+                </el-select>
+              </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-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="drugsName"/>
+          <el-table-column label="规格" align="center" prop="specsName"/>
+          <el-table-column label="产地" align="center" prop="placeName" :show-overflow-tooltip="true"/>
+          <el-table-column label="单位" align="center" prop="unit"/>
+          <el-table-column label="中药类型" align="center" prop="drugType" :show-overflow-tooltip="true">
+            <template slot-scope="scope">
+              <dict-tag :options="chinesMedicineTypeArr" :value="scope.row.drugType"/>
+            </template>
+          </el-table-column>
+          <el-table-column label="供货商" align="center" prop="supplierName" :show-overflow-tooltip="true"/>
+          <el-table-column label="药斗号" align="center" prop="locatorNum"/>
+          <el-table-column label="承载量" align="center" prop="capacity"/>
+          <el-table-column label="库存量" align="center" prop="stock"/>
+          <el-table-column label="修改人" align="center" prop="updateBy"/>
+          <el-table-column label="修改时间" align="center" prop="updateTime" :show-overflow-tooltip="true"/>
+          <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="handleEdit(scope.row)"
+                         v-has-permi="['drugs-storage:cupboard:edit']"
+              >设置
+              </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>
+    <el-dialog class="edit-dialog-wrapper" :title="editTitle" :visible.sync="editOpen" width="600px" append-to-body>
+      <el-form ref="editForm" :model="editModel" :rules="editRules" label-width="100px" @submit="handleEditSubmit()">
+        <el-form-item label="承载量" prop="capacity">
+          <el-input v-model.number="editModel.capacity" placeholder="请输入承载量"/>
+        </el-form-item>
+        <el-form-item label="药斗号" prop="locatorNum">
+          <el-input v-model="editModel.locatorNum" placeholder="请输入药斗号" maxlength="30"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <div style="display: flex;justify-content: space-between;align-items: center;">
+          <div style="color: #ff4949;">{{ editError }}</div>
+          <div>
+            <el-button type="primary" :loading="submitting" @click="handleEditSubmit()">保 存</el-button>
+            <el-button :disabled="submitting" @click="editOpen = false;">取 消</el-button>
+          </div>
+        </div>
+      </div>
+    </el-dialog>
+  </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>