Procházet zdrojové kódy

Merge branch 'sxw-skeleton' of http://101.36.160.140:21044/emergency-report/report-vue into sxw-skeleton

sunxuewei před 2 roky
rodič
revize
8396fc6064

+ 30 - 0
src/api/keshihua/detail.ts

@@ -0,0 +1,30 @@
1
+import request from "@/api";
2
+// const api = "/api"
3
+const api = "/admin"
4
+// 物资储备情况
5
+export function getMaterial(data: any) {
6
+  return request({
7
+    url: api + "/vis/get-material-situation?name=" + data.name,
8
+    method: "get"
9
+  });
10
+}
11
+// 出入库记录
12
+// export function getRecords(data: any) {
13
+//   return request({
14
+//     url: api + "/vis/entry_exit_records?type=" + data.type + "&name=" + data.name,
15
+//     method: "get"
16
+//   });
17
+// }
18
+export function getRecords(data: any) {
19
+  return request({
20
+    url: api + "/vis/entry_exit_records?type=" + data.type,
21
+    method: "get"
22
+  });
23
+}
24
+// 损耗记录
25
+export function getLossRecord(data: any) {
26
+  return request({
27
+    url: api + "/vis/getLossRecord?name=" + data.name,
28
+    method: "get"
29
+  });
30
+}

+ 30 - 5
src/api/keshihua/index.ts

@@ -1,7 +1,32 @@
1 1
 import request from "@/api";
2
+/* 地图库点信息*/
2 3
 export function GetKuiDian() {
3
-    return request({
4
-      url: "/admin/vis/getMapPoint",
5
-      method: "get"
6
-    });
7
-  }
4
+  return request({
5
+    url: "/api/vis/getMapPoint",
6
+    method: "get"
7
+  });
8
+}
9
+/* 应急物资分类*/
10
+// 物资入库情况
11
+export function getInventoryReceiptStatus() {
12
+  return request({
13
+    url: "/api/vis/getInventoryReceiptStatus",
14
+    method: "get"
15
+  });
16
+}
17
+// 物资出库情况
18
+export function getInventoryDispatchStatus() {
19
+  return request({
20
+    url: "/api/vis/getInventoryDispatchStatus",
21
+    method: "get"
22
+  });
23
+}
24
+/* 物资可用统计*/
25
+
26
+/* 物资调用情况*/
27
+
28
+/* 出入库统计*/
29
+
30
+/* 物资使用情况排名*/
31
+
32
+/* 物资损耗统计*/

+ 47 - 117
src/views/DataVisualization/detailPage/components/crkjl.vue

@@ -2,25 +2,25 @@
2 2
 <template>
3 3
   <div class="box">
4 4
     <div class="list" v-for="(item, index) in tableData" :key="index">
5
-      <div :class="'list_left list_left_' + index"></div>
5
+      <div :class="'list_left list_left_' + item.parentID"></div>
6 6
       <div :class="'list_right list_right_' + index">
7 7
         <div class="crkjl">
8
-          {{ item.type }}
8
+          {{ item.type == "1" ? "入库" : "出库" }}
9 9
         </div>
10 10
         <div class="crksf">
11
-          {{ item.province }}
11
+          {{ item.shengName }}
12 12
         </div>
13 13
         <div class="list_card card_top">
14
-          <div class="card_left">{{ item.name }}</div>
15
-          <div class="card_right">{{ item.number }}</div>
14
+          <div class="card_left" :title="item.materialName">{{ item.materialName }}</div>
15
+          <div class="card_right">{{ item.quantity }}</div>
16 16
         </div>
17 17
         <div class="list_card card_line">
18 18
           <div class="card_left"></div>
19 19
           <div class="card_right"></div>
20 20
         </div>
21 21
         <div class="list_card card_bottom">
22
-          <div class="card_left">{{ item.data }}</div>
23
-          <div class="card_right">{{ item.state }}</div>
22
+          <div class="card_left">{{ item.specs }}</div>
23
+          <div class="card_right">{{ item.boundTime }}</div>
24 24
         </div>
25 25
       </div>
26 26
     </div>
@@ -29,117 +29,41 @@
29 29
 
30 30
 <script setup lang="ts">
31 31
 import { defineProps, onMounted, ref, reactive, toRefs, defineExpose } from "vue";
32
+import { getRecords } from "@/api/keshihua/detail";
33
+import { useRoute } from "vue-router";
32 34
 
35
+let route = useRoute();
33 36
 const props = defineProps({ msg: String });
34 37
 const data = reactive({
35
-  tableData: [{}],
36
-  tableDataCopy: [
37
-    {
38
-      name: "被服",
39
-      number: "12个",
40
-      data: "4*5",
41
-      state: "2023-1-8",
42
-      type: "出库",
43
-      province: "天津市"
44
-    },
45
-    {
46
-      name: "床具",
47
-      number: "12个",
48
-      data: "4*5",
49
-      state: "2023-1-8",
50
-      type: "出库",
51
-      province: "天津市"
52
-    },
53
-    {
54
-      name: "用具",
55
-      number: "12个",
56
-      data: "4*5",
57
-      state: "2023-1-8",
58
-      type: "出库",
59
-      province: "天津市"
60
-    },
61
-    {
62
-      name: "帐篷",
63
-      number: "12个",
64
-      data: "4*5",
65
-      state: "2023-1-8",
66
-      type: "出库",
67
-      province: "天津市"
68
-    },
69
-    {
70
-      name: "救生器材",
71
-      number: "12个",
72
-      data: "4*5",
73
-      state: "2023-1-8",
74
-      type: "出库",
75
-      province: "天津市"
76
-    },
77
-    {
78
-      name: "抢险物料",
79
-      number: "12个",
80
-      data: "4*5",
81
-      state: "2023-1-8",
82
-      type: "出库",
83
-      province: "天津市"
84
-    },
85
-    {
86
-      name: "供水器具",
87
-      number: "12个",
88
-      data: "4*5",
89
-      state: "2023-1-8",
90
-      type: "入库",
91
-      province: "天津市"
92
-    },
93
-    {
94
-      name: "排水设备",
95
-      number: "12个",
96
-      data: "4*5",
97
-      state: "2023-1-8",
98
-      type: "入库",
99
-      province: "天津市"
100
-    },
101
-    {
102
-      name: "抢险机具",
103
-      number: "12个",
104
-      data: "4*5",
105
-      state: "2023-1-8",
106
-      type: "入库",
107
-      province: "天津市"
108
-    },
109
-    {
110
-      name: "防洪铅丝网",
111
-      number: "12个",
112
-      data: "4*5",
113
-      state: "2023-1-8",
114
-      type: "入库",
115
-      province: "天津市"
116
-    }
117
-  ],
118
-  selectType: "全部",
38
+  tableData: [],
39
+  selectType: "0",
119 40
   selectValue: ""
120 41
 });
121
-let { tableData, selectType, selectValue, tableDataCopy } = toRefs(data);
42
+let { tableData, selectType, selectValue } = toRefs(data);
122 43
 
44
+const getList = () => {
45
+  const data = reactive({
46
+    // type: selectType.value,
47
+    // name: route.query.name ? route.query.name : ""
48
+    type: ""
49
+  });
50
+  getRecords(data).then((res: any) => {
51
+    if (res) {
52
+      tableData.value = res;
53
+    }
54
+  });
55
+};
123 56
 const selectHandleCh = (val: any) => {
124
-  console.log(val, "val");
125
-  if (val == "出库记录") {
126
-    tableData.value = tableDataCopy.value.filter((item) => {
127
-      return item.type == "出库";
128
-    });
129
-  } else if (val == "入库记录") {
130
-    tableData.value = tableDataCopy.value.filter((item) => {
131
-      return item.type == "入库";
132
-    });
133
-  } else {
134
-    tableData.value = { ...tableDataCopy.value };
135
-  }
57
+  selectType.value = val;
58
+  getList();
136 59
 };
137
-tableData.value = { ...tableDataCopy.value };
138 60
 
139 61
 defineExpose({
140
-  selectHandleCh,
62
+  selectHandleCh
63
+});
64
+onMounted(() => {
65
+  getList();
141 66
 });
142
-onMounted(() => {});
143 67
 </script>
144 68
 
145 69
 <style scoped>
@@ -222,23 +146,28 @@ onMounted(() => {});
222 146
 .card_top .card_right {
223 147
   line-height: 200%;
224 148
 }
149
+.card_top .card_left {
150
+  white-space: nowrap;
151
+  overflow: hidden;
152
+  text-overflow: ellipsis;
153
+}
225 154
 
226 155
 .list .list_left {
227 156
   width: 16%;
228 157
 }
