liuzhihui лет назад: 2
Родитель
Сommit
04c3103d5a

+ 9 - 1
CallCenterWeb.UI/RMYY/src/api/systemSetup/roleSetting/userManage.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
3 3
 // 获取用户列表数据
4 4
 export function getUserAccountLists(params) {
5 5
   return request({
6
-    url: 'UserAccount/GetList',
6
+    url: 'UserAccount/GetAllList',
7 7
     method: 'get',
8 8
     params
9 9
   })
@@ -110,3 +110,11 @@ export function NewResetPwd(data) {
110 110
     data
111 111
   })
112 112
 }
113
+// 恢复用户
114
+export function ChangeDelete(data) {
115
+  return request({
116
+    url: 'UserAccount/ChangeDelete',
117
+    method: 'post',
118
+    data
119
+  })
120
+}

+ 15 - 0
CallCenterWeb.UI/RMYY/src/api/telCall/restDay.js

@@ -121,3 +121,18 @@ export function OrderListExport(params) {
121 121
     params
122 122
   })
123 123
 }
124
+export function GetShiftStatistics(params) {
125
+  return request({
126
+    url: 'GroupClass/ShiftStatistics',
127
+    method: 'get',
128
+    params
129
+  })
130
+}
131
+export function ShiftStatisticsExport(params) {
132
+  return request({
133
+    url: 'GroupClass/ShiftStatistics',
134
+    method: 'get',
135
+    responseType: 'blob',
136
+    params
137
+  })
138
+}

+ 45 - 1
CallCenterWeb.UI/RMYY/src/views/leadConcernNew/cpns/reportComList.vue

@@ -1,6 +1,9 @@
1 1
 <template>
2 2
   <div>
3 3
     <div class="filter-container">
4
+      <el-cascader ref="cascader" v-show="ishowSearch=='1'&&dataParams.type" v-model="searchData.orderids" :options="subclassData" :props="defaultProps"
5
+        size="medium" placeholder="请选择工单类别" filterable clearable @change="handleChange" />
6
+      <el-button type="primary" v-show="ishowSearch=='1'&&dataParams.type" @click="getList">搜索</el-button>
4 7
       <el-button
5 8
         type="primary"
6 9
         class="filter-item"
@@ -157,7 +160,9 @@ import {
157 160
 } from "@/api/leadConcern/leadConcern";
158 161
 import Pagination from "@/components/context/Pagination";
159 162
 import { exportExcel } from "@/utils";
