Przeglądaj źródła

工单列表评价

seimin 2 lat temu
rodzic
commit
a04582a979

+ 15 - 5
components/seiminModel/seiminModel.vue

@@ -38,13 +38,13 @@
38 38
           <view class="evaluate_item">
39 39
             <text class="evaluate_label">星级:</text>
40 40
             <view class="evaluate_icons">
41
-              <text class="pda" :class="star" v-for="(star,i) in stars" :key="i"></text>
41
+              <text class="pda" :class="star" v-for="(star,i) in stars" :key="i" @click="clickStar(i)"></text>
42 42
             </view>
43 43
           </view>
44 44
           <view class="evaluate_item">
45 45
             <text class="evaluate_label">评级:</text>
46 46
             <textarea :focus="true" class="evaluate_textarea" auto-height :maxlength="100"
47
-              :placeholder-style="placeholderStyle" placeholder="请输入..." v-model="urgentTextArea" />
47
+              :placeholder-style="placeholderStyle" placeholder="请输入..." v-model="evaluateTextArea" />
48 48
           </view>
49 49
         </view>
50 50
       </view>
@@ -101,6 +101,8 @@
101 101
         placeholderStyle: 'color:#999;padding:18rpx;',
102 102
         // 星级
103 103
         stars: [],
104
+        // 评价内容
105
+        evaluateTextArea: '',
104 106
       };
105 107
     },
106 108
     computed: {
@@ -110,7 +112,6 @@
110 112
     methods: {
111 113
       // 显示弹窗
112 114
       show(args = {}) {
113
-        this.stars = ['pda-haoping','pda-haoping','pda-haoping','pda-haoping','pda-haoping']
114 115
         // 默认配置项
115 116
         let defaultOptions = {
116 117
           skin: "default", //弹窗风格(default|toast|qrcode|)
@@ -155,9 +156,12 @@
155 156
         this.opts = Object.assign({}, defaultOptions, args, {
156 157
           isVisible: true,
157 158
         });
158
-        // 如果是动态二维码,则需要发起请求
159 159
         if (this.opts.skin === "qrcode") {
160
+          // 如果是动态二维码,则需要发起请求
160 161
           this.showNurseCode();
162
+        } else if (this.opts.skin === 'evaluate') {
163
+          // 如果是评价弹窗,则默认选中五个笑脸
164
+          this.stars = ['pda-haoping', 'pda-haoping', 'pda-haoping', 'pda-haoping', 'pda-haoping'];
161 165
         }
162 166
       },
163 167
       // 关闭弹窗
@@ -215,6 +219,12 @@
215 219
           }
216 220
         }, 1000);
217 221
       },
222
+      // 选择星级
223
+      clickStar(index) {
224
+        for (let i = 0; i < this.stars.length; i++) {
225
+          this.$set(this.stars, i, i > index ? 'pda-haoping1' : 'pda-haoping');
226
+        }
227
+      },
218 228
     },
219 229
   };
220 230
 </script>
@@ -234,7 +244,7 @@
234 244
       bottom: 0;
235 245
       left: 0;
236 246
       margin: auto;
237
-      z-index: 9999;
247
+      z-index: 999;
238 248
       @include flex(center, center);
239 249
 
240 250
       .seiminModel_container {

+ 43 - 5
pages/orderList/orderList.vue

@@ -98,11 +98,15 @@
98 98
     reqFetchDataList,
99 99
     reqDelWorkOrder,
100 100
     reqUrge,
101
-    reqDirectStartOrder
101
+    reqDirectStartOrder,
102
+    reqEvaluate,
102 103
   } from "../../request/api.js";
103 104
   import {
104 105
     GDSTATE
105 106
   } from "../../utils/enum.gdstate.js";
