浏览代码

修改耗材信息首页

余思翰 5 个月前
父节点
当前提交
fc47ff6cc6

+ 5
- 3
oa-ui/src/views/oa/declare/index.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: wrh
3 3
  * @Date: 2024-08-14 14:24:11
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-10-21 15:00:50
5
+ * @LastEditTime: 2024-10-21 17:31:27
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -161,7 +161,7 @@
161 161
           <el-input v-model="form.coefficient" placeholder="请输入系数" @blur="predictMoney(this.form)" />
162 162
         </el-form-item>
163 163
         <el-form-item label="预估绩效">
164
-         <el-tag type="warning">{{ predictMoney(this.form) }}</el-tag>
164
+          <el-tag type="warning">{{ predictMoney(this.form) }}</el-tag>
165 165
         </el-form-item>
166 166
       </el-form>
167 167
       <div slot="footer" class="dialog-footer">
@@ -232,7 +232,9 @@ export default {
232 232
     /** 查询工作填报列表 */
233 233
     getList() {
234 234
       this.loading = true;
235
-      this.queryParams.deptId = this.$store.getters.deptId;
235
+      if (this.$store.getters.deptId > 103) {
236
+        this.queryParams.deptId = this.$store.getters.deptId;
237
+      }
236 238
       listDeclare(this.queryParams).then(response => {
237 239
         this.declareList = response.rows;
238 240
         this.total = response.total;

+ 210
- 0
oa-ui/src/views/oa/material/components/buyInfo.vue 查看文件

@@ -0,0 +1,210 @@
1
+<template>
2
+  <div>
3
+    <el-empty description="请选择左边表格的耗材,显示对应的采购数据" v-if="!clickMaterial"></el-empty>
4
+    <el-row :gutter="10" class="mb8" v-if="clickMaterial">
5
+      <el-col :span="1.5">
6
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
7
+          v-hasPermi="['oa:material:add']">新增</el-button>
8
+      </el-col>
9
+    </el-row>
10
+    <el-table v-loading="buyloading" :data="buyList" v-if="clickMaterial" height="300px">
11
+      <el-table-column type="index" width="55" align="center" />
12
+      <el-table-column label="采购日期" align="center" prop="buyTime">
13
+        <template slot-scope="scope">
14
+          <span>{{ parseTime(scope.row.buyTime, '{y}-{m}-{d}') }}</span>
15
+        </template>
16
+      </el-table-column>
17
+      <el-table-column label="采购地点" align="center" prop="place" />
18
+      <el-table-column label="采购数量" align="center" prop="totalNum" />
19
+      <el-table-column label="单价" align="center" prop="price" />
20
+      <el-table-column label="总价" align="center" prop="amount" />
21
+      <el-table-column label="采购人" align="center" prop="buyUser.nickName" />
22
+      <el-table-column label="备注" align="center" prop="remark" />
23
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
24
+        <template slot-scope="scope">
25
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
26
+            v-hasPermi="['oa:buy:edit']">修改</el-button>
27
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
28
+            v-hasPermi="['oa:buy:remove']">删除</el-button>
29
+        </template>
30
+      </el-table-column>
31
+    </el-table>
32
+
33
+    <!-- 添加或修改cmc耗材购买对话框 -->
34
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
35
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
36
+        <el-form-item label="耗材名称" prop="materialId">
37
+          <el-tag>{{ clickMaterial }}</el-tag>
38
+        </el-form-item>
39
+        <el-form-item label="采购日期" prop="buyTime">
40
+          <el-date-picker clearable v-model="form.buyTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择采购日期">
41
+          </el-date-picker>
42
+        </el-form-item>
43
+        <el-form-item label="采购地点" prop="place">
44
+          <el-input v-model="form.place" placeholder="请输入采购地点" />
45
+        </el-form-item>
46
+        <el-form-item label="采购数量" prop="totalNum">
47
+          <el-input-number :controls="false" v-model="form.totalNum" placeholder="请输入采购数量" @blur="computeAmount()" />
48
+        </el-form-item>
49
+        <el-form-item label="单价" prop="price">
50
+          <el-input-number :controls="false" v-model="form.price" placeholder="请输入单价" @blur="computeAmount()" />
51
+        </el-form-item>
52
+        <el-form-item label="总价" prop="amount">
53
+          <el-tag>{{ form.amount }}</el-tag>
54
+        </el-form-item>
55
+        <el-form-item label="采购人" prop="buyer">
56
+          <el-select v-model="form.buyer" filterable clearable>
57
+            <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
58
+              :value="item.userId">
59
+            </el-option>
60
+          </el-select>
61
+        </el-form-item>
62
+        <el-form-item label="备注" prop="remark">
63
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
64
+        </el-form-item>
65
+      </el-form>
66
+      <div slot="footer" class="dialog-footer">
67
+        <el-button type="primary" @click="submitForm">确 定</el-button>
68
+        <el-button @click="cancel">取 消</el-button>
69
+      </div>
70
+    </el-dialog>
71
+  </div>
72
+</template>
73
+
74
+<script>
75
+import { listMaterialBuy, getMaterialBuy, delMaterialBuy, addMaterialBuy, updateMaterialBuy } from "@/api/oa/material/materialBuy";
76
+import ChooseMateral from '../chooseMateral.vue';
77
+export default {
78
+  components: { ChooseMateral },
79
+  props: {
80
+    clickRow: {
81
+      type: Object,
82
+      require: true,
83
+      default: {}
84
+    },
85
+    clickMaterial: {
86
+      type: String,
87
+      require: true,
88
+    }
89
+  },
90
+  data() {
91
+    return {
92
+      ids:[],
93
+      single: true,
94
+      // 非多个禁用
95
+      multiple: true,
96
+      open: false,
97
+      title: '',
98
+      buyloading: false,
99
+      buyList: [],
100
+      form: {},
101
+      rules: {},
102
+    }
103
+  },
104
+  watch: {
105
+    clickRow: {
106
+      handler(newVal) {
107
+        if (newVal) {
108
+          this.getList();
109
+        }
110
+      },
111
+      immediate: true,  // 在绑定时立即执行一次  
112
+      deep: true       // 深度监听对象的变化  
113
+    },
114
+  },
115
+  mounted() {
116
+    this.getList();
117
+  },
118
+  methods: {
119
+    getList() {
120
+      listMaterialBuy({ pageSize: 999,materialId: this.clickRow.materialId }).then(res => {
121
+        this.buyList = res.rows;
122
+        this.buyTotal = res.total
123
+        this.buyloading = false
124
+      })
125
+    },
126
+    /** 提交按钮 */
127
+    submitForm() {
128
+      this.$refs["form"].validate(valid => {
129
+        if (valid) {
130
+          if (this.form.buyId != null) {
131
+            updateMaterialBuy(this.form).then(response => {
132
+              this.$modal.msgSuccess("修改成功");
133
+              this.open = false;
134
+              this.getList();
135
+            });
136
+          } else {
137
+            this.form.materialId = this.clickRow.materialId
138
+            addMaterialBuy(this.form).then(response => {
139
+              this.$modal.msgSuccess("新增成功");
140
+              this.open = false;
141
+              this.getList();
142
+            });
143
+          }
144
+        }
145
+      });
146
+    },
147
+    // 取消按钮
148
+    cancel() {
149
+      this.open = false;
150
+    },
151
+    /** 新增按钮操作 */
152
+    handleAdd() {
153
+      this.open = true;
154
+      this.title = " 新增耗材购买信息";
155
+      this.reset();
156
+      this.computeAmount();
157
+    },
158
+    // 表单重置
159
+    reset() {
160
+      this.form = {
161
+        buyId: null,
162
+        materialId: null,
163
+        buyTime: null,
164
+        place: null,
165
+        totalNum: null,
166
+        price: null,
167
+        amount: null,
168
+        buyer: null,
169
+        remark: null
170
+      };
171
+      this.resetForm("form");
172
+    },
173
+    /** 修改按钮操作 */
174
+    handleUpdate(row) {
175
+      this.reset();
176
+      this.confirmMaterial(row.material)
177
+      const buyId = row.buyId || this.ids
178
+      getMaterialBuy(buyId).then(response => {
179
+        this.form = response.data;
180
+        this.open = true;
181
+        this.title = "修改耗材购买信息";
182
+      });
183
+    },
184
+    /** 删除按钮操作 */
185
+    handleDelete(row) {
186
+      const buyIds = row.buyId || this.ids;
187
+      this.$modal.confirm('是否确认删除cmc耗材购买编号为"' + buyIds + '"的数据项?').then(function () {
188
+        return delMaterialBuy(buyIds);
189
+      }).then(() => {
190
+        this.getList();
191
+        this.$modal.msgSuccess("删除成功");
192
+      }).catch(() => { });
193
+    },
194
+    computeAmount() {
195
+      let amount = (this.form.totalNum * this.form.price).toFixed(2);
196
+      this.$set(this.form, 'amount', amount);
197
+      this.$set(this.form, 'buyer', 17);
198
+    },
199
+    confirmMaterial(row) {
200
+      if (row) {
201
+        this.form.materialId = row.materialId;
202
+        if (this.$refs.form)
203
+          this.$refs.form.validateField('materialId')
204
+      }
205
+    },
206
+  },
207
+}
208
+</script>
209
+
210
+<style lang="scss" scoped></style>

+ 198
- 0
oa-ui/src/views/oa/material/components/giveInfo.vue 查看文件

@@ -0,0 +1,198 @@
1
+<template>
2
+  <div>
3
+    <el-empty description="请选择左边表格的耗材,显示对应的发放数据" v-if="!clickMaterial"></el-empty>
4
+    <el-row :gutter="10" class="mb8" v-if="clickMaterial">
5
+      <el-col :span="1.5">
6
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
7
+          v-hasPermi="['oa:material:add']">新增</el-button>
8
+      </el-col>
9
+    </el-row>
10
+    <el-table v-loading="giveloading" :data="giveList" v-if="clickMaterial" height="300px">
11
+      <el-table-column type="index" width="55" align="center" />
12
+      <el-table-column label="发放时间" align="center" prop="giveTime" width="180">
13
+        <template slot-scope="scope">
14
+          <span>{{ parseTime(scope.row.giveTime, '{y}-{m}-{d}') }}</span>
15
+        </template>
16
+      </el-table-column>
17
+      <el-table-column label="领用人" align="center" prop="acceptUser.nickName" />
18
+      <el-table-column label="领用部门" align="center" prop="dept.deptName" />
19
+      <el-table-column label="领用数量" align="center" prop="giveNum" />
20
+      <el-table-column label="备注" align="center" prop="remark" />
21
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
22
+        <template slot-scope="scope">
23
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
24
+            v-hasPermi="['oa:give:edit']">修改</el-button>
25
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
26
+            v-hasPermi="['oa:give:remove']">删除</el-button>
27
+        </template>
28
+      </el-table-column>
29
+    </el-table>
30
+
31
+    <!-- 添加或修改cmc耗材发放对话框 -->
32
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
33
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
34
+        <el-form-item label="耗材名称" prop="materialId">
35
+          <el-tag>{{ clickMaterial }}</el-tag>
36
+        </el-form-item>
37
+        <el-form-item label="发放时间" prop="giveTime">
38
+          <el-date-picker clearable v-model="form.giveTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择发放时间">
39
+          </el-date-picker>
40
+        </el-form-item>
41
+        <el-form-item label="领用人" prop="accepter">
42
+          <el-select v-model="form.accepter" filterable clearable>
43
+            <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
44
+              :value="item.userId">
45
+            </el-option>
46
+          </el-select>
47
+        </el-form-item>
48
+        <el-form-item label="领用部门" prop="useDept">
49
+          <el-select v-model="form.useDept" filterable clearable>
50
+            <el-option v-for="item in $store.state.user.deptList" :key="item.deptId" :label="item.deptName"
51
+              :value="item.deptId">
52
+            </el-option>
53
+          </el-select>
54
+        </el-form-item>
55
+        <el-form-item label="领用数量" prop="giveNum">
56
+          <el-input-number :controls="false" v-model="form.giveNum" placeholder="请输入领用数量" />
57
+        </el-form-item>
58
+        <el-form-item label="备注" prop="remark">
59
+          <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" />
60
+        </el-form-item>
61
+      </el-form>
62
+      <div slot="footer" class="dialog-footer">
63
+        <el-button type="primary" @click="submitForm">确 定</el-button>
64
+        <el-button @click="cancel">取 消</el-button>
65
+      </div>
66
+    </el-dialog>
67
+  </div>
68
+</template>
69
+
70
+<script>
71
+import { listMaterialGive, getMaterialGive, delMaterialGive, addMaterialGive, updateMaterialGive } from "@/api/oa/material/materialGive";
72
+export default {
73
+  props: {
74
+    clickRow: {
75
+      type: Object,
76
+      require: true,
77
+      default: {}
78
+    },
79
+    clickMaterial: {
80
+      type: String,
81
+      require: true,
82
+    }
83
+  },
84
+  data() {
85
+    return {
86
+      ids: [],
87
+      single: true,
88
+      // 非多个禁用
89
+      multiple: true,
90
+      open: false,
91
+      title: '',
92
+      giveloading: false,
93
+      giveList: [],
94
+      giveTotal: 0,
95
+      form: {},
96
+      rules: {},
97
+    }
98
+  },
99
+  watch: {
100
+    clickRow: {
101
+      handler(newVal) {
102
+        if (newVal) {
103
+          this.getList();
104
+        }
105
+      },
106
+      immediate: true,  // 在绑定时立即执行一次  
107
+      deep: true       // 深度监听对象的变化  
108
+    },
109
+  },
110
+  mounted() {
111
+    this.getList();
112
+  },
113
+  methods: {
114
+    getList() {
115
+      listMaterialGive({ pageSize: 999, materialId: this.clickRow.materialId }).then(res => {
116
+        this.giveList = res.rows;
117
+        this.giveTotal = res.total
118
+        this.giveloading = false
119
+      })
120
+    },
121
+    /** 新增按钮操作 */
122
+    handleAdd() {
123
+      this.reset();
124
+      this.open = true;
125
+      this.title = "新增耗材发放记录";
126
+    },
127
+    // 表单重置
128
+    reset() {
129
+      this.form = {
130
+        giveId: null,
131
+        materialId: null,
132
+        giveTime: null,
133
+        accepter: null,
134
+        useDept: null,
135
+        giveNum: null,
136
+        remark: null
137
+      };
138
+      this.resetForm("form");
139
+    },
140
+    /** 修改按钮操作 */
141
+    handleUpdate(row) {
142
+      this.reset();
143
+      this.confirmMaterial(row.material)
144
+      const giveId = row.giveId || this.ids
145
+      getMaterialGive(giveId).then(response => {
146
+        this.form = response.data;
147
+        this.open = true;
148
+        this.title = "修改耗材发放记录";
149
+      });
150
+    },
151
+    // 取消按钮
152
+    cancel() {
153
+      this.open = false;
154
+      this.reset();
155
+    },
156
+    /** 提交按钮 */
157
+    submitForm() {
158
+      this.$refs["form"].validate(valid => {
159
+        if (valid) {
160
+          if (this.form.giveId != null) {
161
+            updateMaterialGive(this.form).then(response => {
162
+              this.$modal.msgSuccess("修改成功");
163
+              this.open = false;
164
+              this.getList();
165
+            });
166
+          } else {
167
+            this.form.materialId = this.clickRow.materialId
168
+            addMaterialGive(this.form).then(response => {
169
+              this.$modal.msgSuccess("新增成功");
170
+              this.open = false;
171
+              this.getList();
172
+            });
173
+          }
174
+        }
175
+      });
176
+    },
177
+    /** 删除按钮操作 */
178
+    handleDelete(row) {
179
+      const giveIds = row.giveId || this.ids;
180
+      this.$modal.confirm('是否确认删除cmc耗材发放编号为"' + giveIds + '"的数据项?').then(function () {
181
+        return delMaterialGive(giveIds);
182
+      }).then(() => {
183
+        this.getList();
184
+        this.$modal.msgSuccess("删除成功");
185
+      }).catch(() => { });
186
+    },
187
+    confirmMaterial(row) {
188
+      if (row) {
189
+        this.form.materialId = row.materialId;
190
+        if (this.$refs.form)
191
+          this.$refs.form.validateField('materialId')
192
+      }
193
+    },
194
+  }
195
+}
196
+</script>
197
+
198
+<style lang="scss" scoped></style>

+ 167
- 81
oa-ui/src/views/oa/material/index.vue 查看文件

@@ -1,72 +1,88 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-08-01 08:58:15
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-10-22 15:39:11
6
+-->
1 7
 <template>
2
-  <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4
-      <el-form-item label="耗材编号" prop="materialId">
5
-        <el-input v-model="queryParams.materialId" placeholder="请输入耗材编号" clearable @keyup.enter.native="handleQuery" />
6
-      </el-form-item>
7
-      <el-form-item label="耗材名称" prop="name">
8
-        <el-input v-model="queryParams.name" placeholder="请输入耗材名称" clearable @keyup.enter.native="handleQuery" />
9
-      </el-form-item>
10
-      <el-form-item label="规格型号" prop="series">
11
-        <el-input v-model="queryParams.series" placeholder="请输入规格型号" clearable @keyup.enter.native="handleQuery" />
12
-      </el-form-item>
13
-      <el-form-item label="耗材品牌" prop="brand">
14
-        <el-input v-model="queryParams.brand" placeholder="请输入耗材品牌" clearable @keyup.enter.native="handleQuery" />
15
-      </el-form-item>
16
-      <el-form-item label="存放地点" prop="place">
17
-        <el-input v-model="queryParams.place" placeholder="请输入存放地点" clearable @keyup.enter.native="handleQuery" />
18
-      </el-form-item>
19
-      <el-form-item>
20
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
21
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
22
-      </el-form-item>
23
-    </el-form>
24
-
25
-    <el-row :gutter="10" class="mb8">
26
-      <el-col :span="1.5">
27
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
28
-          v-hasPermi="['oa:material:add']">新增</el-button>
29
-      </el-col>
30
-      <el-col :span="1.5">
31
-        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
32
-          v-hasPermi="['oa:material:edit']">修改</el-button>
33
-      </el-col>
34
-      <el-col :span="1.5">
35
-        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
36
-          v-hasPermi="['oa:material:remove']">删除</el-button>
37
-      </el-col>
38
-      <el-col :span="1.5">
39
-        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
40
-          v-hasPermi="['oa:material:export']">导出</el-button>
41
-      </el-col>
42
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
43
-    </el-row>
44
-
45
-    <el-table v-loading="loading" :data="materialList" @selection-change="handleSelectionChange">
46
-      <el-table-column type="selection" width="55" align="center" />
47
-      <el-table-column label="耗材编号" align="center" prop="materialId" />
48
-      <el-table-column label="耗材名称" align="center" prop="name" />
49
-      <!-- <el-table-column label="耗材类别" align="center" prop="type" /> -->
50
-      <el-table-column label="规格型号" align="center" prop="series" />
51
-      <el-table-column label="耗材品牌" align="center" prop="brand" />
52
-      <el-table-column label="存放地点" align="center" prop="place" />
53
-      <el-table-column label="剩余数量" align="center" prop="remain" />
54
-      <el-table-column label="单位" align="center" prop="unit" />
55
-      <el-table-column label="备注" align="center" prop="remark" />
56
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
57
-        <template slot-scope="scope">
58
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
59
-            v-hasPermi="['oa:material:edit']">修改</el-button>
60
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
61
-            v-hasPermi="['oa:material:remove']">删除</el-button>
62
-        </template>
63
-      </el-table-column>
64
-    </el-table>
8
+  <div class="app-container" style="height:95vh;background-color:#f0f4f7">
9
+    <div class="warpper">
10
+      <div class="left mr10">
11
+        <div class="titles mb20">耗材信息</div>
12
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
13
+          label-width="68px">
14
+          <el-form-item label="耗材名称" prop="name">
15
+            <el-input v-model="queryParams.name" placeholder="请输入耗材名称" clearable @keyup.enter.native="handleQuery" />
16
+          </el-form-item>
17
+          <el-form-item label="规格型号" prop="series">
18
+            <el-input v-model="queryParams.series" placeholder="请输入规格型号" clearable @keyup.enter.native="handleQuery" />
19
+          </el-form-item>
20
+          <el-form-item label="耗材品牌" prop="brand">
21
+            <el-input v-model="queryParams.brand" placeholder="请输入耗材品牌" clearable @keyup.enter.native="handleQuery" />
22
+          </el-form-item>
23
+          <el-form-item>
24
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
25
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
26
+          </el-form-item>
27
+        </el-form>
28
+        <el-row :gutter="10" class="mb8">
29
+          <el-col :span="1.5">
30
+            <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
31
+              v-hasPermi="['oa:material:add']">新增</el-button>
32
+          </el-col>
33
+          <el-col :span="1.5">
34
+            <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
35
+              v-hasPermi="['oa:material:edit']">修改</el-button>
36
+          </el-col>
37
+          <el-col :span="1.5">
38
+            <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
39
+              v-hasPermi="['oa:material:remove']">删除</el-button>
40
+          </el-col>
41
+          <el-col :span="1.5">
42
+            <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
43
+              v-hasPermi="['oa:material:export']">导出</el-button>
44
+          </el-col>
45
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
46
+        </el-row>
47
+        <el-table v-loading="loading" :data="materialList" @selection-change="handleSelectionChange" height="550px"
48
+          highlight-current-row @row-click="handleRow">
49
+          <el-table-column type="selection" width="55" align="center" />
50
+          <el-table-column label="耗材编号" align="center" prop="materialId" />
51
+          <el-table-column label="耗材名称" align="center" prop="name" />
52
+          <!-- <el-table-column label="耗材类别" align="center" prop="type" /> -->
53
+          <el-table-column label="规格型号" align="center" prop="series" />
54
+          <el-table-column label="耗材品牌" align="center" prop="brand" />
55
+          <el-table-column label="存放地点" align="center" prop="place" />
56
+          <el-table-column label="剩余数量" align="center" prop="remain" />
57
+          <el-table-column label="单位" align="center" prop="unit" />
58
+          <el-table-column label="备注" align="center" prop="remark" />
59
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
60
+            <template slot-scope="scope">
61
+              <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
62
+                v-hasPermi="['oa:material:edit']">修改</el-button>
63
+              <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
64
+                v-hasPermi="['oa:material:remove']">删除</el-button>
65
+            </template>
66
+          </el-table-column>
67
+        </el-table>
68
+        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :autoScroll="false"
69
+          :limit.sync="queryParams.pageSize" @pagination="getList" />
70
+      </div>
65 71
 
66
-    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
67
-      @pagination="getList" />
72
+      <div class="right">
73
+        <div class="right-top">
74
+          <div class="titles">采购信息</div>
75
+          <div class="sub-title mb20">当前点击耗材:{{ clickMaterial ? clickMaterial : '未选择' }}</div>
76
+          <buy-info :clickRow="clickRow" :clickMaterial="clickMaterial"></buy-info>
77
+        </div>
78
+        <div class="right-bottom mt10">
79
+          <div class="titles">发放信息</div>
80
+          <div class="sub-title mb20">当前点击耗材:{{ clickMaterial ? clickMaterial : '未选择' }}</div>
81
+          <give-info :clickRow="clickRow" :clickMaterial="clickMaterial"></give-info>
82
+        </div>
83
+      </div>
84
+    </div>
68 85
 
69
-    <!-- 添加或修改cmc耗材信息对话框 -->
70 86
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
71 87
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
72 88
         <el-form-item label="耗材名称" prop="name">
@@ -82,13 +98,14 @@
82 98
           <el-input v-model="form.place" placeholder="请输入存放地点" />
83 99
         </el-form-item>
84 100
         <el-form-item label="剩余数量" prop="remain">
85
-          {{ form.remain }}
101
+          <el-input v-model="form.remain" v-if="form.materialId"></el-input>
102
+          <span v-else>{{ form.remain }}</span>
86 103
         </el-form-item>
87 104
         <el-form-item label="单位" prop="unit">
88 105
           <el-input v-model="form.unit" placeholder="请输入单位" />
89 106
         </el-form-item>
90 107
         <el-form-item label="备注" prop="remark">
91
-          <el-input v-model="form.remark" placeholder="请输入备注" />
108
+          <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" />
92 109
         </el-form-item>
93 110
       </el-form>
94 111
       <div slot="footer" class="dialog-footer">
@@ -101,30 +118,25 @@
101 118
 
102 119
 <script>
103 120
 import { listMaterial, getMaterial, delMaterial, addMaterial, updateMaterial } from "@/api/oa/material/material";
121
+import { listMaterialBuy, getMaterialBuy, delMaterialBuy, addMaterialBuy, updateMaterialBuy } from "@/api/oa/material/materialBuy";
122
+import { listMaterialGive, getMaterialGive, delMaterialGive, addMaterialGive, updateMaterialGive } from "@/api/oa/material/materialGive";
123
+import buyInfo from './components/buyInfo.vue';
124
+import GiveInfo from './components/giveInfo.vue';
104 125
 
105 126
 export default {
127
+  components: { buyInfo, GiveInfo },
106 128
   name: "Material",
107 129
   data() {
108 130
     return {
109
-      // 遮罩层
110 131
       loading: true,
111
-      // 选中数组
112 132
       ids: [],
113
-      // 非单个禁用
114 133
       single: true,
115
-      // 非多个禁用
116 134
       multiple: true,
117
-      // 显示搜索条件
118 135
       showSearch: true,
119
-      // 总条数
120 136
       total: 0,
121
-      // cmc耗材信息表格数据
122 137
       materialList: [],
123
-      // 弹出层标题
124 138
       title: "",
125
-      // 是否显示弹出层
126 139
       open: false,
127
-      // 查询参数
128 140
       queryParams: {
129 141
         pageNum: 1,
130 142
         pageSize: 50,
@@ -136,11 +148,17 @@ export default {
136 148
         remain: null,
137 149
         unit: null,
138 150
       },
139
-      // 表单参数
140 151
       form: {},
141
-      // 表单校验
142 152
       rules: {
143
-      }
153
+      },
154
+      buyList: [],
155
+      buyloading: false,
156
+      buyTotal: 0,
157
+      giveList: [],
158
+      giveloading: false,
159
+      giveTotal: 0,
160
+      clickMaterial: undefined,
161
+      clickRow: {}
144 162
     };
145 163
   },
146 164
   created() {
@@ -244,7 +262,75 @@ export default {
244 262
       this.download('oa/material/export', {
245 263
         ...this.queryParams
246 264
       }, `material_${new Date().getTime()}.xlsx`)
265
+    },
266
+    handleRow(row) {
267
+      this.buyloading = true
268
+      let brand = row.brand
269
+      let name = row.name
270
+      let series = row.series
271
+      if (brand && series) {
272
+        this.clickMaterial = name + '-' + brand + '(' + series + ')'
273
+      } else if (brand == null && series != null) {
274
+        this.clickMaterial = name + '(' + series + ')'
275
+      } else if (brand != null && series == null) {
276
+        this.clickMaterial = name + '-' + brand
277
+      } else {
278
+        this.clickMaterial = name
279
+      }
280
+      this.clickRow = row
281
+      listMaterialGive({ materialId: row.materialId }).then(res => {
282
+        this.giveList = res.rows;
283
+        this.giveTotal = res.total
284
+        this.giveloading = false
285
+      })
247 286
     }
248 287
   }
249 288
 };
250 289
 </script>
290
+
291
+<style lang="scss" scoped>
292
+.warpper {
293
+  width: 100%;
294
+  display: flex;
295
+
296
+  .titles {
297
+    font-family: 'puhuiti';
298
+    font-size: 18px;
299
+    line-height: 20px;
300
+    padding-left: 10px;
301
+    border-left: 3px solid var(--current-color);
302
+    // color: var(--current-color);
303
+  }
304
+
305
+  .sub-title {
306
+    font-size: 12px;
307
+    color: #a09a9a;
308
+    padding-left: 13px;
309
+  }
310
+
311
+  .left {
312
+    flex: 1;
313
+    background: #fff;
314
+    padding: 10px;
315
+    height: 810px;
316
+  }
317
+
318
+  .right {
319
+    flex: 1;
320
+
321
+    .right-top {
322
+      width: 100%;
323
+      height: 400px;
324
+      background: #fff;
325
+      padding: 10px;
326
+    }
327
+
328
+    .right-bottom {
329
+      width: 100%;
330
+      height: 400px;
331
+      background: #fff;
332
+      padding: 10px;
333
+    }
334
+  }
335
+}
336
+</style>

正在加载...
取消
保存