160
-
163
+import {
164
+    getOrderTypeDrop
165
+  } from "@/api/systemSetup/roleSetting/menuSetup";
161 166
 export default {
162 167
   name: "vehicleManagement",
163 168
   components: {
@@ -174,6 +179,10 @@ export default {
174 179
       type: String,
175 180
       default: "",
176 181
     },
182
+    ishowSearch: {
183
+      type: String,
184
+      default: "",
185
+    },
177 186
   },
178 187
   data() {
179 188
     return {
@@ -186,9 +195,21 @@ export default {
186 195
       },
187 196
       getParams: {},
188 197
       dataLists: [],
198
+      defaultProps: {
199
+        checkStrictly: true,
200
+        children: "children",
201
+        label: "text",
202
+        value: "id",
203
+      },
204
+      subclassData: [],
205
+      searchData: {
206
+        menutype:'',
207
+        orderids:[]
208
+      }
189 209
     };
190 210
   },
191 211
   created() {
212
+    this.changeOrder(this.dataParams.type)
192 213
     this.getList();
193 214
     document.onkeyup = (e) => {
194 215
       if (e.keyCode === 13) {
@@ -197,9 +218,32 @@ export default {
197 218
     };
198 219
   },
199 220
   methods: {
221
+    handleChange(data) {
222
+      console.log(data)
223
+      this.searchData.menutype = data[data.length-1];
224
+      this.searchData.orderids = data;
225
+    },
226
+    changeOrder(data) {
227
+      if (!data) {
228
+        return;
229
+      }
230
+      const params = {
231
+        pid: data,
232
+        flag: 1,
233
+      };
234
+      return new Promise((resolve) => {
235
+        getOrderTypeDrop(params).then((response) => {
236
+          if (response.state.toLowerCase() === "success") {
237
+            this.subclassData = response.data;
238
+          }
239
+        });
240
+        resolve();
241
+      });
242
+    },
200 243
     getList() {
201 244
       this.loading = true;
202 245
       return new Promise((resolve) => {
246
+        this.dataParams.sontype = this.searchData.menutype;
203 247
         this.dataParams.pageindex = this.pageParams.pageindex; // 第几页
204 248
         this.dataParams.pagesize = this.pageParams.pagesize; // 第几页
205 249
         if (this.keyValue) {

+ 2 - 1
CallCenterWeb.UI/RMYY/src/views/leadConcernNew/officeWorkReport/cpns/reportList.vue

@@ -183,7 +183,8 @@
183 183
             content: reportComList, // 传递的组件对象
184 184
             parent: this, // 当前的vue对象
185 185
             data: {
186
-              dataParams: this.ruleFormReport
186
+              dataParams: this.ruleFormReport,
187
+              ishowSearch:'1'
187 188
             },
188 189
           },
189 190
           area: ["80%", "90%"],

+ 278 - 0
CallCenterWeb.UI/RMYY/src/views/scheduleManagement/schedulecensus/index.vue

@@ -0,0 +1,278 @@
1
+<template>
2
+  <div class="restDay">
3
+    <el-row style="margin-bottom: 10px">
4
+      <!-- <el-input v-model="name" clearable placeholder="请输入班别名称" class="filter-item" size="small" style="width: 200px;" /> -->
5
+      <!-- <el-select v-model="name" placeholder="请选择班别" size="small" style="width: 200px;">
6
+        <el-option v-for="item in dataclassLists" :key="item.F_Id" :label="item.F_Name" :value="item.F_Id"></el-option>
7
+      </el-select> -->
8
+      <el-date-picker v-model="times" size="mini" type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
9
+        range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
10
+      <select-gzbx-dept-tree :deptparam="deptidArr" @post-deptid="getDeptid" style="width: 300px" />
11
+      <el-button type="primary" class="filter-item" @click="btn_search">查询</el-button>
12
+      <el-button type="primary" class="filter-item" @click="btn_export">导出</el-button>
13
+    </el-row>
14
+    <el-row>
15
+      <table class="tabbox" cellspacing="0" cellpadding="0">
16
+        <thead>
17
+          <tr>
18
+            <th style="width:120px;">
19
+              <div class="out"> <b>班别</b> <em>姓名</em> </div>
20
+            </th>
21
+            <th style="background-color: #D6D3D6;" v-for="item in headData" :key="item.F_Id">{{item.F_Name}}</th>
22
+          </tr>
23
+        </thead>
24
+        <tbody>
25
+          <tr v-for="item in mainData">
26
+            <td class="t1">{{item.F_username}}</td>
27
+            <td v-for="(items,index) in item.numarr" :key="index">{{items}}</td>
28
+          </tr>
29
+        </tbody>
30
+      </table>
31
+      <!-- <FullCalendar ref="myCalendar" :options="calendarOptions" @eventDrop="calendarEventDrop" /> -->
32
+    </el-row>
33
+  </div>
34
+</template>
35
+
36
+<script>
37
+  import {
38
+    getWorkOffDays,
39
+    setOfforOn,
40
+    getBeOnDutyList,
41
+    getClassByCode,
42
+    getAllClassList,
43
+    addGroupClass,
44
+    GetGroupClassList,
45
+    OrderListExport,
46
+    getUserlistByDeptId,
47
+    getClassList,
48
+    GetShiftStatistics,
49
+    ShiftStatisticsExport
50
+  } from "@/api/telCall/restDay";
51
+  import FullCalendar from "@fullcalendar/vue";
52
+  import dayGridPlugin from "@fullcalendar/daygrid";
53
+  import timeGridPlugin from "@fullcalendar/timegrid";
54
+  import interactionPlugin from "@fullcalendar/interaction";
55
+  import listPlugin from "@fullcalendar/list";
56
+  import {
57
+    exportExcel
58
+  } from "@/utils";
59
+  import selectGzbxDeptTree from "@/components/context/commonSelect/selectGzbxDeptTree.vue";
60
+  import {
61
+    getNowDate,
62
+    getFirstDayInCurrentMonth,
63
+    getLastDay,
64
+  } from "@/utils/index";
65
+  import {
66
+    GetPerson
67
+  } from "@/api/commonAPI";
68
+  export default {
69
+    name: "RestDay",
70
+    components: {
71
+      selectGzbxDeptTree,
72
+      FullCalendar,
73
+    },
74
+    data() {
75
+      return {
76
+        headData: [],
77
+        mainData: [],
78
+        dataclassLists: [],
79
+        times: "",
80
+        deptid: "",
81
+        usercodes: "",
82
+        deptidArr: [],
83
+        repairman: [],
84
+        tabData: [],
85
+        timeData: [],
86
+        classList: [],
87
+        classcode: "",
88
+        usercode: "",
89
+        dataTime: "",
90
+        time: {
91
+          startTime: "",
92
+          endTime: "",
93
+        },
94
+        popindex: "",
95
+        name: ''
96
+      };
97
+    },
98
+    watch: {
99
+
100
+    },
101
+    created() {
102
+      // this.time.startTime = getFirstDayInCurrentMonth();
103
+      // this.time.endTime = getNowDate();
104
+      this.deptid = localStorage.getItem("deptId");
105
+      // this.times = [this.time.startTime, this.time.endTime];
106
+      // console.log(this.time, "1234");
107
+      this.getList();
108
+      // this.getClasses();
109
+    },
110
+    methods: {
111
+      getDeptid(data) {
112
+        this.deptidArr = data;
113
+        this.deptid = data[data.length - 1];
114
+        // this.repairman = [];
115
+        // this.usercodes = "";
116
+        // this.getRepairman(data[data.length - 1]);
117
+        // this.getAllClass();
118
+      },
119
+      getClasses() {
120
+        const params = {
121
+          page: 1, // 第几页
122
+          pagesize: 99999, // 每页几条信息
123
+          name: "",
124
+          code: "",
125
+        }
126
+        getClassList(params).then((response) => {
127
+          if (response.rows.length >= 0) {
128
+            this.dataclassLists = response.rows;
129
+          }
130
+        });
131
+      },
132
+      getList() {
133
+        if(!this.deptid){
134
+          this.deptid = localStorage.getItem("deptId");
135
+        }
136
+        const params = {
137
+          starttime: this.times && this.times[0],
138
+          endtime: this.times && this.times[1],
139
+          deptid: this.deptid,
140
+          isdc: 0
141
+        };
142
+        GetShiftStatistics(params).then((res) => {
143
+          if (res.state == 'success') {
144
+            this.headData = res.data.cols
145
+            var alldata = JSON.parse(res.data.dt)
146
+            var colarr = []
147
+            //获取表头colarr
148
+            for (var i = 0; i < res.data.cols.length; i++) {
149
+              colarr.push(res.data.cols[i].F_Name)
150
+            }
151
+            //遍历dt表头的数据,重新赋值numarr
152
+            for (var j = 0; j < alldata.length; j++) {
153
+              var arr = []
154
+              for (var key in alldata[j]) {
155
+                if (colarr.indexOf(key) >= 0) {
156
+                  arr.push(alldata[j][key])
157
+                }
158
+              }
159
+              alldata[j].numarr = arr
160
+            }
161
+            this.mainData = alldata
162
+            //无数据
163
+            if(res.data.cols.length==0){
164
+              this.headData = [{F_Name:'暂无数据'}]
165
+              this.mainData = [{F_username:'暂无数据',numarr:[0]}]
166
+            }
167
+          }
168
+        });
169
+      },
170
+      btn_search() {
171
+        this.getList();
172
+      },
173
+      btn_export() {
174
+        if(!this.deptid){
175
+          this.deptid = localStorage.getItem("deptId");
176
+        }
177
+        const params = {
178
+          starttime: this.times && this.times[0],
179
+          endtime: this.times && this.times[1],
180
+          deptid: this.deptid,
181
+          isdc: 1,
182
+        };
183
+        exportExcel(params, ShiftStatisticsExport);
184
+      },
185
+    },
186
+  };
187
+</script>
188
+
189
+<style rel="stylesheet/scss" lang="scss" scoped>
190
+  caption {
191
+    font-size: 14px;
192
+    font-weight: bold;
193
+  }
194
+
195
+  table {
196
+    border-collapse: collapse;
197
+    border: 1px #525152 solid;
198
+    width: 50%;
199
+    margin: 0 auto;
200
+    margin-top: 20px;
201
+  }
202
+
203
+  th,
204
+  td {
205
+    border: 1px #525152 solid;
206
+    text-align: center;
207
+    font-size: 12px;
208
+    line-height: 30px;
209
+    // background: #C6C7C6;
210
+  }
211
+
212
+  th {
213
+    // background: #e5e3e5;
214
+  }
215
+
216
+  /*模拟对角线*/
217
+  .out {
218
+    border-top: 60px #D6D3D6 solid;
219
+    /*上边框宽度等于表格第一行行高*/
220
+    width: 0px;
221
+    /*让容器宽度为0*/
222
+    height: 0px;
223
+    /*让容器高度为0*/
224
+    border-left: 120px #BDBABD solid;
225
+    /*左边框宽度等于表格第一行第一格宽度*/
226
+    position: relative;
227
+    /*让里面的两个子容器绝对定位*/
228
+  }
229
+
230
+  b {
231
+    font-style: normal;
232
+    display: block;
233
+    position: absolute;
234
+    top: -50px;
235
+    left: -50px;
236
+    width: 35px;
237
+  }
238
+
239
+  em {
240
+    font-style: normal;
241
+    display: block;
242
+    position: absolute;
243
+    top: -35px;
244
+    left: -110px;
245
+    width: 55px;
246
+  }
247
+
248
+  .t1 {
249
+    // background: #BDBABD;
250
+  }
251
+
252
+  .tabbox {
253
+    width: 100%;
254
+    border: 0.5px solid rgb(236, 236, 236);
255
+  }
256
+
257
+  // .tabbox td {
258
+  //   width: 200px !important;
259
+  //   padding: 5px;
260
+  //   text-align: center;
261
+  //   border: 0.5px solid rgb(236, 236, 236);
262
+  // }
263
+
264
+  .restDay {
265
+    overflow: scroll;
266
+    padding: 20px;
267
+    background-color: #fff;
268
+    margin-top: 10px;
269
+  }
270
+
271
+  @media only screen and (max-width: 990px) {
272
+    .restDay {
273
+      .calendar_img {
274
+        display: none;
275
+      }
276
+    }
277
+  }
278
+</style>

+ 27 - 4
CallCenterWeb.UI/RMYY/src/views/systemSetup/roleSetting/userManage/index.vue

@@ -2,7 +2,7 @@
2 2
   <div class="app-container">
3 3
     <div class="filter-container">
4 4
       <el-row :gutter="20">
5
-        <el-col :span="6">
5
+        <el-col :span="4">
6 6
           <el-alert :closable="false" title="科室列表" type="success" style="margin-bottom: 5px" />
7 7
           <el-input placeholder="请输入科室名称" size="medium" clearable v-model="filterText">
8 8
           </el-input>
@@ -12,7 +12,7 @@
12 12
               @node-click="handleNodeClick" />
13 13
           </div>
14 14
         </el-col>
15
-        <el-col :span="18">
15
+        <el-col :span="20">
16 16
           <el-alert :closable="false" title="用户列表" type="success" style="margin-bottom: 5px" />
17 17
           <el-alert :closable="false" title="上传文件需要严格按照下载的EXCEL模板进行填写!" type="warning" style="margin-bottom: 7px" />
18 18
           <el-input v-model="keyword" placeholder="请输入工号,姓名,电话" class="filter-item" size="medium" clearable
@@ -44,7 +44,7 @@
44 44
                 <span v-if="scope.row.F_EnableFlag == 2" style="color: #f56c6c">锁定</span>
45 45
               </template>
46 46
             </el-table-column>
47
-            <el-table-column label="操作" width="280" align="center" class-name="oparate_btn" fixed="right">
47
+            <el-table-column label="操作" width="360" align="center" class-name="oparate_btn" fixed="right">
48 48
               <template slot-scope="scope">
49 49
                 <el-button v-if="scope.row.F_EnableFlag == 1" type="danger" plain @click="onOff(scope.row.F_UserId)">禁用
50 50
                 </el-button>
@@ -52,6 +52,7 @@
52 52
                     scope.row.F_EnableFlag == 0 || scope.row.F_EnableFlag == 2
53 53
                   " type="success" plain @click="onOpen(scope.row.F_UserId)">启用
54 54
                 </el-button>
55
+                <el-button v-if="scope.row.F_DeleteFlag == 1" type="warning" plain @click="btn_restoreuser(scope.row.F_UserCode)">恢复</el-button>
55 56
                 <el-button v-permission="'edit_userManage'" size="mini" plain type="primary" @click="
56 57
                     btn_edit(
57 58
                       scope.row.F_UserId.toString(),
@@ -105,7 +106,8 @@
105 106
     getUserExport,
106 107
     GetCompletePhone,
107 108
     NewResetPwd,
108
-    getDeptTree
109
+    getDeptTree,
110
+    ChangeDelete
109 111
   } from "@/api/systemSetup/roleSetting/userManage";
110 112
   import {
111 113
     pickerOptions,
@@ -313,6 +315,27 @@
313 315
       //   title: '修改密码'
314 316
       // })
315 317
       // },
318
+      btn_restoreuser(id){
319
+        this.$confirm("您确定要将此用户恢复吗?", "提示", {
320
+            confirmButtonText: "确定",
321
+            cancelButtonText: "取消",
322
+            type: "warning",
323
+          })
324
+          .then(() => {
325
+            const params = {
326
+              usercode : id
327
+            };
328
+            ChangeDelete(params).then((response) => {
329
+              if (response == 1) {
330
+                this.getList();
331
+                this.$message.success("恢复成功!");
332
+              }
333
+            });
334
+          })
335
+          .catch(() => {
336
+            this.$message.info("已取消");
337
+          });
338
+      },
316 339
       btn_delete(id) {
317 340
         this.$confirm("您确定要将此用户信息删除吗?", "提示", {
318 341
             confirmButtonText: "确定",

+ 2 - 3
CallCenterWeb.UI/RMYYAPP/pages/login/login.vue

@@ -131,11 +131,9 @@
131 131
 					"password": sm2.doEncrypt(md5.hex_md5(this.passData), publicKey, cipherMode),
132 132
 					"loginway": "phone"
133 133
 				}
134
-
135
-
136 134
 				this.$mStore.dispatch("Login", params).then((e) => {
137 135
 					this.isRotate = false
138
-					if (e.state.toLowerCase() == 'success') {
136
+					if (e.state.toLowerCase() == 'success') {						
139 137
 						uni.setStorageSync('loginpass', this.passData)
140 138
 						uni.setStorageSync('token', e.data.token)
141 139
 						uni.setStorageSync('loginway', 'phone')
@@ -171,6 +169,7 @@
171 169
 						// }
172 170
 					})
173 171
 				}).catch((e) => {
172
+					this.$mHelper.toast('账号或密码错误')
174 173
 					this.isRotate = false
175 174
 				})
176 175