107
+  import {
108
+    WORKORDEREVALUATION
109
+  } from "../../utils/enum.workorderEvaluation.js";
106 110
   export default {
107 111
     name: 'orderList',
108 112
     data() {
@@ -160,25 +164,55 @@
160 164
             {
161 165
               click: () => {
162 166
                 console.log('确定');
167
+                let serviceEvaluationId;
163 168
                 this.$refs.seiminModel.close();
164 169
                 uni.showLoading({
165 170
                   title: '加载中',
166 171
                   mask: true,
167 172
                 })
168
-                reqDelWorkOrder(id).then(res => {
173
+                //算出评级
174
+                switch (this.$refs.seiminModel.stars.indexOf('pda-haoping1')) {
175
+                  case -1:
176
+                    //五星
177
+                    serviceEvaluationId = WORKORDEREVALUATION['非常好评'];
178
+                    break;
179
+                  case 1:
180
+                    //一星
181
+                    serviceEvaluationId = WORKORDEREVALUATION['极差'];
182
+                    break;
183
+                  case 2:
184
+                    //二星
185
+                    serviceEvaluationId = WORKORDEREVALUATION['差'];
186
+                    break;
187
+                  case 3:
188
+                    //三星
189
+                    serviceEvaluationId = WORKORDEREVALUATION['一般'];
190
+                    break;
191
+                  case 4:
192
+                    //四星
193
+                    serviceEvaluationId = WORKORDEREVALUATION['好评'];
194
+                    break;
195
+                }
196
+                let postData = {
197
+                  serviceEvaluation: {
198
+                    id: serviceEvaluationId
199
+                  },
200
+                  remark: this.$refs.seiminModel.evaluateTextArea,
201
+                };
202
+                reqEvaluate(id, postData).then(res => {
169 203
                   uni.hideLoading();
170 204
                   if (res.status == 200) {
171 205
                     this.$refs.seiminModel.show({
172 206
                       skin: 'toast',
173 207
                       icon: 'success',
174
-                      content: '撤销成功',
208
+                      content: '评价成功',
175 209
                     })
176 210
                     this.init();
177 211
                   } else {
178 212
                     this.$refs.seiminModel.show({
179 213
                       skin: 'toast',
180 214
                       icon: 'error',
181
-                      content: '撤销失败',
215
+                      content: '评价失败',
182 216
                     })
183 217
                   }
184 218
                 })
@@ -285,6 +319,10 @@
285 319
                 console.log('确定', this.$refs.seiminModel.urgentTextArea);
286 320
                 const urgentTextArea = this.$refs.seiminModel.urgentTextArea;
287 321
                 if (urgentTextArea.trim() === '') {
322
+                  uni.showToast({
323
+                    icon: 'none',
324
+                    title: '请填写加急原因',
325
+                  })
288 326
                   return;
289 327
                 }
290 328
                 this.$refs.seiminModel.close();
@@ -669,7 +707,7 @@
669 707
               flex: 1;
670 708
               background-color: transparent;
671 709
               position: relative;
672
-              @include flex(center,center);
710
+              @include flex(center, center);
673 711
 
674 712
               &::before {
675 713
                 content: '';

+ 8 - 0
request/api.js

@@ -115,3 +115,11 @@ export const reqDirectStartOrder = (id) =>
115 115
   request({
116 116
     url: `/api/directStartOrder/${id}`,
117 117
   });
118
+
119
+// 评价
120
+export const reqEvaluate = (id, postData) =>
121
+  request({
122
+    url: `/nurse/workOrder/evaluate/${id}`,
123
+    data: postData,
124
+    method: 'POST'
125
+  });

+ 25 - 0
utils/enum.workorderEvaluation.js

@@ -0,0 +1,25 @@
1
+import {
2
+  createEnum
3
+} from './index.js';
4
+let data = [{
5
+    name: '非常好评',
6
+    value: '354'
7
+  },
8
+  {
9
+    name: '好评',
10
+    value: '355'
11
+  },
12
+  {
13
+    name: '一般',
14
+    value: '356'
15
+  },
16
+  {
17
+    name: '差',
18
+    value: '357'
19
+  },
20
+  {
21
+    name: '极差',
22
+    value: '358'
23
+  },
24
+]
25
+export const WORKORDEREVALUATION = createEnum(data); //工单评价