miaofuhao лет назад: 2
Родитель
Сommit
1dba73f026

+ 18 - 0
CallCenterWeb.UI/RMYY/src/api/leadConcern/leadConcern.js

@@ -0,0 +1,18 @@
1
+import request from "@/utils/request";
2
+// 获取列表数据
3
+export function officeWorkReport(params) {
4
+  return request({
5
+    url: "FaultRepair/WorkMaintenance",
6
+    method: "get",
7
+    params
8
+  });
9
+}
10
+// 话务工作报表导出
11
+export function officeWorkReportExpt(params) {
12
+  return request({
13
+    url: "FaultRepair/WorkMaintenance",
14
+    method: "get",
15
+    responseType: "blob",
16
+    params
17
+  });
18
+}

+ 48 - 0
CallCenterWeb.UI/RMYY/src/api/versionUpdate/template.js

@@ -0,0 +1,48 @@
1
+import request from '@/utils/request'
2
+
3
+// 获取列表数据
4
+export function getList(params) {
5
+  return request({
6
+    url: 'Mobiledata/GetList',
7
+    method: 'get',
8
+    params
9
+  })
10
+}
11
+
12
+// 获取数据
13
+export function getDeatil(id) {
14
+  return request({
15
+    url: 'Mobiledata/GetMobiledata',
16
+    method: 'get',
17
+    params: {
18
+      id
19
+    }
20
+  })
21
+}
22
+
23
+// 添加数据
24
+export function addData(data) {
25
+  return request({
26
+    url: 'Mobiledata/AddMobiledata',
27
+    method: 'post',
28
+    data
29
+  })
30
+}
31
+// 修改数据
32
+export function editData(data) {
33
+  return request({
34
+    url: 'Mobiledata/AddMobiledata',
35
+    method: 'post',
36
+    data
37
+  })
38
+}
39
+// 删除数据
40
+export function deleteData(nums) {
41
+  return request({
42
+    url: 'Mobiledata/DelMobiledata',
43
+    method: 'post',
44
+    data: {
45
+      nums
46
+    }
47
+  })
48
+}

Разница между файлами не показана из-за своего большого размера
+ 1879 - 1241
CallCenterWeb.UI/RMYY/src/components/button/orderList.vue


Разница между файлами не показана из-за своего большого размера
+ 513 - 378
CallCenterWeb.UI/RMYY/src/views/comDispatch/components/dispatchdetail.vue


+ 51 - 53
CallCenterWeb.UI/RMYY/src/views/faultRepairManagement/repairList/index.vue

@@ -212,7 +212,7 @@
212 212
             type="text"
213 213
             @click="arriveOrder(scope.row.F_WorkOrderCode)"
214 214
           >
215
-            到达
215
+            开始
216 216
           </el-button>
217 217
           <el-button
218 218
             v-if="isShowButton(scope.row, 'xiezuo')"
@@ -334,7 +334,9 @@
334 334
       </el-form>
335 335
       <div slot="footer" class="dialog-footer">
336 336
         <el-button @click="dialogZuzhang = false">取 消</el-button>
337
-        <el-button type="primary" @click="dialogTransferZuzhang">确 定</el-button>
337
+        <el-button type="primary" @click="dialogTransferZuzhang"
338
+          >确 定</el-button
339
+        >
338 340
       </div>
339 341
     </el-dialog>
340 342
     <el-dialog :visible.sync="dialogZhiban" title="转值班">
@@ -356,7 +358,9 @@
356 358
       </el-form>
357 359
       <div slot="footer" class="dialog-footer">
358 360
         <el-button @click="dialogZhiban = false">取 消</el-button>
359
-        <el-button type="primary" @click="dialogTransferZhiban">确 定</el-button>
361
+        <el-button type="primary" @click="dialogTransferZhiban"
362
+          >确 定</el-button
363
+        >
360 364
       </div>
361 365
     </el-dialog>
362 366
     <el-dialog :visible.sync="dialogHangUp" title="挂起">
@@ -908,10 +912,7 @@
908 912
             <i class="el-icon-plus" />
909 913
           </el-upload>
910 914
         </el-form-item>
911
-        <el-form-item
912
-          label="维修前附件"
913
-          v-if="doneForm.showBeforePhoto"
914
-        >
915
+        <el-form-item label="维修前附件" v-if="doneForm.showBeforePhoto">
915 916
           <el-upload
916 917
             :headers="headers"
917 918
             :file-list="fileList"
@@ -990,16 +991,16 @@ export default {
990 991
   },
