Browse Source

物料基本档案-封装物料类别维护组件

002390 1 year ago
parent
commit
ea212e2334

+ 5 - 3
src/views/material/basicFile/index.vue

@@ -65,6 +65,10 @@
             >
           </el-button-group>
         </el-col>
+
+        <!-- <el-col :span="1.5">
+          <whlbButton :data="checkedList" :size="size"></whlbButton>
+        </el-col> -->
       </el-row>
 
       <div
@@ -251,6 +255,7 @@ export default {
     ElSuperSearch: () => import("@/components/super-search/index.vue"),
     ElDictTag: () => import("@/components/DictTag/index.vue"),
     IsUsing: () => import("./isUsing/index.vue"),
+    whlbButton: () => import("./wei-hu-lei-bie/index.vue"),
   },
   data() {
     const params = this.$init.params(SearchColumns);
@@ -389,7 +394,6 @@ export default {
     },
     // 重置查询条件
     handleResetQuery() {
-
       this.queryParams.pageNum = 1;
 
       this.queryParams.pageSize = 100;
@@ -601,8 +605,6 @@ export default {
             "",
         };
 
-        console.log(param, "param--------------");
-
         let { code, data } = await materialApi.materialList(param, page);
 
         if (code == 200) {

+ 62 - 0
src/views/material/basicFile/wei-hu-lei-bie/columns.js

@@ -0,0 +1,62 @@
+// import materialApi from "@/api/material/basic";
+
+// const getColumns = async (templateCode) => {
+//   const columns = [];
+//   // material_medcine_item
+//   try {
+//     let { code, data } = await materialApi.tagList({ templateCode });
+//     if (code === 200) {
+//       columns = data.map(item => {
+//         if (item.show) {
+//           return {
+//             item: {
+//               key: item.prop,
+//               title: item.title,
+//             },
+//             attr: {
+//               is: 'el-input',
+//               readonly: true,
+//             }
+//           }
+//         }
+//       })
+//     }
+//   } catch (error) {
+
+//   }
+//   return columns;
+// }
+// export default columns = getColumns('material_medcine_item');
+const Columns = [
+  {
+    item: {
+      key: "drugId",
+      title: "药品类别"
+    },
+    attr: {
+      is: "el-input",
+      readonly: true,
+    }
+  },
+  {
+    item: {
+      key: "drugCode",
+      title: "药品类别编码"
+    },
+    attr: {
+      is: "el-input",
+      readonly: true,
+    }
+  },
+  {
+    item: {
+      key: "drugName",
+      title: "药品类别名称"
+    },
+    attr: {
+      is: "el-input",
+      readonly: true,
+    }
+  },
+]
+export default Columns

+ 226 - 0
src/views/material/basicFile/wei-hu-lei-bie/index.vue

@@ -0,0 +1,226 @@
+<script>
+import Columns from "./columns";
+import materialApi from "@/api/material/basic";
+export default {
+  name: "WeiHuLeiBie",
+  props: {
+    data: {
+      type: Array,
+      required: true,
+    },
+  },
+  components: {
+    ElSuperUxTable: () => import("@/components/super-ux-table/index.vue"),
+    ElPopoverTreeSelect: () =>
+      import("@/components/popover-tree-select/index.vue"),
+  },
+  data() {
+    const materialType = this.$init.params(Columns);
+    return {
+      title: "维护物料类别",
+      visible: false,
+      loading: false,
+      tableData: [],
+      delDemandItemList: [],
+      Columns: Columns,
+      // 维护物料类别
+      materialType: materialType,
+    };
+  },
+  computed: {
+    innerValue: {
+      get() {
+        let { data } = this.$props;
+        return data[0];
+      },
+      set() {},
+    },
+    disabled: {
+      get() {
+        let { data } = this.$props;
+        if (data.length === 1) {
+          return false;
+        }
+        return true;
+      },
+      set() {},
+    },
+  },
+  watch: {},
+  methods: {
+    //
+    open() {
+      this.visible = true;
+      this.fetchItem();
+    },
+    async fetchItem() {
+      let materialId = this.innerValue.id;
+      try {
+        this.loading = true;
+        let {
+          code,
+          data: {
+            tableBody: { rows },
+          },
+        } = await materialApi.medcineitemList({ materialId });
+        if (code === 200) {
+          this.tableData = rows;
+        }
+      } catch (error) {
+      } finally {
+        this.loading = false;
+      }
+      // materialApi.medcineitemList({ materialId }).then((res) => {
+      //   this.materialType.loading = false;
+      //   console.log(res, "根据物料id获取物料类别维护列表");
+      //   if (res.code == 200) {
+      //     _this.materialType.value = res.data.tableBody.rows;
+      //   }
+      // });
+    },
+    // 保存
+    async save() {
+      let { innerValue, tableData, delDemandItemList } = this;
+      if (tableData.length) {
+        try {
+          let list = [];
+          list.push(...tableData, ...delDemandItemList);
+
+          let params = {
+            materialId: innerValue.id,
+            medcineItems: list,
+          };
+          console.log(params, "params");
+          // let { code, msg } = await materialApi.medcineitemBatchSave(params);
+          // if (code === 200) {
+          // }
+        } catch (error) {}
+      } else {
+        this.$message.warning({
+          message: "不能保存空数据!",
+        });
+      }
+    },
+    // 取消
+    cancal() {
+      this.visible = false;
+    },
+    // 增行
+    useRowAdd() {
+      let { open } = this.$refs.materialTypeTree;
+      open();
+    },
+
+    changeMaterialType() {
+      let { drugId } = this.materialType;
+
+      let isExist = this.tableData.find((item) => item.drugId === drugId);
+
+      if (isExist) {
+        this.$message.warning({
+          message: "请勿重复选择",
+        });
+      } else {
+        this.tableData.push({
+          ...this.materialType,
+          delFlag: "0",
+        });
+      }
+    },
+    // 删行
+    useRowRemove(scope) {
+      scope.row.delFlag = "2";
+
+      let delList = [];
+
+      delList = this.tableData.filter((item) => {
+        return item.delFlag == "2";
+      });
+      this.tableData = this.tableData.filter((item) => {
+        return item.delFlag == "0";
+      });
+      this.delDemandItemList.push(...delList);
+    },
+  },
+  created() {},
+};
+</script>
+
+<template>
+  <el-button :size="$attrs.size" :disabled="disabled" @click="open">
+    {{ title }}
+    <el-dialog
+      v-loading="loading"
+      :show-close="false"
+      :visible.sync="visible"
+      append-to-body
+      width="55%"
+    >
+      <el-row type="flex" class="row-bg" justify="space-between" slot="title">
+        <el-col>
+          <h3 style="line-height: 0">{{ title }}</h3>
+        </el-col>
+        <el-col style="text-align: end">
+          <el-button
+            :size="$attrs.size"
+            @click="save"
+            type="primary"
+            v-hasPermi="['system:material:add']"
+            >保存</el-button
+          >
+          <el-button :size="$attrs.size" @click="cancal">取消</el-button>
+        </el-col>
+      </el-row>
+      <el-super-ux-table
+        v-model="tableData"
+        :height="420"
+        ref="MaterialType"
+        :columns="Columns"
+        :size="$attrs.size"
+      >
+        <ux-table-column fixed="right" title="操作" width="80" align="center">
+          <template slot="header" slot-scope="scope">
+            <el-button type="text" :size="$attrs.size" @click="useRowAdd">
+              增行
+              <el-popover-tree-select
+                ref="materialTypeTree"
+                v-show="false"
+                :size="$attrs.size"
+                v-model="materialType.drugName"
+                :source.sync="materialType"
+                referName="MEDICINE_DRUG"
+                valueKey="name"
+                :dataMapping="{
+                  drugCode: 'code',
+                  drugId: 'id',
+                }"
+                :defaultProps="{
+                  label: function (data, node) {
+                    return data.code + '' + data.name;
+                  },
+                  children: 'children',
+                }"
+                @change="changeMaterialType"
+              ></el-popover-tree-select>
+            </el-button>
+          </template>
+          <template slot-scope="scope">
+            <el-button
+              type="text"
+              :size="$attrs.size"
+              @click.native.prevent="useRowRemove(scope)"
+            >
+              删除
+            </el-button>
+          </template>
+        </ux-table-column>
+      </el-super-ux-table>
+    </el-dialog>
+  </el-button>
+</template>
+
+<style scoped>
+>>> .el-dialog__body {
+  padding: 0 20px 20px;
+}
+</style>

File diff suppressed because it is too large
+ 469 - 463
src/views/purchase/purchase-order/column.js


Some files were not shown because too many files changed in this diff