229
-.list .list_left_0 {
158
+.list .list_left_9 {
230 159
   background: url("@/assets/emergencyImg/crk_bedclothes.png") no-repeat;
231 160
   background-size: 100% 100%;
232 161
 }
233
-.list .list_left_1 {
162
+.list .list_left_10 {
234 163
   background: url("@/assets/emergencyImg/crk_bedding.png") no-repeat;
235 164
   background-size: 100% 100%;
236 165
 }
237
-.list .list_left_2 {
166
+.list .list_left_11 {
238 167
   background: url("@/assets/emergencyImg/crk_appliance.png") no-repeat;
239 168
   background-size: 100% 100%;
240 169
 }
241
-.list .list_left_3 {
170
+.list .list_left_12 {
242 171
   background: url("@/assets/emergencyImg/crk_tents.png") no-repeat;
243 172
   background-size: 100% 100%;
244 173
 }
@@ -246,11 +175,11 @@ onMounted(() => {});
246 175
   background: url("@/assets/emergencyImg/crk_lifesaving.png") no-repeat;
247 176
   background-size: 100% 100%;
248 177
 }
249
-.list .list_left_5 {
178
+.list .list_left_6 {
250 179
   background: url("@/assets/emergencyImg/crk_material.png") no-repeat;
251 180
   background-size: 100% 100%;
252 181
 }
253
-.list .list_left_6 {
182
+.list .list_left_8 {
254 183
   background: url("@/assets/emergencyImg/crk_water.png") no-repeat;
255 184
   background-size: 100% 100%;
256 185
 }
@@ -258,15 +187,16 @@ onMounted(() => {});
258 187
   background: url("@/assets/emergencyImg/crk_drainage.png") no-repeat;
259 188
   background-size: 100% 100%;
260 189
 }
261
-.list .list_left_8 {
190
+.list .list_left_5 {
262 191
   background: url("@/assets/emergencyImg/crk_rescue.png") no-repeat;
263 192
   background-size: 100% 100%;
264 193
 }
265
-.list .list_left_9 {
194
+/* 防洪铅丝网 */
195
+.list .list_left_0 {
266 196
   background: url("@/assets/emergencyImg/crk_net.png") no-repeat;
267 197
   background-size: 100% 100%;
268 198
 }
269
-.list_right_0 .card_line .card_left,
199
+/* .list_right_0 .card_line .card_left,
270 200
 .list_right_1 .card_line .card_left,
271 201
 .list_right_2 .card_line .card_left,
272 202
 .list_right_3 .card_line .card_left {
@@ -297,5 +227,5 @@ onMounted(() => {});
297 227
 }
298 228
 .list_right_9 .card_line .card_right {
299 229
   width: 74%;
300
-}
230
+} */
301 231
 </style>

+ 28 - 73
src/views/DataVisualization/detailPage/components/shjl.vue

@@ -62,77 +62,32 @@
62 62
 </template>
63 63
 
64 64
 <script setup lang="ts">
65
-import { defineProps, onMounted, ref } from "vue";
66
-
67
-const props = defineProps({ msg: String });
68
-const tableData = [
69
-  {
70
-    date: "2023-8-7",
71
-    name: "编织袋",
72
-    type: "报废",
73
-    number: "1000",
74
-    state: "个",
75
-    price: "1"
76
-  },
77
-  {
78
-    date: "2023-8-7",
79
-    name: "编织袋",
80
-    type: "报废",
81
-    number: "1000",
82
-    state: "个",
83
-    price: "1"
84
-  },
85
-  {
86
-    date: "2023-8-7",
87
-    name: "编织袋",
88
-    type: "报废",
89
-    number: "1000",
90
-    state: "个",
91
-    price: "1"
92
-  },
93
-  {
94
-    date: "2023-8-7",
95
-    name: "编织袋",
96
-    type: "报废",
97
-    number: "1000",
98
-    state: "个",
99
-    price: "1"
100
-  },
101
-  {
102
-    date: "2023-8-7",
103
-    name: "编织袋",
104
-    type: "报废",
105
-    number: "1000",
106
-    state: "个",
107
-    price: "1"
108
-  },
109
-  {
110
-    date: "2023-8-7",
111
-    name: "编织袋",
112
-    type: "报废",
113
-    number: "1000",
114
-    state: "个",
115
-    price: "1"
116
-  },
117
-  {
118
-    date: "2023-8-7",
119
-    name: "编织袋",
120
-    type: "报废",
121
-    number: "1000",
122
-    state: "个",
123
-    price: "1"
124
-  },
125
-  {
126
-    date: "2023-8-7",
127
-    name: "编织袋",
128
-    type: "报废",
129
-    number: "1000",
130
-    state: "个",
131
-    price: "1"
132
-  }
133
-];
134
-
135
-onMounted(() => {});
65
+import { reactive, toRefs, defineProps, onMounted, ref } from "vue";
66
+import { useRoute } from "vue-router";
67
+import { getLossRecord } from "@/api/keshihua/detail";
68
+
69
+let route = useRoute();
70
+const data = reactive({
71
+  tableData: [],
72
+  selectType: "",
73
+  selectValue: ""
74
+});
75
+let { tableData, selectType, selectValue } = toRefs(data);
76
+
77
+const getList = () => {
78
+  const data = reactive({
79
+    // name: route.query.name ? route.query.name : ""
80
+    name: ""
81
+  });
82
+  getLossRecord(data).then((res: any) => {
83
+    if (res) {
84
+      tableData.value = res;
85
+    }
86
+  });
87
+};
88
+onMounted(() => {
89
+  getList();
90
+});
136 91
 </script>
137 92
 
138 93
 <style scoped>
@@ -256,10 +211,10 @@ onMounted(() => {});
256 211
 :deep(.el-table__body tr.current-row > td.el-table__cell) {
257 212
   background-color: transparent !important;
258 213
 }
259
-:deep(.el-table__header){
214
+:deep(.el-table__header) {
260 215
   width: auto !important;
261 216
 }
262
-:deep(.el-table__body){
217
+:deep(.el-table__body) {
263 218
   width: auto !important;
264 219
 }
265 220
 </style>

+ 59 - 47
src/views/DataVisualization/detailPage/components/wzcbqk.vue

@@ -1,7 +1,7 @@
1
-<!-- 物资储备情况 -->
1
+<!-- 物资储备统计 -->
2 2
 <template>
3 3
   <div class="box">
4
-    <div class="title">{{ props.msg }}</div>
4
+    <div class="title">{{ title }}</div>
5 5
     <div class="table">
6 6
       <el-table
7 7
         :highlight-current-row="false"
@@ -16,28 +16,28 @@
16 16
           align="center"
17 17
           style="background: transparent; border: none"
18 18
           fixed
19
-          prop="name"
19
+          prop="materialNameZn"
20 20
           label="物资名称"
21 21
         />
22 22
         <el-table-column
23 23
           header-align="center"
24 24
           align="center"
25 25
           style="background: transparent; border: none"
26
-          prop="data"
26
+          prop="specs"
27 27
           label="规格"
28 28
         />
29 29
         <el-table-column
30 30
           header-align="center"
31 31
           align="center"
32 32
           style="background: transparent; border: none"
33
-          prop="number"
33
+          prop="quantityAll"
34 34
           label="数量+单位"
35 35
         />
36 36
         <el-table-column
37 37
           header-align="center"
38 38
           align="center"
39 39
           style="background: transparent; border: none"
40
-          prop="state"
40
+          prop="totalPriceAll"
41 41
           label="价值"
42 42
         />
43 43
       </el-table>
@@ -46,49 +46,61 @@
46 46
 </template>
47 47
 
48 48
 <script setup lang="ts">
49
-import { defineProps, onMounted, ref } from "vue";
49
+import { reactive, toRefs, defineProps, onMounted, ref } from "vue";
50
+import { getMaterial } from "@/api/keshihua/detail";
51
+import { useRoute } from "vue-router";
50 52
 
53
+let route = useRoute();
51 54
 const props = defineProps({ msg: String });
52
-const tableData = [
53
-  {
54
-    name: "单帐篷",
55
-    data: "1.2*2.1",
56
-    number: "500项",
57
-    state: "1万"
58
-  },
59
-  {
60
-    name: "单帐篷",
61
-    data: "1.2*2.1",
62
-    number: "500项",
63
-    state: "1万"
64
-  },
65
-  {
66
-    name: "单帐篷",
67
-    data: "1.2*2.1",
68
-    number: "500项",
69
-    state: "1万"
70
-  },
71
-  {
72
-    name: "单帐篷",
73
-    data: "1.2*2.1",
74
-    number: "500项",
75
-    state: "1万"
76
-  },
77
-  {
78
-    name: "单帐篷",
79
-    data: "1.2*2.1",
80
-    number: "500项",
81
-    state: "1万"
82
-  },
83
-  {
84
-    name: "单帐篷",
85
-    data: "1.2*2.1",
86
-    number: "500项",
87
-    state: "1万"
88
-  }
89
-];
90
-
91
-onMounted(() => {});
55
+const data = reactive({
56
+  tableData: [],
57
+  title: ""
58
+});
59
+const titleList: any[] = reactive([]);
60
+const formData = reactive({});
61
+let { tableData, title } = toRefs(data);
62
+
63
+const getList = () => {
64
+  const data = reactive({
65
+    // name: route.query.name ? route.query.name : ""
66
+    name: ""
67
+  });
68
+  getMaterial(data).then((res: any) => {
69
+    if (res) {
70
+      Object.keys(res).forEach((key: string) => {
71
+        titleList.push(key);
72
+      });
73
+      if (props.msg == "first") {
74
+        titleList.forEach((item, index) => {
75
+          if (index == 0) {
76
+            title.value = titleList[0];
77
+          }
78
+        });
79
+        tableData.value = res[title.value];
80
+      }
81
+      if (props.msg == "second") {
82
+        titleList.forEach((item, index) => {
83
+          if (index == 1) {
84
+            title.value = titleList[1];
85
+          }
86
+        });
87
+        tableData.value = res[title.value];
88
+      }
89
+      if (props.msg == "third") {
90
+        titleList.forEach((item, index) => {
91
+          if (index == 2) {
92
+            title.value = titleList[2];
93
+          }
94
+        });
95
+        tableData.value = res[title.value];
96
+      }
97
+    }
98
+  });
99
+};
100
+
101
+onMounted(() => {
102
+  getList();
103
+});
92 104
 </script>
93 105
 
94 106
 <style scoped>

+ 14 - 14
src/views/DataVisualization/detailPage/index.vue

@@ -7,13 +7,13 @@
7 7
       <div class="left">
8 8
         <div class="left-title">物资储备统计</div>
9 9
         <div class="left-card">
10
-          <Wzcbqk msg="帐篷"></Wzcbqk>
10
+          <Wzcbqk msg="first"></Wzcbqk>
11 11
         </div>
12 12
         <div class="left-card">
13
-          <Wzcbqk msg="被服"></Wzcbqk>
13
+          <Wzcbqk msg="second"></Wzcbqk>
14 14
         </div>
15 15
         <div class="left-card">
16
-          <Wzcbqk msg="用具"></Wzcbqk>
16
+          <Wzcbqk msg="third"></Wzcbqk>
17 17
         </div>
18 18
       </div>
19 19
       <div class="center">
@@ -32,13 +32,10 @@
32 32
         <div class="center_title">
33 33
           <Wzcb></Wzcb>
34 34
         </div>
35
-        <div class="center_content">
36
-          <!-- <Shjl></Shjl> -->
37
-        </div>
35
+        <div class="center_content"></div>
38 36
       </div>
39 37
       <div class="right">
40 38
         <div class="right-title">出入库记录</div>
41
-
42 39
         <div class="select">
43 40
           <el-select
44 41
             :teleported="false"
@@ -50,9 +47,9 @@
50 47
             v-model="selectValue"
51 48
             @change="selectHandle"
52 49
           >
53
-            <el-option value="全部" label="全部" />
54
-            <el-option value="出库记录" label="出库记录" />
55
-            <el-option value="入库记录" label="入库记录" />
50
+            <el-option value="0" label="全部" />
51
+            <el-option value="2" label="出库记录" />
52
+            <el-option value="1" label="入库记录" />
56 53
           </el-select>
57 54
         </div>
58 55
         <div class="right_crk">
@@ -70,7 +67,7 @@
70 67
   </div>
71 68
 </template>
72 69
 <script setup lang="ts">
73
-import Header from '@/views/DataVisualization/home/components/header.vue';
70
+import Header from "@/views/DataVisualization/home/components/header.vue";
74 71
 import Wzcbqk from "@/views/DataVisualization/detailPage/components/wzcbqk.vue";
75 72
 import Crkjl from "@/views/DataVisualization/detailPage/components/crkjl.vue";
76 73
 import Wzcb from "@/views/DataVisualization/detailPage/components/wzcb.vue";
@@ -78,7 +75,7 @@ import Shjl from "@/views/DataVisualization/detailPage/components/shjl.vue";
78 75
 import { reactive, toRefs, ref } from "vue";
79 76
 
80 77
 const data = reactive({
81
-  selectValue: ""
78
+  selectValue: "0"
82 79
 });
83 80
 let { selectValue } = toRefs(data);
84 81
 let crkjl = ref();
@@ -129,7 +126,6 @@ const selectHandle = (val: any) => {
129 126
   /* background: rgba(255, 192, 203, 0.168); */
130 127
   background: url("@/assets/img/bg.jpg") no-repeat;
131 128
   background-size: 100% 100%;
132
-
133 129
 }
134 130
 .container .content .center .title {
135 131
   width: 100%;
@@ -274,7 +270,7 @@ const selectHandle = (val: any) => {
274 270
 .el-select-dropdown__item:hover,
275 271
 .el-select-dropdown__item.hover {
276 272
   color: #fff;
277
-  background: #409eff;
273
+  background: #40a0ff99;
278 274
 }
279 275
 :deep(.el-popper.is-light) {
280 276
   background: #307cbf;
@@ -300,4 +296,8 @@ const selectHandle = (val: any) => {
300 296
 :deep(.el-select__placeholder) {
301 297
   color: #ffffffd7;
302 298
 }
299
+:deep(.el-select-dropdown__item.is-selected) {
300
+  color: var(--el-color-primary);
301
+  /* background: #40a0ff99; */
302
+}
303 303
 </style>

+ 0 - 270
src/views/DataVisualization/home/components/crktj.vue

@@ -1,270 +0,0 @@
1
-<!-- 物资入库情况 -->
2
-
3
-<template>
4
-    <div class="box">
5
-        <div ref="wzqk" class="charts">
6
-        </div>
7
-        <div class="title">出入库统计</div>
8
-        <el-select v-model="selcetData" :teleported="false" popper-class="popperClass" class="select" size="small" placeholder="请选择"
9
-            style="width: 150px ; height: 21px;">
10
-            <!-- <el-option value="1" label="全部" />
11
-            <el-option value="2" label="入库采购" />
12
-            <el-option value="3" label="多发,增发入库" />
13
-            <el-option value="4" label="调用后返还" />
14
-            <el-option value="5" label="未调用实际在库" />
15
-            <el-option value="6" label="移库入库" />
16
-            <el-option value="7" label="维修完成入库" /> -->
17
-            <el-option value="1" label="出库" />
18
-            <el-option value="2" label="入库" />
19
-
20
-      
21
-        </el-select>
22
-    </div>
23
-
24
-</template>
25
-
26
-<script setup lang="ts">
27
-import * as echarts from "echarts";
28
-import { onMounted, ref } from "vue";
29
-const wzqk = ref(null);
30
-const myColor = ['#eb2100', '#eb3600', '#d0570e', '#d0a00e', '#34da62', '#00e9db', '#00c0e9', '#0096f3', '#33CCFF', '#33FFCC'];
31
-const Ydata = ['抢险物料','救生器材','抢险机具','排水设备','供水器具'];
32
-const Xdata = [10, 13, 25, 29, 38, 47, 56, 68, 76, 82];
33
-let selcetData =ref('1');
34
-onMounted(() => {
35
-    let myChart = echarts.init(wzqk.value)
36
-    let option = {
37
-        //你的代码
38
-        backgroundColor: '',
39
-        grid: {
40
-            left: '21%',
41
-            top: '38%',
42
-            right: '10%',
43
-            width:'70%',
44
-            height:'60%',
45
-            bottom: '8%',
46
-            containLabel: true
47
-        },
48
-        dataZoom: [
49
-            {
50
-                yAxisIndex: 0, //这里是从X轴的0刻度开始
51
-                show: false, //是否显示滑动条,不影响使用
52
-                type: "slider", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
53
-                startValue: 0, // 从头开始。
54
-                endValue: 4, // 一次性展示5个。。
55
-            }
56
-        ],
57
-        xAxis: [{
58
-            show: false,
59
-        }],
60
-        yAxis: [{
61
-            axisTick: 'none',
62
-            axisLine: 'none',
63
-            offset: '12',
64
-            axisLabel: {
65
-                textStyle: {
66
-                    color: '#ffffff',
67
-                    fontSize: '12',
68
-                }
69
-            },
70
-            data: Ydata,
71
-        },
72
-        {
73
-            axisTick: 'none',
74
-            axisLine: 'none',
75
-            axisLabel: {
76
-                textStyle: {
77
-                    color: '#ffffff',
78
-                    fontSize: '12',
79
-                }
80
-            },
81
-            //y
82
-            data: ['5', '4', '3', '2', '1']
83
-        },
84
-        // {
85
-        //     name: '滚动TOP 10',
86
-        //     nameGap: '50',
87
-        //     nameTextStyle: {
88
-        //         color: '#ffffff',
89
-        //         fontSize: '16',
90
-        //     },
91
-        //     axisLine: {
92
-        //         lineStyle: {
93
-        //             color: 'rgba(0,0,0,0)'
94
-        //         }
95
-        //     },
96
-        //     data: [],
97
-        // }
98
-    ],
99
-        series: [{
100
-            name: '条',
101
-            type: 'bar',
102
-            yAxisIndex: 0,
103
-            data: Xdata,
104
-            label: {
105
-                normal: {
106
-                    show: true,
107
-                    position: 'right',
108
-                    textStyle: {
109
-                        color: '#ffffff',
110
-                        fontSize: '16',
111
-                    }
112
-                }
113
-            },
114
-            barWidth: 12,
115
-            itemStyle: {
116
-                normal: {
117
-                    color: function (params) {
118
-                        var num = myColor.length;
119
-                        return myColor[params.dataIndex % num]
120
-                    },
121
-                }
122
-            },
123
-            z: 2
124
-        }, {
125
-            name: '白框',
126
-            type: 'bar',
127
-            yAxisIndex: 1,
128
-            barGap: '-100%',
129
-            data: [99, 99.5, 99.5, 99.5, 99.5],
130
-            barWidth: 20,
131
-            itemStyle: {
132
-                normal: {
133
-                    color: 'transparent',
134
-                    barBorderRadius: 5,
135
-                }
136
-            },
137
-            z: 1
138
-        }, 
139
-        // {
140
-        //     name: '外框',
141
-        //     type: 'bar',
142
-        //     yAxisIndex: 2,
143
-        //     barGap: '-100%',
144
-        //     data: [100, 100, 100, 100, 100],
145
-        //     barWidth: 24,
146
-        //     itemStyle: {
147
-        //         normal: {
148
-        //             color: function (params) {
149
-        //                 var num = myColor.length;
150
-        //                 return myColor[params.dataIndex % num]
151
-        //             },
152
-        //             barBorderRadius: 5,
153
-        //         }
154
-        //     },
155
-        //     z: 0
156
-        // },
157
-            // {
158
-            //     name: '外圆',
159
-            //     type: 'scatter',
160
-            //     hoverAnimation: false,
161
-            //     data: [0, 0, 0, 0, 0],
162
-            //     yAxisIndex: 2,
163
-            //     symbolSize: 35,
164
-            //     itemStyle: {
165
-            //         normal: {
166
-            //             color: function(params) {
167
-            //                 var num = myColor.length;
168
-            //                 return myColor[params.dataIndex % num]
169
-            //             },
170
-            //             opacity: 1,
171
-            //         }
172
-            //     },
173
-            //     z: 2
174
-            // }
175
-        ]
176
-    };
177
-    myChart.setOption(option)
178
-    window.addEventListener("resize", () => {
179
-    myChart.resize();
180
-  });
181
-})
182
-</script>
183
-
184
-<style scoped>
185
-.box {
186
-    width: 100%;
187
-    height: 100%;
188
-    position: relative;
189
-}
190
-
191
-.box .charts {
192
-    width: 100%;
193
-    height: 100%;
194
-    /* background: pink; */
195
-
196
-
197
-}
198
-
199
-
200
-.title {
201
-    font-size: 20px;
202
-    color: red;
203
-    position: absolute;
204
-    left: 14%;
205
-    top: 6%;
206
-    font-weight: 700;
207
-    background: linear-gradient(to bottom, #ffffff, rgb(29, 233, 234));
208
-    -webkit-background-clip: text;
209
-    -webkit-text-fill-color: transparent;
210
-
211
-}
212
-:deep(.select .el-select-dropdown) {
213
-    background: rgba(132, 159, 228, 0.2) !important;
214
-
215
-}
216
-
217
-:deep(.select .el-select-dropdown .el-select-dropdown__item) {
218
-    /* background: rgba(12,21,44,0.2); */
219
-}
220
-
221
-.el-select-dropdown__item.selected,
222
-.el-select-dropdown__item:hover,
223
-.el-select-dropdown__item.hover {
224
-    color: #fff;
225
-    background: #409EFF;
226
-}
227
-
228
-.select {
229
-    position: absolute;
230
-    left: 14%;
231
-    top: 20%;
232
-    /* height: 10%; */
233
-}
234
-
235
-:deep(.el-popper.is-light) {
236
-    background: #307cbf;
237
-    border: 1px solid #273f70;
238
-}
239
-
240
-:deep(.el-select-dropdown__item.hover) {
241
-    background: transparent;
242
-    border: none;
243
-    color: #04FAA0;
244
-}
245
-
246
-
247
-:deep(.el-select-dropdown__item) {
248
-    background: transparent;
249
-    border: none;
250
-    color: #fff;
251
-}
252
-
253
-:deep(.el-popper.is-light .el-popper__arrow::before) {
254
-    border: 1px solid #4778d9;
255
-    background: #4778d9;
256
-    right: 0;
257
-}
258
-
259
-:deep(.el-select__wrapper) {
260
-    /* position: absolute; */
261
-    /* width: 50%; */
262
-    /* height: 4%; */
263
-    /* left: 20%;
264
-    top:; */
265
-    background: transparent !important;
266
-    border: rgba(255, 255, 255, 0.2) 1px solid !important;
267
-    box-shadow: none;
268
-
269
-}
270
-</style>

Diff nebyl zobrazen, protože je příliš veliký
+ 856 - 460
src/views/DataVisualization/home/components/map.vue


+ 408 - 0
src/views/DataVisualization/home/components/wzcrktj.vue

@@ -0,0 +1,408 @@
1
+<!-- 物资入库情况 -->
2
+
3
+<template>
4
+    <div class="box">
5
+        <div ref="wzqk" class="charts">
6
+        </div>
7
+        <div class="title">物资出入库统计</div>
8
+        <el-select @change="GetData" v-model="selcetData" :teleported="false" popper-class="popperClass" class="select"
9
+            size="small" placeholder="请选择" style="width: 150px ; height: 21px;">
10
+            <!-- <el-option value="1" label="全部" />
11
+            <el-option value="2" label="入库采购" />
12
+            <el-option value="3" label="多发,增发入库" />
13
+            <el-option value="4" label="调用后返还" />
14
+            <el-option value="5" label="未调用实际在库" />
15
+            <el-option value="6" label="移库入库" />
16
+            <el-option value="7" label="维修完成入库" /> -->
17
+            <el-option value="1" label="出库" />
18
+            <el-option value="2" label="入库" />
19
+
20
+
21
+        </el-select>
22
+    </div>
23
+
24
+</template>
25
+
26
+<script setup lang="ts">
27
+import { getInventoryReceiptStatus, getInventoryDispatchStatus } from '@/api/keshihua/index'
28
+import * as echarts from "echarts";
29
+import { onMounted, ref } from "vue";
30
+const wzqk = ref(null);
31
+const myColor = ['#eb2100', '#eb3600', '#d0570e', '#d0a00e', '#34da62', '#00e9db', '#00c0e9', '#0096f3', '#33CCFF', '#33FFCC'];
32
+let Ydata = [];
33
+let Xdata = [];
34
+let selcetData = ref('1');
35
+async function GetData(e) {
36
+    //入库
37
+    if (e == 2) {
38
+        try {
39
+            const res = await getInventoryReceiptStatus();
40
+            console.log(res, '入库的数据');
41
+            // Xdata = [];
42
+            // Ydata = [];
43
+            res.forEach(item => {
44
+                Ydata.push(item.materialType)
45
+                Xdata.push(item.totalPrice)
46
+            })
47
+            let myChart = echarts.init(wzqk.value)
48
+                let option = {
49
+                    //你的代码
50
+                    backgroundColor: '',
51
+                    grid: {
52
+                        left: '21%',
53
+                        top: '38%',
54
+                        right: '10%',
55
+                        width: '70%',
56
+                        height: '60%',
57
+                        bottom: '8%',
58
+                        containLabel: true
59
+                    },
60
+                    dataZoom: [
61
+                        {
62
+                            yAxisIndex: 0, //这里是从X轴的0刻度开始
63
+                            show: false, //是否显示滑动条,不影响使用
64
+                            type: "slider", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
65
+                            startValue: 0, // 从头开始。
66
+                            endValue: 4, // 一次性展示5个。。
67
+                        }
68
+                    ],
69
+                    xAxis: [{
70
+                        show: false,
71
+                    }],
72
+                    yAxis: [{
73
+                        axisTick: 'none',
74
+                        axisLine: 'none',
75
+                        offset: '12',
76
+                        axisLabel: {
77
+                            textStyle: {
78
+                                color: '#ffffff',
79
+                                fontSize: '12',
80
+                            }
81
+                        },
82
+                        data: Ydata,
83
+                    },
84
+                    {
85
+                        axisTick: 'none',
86
+                        axisLine: 'none',
87
+                        axisLabel: {
88
+                            textStyle: {
89
+                                color: '#ffffff',
90
+                                fontSize: '12',
91
+                            }
92
+                        },
93
+                        //y
94
+                        data: ['5', '4', '3', '2', '1']
95
+                    },
96
+                        // {
97
+                        //     name: '滚动TOP 10',
98
+                        //     nameGap: '50',
99
+                        //     nameTextStyle: {
100
+                        //         color: '#ffffff',
101
+                        //         fontSize: '16',
102
+                        //     },
103
+                        //     axisLine: {
104
+                        //         lineStyle: {
105
+                        //             color: 'rgba(0,0,0,0)'
106
+                        //         }
107
+                        //     },
108
+                        //     data: [],
109
+                        // }
110
+                    ],
111
+                    series: [{
112
+                        name: '条',
113
+                        type: 'bar',
114
+                        yAxisIndex: 0,
115
+                        data: Xdata,
116
+                        label: {
117
+                            normal: {
118
+                                show: true,
119
+                                position: 'right',
120
+                                textStyle: {
121
+                                    color: '#ffffff',
122
+                                    fontSize: '16',
123
+                                }
124
+                            }
125
+                        },
126
+                        barWidth: 12,
127
+                        itemStyle: {
128
+                            normal: {
129
+                                color: function (params) {
130
+                                    var num = myColor.length;
131
+                                    return myColor[params.dataIndex % num]
132
+                                },
133
+                            }
134
+                        },
135
+                        z: 2
136
+                    }, {
137
+                        name: '白框',
138
+                        type: 'bar',
139
+                        yAxisIndex: 1,
140
+                        barGap: '-100%',
141
+                        data: [99, 99.5, 99.5, 99.5, 99.5],
142
+                        barWidth: 20,
143
+                        itemStyle: {
144
+                            normal: {
145
+                                color: 'transparent',
146
+                                barBorderRadius: 5,
147
+                            }
148
+                        },
149
+                        z: 1
150
+                    },
151
+                        // {
152
+                        //     name: '外框',
153
+                        //     type: 'bar',
154
+                        //     yAxisIndex: 2,
155
+                        //     barGap: '-100%',
156
+                        //     data: [100, 100, 100, 100, 100],
157
+                        //     barWidth: 24,
158
+                        //     itemStyle: {
159
+                        //         normal: {
160
+                        //             color: function (params) {
161
+                        //                 var num = myColor.length;
162
+                        //                 return myColor[params.dataIndex % num]
163
+                        //             },
164
+                        //             barBorderRadius: 5,
165
+                        //         }
166
+                        //     },
167
+                        //     z: 0
168
+                        // },
169
+                        // {
170
+                        //     name: '外圆',
171
+                        //     type: 'scatter',
172
+                        //     hoverAnimation: false,
173
+                        //     data: [0, 0, 0, 0, 0],
174
+                        //     yAxisIndex: 2,
175
+                        //     symbolSize: 35,
176
+                        //     itemStyle: {
177
+                        //         normal: {
178
+                        //             color: function(params) {
179
+                        //                 var num = myColor.length;
180
+                        //                 return myColor[params.dataIndex % num]
181
+                        //             },
182
+                        //             opacity: 1,
183
+                        //         }
184
+                        //     },
185
+                        //     z: 2
186
+                        // }
187
+                    ]
188
+                };
189
+                myChart.setOption(option)
190
+                window.addEventListener("resize", () => {
191
+                    myChart.resize();
192
+                });
193
+        }
194
+        catch (err) {
195
+            throw '获取入库的数据失败'
196
+
197
+        }
198
+    }
199
+    //出库
200
+    else if (e == 1) {
201
+        try {
202
+            const res = await getInventoryDispatchStatus();
203
+            console.log(res, '出库的数据');
204
+            Xdata = [];
205
+            Ydata = [];
206
+            res.forEach(item => {
207
+                Ydata.push(item.materialType)
208
+                Xdata.push(item.totalPrice)
209
+            })
210
+            let myChart = echarts.init(wzqk.value)
211
+                let option = {
212
+                    //你的代码
213
+                    backgroundColor: '',
214
+                    grid: {
215
+                        left: '21%',
216
+                        top: '38%',
217
+                        right: '10%',
218
+                        width: '70%',
219
+                        height: '60%',
220
+                        bottom: '8%',
221
+                        containLabel: true
222
+                    },
223
+                    dataZoom: [
224
+                        {
225
+                            yAxisIndex: 0, //这里是从X轴的0刻度开始
226
+                            show: false, //是否显示滑动条,不影响使用
227
+                            type: "slider", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
228
+                            startValue: 0, // 从头开始。
229
+                            endValue: 4, // 一次性展示5个。。
230
+                        }
231
+                    ],
232
+                    xAxis: [{
233
+                        show: false,
234
+                    }],
235
+                    yAxis: [{
236
+                        axisTick: 'none',
237
+                        axisLine: 'none',
238
+                        offset: '12',
239
+                        axisLabel: {
240
+                            textStyle: {
241
+                                color: '#ffffff',
242
+                                fontSize: '12',
243
+                            }
244
+                        },
245
+                        data: Ydata,
246
+                    },
247
+                    {
248
+                        axisTick: 'none',
249
+                        axisLine: 'none',
250
+                        axisLabel: {
251
+                            textStyle: {
252
+                                color: '#ffffff',
253
+                                fontSize: '12',
254
+                            }
255
+                        },
256
+                        //y
257
+                        data: ['5', '4', '3', '2', '1']
258
+                    },
259
+                    ],
260
+                    series: [{
261
+                        name: '条',
262
+                        type: 'bar',
263
+                        yAxisIndex: 0,
264
+                        data: Xdata,
265
+                        label: {
266
+                            normal: {
267
+                                show: true,
268
+                                position: 'right',
269
+                                textStyle: {
270
+                                    color: '#ffffff',
271
+                                    fontSize: '16',
272
+                                }
273
+                            }
274
+                        },
275
+                        barWidth: 12,
276
+                        itemStyle: {
277
+                            normal: {
278
+                                color: function (params) {
279
+                                    var num = myColor.length;
280
+                                    return myColor[params.dataIndex % num]
281
+                                },
282
+                            }
283
+                        },
284
+                        z: 2
285
+                    }, {
286
+                        name: '白框',
287
+                        type: 'bar',
288
+                        yAxisIndex: 1,
289
+                        barGap: '-100%',
290
+                        data: [99, 99.5, 99.5, 99.5, 99.5],
291
+                        barWidth: 20,
292
+                        itemStyle: {
293
+                            normal: {
294
+                                color: 'transparent',
295
+                                barBorderRadius: 5,
296
+                            }
297
+                        },
298
+                        z: 1
299
+                    },
300
+                    ]
301
+                };
302
+                myChart.setOption(option)
303
+                window.addEventListener("resize", () => {
304
+                    myChart.resize();
305
+                });
306
+
307
+        }
308
+        catch (err) {
309
+            throw '获取出库的数据失败'
310
+        }
311
+
312
+    }
313
+
314
+}
315
+
316
+onMounted(() => {
317
+    GetData(selcetData.value)
318
+})
319
+</script>
320
+
321
+<style scoped>
322
+.box {
323
+    width: 100%;
324
+    height: 100%;
325
+    position: relative;
326
+}
327
+
328
+.box .charts {
329
+    width: 100%;
330
+    height: 100%;
331
+    /* background: pink; */
332
+
333
+
334
+}
335
+
336
+
337
+.title {
338
+    font-size: 20px;
339
+    color: red;
340
+    position: absolute;
341
+    left: 14%;
342
+    top: 6%;
343
+    font-weight: 700;
344
+    background: linear-gradient(to bottom, #ffffff, rgb(29, 233, 234));
345
+    -webkit-background-clip: text;
346
+    -webkit-text-fill-color: transparent;
347
+
348
+}
349
+
350
+:deep(.select .el-select-dropdown) {
351
+    background: rgba(132, 159, 228, 0.2) !important;
352
+
353
+}
354
+
355
+:deep(.select .el-select-dropdown .el-select-dropdown__item) {
356
+    /* background: rgba(12,21,44,0.2); */
357
+}
358
+
359
+.el-select-dropdown__item.selected,
360
+.el-select-dropdown__item:hover,
361
+.el-select-dropdown__item.hover {
362
+    color: #fff;
363
+    background: #409EFF;
364
+}
365
+
366
+.select {
367
+    position: absolute;
368
+    left: 14%;
369
+    top: 20%;
370
+    /* height: 10%; */
371
+}
372
+
373
+:deep(.el-popper.is-light) {
374
+    background: #307cbf;
375
+    border: 1px solid #273f70;
376
+}
377
+
378
+:deep(.el-select-dropdown__item.hover) {
379
+    background: transparent;
380
+    border: none;
381
+    color: #04FAA0;
382
+}
383
+
384
+
385
+:deep(.el-select-dropdown__item) {
386
+    background: transparent;
387
+    border: none;
388
+    color: #fff;
389
+}
390
+
391
+:deep(.el-popper.is-light .el-popper__arrow::before) {
392
+    border: 1px solid #4778d9;
393
+    background: #4778d9;
394
+    right: 0;
395
+}
396
+
397
+:deep(.el-select__wrapper) {
398
+    /* position: absolute; */
399
+    /* width: 50%; */
400
+    /* height: 4%; */
401
+    /* left: 20%;
402
+    top:; */
403
+    background: transparent !important;
404
+    border: rgba(255, 255, 255, 0.2) 1px solid !important;
405
+    box-shadow: none;
406
+
407
+}
408
+</style>

+ 0 - 1
src/views/DataVisualization/home/components/wzkytj.vue

@@ -1,5 +1,4 @@
1 1
 <!-- 物资情况 -->
2
-
3 2
 <template>
4 3
     <div class="box">
5 4
         <div ref="wzqk" class="charts">

+ 2 - 2
src/views/DataVisualization/home/index.vue

@@ -36,7 +36,7 @@
36 36
             </div>
37 37
             <div class="right">
38 38
                 <div class="right-card">
39
-                    <Crktj></Crktj>
39
+                    <Wzcrktj></Wzcrktj>
40 40
                 </div>
41 41
                 <div class="right-card">
42 42
                     <Wzsyqkpm></Wzsyqkpm>
@@ -56,7 +56,7 @@ import Yjwzfl from '@/views/DataVisualization/home/components/yjwzfl.vue'
56 56
 import Wzshtj from '@/views/DataVisualization/home/components/wzshtj.vue'
57 57
 import Wzkytj from '@/views/DataVisualization/home/components/wzkytj.vue'
58 58
 import Wzdyqk from '@/views/DataVisualization/home/components/wzdyqk.vue'
59
-import Crktj from '@/views/DataVisualization/home/components/crktj.vue'
59
+import Wzcrktj from '@/views/DataVisualization/home/components/wzcrktj.vue'
60 60
 import Wzsyqkpm from '@/views/DataVisualization/home/components/wzsyqkpm.vue'
61 61
 </script>
62 62
 <style scoped>

+ 41 - 66
src/views/InformationAudit/enterWarehouseAudit/detail.vue

@@ -5,7 +5,7 @@
5 5
       <el-table :data="tableData" style="width: 100%" stripe border>
6 6
         <el-table-column prop="inboundType" label="入库类型" header-align="center" align="center">
7 7
           <template #default="scope">
8
-            {{ cklxObject[scope.row.inboundType] }}
8
+            {{ scope.row.inboundType ? showCh(scope.row.inboundType, indound_type) : scope.row.inboundType }}
9 9
           </template>
10 10
         </el-table-column>
11 11
         <el-table-column prop="materialGroup" label="物资大类" header-align="center" align="center" />
@@ -18,12 +18,14 @@
18 18
         <el-table-column prop="totalPrice" label="价值(万元)" header-align="center" align="center" />
19 19
         <el-table-column prop="isAvailable" label="是否可用" header-align="center" align="center">
20 20
           <template #default="scope">
21
-            {{ sfkyObject[scope.row.isAvailable] }}
21
+            {{ scope.row.isAvailable ? showCh(scope.row.isAvailable, is_available) : scope.row.isAvailable }}
22 22
           </template>
23 23
         </el-table-column>
24 24
         <el-table-column label="附件上传" header-align="center" align="center" width="160">
25 25
           <template #default="scope">
26
-            <span class="fileName" @click="fileDown(scope.row.filePart)">{{ scope.row.fileName }}</span>
26
+            <span class="fileName" @click="fileDownload(scope.row.filePart, scope.row.fileName)">{{
27
+              scope.row.fileName
28
+            }}</span>
27 29
           </template>
28 30
         </el-table-column>
29 31
         <el-table-column prop="remarks" label="备注" header-align="center" align="center" />
@@ -36,7 +38,9 @@
36 38
           <el-table-column prop="opinion" label="审核意见" header-align="center" align="center" />
37 39
           <el-table-column label="附件" header-align="center" align="center">
38 40
             <template #default="scope">
39
-              <span class="fileName" @click="fileDown(scope.row.filePart)">{{ scope.row.fileName }}</span>
41
+              <span class="fileName" @click="fileDownload(scope.row.filePart, scope.row.fileName)">{{
42
+                scope.row.fileName
43
+              }}</span>
40 44
             </template>
41 45
           </el-table-column>
42 46
           <el-table-column prop="auditingTime" label="审核时间" header-align="center" align="center" />
@@ -97,16 +101,13 @@ import { ElMessage, ElMessageBox } from "element-plus";
97 101
 import { useRouter, useRoute } from "vue-router";
98 102
 import { useDict } from "@/hooks/dict";
99 103
 
100
-const { indound_type, is_available, auditing_status } = useDict("indound_type", "is_available", "auditing_status");
104
+const { indound_type, is_available } = useDict("indound_type", "is_available");
101 105
 const router = useRouter();
102 106
 const route = useRoute();
103 107
 const data = reactive({
104 108
   tableData: [],
105 109
   auditData: [],
106 110
   isShow: false,
107
-  cklxObject: {}, //入库类型
108
-  sfkyObject: {}, //是否可用
109
-  dysfObject: {}, //调用省份
110 111
   fileUrl: "/admin/sysFile/uploadVoucher",
111 112
   myHeader: { Authorization: "Bearer " + sessionStorage.getItem("access_token") }
112 113
 });
@@ -125,7 +126,7 @@ let paramsData = reactive({
125 126
   bucket: "bound"
126 127
 });
127 128
 
128
-let { tableData, auditData, isShow, cklxObject, sfkyObject, dysfObject, fileUrl, myHeader } = toRefs(data);
129
+let { tableData, auditData, isShow, fileUrl, myHeader } = toRefs(data);
129 130
 
130 131
 // 获取列表
131 132
 const getList = () => {
@@ -141,53 +142,10 @@ const getList = () => {
141 142
     }
142 143
   });
143 144
 };
144
-// 字典-入库类型
145
-const getOutboundTypeList = () => {
146
-  const data = reactive({
147
-    size: 100,
148
-    current: 1,
149
-    dictId: "1764183440564498433"
150
-  });
151
-  getDictItemList(data).then((res: any) => {
152
-    if (res.code === 0) {
153
-      cklxObject.value = res.data.records.reduce((acc: any, item: any) => {
154
-        acc[item.value] = item.label;
155
-        return acc;
156
-      }, {});
157
-    }
158
-  });
159
-};
160
-// 字典-是否可用
161
-const getIsAvailableList = () => {
162
-  const data = reactive({
163
-    size: 10,
164
-    current: 1,
165
-    dictId: "1764184353161162753"
166
-  });
167
-  getDictItemList(data).then((res: any) => {
168
-    if (res.code === 0) {
169
-      sfkyObject.value = res.data.records.reduce((acc: any, item: any) => {
170
-        acc[item.value] = item.label;
171
-        return acc;
172
-      }, {});
173
-    }
174
-  });
175
-};
176
-// 字典-调用省份
177
-const getProvinceList = () => {
178
-  const data = reactive({
179
-    size: 100,
180
-    current: 1,
181
-    dictId: "1763408141744652289"
182
-  });
183
-  getDictItemList(data).then((res: any) => {
184
-    if (res.code === 0) {
185
-      dysfObject.value = res.data.records.reduce((acc: any, item: any) => {
186
-        acc[item.value] = item.label;
187
-        return acc;
188
-      }, {});
189
-    }
190
-  });
145
+// 根据码回显中文
146
+const showCh = (value: any, option: any) => {
147
+  const filterItem = option.filter((item: any) => item.value == value);
148
+  return filterItem.length ? filterItem[0].label : "-";
191 149
 };
192 150
 // 通过
193 151
 const handleAgree = () => {
@@ -271,18 +229,35 @@ const beforeRemove = (uploadFile: any, uploadFiles: any) => {
271 229
   );
272 230
 };
273 231
 
274
-// 根据码回显中文
275
-const showCh = (value: any, option: any) => {
276
-  const filterItem = option.filter((item: any) => item.value == value);
277
-  return filterItem.length ? filterItem[0].label : "-";
278
-};
279
-const fileDown = (filePart: any) => {
280
-  console.log(filePart, "filePart---");
281
-  window.location.href = `/admin/sysFile/${filePart ? filePart : ""}`;
232
+const fileDownload = (filePart: any, fileName: string) => {
233
+  function createObjectURL(object: any) {
234
+    return window.URL ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
235
+  }
236
+  var xhr = new XMLHttpRequest();
237
+  var formData = new FormData();
238
+  xhr.open("get", "/admin/sysFile/" + filePart);
239
+  xhr.setRequestHeader("Authorization", "Bearer " + sessionStorage.getItem("access_token"));
240
+  xhr.responseType = "blob";
241
+  xhr.onload = function (e) {
242
+    if (this.status == 200) {
243
+      var blob = this.response;
244
+      console.log(this.response);
245
+      if (window.navigator.msSaveOrOpenBlob) {
246
+        navigator.msSaveBlob(blob, fileName);
247
+      } else {
248
+        var a = document.createElement("a");
249
+        var url = createObjectURL(blob);
250
+        a.href = url;
251
+        a.download = fileName;
252
+        document.body.appendChild(a);
253
+        a.click();
254
+        window.URL.revokeObjectURL(url);
255
+      }
256
+    }
257
+  };
258
+  xhr.send(formData);
282 259
 };
283 260
 
284
-getOutboundTypeList();
285
-getIsAvailableList();
286 261
 onMounted(() => {
287 262
   getList();
288 263
 });

+ 28 - 53
src/views/InformationAudit/enterWarehouseAudit/index.vue

@@ -11,7 +11,7 @@
11 11
         <el-col :span="6">
12 12
           <el-form-item label="入库类型">
13 13
             <el-select v-model="formData.inboundType" class="m-2" placeholder="请选择" clearable style="width: 280px">
14
-              <el-option v-for="item in cklxOptions" :key="item.value" :label="item.label" :value="item.value" />
14
+              <el-option v-for="item in indound_type" :key="item.value" :label="item.label" :value="item.value" />
15 15
             </el-select>
16 16
           </el-form-item>
17 17
         </el-col>
@@ -22,13 +22,19 @@
22 22
         </el-col>
23 23
         <el-col :span="6">
24 24
           <el-button type="primary" :icon="Search" @click="handleSearch">查询</el-button>
25
+          <el-button type="primary" :icon="RefreshRight" @click="handleReSearch">查询</el-button>
25 26
         </el-col>
26 27
       </el-row>
27 28
       <el-row :gutter="20">
28 29
         <el-col :span="6">
29 30
           <el-form-item label="审批节点">
30 31
             <el-select v-model="formData.status" class="m-2" placeholder="请选择" clearable style="width: 280px">
31
-              <el-option v-for="(item, index) in dqspjdOptions" :key="index" :label="item.label" :value="item.value" />
32
+              <el-option
33
+                v-for="(item, index) in auditing_status"
34
+                :key="index"
35
+                :label="item.label"
36
+                :value="item.value"
37
+              />
32 38
             </el-select>
33 39
           </el-form-item>
34 40
         </el-col>
@@ -39,7 +45,7 @@
39 45
       <el-table-column prop="warehouse" label="库点简称" header-align="center" align="center" />
40 46
       <el-table-column prop="inboundType" label="出库类型" header-align="center" align="center">
41 47
         <template #default="scope">
42
-          {{ cklxObject[scope.row.inboundType] }}
48
+          {{ scope.row.inboundType ? showCh(scope.row.inboundType, indound_type) : scope.row.inboundType }}
43 49
         </template>
44 50
       </el-table-column>
45 51
       <el-table-column prop="materialGroup" label="物资大类" header-align="center" align="center" />
@@ -49,7 +55,12 @@
49 55
       <el-table-column prop="inboundTime" label="入库日期" header-align="center" align="center" />
50 56
       <el-table-column prop="status" label="当前审批节点" header-align="center" align="center">
51 57
         <template #default="scope">
52
-          {{ spjdObject[scope.row.status] }}
58
+          {{ scope.row.status ? showCh(scope.row.status, auditing_status) : scope.row.status }}
59
+        </template>
60
+      </el-table-column>
61
+      <el-table-column prop="submitTime" label="提交时间" header-align="center" align="center">
62
+        <template #default="scope">
63
+          {{ scope.row.submitTime }}
53 64
         </template>
54 65
       </el-table-column>
55 66
       <el-table-column label="操作" header-align="center" align="center" width="160">
@@ -86,18 +97,15 @@
86 97
 import { reactive, toRefs, onMounted } from "vue";
87 98
 import { getInAuditList } from "@/api/inAndOut/inAudit/index";
88 99
 import { getDictItemList } from "@/api/admin/index";
89
-import { Search } from "@element-plus/icons-vue";
100
+import { Search, RefreshRight } from "@element-plus/icons-vue";
90 101
 import { useRouter } from "vue-router";
102
+import { useDict } from "@/hooks/dict";
103
+
104
+const { indound_type, auditing_status } = useDict("indound_type", "auditing_status");
91 105
 
92 106
 const router = useRouter();
93 107
 const data = reactive({
94 108
   tableData: [],
95
-  cklxOptions: [],
96
-  cklxObject: {}, //入库类型
97
-  // dysfObject: {}, //调用省份
98
-  spjdObject: {}, //审批节点
99
-  dqspjdOptions: [],
100
-  spjdOptions: [],
101 109
   deptId: ""
102 110
 });
103 111
 let page = reactive({
@@ -112,7 +120,7 @@ let formData = reactive({
112 120
   status: ""
113 121
 });
114 122
 
115
-let { tableData, cklxOptions, cklxObject, spjdObject, dqspjdOptions, spjdOptions, deptId } = toRefs(data);
123
+let { tableData, deptId } = toRefs(data);
116 124
 
117 125
 // 获取列表
118 126
 const getList = () => {
@@ -128,39 +136,10 @@ const getList = () => {
128 136
     }
129 137
   });
130 138
 };
131
-// 字典-入库类型
132
-const getOutboundTypeList = () => {
133
-  const data = reactive({
134
-    size: 100,
135
-    current: 1,
136
-    dictId: "1764183440564498433"
137
-  });
138
-  getDictItemList(data).then((res: any) => {
139
-    if (res.code === 0) {
140
-      cklxOptions.value = res.data.records;
141
-      cklxObject.value = res.data.records.reduce((acc: any, item: any) => {
142
-        acc[item.value] = item.label;
143
-        return acc;
144
-      }, {});
145
-    }
146
-  });
147
-};
148
-// 字典-审批节点
149
-const getStatusList = () => {
150
-  const data = reactive({
151
-    size: 100,
152
-    current: 1,
153
-    dictId: "423059273"
154
-  });
155
-  getDictItemList(data).then((res: any) => {
156
-    if (res.code === 0) {
157
-      dqspjdOptions.value = res.data.records;
158
-      spjdObject.value = res.data.records.reduce((acc: any, item: any) => {
159
-        acc[item.value] = item.label;
160
-        return acc;
161
-      }, {});
162
-    }
163
-  });
139
+// 根据码回显中文
140
+const showCh = (value: any, option: any) => {
141
+  const filterItem = option.filter((item: any) => item.value == value);
142
+  return filterItem.length ? filterItem[0].label : "-";
164 143
 };
165 144
 // 查询
166 145
 const handleSearch = () => {
@@ -173,12 +152,10 @@ const handleReSearch = () => {
173 152
     pageSize: 10,
174 153
     total: 0
175 154
   };
176
-  formData = {
177
-    warehouse: "",
178
-    inboundType: "",
179
-    materialNameVo: "",
180
-    status: ""
181
-  };
155
+  formData.warehouse = "";
156
+  formData.inboundType = "";
157
+  formData.materialNameVo = "";
158
+  formData.status = "";
182 159
   getList();
183 160
 };
184 161
 // 审核
@@ -202,8 +179,6 @@ const handleShow = (row: any) => {
202 179
   });
203 180
 };
204 181
 
205
-getOutboundTypeList();
206
-getStatusList();
207 182
 onMounted(() => {
208 183
   getList();
209 184
   let deptObj: any = sessionStorage.getItem("userInfo");

+ 45 - 63
src/views/InformationAudit/outWarehouseAudit/detail.vue

@@ -5,7 +5,7 @@
5 5
       <el-table :data="tableData" style="width: 100%" stripe border>
6 6
         <el-table-column prop="outboundType" label="出库类型" header-align="center" align="center">
7 7
           <template #default="scope">
8
-            {{ cklxObject[scope.row.outboundType] }}
8
+            {{ scope.row.outboundType ? showCh(scope.row.outboundType, outdound_type) : scope.row.outboundType }}
9 9
           </template>
10 10
         </el-table-column>
11 11
         <el-table-column prop="materialGroup" label="物资大类" header-align="center" align="center" />
@@ -15,7 +15,7 @@
15 15
         <el-table-column prop="quantity" label="数量" header-align="center" align="center" />
16 16
         <el-table-column prop="province" label="调用省份" header-align="center" align="center">
17 17
           <template #default="scope">
18
-            {{ dysfObject[scope.row.province] }}
18
+            {{ scope.row.province ? showCh(scope.row.province, province_ch) : scope.row.province }}
19 19
           </template>
20 20
         </el-table-column>
21 21
         <el-table-column prop="outboundTime" label="出库日期" header-align="center" align="center" />
@@ -23,12 +23,14 @@
23 23
         <el-table-column prop="totalPrice" label="价值(万元)" header-align="center" align="center" />
24 24
         <el-table-column prop="isAvailable" label="是否可用" header-align="center" align="center">
25 25
           <template #default="scope">
26
-            {{ sfkyObject[scope.row.isAvailable] }}
26
+            {{ scope.row.isAvailable ? showCh(scope.row.isAvailable, is_available) : scope.row.isAvailable }}
27 27
           </template>
28 28
         </el-table-column>
29 29
         <el-table-column label="附件上传" header-align="center" align="center" width="160">
30 30
           <template #default="scope">
31
-            <span class="fileName" @click="fileDown(scope.row.filePart)">{{ scope.row.fileName }}</span>
31
+            <span class="fileName" @click="fileDownload(scope.row.filePart, scope.row.fileName)">{{
32
+              scope.row.fileName
33
+            }}</span>
32 34
           </template>
33 35
         </el-table-column>
34 36
         <el-table-column prop="remarks" label="备注" header-align="center" align="center" />
@@ -41,7 +43,9 @@
41 43
           <el-table-column prop="opinion" label="审核意见" header-align="center" align="center" />
42 44
           <el-table-column label="附件" header-align="center" align="center">
43 45
             <template #default="scope">
44
-              <span class="fileName" @click="fileDown(scope.row.filePart)">{{ scope.row.fileName }}</span>
46
+              <span class="fileName" @click="fileDownload(scope.row.filePart, scope.row.fileName)">{{
47
+                scope.row.fileName
48
+              }}</span>
45 49
             </template>
46 50
           </el-table-column>
47 51
           <el-table-column prop="auditingTime" label="审核时间" header-align="center" align="center" />
@@ -100,6 +104,9 @@ import { getDictItemList } from "@/api/admin/index";
100 104
 import { Search } from "@element-plus/icons-vue";
101 105
 import { ElMessage, ElMessageBox } from "element-plus";
102 106
 import { useRouter, useRoute } from "vue-router";
107
+import { useDict } from "@/hooks/dict";
108
+
109
+const { outdound_type, is_available, province_ch } = useDict("outdound_type", "is_available", "province_ch");
103 110
 
104 111
 const router = useRouter();
105 112
 const route = useRoute();
@@ -107,9 +114,6 @@ const data = reactive({
107 114
   tableData: [],
108 115
   auditData: [],
109 116
   isShow: false,
110
-  cklxObject: {}, //出库类型
111
-  sfkyObject: {}, //是否可用
112
-  dysfObject: {}, //调用省份
113 117
   fileUrl: "/admin/sysFile/uploadVoucher",
114 118
   myHeader: { Authorization: "Bearer " + sessionStorage.getItem("access_token") }
115 119
 });
@@ -128,7 +132,7 @@ let paramsData = reactive({
128 132
   bucket: "bound"
129 133
 });
130 134
 
131
-let { tableData, auditData, isShow, cklxObject, sfkyObject, dysfObject, fileUrl, myHeader } = toRefs(data);
135
+let { tableData, auditData, isShow, fileUrl, myHeader } = toRefs(data);
132 136
 
133 137
 // 获取列表
134 138
 const getList = () => {
@@ -144,53 +148,10 @@ const getList = () => {
144 148
     }
145 149
   });
146 150
 };
147
-// 字典-出库类型
148
-const getOutboundTypeList = () => {
149
-  const data = reactive({
150
-    size: 100,
151
-    current: 1,
152
-    dictId: "214124"
153
-  });
154
-  getDictItemList(data).then((res: any) => {
155
-    if (res.code === 0) {
156
-      cklxObject.value = res.data.records.reduce((acc: any, item: any) => {
157
-        acc[item.value] = item.label;
158
-        return acc;
159
-      }, {});
160
-    }
161
-  });
162
-};
163
-// 字典-是否可用
164
-const getIsAvailableList = () => {
165
-  const data = reactive({
166
-    size: 10,
167
-    current: 1,
168
-    dictId: "1764184353161162753"
169
-  });
170
-  getDictItemList(data).then((res: any) => {
171
-    if (res.code === 0) {
172
-      sfkyObject.value = res.data.records.reduce((acc: any, item: any) => {
173
-        acc[item.value] = item.label;
174
-        return acc;
175
-      }, {});
176
-    }
177
-  });
178
-};
179
-// 字典-调用省份
180
-const getProvinceList = () => {
181
-  const data = reactive({
182
-    size: 100,
183
-    current: 1,
184
-    dictId: "1763408141744652289"
185
-  });
186
-  getDictItemList(data).then((res: any) => {
187
-    if (res.code === 0) {
188
-      dysfObject.value = res.data.records.reduce((acc: any, item: any) => {
189
-        acc[item.value] = item.label;
190
-        return acc;
191
-      }, {});
192
-    }
193
-  });
151
+// 根据码回显中文
152
+const showCh = (value: any, option: any) => {
153
+  const filterItem = option.filter((item: any) => item.value == value);
154
+  return filterItem.length ? filterItem[0].label : "-";
194 155
 };
195 156
 // 通过
196 157
 const handleAgree = () => {
@@ -271,14 +232,35 @@ const beforeRemove = (uploadFile: any, uploadFiles: any) => {
271 232
     () => false
272 233
   );
273 234
 };
274
-const fileDown = (filePart: any) => {
275
-  console.log(filePart, "filePart---");
276
-  window.location.href = `/admin/sysFile/${filePart ? filePart : ""}`;
235
+const fileDownload = (filePart: any, fileName: string) => {
236
+  function createObjectURL(object: any) {
237
+    return window.URL ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
238
+  }
239
+  var xhr = new XMLHttpRequest();
240
+  var formData = new FormData();
241
+  xhr.open("get", "/admin/sysFile/" + filePart);
242
+  xhr.setRequestHeader("Authorization", "Bearer " + sessionStorage.getItem("access_token"));
243
+  xhr.responseType = "blob";
244
+  xhr.onload = function (e) {
245
+    if (this.status == 200) {
246
+      var blob = this.response;
247
+      console.log(this.response);
248
+      if (window.navigator.msSaveOrOpenBlob) {
249
+        navigator.msSaveBlob(blob, fileName);
250
+      } else {
251
+        var a = document.createElement("a");
252
+        var url = createObjectURL(blob);
253
+        a.href = url;
254
+        a.download = fileName;
255
+        document.body.appendChild(a);
256
+        a.click();
257
+        window.URL.revokeObjectURL(url);
258
+      }
259
+    }
260
+  };
261
+  xhr.send(formData);
277 262
 };
278 263
 
279
-getOutboundTypeList();
280
-getIsAvailableList();
281
-getProvinceList();
282 264
 onMounted(() => {
283 265
   getList();
284 266
 });
@@ -299,7 +281,7 @@ onMounted(() => {
299 281
 .el-form-item {
300 282
   align-items: center;
301 283
 }
302
-.fileName{
284
+.fileName {
303 285
   color: #4281e6;
304 286
   text-decoration: underline;
305 287
   cursor: pointer;

+ 34 - 81
src/views/InformationAudit/outWarehouseAudit/index.vue

@@ -6,7 +6,7 @@
6 6
         <el-col :span="6">
7 7
           <el-form-item label="出库类型">
8 8
             <el-select v-model="formData.outboundType" class="m-2" placeholder="请选择" clearable style="width: 280px">
9
-              <el-option v-for="item in cklxOptions" :key="item.value" :label="item.label" :value="item.value" />
9
+              <el-option v-for="item in outdound_type" :key="item.value" :label="item.label" :value="item.value" />
10 10
             </el-select>
11 11
           </el-form-item>
12 12
         </el-col>
@@ -18,30 +18,27 @@
18 18
         <el-col :span="6">
19 19
           <el-form-item label="当前审批节点">
20 20
             <el-select v-model="formData.status" class="m-2" placeholder="请选择" clearable style="width: 280px">
21
-              <el-option v-for="(item, index) in dqspjdOptions" :key="index" :label="item.label" :value="item.value" />
21
+              <el-option
22
+                v-for="(item, index) in auditing_status"
23
+                :key="index"
24
+                :label="item.label"
25
+                :value="item.value"
26
+              />
22 27
             </el-select>
23 28
           </el-form-item>
24 29
         </el-col>
25 30
         <el-col :span="6">
26 31
           <el-button type="primary" :icon="Search" @click="handleSearch">查询</el-button>
32
+          <el-button type="primary" :icon="RefreshRight" @click="handleReSearch">重置</el-button>
27 33
         </el-col>
28 34
       </el-row>
29
-      <!-- <el-row :gutter="20">
30
-        <el-col :span="6">
31
-          <el-form-item label="审批节点">
32
-            <el-select v-model="formData.spjd" class="m-2" placeholder="请选择" clearable style="width: 280px">
33
-              <el-option v-for="item in spjdOptions" :key="item.value" :label="item.label" :value="item.value" />
34
-            </el-select>
35
-          </el-form-item>
36
-        </el-col>
37
-      </el-row> -->
38 35
     </el-form>
39 36
     <el-table :data="tableData" style="width: 100%" stripe border>
40 37
       <el-table-column type="index" label="序号" header-align="center" align="center" width="60" />
41 38
       <el-table-column prop="warehouse" label="库点简称" header-align="center" align="center" />
42 39
       <el-table-column prop="outboundType" label="出库类型" header-align="center" align="center">
43 40
         <template #default="scope">
44
-          {{ cklxObject[scope.row.outboundType] }}
41
+          {{ scope.row.outboundType ? showCh(scope.row.outboundType, outdound_type) : scope.row.outboundType }}
45 42
         </template>
46 43
       </el-table-column>
47 44
       <el-table-column prop="materialGroup" label="物资大类" header-align="center" align="center" />
@@ -50,13 +47,18 @@
50 47
       <el-table-column prop="quantity" label="数量" header-align="center" align="center" />
51 48
       <el-table-column prop="calledProvince" label="调用省份" header-align="center" align="center">
52 49
         <template #default="scope">
53
-          {{ dysfObject[scope.row.calledProvince] }}
50
+          {{ scope.row.calledProvince ? showCh(scope.row.calledProvince, province_ch) : scope.row.calledProvince }}
54 51
         </template>
55 52
       </el-table-column>
56 53
       <el-table-column prop="outboundTime" label="出库日期" header-align="center" align="center" />
57 54
       <el-table-column prop="status" label="当前审批节点" header-align="center" align="center">
58 55
         <template #default="scope">
59
-          {{ spjdObject[scope.row.status] }}
56
+          {{ scope.row.status ? showCh(scope.row.status, auditing_status) : scope.row.status }}
57
+        </template>
58
+      </el-table-column>
59
+      <el-table-column prop="submitTime" label="提交时间" header-align="center" align="center">
60
+        <template #default="scope">
61
+          {{ scope.row.submitTime }}
60 62
         </template>
61 63
       </el-table-column>
62 64
       <el-table-column label="操作" header-align="center" width="160">
@@ -93,18 +95,20 @@
93 95
 import { reactive, toRefs, onMounted } from "vue";
94 96
 import { getInAuditList } from "@/api/inAndOut/outAudit/index";
95 97
 import { getDictItemList } from "@/api/admin/index";
96
-import { Search } from "@element-plus/icons-vue";
98
+import { Search, RefreshRight } from "@element-plus/icons-vue";
97 99
 import { useRouter } from "vue-router";
100
+import { useDict } from "@/hooks/dict";
101
+
102
+const { outdound_type, is_available, province_ch, auditing_status } = useDict(
103
+  "outdound_type",
104
+  "is_available",
105
+  "province_ch",
106
+  "auditing_status"
107
+);
98 108
 
99 109
 const router = useRouter();
100 110
 const data = reactive({
101 111
   tableData: [],
102
-  cklxOptions: [],
103
-  cklxObject: {}, //出库类型
104
-  dysfObject: {}, //调用省份
105
-  spjdObject: {}, //审批节点
106
-  dqspjdOptions: [],
107
-  spjdOptions: [],
108 112
   deptId: ""
109 113
 });
110 114
 let page = reactive({
@@ -118,7 +122,7 @@ let formData = reactive({
118 122
   status: ""
119 123
 });
120 124
 
121
-let { tableData, cklxOptions, cklxObject, dqspjdOptions, spjdOptions, dysfObject, spjdObject, deptId } = toRefs(data);
125
+let { tableData, deptId } = toRefs(data);
122 126
 
123 127
 // 获取列表
124 128
 const getList = () => {
@@ -134,55 +138,11 @@ const getList = () => {
134 138
     }
135 139
   });
136 140
 };
137
-// 字典-出库类型
138
-const getOutboundTypeList = () => {
139
-  const data = reactive({
140
-    size: 100,
141
-    current: 1,
142
-    dictId: "214124"
143
-  });
144
-  getDictItemList(data).then((res: any) => {
145
-    if (res.code === 0) {
146
-      cklxOptions.value = res.data.records;
147
-      cklxObject.value = res.data.records.reduce((acc: any, item: any) => {
148
-        acc[item.value] = item.label;
149
-        return acc;
150
-      }, {});
151
-    }
152
-  });
153
-};
154
-// 字典-审批节点
155
-const getStatusList = () => {
156
-  const data = reactive({
157
-    size: 100,
158
-    current: 1,
159
-    dictId: "423059273"
160
-  });
161
-  getDictItemList(data).then((res: any) => {
162
-    if (res.code === 0) {
163
-      dqspjdOptions.value = res.data.records;
164
-      spjdObject.value = res.data.records.reduce((acc: any, item: any) => {
165
-        acc[item.value] = item.label;
166
-        return acc;
167
-      }, {});
168
-    }
169
-  });
170
-};
171
-// 字典-调用省份
172
-const getProvinceList = () => {
173
-  const data = reactive({
174
-    size: 100,
175
-    current: 1,
176
-    dictId: "1763408141744652289"
177
-  });
178
-  getDictItemList(data).then((res: any) => {
179
-    if (res.code === 0) {
180
-      dysfObject.value = res.data.records.reduce((acc: any, item: any) => {
181
-        acc[item.value] = item.label;
182
-        return acc;
183
-      }, {});
184
-    }
185
-  });
141
+
142
+// 根据码回显中文
143
+const showCh = (value: any, option: any) => {
144
+  const filterItem = option.filter((item: any) => item.value == value);
145
+  return filterItem.length ? filterItem[0].label : "-";
186 146
 };
187 147
 // 查询
188 148
 const handleSearch = () => {
@@ -195,12 +155,9 @@ const handleReSearch = () => {
195 155
     pageSize: 10,
196 156
     total: 0
197 157
   };
198
-  formData = {
199
-    outboundType: "",
200
-    materialNameVo: "",
201
-    status: ""
202
-    // spjd: "",
203
-  };
158
+  formData.outboundType = "";
159
+  formData.materialNameVo = "";
160
+  formData.status = "";
204 161
   getList();
205 162
 };
206 163
 // 审核
@@ -222,12 +179,8 @@ const handleShow = (row: any) => {
222 179
       type: "show"
223 180
     }
224 181
   });
225
-
226 182
 };
227 183
 
228
-getOutboundTypeList();
229
-getStatusList();
230
-getProvinceList();
231 184
 onMounted(() => {
232 185
   getList();
233 186
   let deptObj: any = sessionStorage.getItem("userInfo");

+ 9 - 5
src/views/InformationFilling/enterWarehouseInfo/index.vue

@@ -23,18 +23,22 @@
23 23
       </el-row>
24 24
     </el-form>
25 25
     <el-table :data="tableData" style="width: 100%" stripe border>
26
-      <el-table-column type="index" label="序号" align="center" width="60" />
27
-      <el-table-column prop="inboundType" label="入库类型" align="center">
26
+      <el-table-column type="index" label="序号" align="center" width="60">
27
+        <template #default="scope">
28
+          {{ (page.currentPage-1) * page.pageSize + scope.$index+1}}
29
+        </template>
30
+      </el-table-column>
31
+      <el-table-column prop="inboundType" label="入库类型" align="center" width="100">
28 32
         <template #default="scope">
29 33
           {{scope.row.inboundType ? showCh(scope.row.inboundType, indound_type) : scope.row.inboundType}}
30 34
         </template>
31 35
       </el-table-column>
32
-      <el-table-column prop="materialGroup" label="物资大类" align="center" />
36
+      <el-table-column prop="materialGroup" label="物资大类" align="center" width="100" />
33 37
       <el-table-column prop="materialType" label="物资类别" align="center" />
34 38
       <el-table-column prop="materialName" label="物资名称" align="center" />
35 39
       <el-table-column prop="quantity" label="数量" align="center" width="80" />
36 40
       <el-table-column prop="inboundTime" label="入库日期" align="center" width="115" />
37
-      <el-table-column prop="isAvailable" label="是否可用" align="center">
41
+      <el-table-column prop="isAvailable" label="是否可用" align="center" width="100">
38 42
         <template #default="scope">
39 43
           {{scope.row.isAvailable ? showCh(scope.row.isAvailable, is_available) : scope.row.isAvailable}}
40 44
         </template>
@@ -44,7 +48,7 @@
44 48
           {{scope.row.status ? showCh(scope.row.status, auditing_status) : scope.row.status}}
45 49
         </template>
46 50
       </el-table-column>
47
-      <el-table-column prop="submitTime" label="提交时间" align="center" width="115" />
51
+      <el-table-column prop="submitTime" label="提交时间" align="center" width="175" />
48 52
       <el-table-column fixed="right" label="操作" width="150" align="center">
49 53
         <template #default="{ row }">
50 54
           <el-button link type="success" size="small" @click="openDetail(row, 'look')">查看</el-button>

+ 5 - 1
src/views/InformationFilling/outIssue/index.vue

@@ -23,7 +23,11 @@
23 23
       </el-row>
24 24
     </el-form>
25 25
     <el-table :data="tableData" style="width: 100%" stripe border>
26
-      <el-table-column type="index" label="序号" align="center" width="60" />
26
+      <el-table-column type="index" label="序号" align="center" width="60">
27
+        <template #default="scope">
28
+          {{ (page.currentPage-1) * page.pageSize + scope.$index+1}}
29
+        </template>
30
+      </el-table-column>
27 31
       <el-table-column prop="outboundType" label="出库类型" align="center">
28 32
         <template #default="scope">
29 33
           {{scope.row.outboundType ? showCh(scope.row.outboundType, outdound_type) : scope.row.outboundType}}

+ 5 - 1
src/views/InformationFilling/outWarehouseInfo/index.vue

@@ -23,7 +23,11 @@
23 23
       </el-row>
24 24
     </el-form>
25 25
     <el-table :data="tableData" style="width: 100%" stripe border>
26
-      <el-table-column type="index" label="序号" align="center" width="60" />
26
+      <el-table-column type="index" label="序号" align="center" width="60">
27
+        <template #default="scope">
28
+          {{ (page.currentPage-1) * page.pageSize + scope.$index+1}}
29
+        </template>
30
+      </el-table-column>
27 31
       <el-table-column prop="outboundType" label="出库类型" align="center">
28 32
         <template #default="scope">
29 33
           {{scope.row.outboundType ? showCh(scope.row.outboundType, outdound_type) : scope.row.outboundType}}

+ 1 - 1
vue.config.js

@@ -21,7 +21,7 @@ module.exports = defineConfig({
21 21
         }
22 22
       },
23 23
       "/api": {
24
-        target: process.env.VUE_APP_BASE_URL,
24
+        target: 'http://192.168.1.108:8083',
25 25
         ws: true,
26 26
         changeOrigin: true,
27 27
         pathRewrite: {