991 992
   data() {
992 993
     return {
993
-      dialogZuzhang:false,
994
-      dialogZhiban:false,
995
-      zuzhangForm:{
996
-        reason:''
994
+      dialogZuzhang: false,
995
+      dialogZhiban: false,
996
+      zuzhangForm: {
997
+        reason: "",
997 998
       },
998
-      zhibanForm:{
999
-        reason:''
999
+      zhibanForm: {
1000
+        reason: "",
1000 1001
       },
1001
-      zhibancode:'',
1002
-      zuzhangcode:'',
1002
+      zhibancode: "",
1003
+      zuzhangcode: "",
1003 1004
       dialogdept: false,
1004 1005
       dialogtongshi: false,
1005 1006
       dialogImageUrl: "",
@@ -1470,15 +1471,15 @@ export default {
1470 1471
       // 完工
1471 1472
       var equiplist = [];
1472 1473
       this.equipmodellist.find((item) => {
1473
-        if(item.F_EquipNumber){
1474
+        if (item.F_EquipNumber) {
1474 1475
           equiplist.push({
1475 1476
             F_DicId: item.F_DicId,
1476 1477
             F_EquipName: item.F_EquipName,
1477
-            F_EquipNumber: item.F_EquipNumber.replace(/\*/,"×"),
1478
+            F_EquipNumber: item.F_EquipNumber.replace(/\*/, "×"),
1478 1479
             F_EquipPrice: item.F_EquipPrice,
1479 1480
             F_EquipAmount: item.F_EquipAmount,
1480 1481
           });
1481
-        }else{
1482
+        } else {
1482 1483
           equiplist.push({
1483 1484
             F_DicId: item.F_DicId,
1484 1485
             F_EquipName: item.F_EquipName,
@@ -1486,7 +1487,7 @@ export default {
1486 1487
             F_EquipPrice: item.F_EquipPrice,
1487 1488
             F_EquipAmount: item.F_EquipAmount,
1488 1489
           });
1489
-        }      
1490
+        }
1490 1491
       });
1491 1492
       if (this.equipmodellist) {
1492 1493
         this.doneForm.equipmodellist = equiplist;
@@ -1495,10 +1496,7 @@ export default {
1495 1496
         if (valid) {
1496 1497
           new Promise((resolve) => {
1497 1498
             console.log(this.doneForm.File, this.doneForm.Picture);
1498
-            if (
1499
-              this.doneForm.showBeforePhoto &&
1500
-              (this.doneForm.Picture === "")
1501
-            ) {
1499
+            if (this.doneForm.showBeforePhoto && this.doneForm.Picture === "") {
1502 1500
               // this.doneForm.File = ''
1503 1501
               this.$message({
1504 1502
                 type: "warning",
@@ -1552,62 +1550,62 @@ export default {
1552 1550
       this.redeploydeptForm.WorkOrderCode = code;
1553 1551
     },
1554 1552
     redeployZuzhang(code) {
1555
-      this.getReason('ZUZHANG')
1556
-      this.dialogZuzhang = true
1557
-      this.zuzhangcode = code
1553
+      this.getReason("ZUZHANG");
1554
+      this.dialogZuzhang = true;
1555
+      this.zuzhangcode = code;
1558 1556
     },
1559
-    dialogTransferZuzhang(){
1557
+    dialogTransferZuzhang() {
1560 1558
       const params = {
1561
-          workordercode: this.zuzhangcode,
1562
-          toUserCode: null,
1563
-          type: "1",
1564
-          reason:this.zuzhangForm.reason
1565
-      }
1566
-      postTransfer(params).then((response)=>{
1567
-        if(response.state === "success"){
1559
+        workordercode: this.zuzhangcode,
1560
+        toUserCode: null,
1561
+        type: "1",
1562
+        reason: this.zuzhangForm.reason,
1563
+      };
1564
+      postTransfer(params).then((response) => {
1565
+        if (response.state === "success") {
1568 1566
           this.$message({
1569 1567
             type: "success",
1570 1568
             message: "操作成功!",
1571 1569
           });
1572
-          this.dialogZuzhang = false
1573
-          this.zuzhangForm.reason = ''
1570
+          this.dialogZuzhang = false;
1571
+          this.zuzhangForm.reason = "";
1574 1572
           this.getListTask();
1575
-        }else {
1573
+        } else {
1576 1574
           this.$message({
1577 1575
             type: "info",
1578 1576
             message: response.message,
1579 1577
           });
1580 1578
         }
1581
-      })
1579
+      });
1582 1580
     },
1583 1581
     redeployZhiban(code) {
1584
-      this.getReason('ZUZHANG')
1585
-      this.dialogZhiban = true
1586
-      this.zhibancode = code
1582
+      this.getReason("ZUZHANG");
1583
+      this.dialogZhiban = true;
1584
+      this.zhibancode = code;
1587 1585
     },
1588
-    dialogTransferZhiban(){
1586
+    dialogTransferZhiban() {
1589 1587
       const params = {
1590
-          workordercode: this.zhibancode,
1591
-          toUserCode: null,
1592
-          type: "2",
1593
-          reason:this.zhibanForm.reason
1594
-      }
1595
-      postTransfer(params).then((response)=>{
1596
-        if(response.state === "success"){
1588
+        workordercode: this.zhibancode,
1589
+        toUserCode: null,
1590
+        type: "2",
1591
+        reason: this.zhibanForm.reason,
1592
+      };
1593
+      postTransfer(params).then((response) => {
1594
+        if (response.state === "success") {
1597 1595
           this.$message({
1598 1596
             type: "success",
1599 1597
             message: "操作成功!",
1600 1598
           });
1601
-          this.dialogZhiban = false
1602
-          this.zhibanForm.reason = ''
1599
+          this.dialogZhiban = false;
1600
+          this.zhibanForm.reason = "";
1603 1601
           this.getListTask();
1604
-        }else {
1602
+        } else {
1605 1603
           this.$message({
1606 1604
             type: "info",
1607 1605
             message: response.message,
1608 1606
           });
1609 1607
         }
1610
-      })
1608
+      });
1611 1609
     },
1612 1610
     postRedeployTongshiOrder() {
1613 1611
       // 转同事

+ 161 - 0
CallCenterWeb.UI/RMYY/src/views/leadConcern/officeWorkReport/cpns/LineChart.vue

@@ -0,0 +1,161 @@
1
+<template>
2
+  <div
3
+    id="gzbx_chart2"
4
+    :class="className"
5
+    :style="{ height: height, width: width }"
6
+  />
7
+</template>
8
+<script>
9
+// import { GetStatisticsTopFiveData } from "@/api/reportCharts/reportCharts";
10
+// import getdate from "@/utils/getdate";
11
+export default {
12
+  props: {
13
+    className: {
14
+      type: String,
15
+      default: "chart",
16
+    },
17
+    width: {
18
+      type: String,
19
+      default: "100%",
20
+    },
21
+    height: {
22
+      type: String,
23
+      default: "300px",
24
+    },
25
+    chartsTwoValue: {
26
+      type: String,
27
+      default: "1",
28
+    },
29
+    dataType: {
30
+      type: String,
31
+      default: "1",
32
+    },
33
+  },
34
+  watch: {
35
+    chartsTwoValue: function () {
36
+      this.statisticsTopFiveReport();
37
+    },
38
+    dataType: function () {
39
+      this.statisticsTopFiveReport();
40
+    },
41
+  },
42
+  data() {
43
+    return {
44
+      gzbxData: [],
45
+      chart: null,
46
+      echartsData: [],
47
+      userNameData: [],
48
+      committedData: [],
49
+      uncommittedData: [],
50
+    };
51
+  },
52
+  mounted() {
53
+    // this.statisticsTopFiveReport();
54
+    this.initChart();
55
+  },
56
+  beforeDestroy() {
57
+    if (!this.chart) {
58
+      return;
59
+    }
60
+    this.chart.dispose();
61
+    this.chart = null;
62
+  },
63
+  methods: {
64
+    getsearchParam(startdata, enddata, users) {
65
+      this.startdata = startdata;
66
+      this.enddata = enddata;
67
+      this.users = users;
68
+    },
69
+    statisticsTopFiveReport() {
70
+      const urlParams = {};
71
+      GetStatisticsTopFiveData(urlParams).then((response) => {
72
+        if (response.state.toLowerCase() === "success") {
73
+          this.userNameData = [];
74
+          this.committedData = [];
75
+          this.uncommittedData = [];
76
+          this.echartsData = [];
77
+          response.data.forEach((element) => {
78
+            this.userNameData.push(element.username);
79
+            this.committedData.push(element.committed);
80
+            this.uncommittedData.push(element.uncommitted);
81
+          });
82
+          if (this.chartsTwoValue === "0") {
83
+            this.echartsData = this.committedData;
84
+          } else if (this.chartsTwoValue === "1") {
85
+            this.echartsData = this.uncommittedData;
86
+          }
87
+
88
+          this.initChart();
89
+        }
90
+      });
91
+    },
92
+    initChart(arr) {
93
+      const myChart = this.$echarts.init(
94
+        document.getElementById("gzbx_chart2")
95
+      );
96
+      myChart.setOption({
97
+        title: {
98
+          text: "Stacked Line",
99
+        },
100
+        tooltip: {
101
+          trigger: "axis",
102
+        },
103
+        legend: {
104
+          data: ["Email", "Union Ads", "Video Ads", "Direct", "Search Engine"],
105
+        },
106
+        grid: {
107
+          left: "3%",
108
+          right: "4%",
109
+          bottom: "3%",
110
+          containLabel: true,
111
+        },
112
+        toolbox: {
113
+          feature: {
114
+            saveAsImage: {},
115
+          },
116
+        },
117
+        xAxis: {
118
+          type: "category",
119
+          boundaryGap: false,
120
+          data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
121
+        },
122
+        yAxis: {
123
+          type: "value",
124
+        },
125
+        series: [
126
+          {
127
+            name: "Email",
128
+            type: "line",
129
+            stack: "Total",
130
+            data: [120, 132, 101, 134, 90, 230, 210],
131
+          },
132
+          {
133
+            name: "Union Ads",
134
+            type: "line",
135
+            stack: "Total",
136
+            data: [220, 182, 191, 234, 290, 330, 310],
137
+          },
138
+          {
139
+            name: "Video Ads",
140
+            type: "line",
141
+            stack: "Total",
142
+            data: [150, 232, 201, 154, 190, 330, 410],
143
+          },
144
+          {
145
+            name: "Direct",
146
+            type: "line",
147
+            stack: "Total",
148
+            data: [320, 332, 301, 334, 390, 330, 320],
149
+          },
150
+          {
151
+            name: "Search Engine",
152
+            type: "line",
153
+            stack: "Total",
154
+            data: [820, 932, 901, 934, 1290, 1330, 1320],
155
+          },
156
+        ],
157
+      });
158
+    },
159
+  },
160
+};
161
+</script>

+ 44 - 0
CallCenterWeb.UI/RMYY/src/views/leadConcern/officeWorkReport/cpns/reportCharts.vue

@@ -0,0 +1,44 @@
1
+<template>
2
+  <div>
3
+    <div>
4
+      <el-row :gutter="12">
5
+        <el-col :span="3">
6
+          <el-card shadow="hover">
7
+            <div style="display: flex">
8
+              <div><i class="el-icon-tickets"></i></div>
9
+              <div style="margin-left: 15px">
10
+                总量<br />
11
+                <div style="margin-top: 10px">236</div>
12
+              </div>
13
+            </div>
14
+          </el-card>
15
+        </el-col>
16
+      </el-row>
17
+    </div>
18
+    <line-chart></line-chart>
19
+  </div>
20
+</template>
21
+<script>
22
+import LineChart from "./LineChart.vue";
23
+export default {
24
+  components: { LineChart },
25
+  name: "reportCharts",
26
+  props: {
27
+    dataType: {
28
+      type: String,
29
+      default: "1",
30
+    },
31
+  },
32
+  data() {
33
+    return {};
34
+  },
35
+  watch: {
36
+    dataType: function () {
37
+      console.log(this.dataType);
38
+    },
39
+  },
40
+  mounted() {},
41
+  methods: {},
42
+};
43
+</script>
44
+<style lang="scss" scoped></style>

+ 192 - 0
CallCenterWeb.UI/RMYY/src/views/leadConcern/officeWorkReport/cpns/reportList.vue

@@ -0,0 +1,192 @@
1
+<template>
2
+  <div>
3
+    <el-row :gutter="20" />
4
+
5
+    <el-table
6
+      ref="multipleTable"
7
+      :data="dataLists"
8
+      border
9
+      highlight-current-row
10
+      stripe
11
+    >
12
+      <el-table-column
13
+        prop="username"
14
+        label="坐席名称"
15
+        align="center"
16
+        min-width
17
+      />
18
+      <el-table-column prop="count" label="电话总量" align="center" min-width />
19
+      <el-table-column label="呼入" align="center" min-width>
20
+        <el-table-column
21
+          prop="huchucishu"
22
+          label="总量"
23
+          align="center"
24
+          min-width
25
+        />
26
+        <el-table-column
27
+          prop="huruyijieting"
28
+          label="已接通"
29
+          align="center"
30
+          min-width
31
+        />
32
+        <el-table-column
33
+          prop="huruweijieting"
34
+          label="未接听"
35
+          align="center"
36
+          min-width
37
+        />
38
+        <el-table-column
39
+          prop="huruhusunlv"
40
+          label="呼损率"
41
+          align="center"
42
+          min-width
43
+        />
44
+        <el-table-column
45
+          prop="hurujietonglv"
46
+          label="接通率"
47
+          align="center"
48
+          min-width
49
+        />
50
+        <el-table-column
51
+          prop="hurupingjunzhenlingshichang"
52
+          label="平均振铃时长(秒)"
53
+          align="center"
54
+          min-width
55
+        />
56
+        <el-table-column
57
+          prop="hurutonghuashichang"
58
+          label="通话时长(秒)"
59
+          align="center"
60
+          min-width
61
+        />
62
+        <el-table-column
63
+          prop="hurupingjuntonghuashichang"
64
+          label="平均通话时长(秒)"
65
+          align="center"
66
+          min-width
67
+        />
68
+      </el-table-column>
69
+      <el-table-column label="呼出" align="center" min-width>
70
+        <el-table-column
71
+          prop="huchucishu"
72
+          label="总量"
73
+          align="center"
74
+          min-width
75
+        />
76
+        <el-table-column
77
+          prop="huchuyijieting"
78
+          label="已接通"
79
+          align="center"
80
+          min-width
81
+        />
82
+        <el-table-column
83
+          prop="huchuweijieting"
84
+          label="未接通"
85
+          align="center"
86
+          min-width
87
+        />
88
+        <el-table-column
89
+          prop="huchujietonglv"
90
+          label="接通率"
91
+          align="center"
92
+          min-width
93
+        />
94
+      </el-table-column>
95
+
96
+      <el-table-column label="转接" align="center" min-width>
97
+        <el-table-column
98
+          prop="zhuanjiecishu"
99
+          label="总量"
100
+          align="center"
101
+          min-width
102
+        />
103
+        <el-table-column
104
+          prop="zhuanyijiejieting"
105
+          label="已接通"
106
+          align="center"
107
+          min-width
108
+        />
109
+        <el-table-column
110
+          prop="zhuanjieweijieting"
111
+          label="未接通"
112
+          align="center"
113
+          min-width
114
+        />
115
+        <el-table-column
116
+          prop="zhaunjiejietonglv"
117
+          label="接通率"
118
+          align="center"
119
+          min-width
120
+        />
121
+      </el-table-column>
122
+    </el-table>
123
+    <!-- <pagination v-show="pageParams.total > 0" :total="pageParams.total" :pageindex.sync="pageParams.pageindex" :pagesize.sync="pageParams.pagesize" class="pagination" @pagination="getList" /> -->
124
+  </div>
125
+</template>
126
+
127
+<script>
128
+import Pagination from "@/components/context/Pagination"; // 对el-pagination 二次封装
129
+import {
130
+  officeWorkReport,
131
+  officeWorkReportExpt,
132
+} from "@/api/leadConcern/leadConcern";
133
+
134
+import { getNowDate, getPreDate, exportExcel } from "@/utils";
135
+export default {
136
+  name: "TrafficWorkReport",
137
+  components: {
138
+    // Pagination
139
+  },
140
+  data() {
141
+    return {
142
+      fieldListFlag: {},
143
+      dataLists: [],
144
+      ruleForm: {
145
+        startTime: [
146
+          getPreDate(3600 * 1000 * 24) + " 19:00:00",
147
+          getNowDate() + " 19:00:00",
148
+        ],
149
+        way: "",
150
+      },
151
+    };
152
+  },
153
+  computed: {},
154
+  created() {
155
+    this.getList();
156
+  },
157
+  mounted() {},
158
+  methods: {
159
+    // 搜索
160
+    btn_search_task() {
161
+      this.getList();
162
+    },
163
+    getList() {
164
+      const params = {
165
+        ststarttimeime: this.ruleForm.startTime && this.ruleForm.startTime[0],
166
+        endtime: this.ruleForm.startTime && this.ruleForm.startTime[1],
167
+        type: this.ruleForm.way,
168
+        loweltype: 0,
169
+      };
170
+      return new Promise((resolve) => {
171
+        officeWorkReport(params).then((response) => {
172
+          if (response.state.toLowerCase() === "success") {
173
+            this.dataLists = response.data;
174
+          }
175
+        });
176
+        resolve();
177
+      });
178
+    },
179
+    btn_export() {
180
+      const exporParams = {
181
+        stime: this.ruleForm.startTime && this.ruleForm.startTime[0],
182
+        endtime: this.ruleForm.startTime && this.ruleForm.startTime[1],
183
+        groupby: this.ruleForm.way,
184
+        isdc: 1,
185
+      };
186
+      exportExcel(exporParams, officeWorkReportExpt);
187
+    },
188
+  },
189
+};
190
+</script>
191
+
192
+<style scoped></style>

+ 166 - 0
CallCenterWeb.UI/RMYY/src/views/leadConcern/officeWorkReport/index.vue

@@ -0,0 +1,166 @@
1
+<template>
2
+  <div class="app-container">
3
+    <el-form :inline="true" :model="ruleForm" class="demo-form-inline">
4
+      <el-form-item>
5
+        <el-date-picker
6
+          v-model="ruleForm.startTime"
7
+          size="medium"
8
+          type="datetimerange"
9
+          format="yyyy-MM-dd HH:mm:ss"
10
+          :default-time="['19:00:00', '19:00:00']"
11
+          value-format="yyyy-MM-dd HH:mm:ss"
12
+          range-separator="至"
13
+          start-placeholder="开始日期"
14
+          end-placeholder="结束日期"
15
+        />
16
+      </el-form-item>
17
+      <el-form-item label="报工科室">
18
+        <select-dept-tree :deptparam="deptidArr" @post-deptid="getDeptid" />
19
+      </el-form-item>
20
+      <el-form-item label="接收人">
21
+        <el-select
22
+          v-model="ruleForm.DealUser"
23
+          filterable
24
+          placeholder="请选择接收人"
25
+          style="width: 100%"
26
+          @change="changeRepairman1"
27
+        >
28
+          <el-option
29
+            v-for="item in repairman1"
30
+            :key="item.usercode"
31
+            :label="item.username + '(' + item.count + ')'"
32
+            :value="item.username"
33
+          />
34
+        </el-select>
35
+      </el-form-item>
36
+      <el-form-item label="工单类别:">
37
+        <el-cascader
38
+          ref="cascader"
39
+          v-model="orderids"
40
+          :options="subclassData"
41
+          :props="defaultProps"
42
+          size="medium"
43
+          placeholder="请选择工单类别"
44
+          filterable
45
+          clearable
46
+          @change="handleChange"
47
+        />
48
+      </el-form-item>
49
+      <el-form-item>
50
+        <el-button type="primary" size="medium" @click="btn_search_task"
51
+          >查询</el-button
52
+        >
53
+        <el-button type="primary" size="medium" @click="btn_export"
54
+          >导出</el-button
55
+        >
56
+      </el-form-item>
57
+    </el-form>
58
+    <el-tabs v-model="activeName" @tab-click="handleClick" class="">
59
+      <el-tab-pane label="趋势图" name="first">
60
+        <report-charts :dataType="dataType"></report-charts>
61
+      </el-tab-pane>
62
+      <el-tab-pane label="表格" name="second">
63
+        <report-list :dataType="dataType"></report-list>
64
+      </el-tab-pane>
65
+    </el-tabs>
66
+  </div>
67
+</template>
68
+<script>
69
+import { getOrderTypeDrop } from "@/api/systemSetup/roleSetting/menuSetup";
70
+import { getClassByDeptId } from "@/api/commonAPI";
71
+import reportCharts from "./cpns/reportCharts";
72
+import reportList from "./cpns/reportList";
73
+import { getNowDate, getPreDate } from "@/utils";
74
+
75
+export default {
76
+  name: "authority",
77
+  components: { reportCharts, reportList },
78
+  data() {
79
+    return {
80
+      // starttime 开始时间 endtime 结束时间  type 类别 loweltype 子类别 deptid 部门id
81
+      ruleForm: {
82
+        startTime: [
83
+          getPreDate(3600 * 1000 * 24) + " 19:00:00",
84
+          getNowDate() + " 19:00:00",
85
+        ],
86
+        ordertype: "",
87
+        loweltype: "",
88
+        deptid: "", // 部门id
89
+        DealUser: "", // 接单人
90
+      },
91
+      repairman1: [],
92
+      orderids: [],
93
+      defaultProps: {
94
+        checkStrictly: true,
95
+        children: "children",
96
+        label: "text",
97
+        value: "id",
98
+      },
99
+      subclassData: [],
100
+      deptidArr: [],
101
+      dataType: "1",
102
+      activeName: "first",
103
+    };
104
+  },
105
+  created() {
106
+    this.changeOrder();
107
+  },
108
+  methods: {
109
+    getDeptid(data) {
110
+      this.ruleForm.deptid = data[data.length - 1];
111
+      this.getClassUser(this.ruleForm.deptid);
112
+    },
113
+    changeRepairman1(data) {
114
+      console.log(data);
115
+    },
116
+    handleChange(data) {
117
+      if (data.length > 1) {
118
+        delete this.ruleForm.ordertype;
119
+        this.ruleForm.loweltype = data[data.length - 1];
120
+      } else {
121
+        delete this.ruleForm.loweltype;
122
+        this.ruleForm.ordertype = data[data.length - 1];
123
+      }
124
+    },
125
+    handleClick(tab, event) {
126
+      console.log(tab, event);
127
+    },
128
+    btn_search_task() {
129
+      console.log(this.ruleForm);
130
+    },
131
+    btn_export() {},
132
+    getClassUser(id) {
133
+      const params = {
134
+        deptid: id,
135
+      };
136
+      this.repairman1 = [];
137
+      this.ruleForm.DealUser = "";
138
+      if (id) {
139
+        getClassByDeptId(params).then((res) => {
140
+          this.repairman1 = res.rows;
141
+        });
142
+      }
143
+    },
144
+    changeOrder() {
145
+      const params = {
146
+        pid: 3000,
147
+        flag: 1,
148
+      };
149
+      return new Promise((resolve) => {
150
+        getOrderTypeDrop(params).then((response) => {
151
+          if (response.state.toLowerCase() === "success") {
152
+            this.subclassData = response.data;
153
+          }
154
+        });
155
+        resolve();
156
+      });
157
+    },
158
+  },
159
+};
160
+</script>
161
+<style lang="scss" scoped>
162
+.reportstatistics {
163
+  padding: 10px 25px;
164
+  background: #fff;
165
+}
166
+</style>

+ 2 - 2
CallCenterWeb.UI/RMYYAPP/config/index.config.js

@@ -3,8 +3,8 @@ const CONFIG = {
3 3
     development: {
4 4
         assetsPath: '/static', // 静态资源路径
5 5
 				// baseUrl: 'http://192.168.8.10:8033/',
6
-				baseUrl: 'https://zyfb.zzrmyy.com/', // 本地外网地址
7
-				// baseUrl: 'http://39.164.159.192:8000/', // 本地外网地址s
6
+				// baseUrl: 'https://zyfb.zzrmyy.com/', // 本地外网地址
7
+				baseUrl: 'http://39.164.159.192:8000/', // 本地外网地址s
8 8
 		// baseUrl: 'http://172.16.10.22:8000/',	
9 9
         hostUrl: '', // H5地址(前端运行地址)
10 10
         weixinAppId: '' // 微信公众号appid

+ 3 - 1
CallCenterWeb.UI/RMYYAPP/pages/myTask/comDispatch/applicantList/applicantList.vue

@@ -52,7 +52,9 @@
52 52
 		0: ["待完成", "已完成"], // 已办待回访
53 53
 	}
54 54
 	const url = [
55
-		"Scheduling/MySubmitList",
55
+		
56
+		// "Scheduling/MySubmitList",
57
+		"Scheduling/GetDealManWorkOrderList",
56 58
 		"Scheduling/GetDealManWorkOrderList"
57 59
 	]
58 60
 	export default {

+ 20 - 0
CallCenterWeb.UI/RMYYAPP/pages/myTask/comDispatch/comDispatchDetail/comDispatchDetail.vue

@@ -92,6 +92,26 @@
92 92
 					<text v-else class="contentText"></text>
93 93
 				</view> -->
94 94
 			</view>
95
+			<view class="contentTable">
96
+				<text class="contentTitle">异常配送信息:</text>
97
+				<text class="contentText" v-if="!String(this.detailContentData.SDInfo)"></text>
98
+				<div style="color:#525252;">
99
+					<div v-for="item in detailContentData.SDInfo">
100
+						<span v-if="item.F_ToDept&&item.F_ToDept!='0'">送达科室:{{ $mHelper.findParents(departList,item.F_ToDept)}}-</span>
101
+						<span v-if="$mHelper.findParents(orderTypeList,detailContentData.F_WorkOrderCategory).indexOf('标本')>=0">{{$mHelper.findParents(orderTypeBBXXList,item.F_DicId) + '('+ item.F_Number + ')'}}</span>
102
+						<span v-if="$mHelper.findParents(orderTypeList,detailContentData.F_WorkOrderCategory).indexOf('标本')<0">{{ item.F_DicName + '('+ item.F_Number + ')'}}</span>
103
+						<span v-if="item.F_IsBorrow==1">(借)</span>
104
+						<span v-if="item.F_IsBorrow==2">(还)</span>
105
+						<span v-if="item.F_PaidInQuantity">(实收数量:{{item.F_PaidInQuantity}})</span>
106
+						<span v-else></span>
107
+					</div>
108
+				</div>
109
+				
110
+				<!-- <view class="contentText" style="" v-for="item in detailContentData.PSInfo">
111
+					<text v-if="item.F_DicName">{{item.F_DicName + '('+ item.F_Number + ')'}}</text>
112
+					<text v-else class="contentText"></text>
113
+				</view> -->
114
+			</view>
95 115
 			<view class="contentTable" v-if="detailContentData.F_Recipient">
96 116
 				<text class="contentTitle">接收人:</text>
97 117
 				<text class="contentText">{{ detailContentData.F_Recipient }}</text>

+ 68 - 14
CallCenterWeb.UI/RMYYAPP/pages/myTask/comDispatch/comDispatchDetail/dealDetail/dealDetail.vue

@@ -9,23 +9,41 @@
9 9
 						<tr class="trCon">
10 10
 							<td class="tdCon">物品</td>
11 11
 							<td class="tdCon">数量</td>
12
-							<td class="tdCon">实收数量</td>
13 12
 						</tr>
14 13
 					</thead>
15 14
 					<tbody>
16 15
 						<tr class="trCon" v-for="item in equipmentCon">
17 16
 							<td class="tdCon">{{$mHelper.findParents(orderTypeBBXXList,item.F_DicId)}}</td>
18 17
 							<td class="tdCon">{{item.F_Number}}</td>
19
-							<td class="tdCon"><uni-easyinput v-model="item.F_PaidInQuantity" placeholder="请输入数量" /></td>
20 18
 						</tr>
21 19
 					</tbody>
22 20
 				</table>			
23
-				<uni-forms-item label="接收人" name="" v-if="$mHelper.findParents(orderTypeList,F_WorkOrderCategory).indexOf('急查标本')>=0">
24
-					<uni-easyinput v-model="recipient" placeholder="请输入接收人工号" />
25
-				</uni-forms-item>
26 21
 				<uni-forms-item label="是否异常" name="" v-if="$mHelper.findParents(orderTypeList,F_WorkOrderCategory).indexOf('急查标本')>=0">
27 22
 					<uni-data-checkbox v-model="isabnormal" :localdata="F_IsycTypesList" />
28 23
 				</uni-forms-item>
24
+				<view style="margin: 15px 0;" v-show="isabnormal ==='1'">
25
+					<view style="margin-bottom: 15px;">
26
+						<text class="infoTittle"><text style="color: red;">*</text>标本信息</text>
27
+						<uni-icons type="plus" size="30" color="#007aff" @click="plusClck()"></uni-icons>
28
+						<uni-icons type="minus" size="30" color="#007aff" @click="minusClck()"></uni-icons>
29
+					</view>
30
+					<view style="width: 100%;" v-for="(item, index) in dicList">
31
+						<view style="width: 60%; padding: 15px;">
32
+							<uni-easyinput v-model="item.F_ReceiveUser" placeholder="请输入接收人" />
33
+						</view>
34
+						<view style="display: flex;">
35
+							<view class="dicSelect" style="width: 60%; padding: 15px;">
36
+								<uni-data-picker class="uni_item" placeholder="请选择标本信息" :localdata="dataOrderType" @nodeclick="(e)=>nodeclickMuter(e,index)">
37
+								</uni-data-picker>
38
+							</view>
39
+							<view class="dicNum" style=" padding-top: 25px;">
40
+								<uni-number-box v-model="item.F_Number" />
41
+							</view>
42
+						</view>
43
+						
44
+						
45
+					</view>
46
+				</view>
29 47
 				<uni-forms-item label="附件" name="" v-if="$mHelper.findParents(orderTypeList,F_WorkOrderCategory).indexOf('急查标本')<0">
30 48
 					<view class="example-body">
31 49
 						<upload @post-string-data="getImgData" :imgUrlList="imgUrlList"></upload>
@@ -61,12 +79,21 @@
61 79
 				}],	
62 80
 				recipient:'',
63 81
 				isabnormal:'0',
82
+				identification:"JC",
83
+				dataOrderType:[],
84
+				dicList: [{
85
+					F_DicId: 0,
86
+					F_DicName: '',
87
+					F_Number: 1,
88
+					F_ReceiveUser:""
89
+				}],
64 90
 				getFontSizeValue:'1rem',
65 91
 				workorderid: '',
66 92
 				remark: '',
67 93
 				disabledButton: false,
68 94
 				File: '',
69 95
 				state: 0,
96
+				dataOrderType:[],
70 97
 				imgUrlList: [], // 附件数据
71 98
 				imgIdList: [], //上传附件id
72 99
 				clickImgState: 0, // 图片回显的状态
@@ -83,8 +110,38 @@
83 110
 			this.getGongDanType()
84 111
 			this.getGongDanTypeBBXX()
85 112
 			this.getPSinfo()
113
+			
86 114
 		},
87 115
 		methods: {
116
+			plusClck() {
117
+				const params = {
118
+					F_DicId: 0,
119
+					F_DicName: '',
120
+					F_Number: 1
121
+				}
122
+				this.dicList.push(params)
123
+			
124
+			},
125
+			minusClck() {
126
+				this.dicList.splice(this.dicList.length - 1, 1)
127
+			},
128
+			nodeclickMuter(e,index){
129
+				this.dicList[index].F_DicId = e.value
130
+				this.dicList[index].F_DicName = e.text
131
+			},
132
+			getBBxx(){
133
+				let str
134
+				console.log(this.identification)
135
+				if(this.identification == '综合调度/标本转运/急查标本'){
136
+					str = '急查标本'
137
+				}
138
+				if(this.identification == '综合调度/标本转运/非急查标本'){
139
+					str = '非急查标本'
140
+				}
141
+				pageData.getBB(str,(res, data) => {
142
+					this.dataOrderType = res
143
+				})
144
+			},
88 145
 			getGongDanType(){
89 146
 				let dataOrderType = []
90 147
 				const params = {
@@ -117,7 +174,9 @@
117 174
 				this.$http.get("Scheduling/GetWorkOrder",params).then((res)=>{
118 175
 					if(res.state.toLowerCase() ==="success"){
119 176
 						this.F_WorkOrderCategory = res.data[0].F_WorkOrderCategory
177
+						this.identification = this.$mHelper.findParents(this.orderTypeList,this.F_WorkOrderCategory)
120 178
 						this.equipmentCon = res.data[0].PSInfo 
179
+						this.getBBxx()
121 180
 					}
122 181
 				})
123 182
 			},
@@ -134,14 +193,9 @@
134 193
 				  isabnormal:this.isabnormal,
135 194
 				  recipient:this.recipient,
136 195
 				}
137
-				const psarr = []
138
-				this.equipmentCon.forEach(function(v,n){
139
-				  psarr.push({
140
-				    F_DetailId: v.F_DetailId,
141
-				    F_PaidInQuantity:v.F_PaidInQuantity
142
-				  })
143
-				})
144
-				params.pslist = JSON.parse(JSON.stringify(psarr))
196
+
197
+				params.pslist = JSON.parse(JSON.stringify(this.dicList))
198
+				console.log(params)
145 199
 				if(this.$mHelper.findParents(this.orderTypeList,this.F_WorkOrderCategory).indexOf('急查标本')<0){
146 200
 					params.pslist = null
147 201
 					params.isabnormal = ''
@@ -218,7 +272,7 @@
218 272
 					display: inline-block;
219 273
 					padding: 10px 0px;
220 274
 					color: rgb(102, 102, 102);
221
-					width: 30%;
275
+					width: 40%;
222 276
 					padding-right: 5px;
223 277
 					text-align: center;
224 278
 				}

+ 25 - 5
CallCenterWeb.UI/RMYYAPP/pages/myTask/vehicleSchedulList/components/vehiccleDetail/vehiccleDetail.vue

@@ -128,6 +128,7 @@
128 128
 				departList: [], //部门数据
129 129
 				userCodeList: [], //用户信息
130 130
 				detailContentData: {}, // 详情内容
131
+				intaAction:true,
131 132
 				orderButtonData: [],
132 133
 				departid: '',
133 134
 				workOrderButton: [], // 工单按钮权限
@@ -155,6 +156,7 @@
155 156
 				this.getDetail(0)
156 157
 			} else if (Number(optioin.segmenter) == 1) { //司机里列表
157 158
 				this.getDetail(3)
159
+				
158 160
 				this.receiviFlag = optioin.receiviFlag
159 161
 				this.listFlag = true
160 162
 				this.orderButtonData = []
@@ -216,7 +218,7 @@
216 218
 					// alert(response.state)
217 219
 					if (response.state.toLowerCase() === "success") {
218 220
 						let btnData
219
-
221
+						let buttonFacheFlag
220 222
 						if (type == 0) {
221 223
 							this.detailContentData = response.model
222 224
 							this.detailContentData.F_Birth ? this.detailContentData.F_Birth = '是' : this
@@ -249,6 +251,7 @@
249 251
 							// let activeFlag = 0
250 252
 							this.list1 = []
251 253
 							this.workOrderButton = []
254
+							
252 255
 							response.Carlist.forEach((ele) => {
253 256
 								// this.active = activeFlag
254 257
 								// if (ele.Buttons.length === 0) {
@@ -259,7 +262,20 @@
259 262
 								obj.title = ""
260 263
 								this.list1.push(obj)
261 264
 							})
265
+							
266
+							for(let i = 0; i < response.Carlist.length; i++){
267
+								console.log(response.Carlist[i].Buttons)
268
+								buttonFacheFlag = i
269
+							  if(response.Carlist[i].Buttons.length>0) break; // 或continue
270
+							}
271
+							if (this.intaAction) {
272
+								this.active = buttonFacheFlag
273
+								this.intaAction = false
274
+							}
275
+							console.log(this.active,buttonFacheFlag)
262 276
 							this.detailContentData = response.Carlist[this.active]
277
+							
278
+						
263 279
 							btnData = this.detailContentData.Buttons;
264 280
 							// console.log(this.orderTypeList, 'this.typeName')
265 281
 							// this.typeName = this.$mHelper.findParents(this.orderTypeList, this.detailContentData.F_Type) || '';
@@ -273,18 +289,22 @@
273 289
 						// console.log(this.orderTypeList, 'this.typeName')
274 290
 						this.typeName = this.$mHelper.findParents(this.orderTypeList, this.detailContentData
275 291
 							.F_Type) || '';
276
-						console.log(this.typeName, 'this.typeName')
277
-
292
+						
278 293
 						if (btnData.length > 0) {
279 294
 							btnData.forEach((element, index) => {
280 295
 								let btn = this.$mButtonConfig[element.key];
281 296
 								if (btn != undefined) {
282
-									this.workOrderButton.push(btn);
297
+									if(this.active ===buttonFacheFlag){
298
+										this.workOrderButton.push(btn);
299
+									}else{
300
+										this.workOrderButton = []
301
+									}
283 302
 								}
284 303
 								this.orderButtonData = this.workOrderButton
285 304
 							});
305
+						}else {
306
+							this.orderButtonData = this.workOrderButton
286 307
 						}
287
-						console.log(this.orderButtonData)
288 308
 						pageData.getApplicant(this.detailContentData.F_ProposerDeptId, (res) => {
289 309
 							this.userCodeList = res
290 310
 						})