Sfoglia il codice sorgente

修改客户投诉 安全隐患台账新增展示效果

chenxiaochao 2 mesi fa
parent
commit
1958560f30

+ 0 - 11
apps/web-ele/src/router/routes/local.ts

@@ -124,17 +124,6 @@ const localRoutes: RouteRecordStringComponent[] = [
124 124
     name: 'ScheduleDetail',
125 125
     path: '/schedule/detail/:taskId',
126 126
   },
127
-  // {
128
-  //   component: '/Archive/addNew/index',
129
-  //   meta: {
130
-  //     activePath: '/Archive/addNew',
131
-  //     icon: 'carbon:data-base',
132
-  //     title: '新增页面',
133
-  //     hideInMenu: true,
134
-  //   },
135
-  //   name: 'ArchiveaddNew',
136
-  //   path: '/Archive/addNew',
137
-  // },
138 127
 ];
139 128
 
140 129
 /**

+ 16 - 16
apps/web-ele/src/views/Archive/HSSEManage/emergencyDrill/index.vue

@@ -1,19 +1,3 @@
1
-<template>
2
-  <Page :auto-content-height="true">
3
-    <BasicTable>
4
-      <template #action="{ row }">
5
-        <el-button
6
-          size="small"
7
-          type="primary"
8
-          plain
9
-          @click="() => handleTaskClick(row.taskId)"
10
-          >查看</el-button
11
-        >
12
-        <el-button size="small" type="primary" plain>打印</el-button>
13
-      </template>
14
-    </BasicTable>
15
-  </Page>
16
-</template>
17 1
 <script setup lang="ts">
18 2
 import { useRouter } from 'vue-router';
19 3
 import { Page } from '@vben/common-ui';
@@ -87,6 +71,22 @@ const handleTaskClick = (taskId: number) => {
87 71
   router.push(`/schedule/detail/${taskId}`);
88 72
 };
89 73
 </script>
74
+<template>
75
+  <Page :auto-content-height="true">
76
+    <BasicTable>
77
+      <template #action="{ row }">
78
+        <el-button
79
+          size="small"
80
+          type="primary"
81
+          plain
82
+          @click="() => handleTaskClick(row.taskId)"
83
+          >查看</el-button
84
+        >
85
+        <el-button size="small" type="primary" plain>打印</el-button>
86
+      </template>
87
+    </BasicTable>
88
+  </Page>
89
+</template>
90 90
 <style scoped lang="scss">
91 91
 :deep(.el-tooltip__trigger:focus) {
92 92
   outline: none;

+ 292 - 0
apps/web-ele/src/views/Archive/HSSEManage/safetyHazardLedger/drawer.vue

@@ -0,0 +1,292 @@
1
+<script lang="ts" setup>
2
+import { useVbenDrawer } from '@vben/common-ui';
3
+import { reactive, ref } from 'vue';
4
+import { Delete, Plus, ZoomIn } from '@element-plus/icons-vue';
5
+import type { FormInstance, FormRules, UploadFile } from 'element-plus';
6
+const [Drawer, drawerApi] = useVbenDrawer();
7
+interface RuleForm {
8
+  inspectgasstation: string;
9
+  gasStationName: string;
10
+  radio1: string;
11
+  discoverProblem: string;
12
+  sllabel: string;
13
+  handlingSuggestions: string;
14
+  hazardDescription: string;
15
+  riskLevel: string;
16
+  judgmentResult: string;
17
+  rectificationEndTime: string;
18
+  cploadImage: Record<string, any>;
19
+  executor: string;
20
+  endTime: string;
21
+  cC: string;
22
+  Ledgertype: string;
23
+}
24
+const ruleFormRef = ref<FormInstance>();
25
+const ruleForm = reactive<RuleForm>({
26
+  inspectgasstation: '',
27
+  gasStationName: '',
28
+  radio1: '',
29
+  discoverProblem: '',
30
+  sllabel: '',
31
+  handlingSuggestions: '',
32
+  hazardDescription: '',
33
+  riskLevel: '',
34
+  judgmentResult: '',
35
+  rectificationEndTime: '',
36
+  cploadImage: {
37
+    fileList: [],
38
+    dialogImageUrl: '',
39
+    dialogVisible: false,
40
+    disabled: false,
41
+  },
42
+  executor: '',
43
+  endTime: '',
44
+  cC: '',
45
+  Ledgertype: '',
46
+});
47
+const rules = reactive<FormRules<RuleForm>>({
48
+  inspectgasstation: [
49
+    {
50
+      required: true,
51
+      message: '请选择检查油站',
52
+      trigger: 'change',
53
+    },
54
+  ],
55
+  gasStationName: [
56
+    {
57
+      required: true,
58
+      message: '请选择油站名称',
59
+      trigger: 'change',
60
+    },
61
+  ],
62
+  discoverProblem: [
63
+    {
64
+      required: true,
65
+      message: '请输入发现问题',
66
+      trigger: 'change',
67
+    },
68
+  ],
69
+  hazardDescription: [
70
+    {
71
+      type: 'date',
72
+      required: true,
73
+      message: '请输入主要危害描述',
74
+      trigger: 'change',
75
+    },
76
+  ],
77
+  riskLevel: [
78
+    {
79
+      required: true,
80
+      message: '请选择风险度',
81
+      trigger: 'change',
82
+    },
83
+  ],
84
+  rectificationEndTime: [
85
+    {
86
+      type: 'date',
87
+      required: true,
88
+      message: '请选择整改截止时间',
89
+      trigger: 'change',
90
+    },
91
+  ],
92
+  executor: [
93
+    {
94
+      required: true,
95
+      message: '请选择执行人',
96
+      trigger: 'change',
97
+    },
98
+  ],
99
+  endTime: [
100
+    {
101
+      type: 'date',
102
+      required: true,
103
+      message: '请选择截止时间',
104
+      trigger: 'change',
105
+    },
106
+  ],
107
+});
108
+//删除图片
109
+const handleRemove = (file: UploadFile) => {
110
+  ruleForm.cploadImage.fileList = ruleForm.cploadImage.fileList.filter(
111
+    (item: any) => item.uid !== file.uid,
112
+  );
113
+};
114
+//图片预览
115
+const handlePictureCardPreview = (file: UploadFile) => {
116
+  ruleForm.cploadImage.dialogImageUrl = file.url;
117
+  ruleForm.cploadImage.dialogVisible = true;
118
+};
119
+
120
+const submitForm = async (formEl: FormInstance | undefined) => {
121
+  if (!formEl) return;
122
+  await formEl.validate((valid, fields) => {
123
+    if (valid) {
124
+      console.log('submit!');
125
+    } else {
126
+      console.log('error submit!', fields);
127
+    }
128
+  });
129
+};
130
+const resetForm = (formEl: FormInstance | undefined) => {
131
+  if (!formEl) return;
132
+  formEl.resetFields();
133
+};
134
+</script>
135
+<template>
136
+  <Drawer title="新增隐患台账">
137
+    <div>
138
+      <el-form
139
+        ref="ruleFormRef"
140
+        style="max-width: 600px"
141
+        :model="ruleForm"
142
+        :rules="rules"
143
+        label-width="auto"
144
+      >
145
+        <el-form-item label="检查油站" prop="inspectgasstation">
146
+          <el-select v-model="ruleForm.inspectgasstation" placeholder="请选择">
147
+            <el-option label="Zone one" value="shanghai" />
148
+            <el-option label="Zone two" value="beijing" />
149
+          </el-select>
150
+        </el-form-item>
151
+        <el-form-item label="油站名称" prop="gasStationName">
152
+          <el-select v-model="ruleForm.gasStationName" placeholder="请选择">
153
+            <el-option label="Zone one" value="shanghai" />
154
+            <el-option label="Zone two" value="beijing" />
155
+          </el-select>
156
+        </el-form-item>
157
+        <el-form-item label="是否转任务" prop="radio1">
158
+          <el-radio-group v-model="ruleForm.radio1">
159
+            <el-radio value="1" size="large">是</el-radio>
160
+            <el-radio value="2" size="large">否</el-radio>
161
+          </el-radio-group>
162
+        </el-form-item>
163
+        <el-form-item label="发现问题" prop="discoverProblem">
164
+          <el-select v-model="ruleForm.discoverProblem" placeholder="请选择">
165
+            <el-option label="Zone one" value="shanghai" />
166
+            <el-option label="Zone two" value="beijing" />
167
+          </el-select>
168
+        </el-form-item>
169
+        <el-form-item label="标签" prop="sllabel">
170
+          <el-select v-model="ruleForm.sllabel" placeholder="请选择">
171
+            <el-option label="Zone one" value="shanghai" />
172
+            <el-option label="Zone two" value="beijing" />
173
+          </el-select>
174
+        </el-form-item>
175
+        <el-form-item label="处理建议" prop="handlingSuggestions">
176
+          <el-input
177
+            v-model="ruleForm.handlingSuggestions"
178
+            type="textarea"
179
+            placeholder="处理建议"
180
+          />
181
+        </el-form-item>
182
+        <el-form-item label="主要危害描述" prop="hazardDescription">
183
+          <el-input
184
+            v-model="ruleForm.hazardDescription"
185
+            placeholder="主要危害描述"
186
+          />
187
+        </el-form-item>
188
+        <el-form-item label="风险度" prop="riskLevel">
189
+          <el-select v-model="ruleForm.riskLevel" placeholder="请选择">
190
+            <el-option label="Zone one" value="shanghai" />
191
+            <el-option label="Zone two" value="beijing" />
192
+          </el-select>
193
+        </el-form-item>
194
+        <el-form-item label="整改截止时间" prop="rectificationEndTime">
195
+          <el-date-picker
196
+            v-model="ruleForm.rectificationEndTime"
197
+            type="datetime"
198
+            placeholder="整改截止时间"
199
+            style="width: 100%"
200
+          />
201
+        </el-form-item>
202
+        <el-form-item label="问题图片" prop="cploadImage">
203
+          <el-upload
204
+            action="#"
205
+            v-model:file-list="ruleForm.cploadImage.fileList"
206
+            list-type="picture-card"
207
+            :auto-upload="false"
208
+          >
209
+            <el-icon><Plus /></el-icon>
210
+            <template #file="{ file }">
211
+              <div>
212
+                <img
213
+                  class="el-upload-list__item-thumbnail"
214
+                  :src="file.url"
215
+                  alt=""
216
+                />
217
+                <span class="el-upload-list__item-actions">
218
+                  <span
219
+                    class="el-upload-list__item-preview"
220
+                    @click="handlePictureCardPreview(file)"
221
+                  >
222
+                    <el-icon><zoom-in /></el-icon>
223
+                  </span>
224
+                  <span
225
+                    v-if="!ruleForm.cploadImage.disabled"
226
+                    class="el-upload-list__item-delete"
227
+                    @click="handleRemove(file)"
228
+                  >
229
+                    <el-icon><Delete /></el-icon>
230
+                  </span>
231
+                </span>
232
+              </div>
233
+            </template>
234
+          </el-upload>
235
+
236
+          <el-dialog
237
+            v-model="ruleForm.cploadImage.dialogVisible"
238
+            width="80%"
239
+            :close-on-click-modal="true"
240
+          >
241
+            <div style="text-align: center; padding: 12px 8px">
242
+              <img
243
+                :src="ruleForm.cploadImage.dialogImageUrl"
244
+                alt="Preview Image"
245
+                style="
246
+                  width: 90vw;
247
+                  max-height: 80vh;
248
+                  display: inline-block;
249
+                  object-fit: contain;
250
+                  cursor: zoom-in;
251
+                "
252
+              />
253
+            </div>
254
+          </el-dialog>
255
+        </el-form-item>
256
+        <el-form-item label="执行人" prop="executor">
257
+          <el-select v-model="ruleForm.executor" placeholder="请选择">
258
+            <el-option label="Zone one" value="shanghai" />
259
+            <el-option label="Zone two" value="beijing" />
260
+          </el-select>
261
+        </el-form-item>
262
+        <el-form-item label="截止时间" prop="endTime">
263
+          <el-date-picker
264
+            v-model="ruleForm.endTime"
265
+            type="datetime"
266
+            placeholder="截止时间"
267
+            style="width: 100%"
268
+          />
269
+        </el-form-item>
270
+        <el-form-item label="抄送人" prop="cC">
271
+          <el-select v-model="ruleForm.cC" placeholder="请选择">
272
+            <el-option label="Zone one" value="shanghai" />
273
+            <el-option label="Zone two" value="beijing" />
274
+          </el-select>
275
+        </el-form-item>
276
+        <el-form-item label="台账类型" prop="Ledgertype">
277
+          <el-inputh
278
+            v-model="ruleForm.Ledgertype"
279
+            type="textarea"
280
+            placeholder="请输入台账类型"
281
+          />
282
+        </el-form-item>
283
+        <el-form-item>
284
+          <el-button type="primary" @click="submitForm(ruleFormRef)">
285
+            提交
286
+          </el-button>
287
+          <el-button @click="resetForm(ruleFormRef)">取消</el-button>
288
+        </el-form-item>
289
+      </el-form>
290
+    </div>
291
+  </Drawer>
292
+</template>

+ 38 - 30
apps/web-ele/src/views/Archive/HSSEManage/safetyHazardLedger/index.vue

@@ -1,35 +1,17 @@
1
-<template>
2
-  <Page :auto-content-height="true">
3
-    <BasicTable>
4
-      <template #toolbar-tools>
5
-        <el-button type="primary" plain @click="handleadd">新增</el-button>
6
-        <el-button type="primary" plain>导出</el-button>
7
-        <el-button @click="() => (showSearchForm = !showSearchForm)">
8
-          展开/折叠
9
-        </el-button>
10
-      </template>
11
-      <template #action="{ row }">
12
-        <el-button
13
-          size="small"
14
-          type="primary"
15
-          plain
16
-          @click="() => handleTaskClick(row.taskId)"
17
-          >查看</el-button
18
-        >
19
-      </template>
20
-    </BasicTable>
21
-  </Page>
22
-</template>
23 1
 <script setup lang="ts">
24
-import { ref } from 'vue';
2
+import { ref, nextTick } from 'vue';
25 3
 import { useRouter } from 'vue-router';
26
-import { Page } from '@vben/common-ui';
4
+import { Page, useVbenDrawer } from '@vben/common-ui';
27 5
 import { useVbenVxeGrid, type VxeGridProps } from '#/adapter/vxe-table';
28 6
 import { columns, querySchema } from './config-data';
29 7
 import type { VbenFormProps } from '@vben/common-ui';
30 8
 import { mockData } from './config-data';
9
+import ExtraDrawer from './drawer.vue';
31 10
 const showSearchForm = ref(true) as any;
32 11
 const router = useRouter();
12
+const [Drawer, drawerApi] = useVbenDrawer({
13
+  connectedComponent: ExtraDrawer,
14
+});
33 15
 const formOptions: VbenFormProps = {
34 16
   commonConfig: {
35 17
     labelWidth: 80,
@@ -91,17 +73,43 @@ const [BasicTable, BasicTableApi] = useVbenVxeGrid({
91 73
   formOptions,
92 74
   gridOptions,
93 75
 });
94
-const handleadd = () => {
95
-  router.push({
96
-    path: '/Archive/addNew',
97
-    query: { type: '安全隐患台账' },
76
+//隐藏自带的按钮
77
+nextTick(() => {
78
+  drawerApi.setState({
79
+    footer: false,
80
+    showCancelButton: false,
81
+    showConfirmButton: false,
98 82
   });
99
-};
100
-
83
+});
101 84
 const handleTaskClick = (taskId: number) => {
102 85
   router.push(`/schedule/detail/${taskId}`);
103 86
 };
104 87
 </script>
88
+<template>
89
+  <Page :auto-content-height="true">
90
+    <BasicTable>
91
+      <template #toolbar-tools>
92
+        <el-button type="primary" plain @click="() => drawerApi.open()"
93
+          >新增</el-button
94
+        >
95
+        <el-button type="primary" plain>导出</el-button>
96
+        <el-button @click="() => (showSearchForm = !showSearchForm)">
97
+          展开/折叠
98
+        </el-button>
99
+      </template>
100
+      <template #action="{ row }">
101
+        <el-button
102
+          size="small"
103
+          type="primary"
104
+          plain
105
+          @click="() => handleTaskClick(row.taskId)"
106
+          >查看</el-button
107
+        >
108
+      </template>
109
+    </BasicTable>
110
+    <Drawer />
111
+  </Page>
112
+</template>
105 113
 <style scoped lang="scss">
106 114
 :deep(.el-tooltip__trigger:focus) {
107 115
   outline: none;

+ 0 - 257
apps/web-ele/src/views/Archive/addNew/components/customerComplaintAdd.vue

@@ -1,257 +0,0 @@
1
-<script lang="ts" setup>
2
-import { reactive, ref } from 'vue';
3
-import { Delete, Plus, ZoomIn } from '@element-plus/icons-vue';
4
-import type { FormInstance, FormRules, UploadFile } from 'element-plus';
5
-interface RuleForm {
6
-  complaintStation: string;
7
-  complaintChannels: string;
8
-  complainttype: string;
9
-  complaintime: string;
10
-  complaintdesc: string;
11
-  cploadImage: Record<string, any>;
12
-  judgmentResult: string;
13
-  startTime: string;
14
-  endTime: string;
15
-  Executor: string;
16
-}
17
-const ruleFormRef = ref<FormInstance>();
18
-const ruleForm = reactive<RuleForm>({
19
-  complaintStation: '',
20
-  complaintChannels: '',
21
-  complainttype: '',
22
-  complaintime: '',
23
-  complaintdesc: '',
24
-  cploadImage: {
25
-    fileList: [],
26
-    dialogImageUrl: '',
27
-    dialogVisible: false,
28
-    disabled: false,
29
-  },
30
-  judgmentResult: '',
31
-  startTime: '',
32
-  endTime: '',
33
-  Executor: '',
34
-});
35
-const rules = reactive<FormRules<RuleForm>>({
36
-  complaintStation: [
37
-    {
38
-      required: true,
39
-      message: '请选择投诉油站',
40
-      trigger: 'change',
41
-    },
42
-  ],
43
-  complaintChannels: [
44
-    {
45
-      required: true,
46
-      message: '请选择投诉渠道',
47
-      trigger: 'change',
48
-    },
49
-  ],
50
-  complainttype: [
51
-    {
52
-      required: true,
53
-      message: '请选择类型',
54
-      trigger: 'change',
55
-    },
56
-  ],
57
-  complaintime: [
58
-    {
59
-      type: 'date',
60
-      required: true,
61
-      message: '请选择投诉时间',
62
-      trigger: 'change',
63
-    },
64
-  ],
65
-  complaintdesc: [
66
-    {
67
-      required: true,
68
-      message: '请输入投诉问题',
69
-      trigger: 'change',
70
-    },
71
-  ],
72
-  startTime: [
73
-    {
74
-      type: 'date',
75
-      required: true,
76
-      message: '请选择开始时间',
77
-      trigger: 'change',
78
-    },
79
-  ],
80
-  endTime: [
81
-    {
82
-      type: 'date',
83
-      required: true,
84
-      message: '请选择截止时间',
85
-      trigger: 'change',
86
-    },
87
-  ],
88
-  Executor: [
89
-    {
90
-      type: 'date',
91
-      required: true,
92
-      message: '请选择执行人',
93
-      trigger: 'change',
94
-    },
95
-  ],
96
-});
97
-//删除图片
98
-const handleRemove = (file: UploadFile) => {
99
-  ruleForm.cploadImage.fileList = ruleForm.cploadImage.fileList.filter(
100
-    (item: any) => item.uid !== file.uid,
101
-  );
102
-};
103
-//图片预览
104
-const handlePictureCardPreview = (file: UploadFile) => {
105
-  ruleForm.cploadImage.dialogImageUrl = file.url;
106
-  ruleForm.cploadImage.dialogVisible = true;
107
-};
108
-const submitForm = async (formEl: FormInstance | undefined) => {
109
-  if (!formEl) return;
110
-  await formEl.validate((valid, fields) => {
111
-    if (valid) {
112
-      console.log('submit!');
113
-    } else {
114
-      console.log('error submit!', fields);
115
-    }
116
-  });
117
-};
118
-const resetForm = (formEl: FormInstance | undefined) => {
119
-  if (!formEl) return;
120
-  formEl.resetFields();
121
-};
122
-</script>
123
-<template>
124
-  <el-form
125
-    ref="ruleFormRef"
126
-    style="max-width: 600px"
127
-    :model="ruleForm"
128
-    :rules="rules"
129
-    label-width="auto"
130
-  >
131
-    <el-form-item label="投诉油站" prop="complaintStation">
132
-      <el-select v-model="ruleForm.complaintStation" placeholder="请选择">
133
-        <el-option label="Zone one" value="shanghai" />
134
-        <el-option label="Zone two" value="beijing" />
135
-      </el-select>
136
-    </el-form-item>
137
-    <el-form-item label="投诉渠道" prop="complaintChannels">
138
-      <el-select v-model="ruleForm.complaintChannels" placeholder="请选择">
139
-        <el-option label="Zone one" value="shanghai" />
140
-        <el-option label="Zone two" value="beijing" />
141
-      </el-select>
142
-    </el-form-item>
143
-    <el-form-item label="类型" prop="complainttype">
144
-      <el-select v-model="ruleForm.complainttype" placeholder="请选择">
145
-        <el-option label="Zone one" value="shanghai" />
146
-        <el-option label="Zone two" value="beijing" />
147
-      </el-select>
148
-    </el-form-item>
149
-    <el-form-item label="投诉时间" required>
150
-      <el-col :span="11">
151
-        <el-form-item prop="complaintime">
152
-          <el-date-picker
153
-            v-model="ruleForm.complaintime"
154
-            type="date"
155
-            placeholder="选择日期时间"
156
-            style="width: 100%"
157
-          />
158
-        </el-form-item>
159
-      </el-col>
160
-    </el-form-item>
161
-    <el-form-item label="投诉问题" prop="complaintdesc">
162
-      <el-input
163
-        v-model="ruleForm.complaintdesc"
164
-        type="textarea"
165
-        placeholder="投诉问题"
166
-      />
167
-    </el-form-item>
168
-    <el-form-item label="图片" prop="cploadImage">
169
-      <el-upload
170
-        action="#"
171
-        v-model:file-list="ruleForm.cploadImage.fileList"
172
-        list-type="picture-card"
173
-        :auto-upload="false"
174
-      >
175
-        <el-icon><Plus /></el-icon>
176
-        <template #file="{ file }">
177
-          <div>
178
-            <img
179
-              class="el-upload-list__item-thumbnail"
180
-              :src="file.url"
181
-              alt=""
182
-            />
183
-            <span class="el-upload-list__item-actions">
184
-              <span
185
-                class="el-upload-list__item-preview"
186
-                @click="handlePictureCardPreview(file)"
187
-              >
188
-                <el-icon><zoom-in /></el-icon>
189
-              </span>
190
-              <span
191
-                v-if="!ruleForm.cploadImage.disabled"
192
-                class="el-upload-list__item-delete"
193
-                @click="handleRemove(file)"
194
-              >
195
-                <el-icon><Delete /></el-icon>
196
-              </span>
197
-            </span>
198
-          </div>
199
-        </template>
200
-      </el-upload>
201
-
202
-      <el-dialog
203
-        v-model="ruleForm.cploadImage.dialogVisible"
204
-        width="80%"
205
-        :close-on-click-modal="true"
206
-      >
207
-        <div style="text-align: center; padding: 12px 8px">
208
-          <img
209
-            :src="ruleForm.cploadImage.dialogImageUrl"
210
-            alt="Preview Image"
211
-            style="
212
-              width: 90vw;
213
-              max-height: 80vh;
214
-              display: inline-block;
215
-              object-fit: contain;
216
-              cursor: zoom-in;
217
-            "
218
-          />
219
-        </div>
220
-      </el-dialog>
221
-    </el-form-item>
222
-    <el-form-item label="判定结果" prop="judgmentResult">
223
-      <el-select v-model="ruleForm.judgmentResult" placeholder="请选择">
224
-        <el-option label="Zone one" value="shanghai" />
225
-        <el-option label="Zone two" value="beijing" />
226
-      </el-select>
227
-    </el-form-item>
228
-    <el-form-item label="开始时间" prop="startTime">
229
-      <el-date-picker
230
-        v-model="ruleForm.startTime"
231
-        type="datetime"
232
-        placeholder="选择日期时间"
233
-        style="width: 100%"
234
-      />
235
-    </el-form-item>
236
-    <el-form-item label="截止时间" prop="endTime">
237
-      <el-date-picker
238
-        v-model="ruleForm.startTime"
239
-        type="datetime"
240
-        placeholder="选择日期时间"
241
-        style="width: 100%"
242
-      />
243
-    </el-form-item>
244
-    <el-form-item label="执行人" prop="Executor">
245
-      <el-select v-model="ruleForm.Executor" placeholder="请选择">
246
-        <el-option label="Zone one" value="shanghai" />
247
-        <el-option label="Zone two" value="beijing" />
248
-      </el-select>
249
-    </el-form-item>
250
-    <el-form-item>
251
-      <el-button type="primary" @click="submitForm(ruleFormRef)">
252
-        提交
253
-      </el-button>
254
-      <el-button @click="resetForm(ruleFormRef)">取消</el-button>
255
-    </el-form-item>
256
-  </el-form>
257
-</template>

+ 0 - 15
apps/web-ele/src/views/Archive/addNew/index.vue

@@ -1,15 +0,0 @@
1
-<script setup lang="ts">
2
-import { ref } from 'vue';
3
-import { useRoute } from 'vue-router';
4
-import { Page } from '@vben/common-ui';
5
-import customerComplaintAdd from './components/customerComplaintAdd.vue';
6
-import safetyHazardRegister from './components/safetyHazardRegister.vue';
7
-const route = useRoute();
8
-const type = ref(route.query.type);
9
-</script>
10
-<template>
11
-  <Page :auto-content-height="true">
12
-    <customerComplaintAdd v-if="type == '客户投诉'" />
13
-    <safetyHazardRegister v-if="type == '安全隐患台账'" />
14
-  </Page>
15
-</template>

+ 72 - 100
apps/web-ele/src/views/Archive/addNew/components/safetyHazardRegister.vue

@@ -1,104 +1,97 @@
1 1
 <script lang="ts" setup>
2
+import { useVbenDrawer } from '@vben/common-ui';
2 3
 import { reactive, ref } from 'vue';
3 4
 import { Delete, Plus, ZoomIn } from '@element-plus/icons-vue';
4 5
 import type { FormInstance, FormRules, UploadFile } from 'element-plus';
6
+const [Drawer, drawerApi] = useVbenDrawer();
5 7
 interface RuleForm {
6
-  inspectgasstation: string;
7
-  gasStationName: string;
8
-  radio1: string;
9
-  discoverProblem: string;
10
-  sllabel: string;
11
-  handlingSuggestions: string;
12
-  hazardDescription: string;
13
-  riskLevel: string;
14
-  judgmentResult: string;
15
-  rectificationEndTime: string;
8
+  complaintStation: string;
9
+  complaintChannels: string;
10
+  complainttype: string;
11
+  complaintime: string;
12
+  complaintdesc: string;
16 13
   cploadImage: Record<string, any>;
17
-  executor: string;
14
+  judgmentResult: string;
15
+  startTime: string;
18 16
   endTime: string;
19
-  cC: string;
20
-  Ledgertype: string;
17
+  Executor: string;
21 18
 }
22 19
 const ruleFormRef = ref<FormInstance>();
23 20
 const ruleForm = reactive<RuleForm>({
24
-  inspectgasstation: '',
25
-  gasStationName: '',
26
-  radio1: '',
27
-  discoverProblem: '',
28
-  sllabel: '',
29
-  handlingSuggestions: '',
30
-  hazardDescription: '',
31
-  riskLevel: '',
32
-  judgmentResult: '',
33
-  rectificationEndTime: '',
21
+  complaintStation: '',
22
+  complaintChannels: '',
23
+  complainttype: '',
24
+  complaintime: '',
25
+  complaintdesc: '',
34 26
   cploadImage: {
35 27
     fileList: [],
36 28
     dialogImageUrl: '',
37 29
     dialogVisible: false,
38 30
     disabled: false,
39 31
   },
40
-  executor: '',
32
+  judgmentResult: '',
33
+  startTime: '',
41 34
   endTime: '',
42
-  cC: '',
43
-  Ledgertype: '',
35
+  Executor: '',
44 36
 });
45 37
 const rules = reactive<FormRules<RuleForm>>({
46
-  inspectgasstation: [
38
+  complaintStation: [
47 39
     {
48 40
       required: true,
49
-      message: '请选择检查油站',
41
+      message: '请选择投诉油站',
50 42
       trigger: 'change',
51 43
     },
52 44
   ],
53
-  gasStationName: [
45
+  complaintChannels: [
54 46
     {
55 47
       required: true,
56
-      message: '请选择油站名称',
48
+      message: '请选择投诉渠道',
57 49
       trigger: 'change',
58 50
     },
59 51
   ],
60
-  discoverProblem: [
52
+  complainttype: [
61 53
     {
62 54
       required: true,
63
-      message: '请输入发现问题',
55
+      message: '请选择类型',
64 56
       trigger: 'change',
65 57
     },
66 58
   ],
67
-  hazardDescription: [
59
+  complaintime: [
68 60
     {
69 61
       type: 'date',
70 62
       required: true,
71
-      message: '请输入主要危害描述',
63
+      message: '请选择投诉时间',
72 64
       trigger: 'change',
73 65
     },
74 66
   ],
75
-  riskLevel: [
67
+  complaintdesc: [
76 68
     {
77 69
       required: true,
78
-      message: '请选择风险度',
70
+      message: '请输入投诉问题',
79 71
       trigger: 'change',
80 72
     },
81 73
   ],
82
-  rectificationEndTime: [
74
+  startTime: [
83 75
     {
84 76
       type: 'date',
85 77
       required: true,
86
-      message: '请选择整改截止时间',
78
+      message: '请选择开始时间',
87 79
       trigger: 'change',
88 80
     },
89 81
   ],
90
-  executor: [
82
+  endTime: [
91 83
     {
84
+      type: 'date',
92 85
       required: true,
93
-      message: '请选择执行人',
86
+      message: '请选择截止时间',
94 87
       trigger: 'change',
95 88
     },
96 89
   ],
97
-  endTime: [
90
+  Executor: [
98 91
     {
99 92
       type: 'date',
100 93
       required: true,
101
-      message: '请选择截止时间',
94
+      message: '请选择执行人',
102 95
       trigger: 'change',
103 96
     },
104 97
   ],
@@ -114,7 +107,6 @@ const handlePictureCardPreview = (file: UploadFile) => {
114 107
   ruleForm.cploadImage.dialogImageUrl = file.url;
115 108
   ruleForm.cploadImage.dialogVisible = true;
116 109
 };
117
-
118 110
 const submitForm = async (formEl: FormInstance | undefined) => {
119 111
   if (!formEl) return;
120 112
   await formEl.validate((valid, fields) => {
@@ -131,8 +123,7 @@ const resetForm = (formEl: FormInstance | undefined) => {
131 123
 };
132 124
 </script>
133 125
 <template>
134
-  <div>
135
-    <h3 style="margin-bottom: 30px">新增隐患台账</h3>
126
+  <Drawer title="客户投诉新增">
136 127
     <el-form
137 128
       ref="ruleFormRef"
138 129
       style="max-width: 600px"
@@ -140,64 +131,44 @@ const resetForm = (formEl: FormInstance | undefined) => {
140 131
       :rules="rules"
141 132
       label-width="auto"
142 133
     >
143
-      <el-form-item label="检查油站" prop="inspectgasstation">
144
-        <el-select v-model="ruleForm.inspectgasstation" placeholder="请选择">
134
+      <el-form-item label="投诉油站" prop="complaintStation">
135
+        <el-select v-model="ruleForm.complaintStation" placeholder="请选择">
145 136
           <el-option label="Zone one" value="shanghai" />
146 137
           <el-option label="Zone two" value="beijing" />
147 138
         </el-select>
148 139
       </el-form-item>
149
-      <el-form-item label="油站名称" prop="gasStationName">
150
-        <el-select v-model="ruleForm.gasStationName" placeholder="请选择">
140
+      <el-form-item label="投诉渠道" prop="complaintChannels">
141
+        <el-select v-model="ruleForm.complaintChannels" placeholder="请选择">
151 142
           <el-option label="Zone one" value="shanghai" />
152 143
           <el-option label="Zone two" value="beijing" />
153 144
         </el-select>
154 145
       </el-form-item>
155
-      <el-form-item label="是否转任务" prop="radio1">
156
-        <el-radio-group v-model="ruleForm.radio1">
157
-          <el-radio value="1" size="large">是</el-radio>
158
-          <el-radio value="2" size="large">否</el-radio>
159
-        </el-radio-group>
160
-      </el-form-item>
161
-      <el-form-item label="发现问题" prop="discoverProblem">
162
-        <el-select v-model="ruleForm.discoverProblem" placeholder="请选择">
146
+      <el-form-item label="类型" prop="complainttype">
147
+        <el-select v-model="ruleForm.complainttype" placeholder="请选择">
163 148
           <el-option label="Zone one" value="shanghai" />
164 149
           <el-option label="Zone two" value="beijing" />
165 150
         </el-select>
166 151
       </el-form-item>
167
-      <el-form-item label="标签" prop="sllabel">
168
-        <el-select v-model="ruleForm.sllabel" placeholder="请选择">
169
-          <el-option label="Zone one" value="shanghai" />
170
-          <el-option label="Zone two" value="beijing" />
171
-        </el-select>
152
+      <el-form-item label="投诉时间" required>
153
+        <el-col :span="11">
154
+          <el-form-item prop="complaintime">
155
+            <el-date-picker
156
+              v-model="ruleForm.complaintime"
157
+              type="date"
158
+              placeholder="选择日期时间"
159
+              style="width: 100%"
160
+            />
161
+          </el-form-item>
162
+        </el-col>
172 163
       </el-form-item>
173
-      <el-form-item label="处理建议" prop="handlingSuggestions">
164
+      <el-form-item label="投诉问题" prop="complaintdesc">
174 165
         <el-input
175
-          v-model="ruleForm.handlingSuggestions"
166
+          v-model="ruleForm.complaintdesc"
176 167
           type="textarea"
177
-          placeholder="处理建议"
168
+          placeholder="投诉问题"
178 169
         />
179 170
       </el-form-item>
180
-      <el-form-item label="主要危害描述" prop="hazardDescription">
181
-        <el-input
182
-          v-model="ruleForm.hazardDescription"
183
-          placeholder="主要危害描述"
184
-        />
185
-      </el-form-item>
186
-      <el-form-item label="风险度" prop="riskLevel">
187
-        <el-select v-model="ruleForm.riskLevel" placeholder="请选择">
188
-          <el-option label="Zone one" value="shanghai" />
189
-          <el-option label="Zone two" value="beijing" />
190
-        </el-select>
191
-      </el-form-item>
192
-      <el-form-item label="整改截止时间" prop="rectificationEndTime">
193
-        <el-date-picker
194
-          v-model="ruleForm.rectificationEndTime"
195
-          type="datetime"
196
-          placeholder="整改截止时间"
197
-          style="width: 100%"
198
-        />
199
-      </el-form-item>
200
-      <el-form-item label="问题图片" prop="cploadImage">
171
+      <el-form-item label="图片" prop="cploadImage">
201 172
         <el-upload
202 173
           action="#"
203 174
           v-model:file-list="ruleForm.cploadImage.fileList"
@@ -251,33 +222,34 @@ const resetForm = (formEl: FormInstance | undefined) => {
251 222
           </div>
252 223
         </el-dialog>
253 224
       </el-form-item>
254
-      <el-form-item label="执行人" prop="executor">
255
-        <el-select v-model="ruleForm.executor" placeholder="请选择">
225
+      <el-form-item label="判定结果" prop="judgmentResult">
226
+        <el-select v-model="ruleForm.judgmentResult" placeholder="请选择">
256 227
           <el-option label="Zone one" value="shanghai" />
257 228
           <el-option label="Zone two" value="beijing" />
258 229
         </el-select>
259 230
       </el-form-item>
231
+      <el-form-item label="开始时间" prop="startTime">
232
+        <el-date-picker
233
+          v-model="ruleForm.startTime"
234
+          type="datetime"
235
+          placeholder="选择日期时间"
236
+          style="width: 100%"
237
+        />
238
+      </el-form-item>
260 239
       <el-form-item label="截止时间" prop="endTime">
261 240
         <el-date-picker
262
-          v-model="ruleForm.endTime"
241
+          v-model="ruleForm.startTime"
263 242
           type="datetime"
264
-          placeholder="截止时间"
243
+          placeholder="选择日期时间"
265 244
           style="width: 100%"
266 245
         />
267 246
       </el-form-item>
268
-      <el-form-item label="抄送人" prop="cC">
269
-        <el-select v-model="ruleForm.cC" placeholder="请选择">
247
+      <el-form-item label="执行人" prop="Executor">
248
+        <el-select v-model="ruleForm.Executor" placeholder="请选择">
270 249
           <el-option label="Zone one" value="shanghai" />
271 250
           <el-option label="Zone two" value="beijing" />
272 251
         </el-select>
273 252
       </el-form-item>
274
-      <el-form-item label="台账类型" prop="Ledgertype">
275
-        <el-inputh
276
-          v-model="ruleForm.Ledgertype"
277
-          type="textarea"
278
-          placeholder="请输入台账类型"
279
-        />
280
-      </el-form-item>
281 253
       <el-form-item>
282 254
         <el-button type="primary" @click="submitForm(ruleFormRef)">
283 255
           提交
@@ -285,5 +257,5 @@ const resetForm = (formEl: FormInstance | undefined) => {
285 257
         <el-button @click="resetForm(ruleFormRef)">取消</el-button>
286 258
       </el-form-item>
287 259
     </el-form>
288
-  </div>
260
+  </Drawer>
289 261
 </template>

+ 17 - 9
apps/web-ele/src/views/Archive/operationsManagement/customercomplaint/index.vue

@@ -1,13 +1,17 @@
1 1
 <script setup lang="ts">
2
-import { ref } from 'vue';
2
+import { ref, nextTick } from 'vue';
3 3
 import { useRouter } from 'vue-router';
4
-import { Page } from '@vben/common-ui';
4
+import { Page, useVbenDrawer } from '@vben/common-ui';
5 5
 import { useVbenVxeGrid, type VxeGridProps } from '#/adapter/vxe-table';
6 6
 import { columns, querySchema } from './config-data';
7 7
 import type { VbenFormProps } from '@vben/common-ui';
8 8
 import { mockData } from './config-data';
9
+import ExtraDrawer from './drawer.vue';
9 10
 const showSearchForm = ref(true) as any;
10 11
 const router = useRouter();
12
+const [Drawer, drawerApi] = useVbenDrawer({
13
+  connectedComponent: ExtraDrawer,
14
+});
11 15
 const formOptions: VbenFormProps = {
12 16
   commonConfig: {
13 17
     labelWidth: 80,
@@ -26,7 +30,6 @@ const formOptions: VbenFormProps = {
26 30
   //   ],
27 31
   // ],
28 32
 };
29
-
30 33
 // 列表中显示配置
31 34
 const gridOptions: VxeGridProps = {
32 35
   checkboxConfig: {
@@ -69,12 +72,14 @@ const [BasicTable, BasicTableApi] = useVbenVxeGrid({
69 72
   formOptions,
70 73
   gridOptions,
71 74
 });
72
-const handleadd = () => {
73
-  router.push({
74
-    path: '/Archive/addNew',
75
-    query: { type: '客户投诉' },
75
+//隐藏自带的按钮
76
+nextTick(() => {
77
+  drawerApi.setState({
78
+    footer: false,
79
+    showCancelButton: false,
80
+    showConfirmButton: false,
76 81
   });
77
-};
82
+});
78 83
 const handleTaskClick = (taskId: number) => {
79 84
   router.push(`/schedule/detail/${taskId}`);
80 85
 };
@@ -83,7 +88,9 @@ const handleTaskClick = (taskId: number) => {
83 88
   <Page :auto-content-height="true">
84 89
     <BasicTable>
85 90
       <template #toolbar-tools>
86
-        <el-button type="primary" plain @click="handleadd">新增</el-button>
91
+        <el-button type="primary" plain @click="() => drawerApi.open()"
92
+          >新增</el-button
93
+        >
87 94
         <el-button @click="() => (showSearchForm = !showSearchForm)">
88 95
           展开/折叠
89 96
         </el-button>
@@ -98,6 +105,7 @@ const handleTaskClick = (taskId: number) => {
98 105
         >
99 106
       </template>
100 107
     </BasicTable>
108
+    <Drawer />
101 109
   </Page>
102 110
 </template>
103 111
 <style scoped lang="scss">