liuzhihui 3 yıl önce
ebeveyn
işleme
c0b963bf02

+ 17 - 0
CallCenterWeb.UI/RMYY/src/api/vehicleDispatch/driver.js

@@ -0,0 +1,17 @@
1
+import request from '@/utils/request'
2
+// 获取
3
+export function getDriverList(params) {
4
+  return request({
5
+    url: 'T_Car_WorkOrder/GetCarList',
6
+    method: 'get',
7
+    params
8
+  })
9
+}
10
+// 撤回
11
+export function getWithdrawWorkOrder(params) {
12
+  return request({
13
+    url: 'T_Car_WorkOrder/WithdrawWorkOrder',
14
+    method: 'get',
15
+    params
16
+  })
17
+}

+ 16 - 1
CallCenterWeb.UI/RMYY/src/api/vehicleDispatch/vehicleScheduling.js

@@ -1,5 +1,20 @@
1 1
 import request from '@/utils/request'
2
-
2
+// 获取车辆
3
+export function getCarList(params) {
4
+  return request({
5
+    url: 'T_Car_Message/GetAllCar',
6
+    method: 'get',
7
+    params
8
+  })
9
+}
10
+// 获取司机
11
+export function getCarUserList(params) {
12
+  return request({
13
+    url: 'T_Car_WorkOrder/GetUserList',
14
+    method: 'get',
15
+    params
16
+  })
17
+}
3 18
 // 获取列表数据
4 19
 export function getList(params) {
5 20
   return request({

+ 119 - 0
CallCenterWeb.UI/RMYY/src/views/vehicleDispatch/driverOrder/index.vue

@@ -0,0 +1,119 @@
1
+<template>
2
+  <div class="app-container">
3
+    <div class="filter-container">
4
+      <el-input clearable v-model="ordercode" placeholder="请输入工单编号" class="filter-item" />
5
+      <el-input clearable v-model="carname" placeholder="请输入车辆名称" class="filter-item" />
6
+      <el-input clearable v-model="drivername" placeholder="请输入司机名称" class="filter-item" />
7
+      <el-date-picker v-model="startTime" size="medium" type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
8
+        range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" />
9
+      <el-button type="primary" class="filter-item" @click="btn_search">搜索</el-button>
10
+    </div>
11
+    <el-table v-loading="loading" :data="dataLists" border stripe>
12
+      <el-table-column :show-overflow-tooltip="true" prop="F_WorkOrderCode" label="工单编号" align="center" />
13
+      <el-table-column :show-overflow-tooltip="true" prop="F_CarName" label="车辆信息" align="center" />
14
+      <el-table-column :show-overflow-tooltip="true" prop="F_DriverName" label="司机" align="center" />
15
+      <el-table-column :show-overflow-tooltip="true" prop="F_DepartPlace" label="出发地" align="center" />
16
+      <el-table-column :show-overflow-tooltip="true" prop="F_Destination" label="目的地" align="center" />
17
+      <el-table-column :show-overflow-tooltip="true" prop="F_CreateTime" label="创建时间" align="center" />
18
+      <el-table-column :show-overflow-tooltip="true" prop="F_CloseTime" label="完工时间" align="center" />
19
+      <el-table-column :show-overflow-tooltip="true" prop="F_State" label="状态" align="center" />
20
+      <el-table-column label="操作" width="160" align="center" class-name="oparate_btn" fixed="right">
21
+        <template slot-scope="scope">
22
+          <el-button size="mini" type="text" @click="btn_withdraw(scope.row.F_ID)">撤回</el-button>
23
+        </template>
24
+      </el-table-column>
25
+    </el-table>
26
+    <pagination v-show="pageParams.total > 0" :total="pageParams.total" :pageindex.sync="pageParams.pageindex"
27
+      :pagesize.sync="pageParams.pagesize" class="pagination" @pagination="getList" />
28
+  </div>
29
+</template>
30
+<script>
31
+  import {
32
+    getDriverList,
33
+    getWithdrawWorkOrder
34
+  } from '@/api/vehicleDispatch/driver'
35
+  import Pagination from '@/components/context/Pagination'
36
+
37
+  export default {
38
+    name: 'DriverOrer',
39
+    components: {
40
+      Pagination
41
+    },
42
+    data() {
43
+      return {
44
+        loading: false,
45
+        keyword: '',
46
+        ordercode: '',
47
+        carname: '',
48
+        drivername: '',
49
+        startTime: '',
50
+        pageParams: {
51
+          pageindex: 1, //Number(this.$store.getters.serverConfig.PAGESIZE)
52
+          pagesize: Number(this.$store.getters.serverConfig.PAGESIZE),
53
+          total: 0
54
+        },
55
+        dataLists: []
56
+      }
57
+    },
58
+    created() {
59
+      this.getList()
60
+      document.onkeyup = (e) => {
61
+        if (e.keyCode === 13) {
62
+          this.getList()
63
+        }
64
+      }
65
+    },
66
+    methods: {
67
+      getList() {
68
+        // this.loading = true
69
+        return new Promise((resolve) => {
70
+          const params = {
71
+            pageindex: this.pageParams.pageindex, // 第几页
72
+            pagesize: this.pageParams.pagesize, // 每页几条信息
73
+            stime: this.searchDate && this.searchDate[0],
74
+            etime: this.searchDate && this.searchDate[1],
75
+            WorkOrderCode: this.ordercode,
76
+            carname: this.carname,
77
+            driverName: this.drivername,
78
+            state: ''
79
+          }
80
+          getDriverList(params).then((response) => {
81
+            this.loading = false
82
+            if (response.rows.length >= 0) {
83
+              this.pageParams.total = response.tatal
84
+              this.dataLists = response.rows
85
+            }
86
+          })
87
+          resolve()
88
+        })
89
+      },
90
+      btn_search() {
91
+        this.pageParams.pageindex = 1
92
+        this.getList()
93
+      },
94
+      btn_withdraw(id) {
95
+        const params = {
96
+          orderid: id
97
+        }
98
+        this.$confirm('您确定要撤回吗?', '提示', {
99
+            confirmButtonText: '确定',
100
+            cancelButtonText: '取消',
101
+            type: 'warning'
102
+          })
103
+          .then(() => {
104
+            getWithdrawWorkOrder(params).then((response) => {
105
+              if (response.state.toLowerCase() === 'success') {
106
+                this.getList()
107
+                this.$message.success('撤回成功!')
108
+              }
109
+            })
110
+          })
111
+          .catch(() => {
112
+            this.$message('已取消撤回')
113
+          })
114
+      },
115
+    }
116
+  }
117
+</script>
118
+<style rel="stylesheet/scss" lang="scss" scoped>
119
+</style>

+ 141 - 0
CallCenterWeb.UI/RMYY/src/views/vehicleDispatch/vehicleScheduling/vehicleSchedulingList/components/distribution.vue

@@ -0,0 +1,141 @@
1
+<template>
2
+  <div v-loading="loading">
3
+    <el-table :data="selectarr" border stripe>
4
+      <el-table-column type="index" width="100" label="序号" align="center">
5
+      </el-table-column>
6
+      <el-table-column prop="F_WorkOrderCode" label="工单号" align="center" />
7
+      <el-table-column prop="F_Content" label="工单内容" align="center" />
8
+      <el-table-column prop="F_DepartPlace" label="出发地" align="center" />
9
+      <el-table-column prop="F_Destination" label="目的地" align="center" />
10
+      <el-table-column prop="F_UseTime" label="用车时间" align="center" />
11
+    </el-table>
12
+    <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px">
13
+      <el-col :span="24">
14
+        <el-row>
15
+          <el-col :span="12">
16
+            <el-form-item label="车辆" prop="carid">
17
+              <el-select v-model="ruleForm.carid" style="width: 100%;">
18
+                <el-option v-for="(item,index) in carArr" :key="index" :label="item.carname" :value="item.carid">
19
+                </el-option>
20
+              </el-select>
21
+            </el-form-item>
22
+          </el-col>
23
+          <el-col :span="12">
24
+            <el-form-item label="司机" prop="driver">
25
+              <el-select v-model="ruleForm.driver" style="width:100%;">
26
+                <el-option v-for="item in repairman" :key="item.usercode" :label="item.username"
27
+                  :value="item.usercode" />
28
+              </el-select>
29
+            </el-form-item>
30
+          </el-col>
31
+        </el-row>
32
+        <el-form-item>
33
+          <el-button type="primary" @click='onsub'>保存</el-button>
34
+        </el-form-item>
35
+      </el-col>
36
+    </el-form>
37
+  </div>
38
+</template>
39
+
40
+<script>
41
+  import {
42
+    getCarList,
43
+    getCarUserList,
44
+    getAssignWorkOrder
45
+  } from '@/api/vehicleDispatch/vehicleScheduling.js'
46
+  import {
47
+    getOrderTypeList
48
+  } from "@/api/commonAPI.js"
49
+  import selectDeptTree from '@/components/context/commonSelect/selectDeptTree.vue'
50
+  import {
51
+    getCartype
52
+  } from "@/api/vehicleDispatch/vehicleManagement";
53
+  import {
54
+    GetPerson
55
+  } from '@/api/commonAPI'
56
+  export default {
57
+    name: "Distribution",
58
+    props: {
59
+      layerid: {
60
+        type: String,
61
+        default: "",
62
+      },
63
+      selectids: {
64
+        type: Array,
65
+        default: []
66
+      },
67
+      selectarr: {
68
+        type: Array,
69
+        default: []
70
+      }
71
+    },
72
+    data() {
73
+      return {
74
+        typeList: [],
75
+        carArr: [],
76
+        repairman: [], // 申请人数据
77
+        hospitalsParam: {
78
+          id: 0,
79
+          name: ''
80
+        },
81
+        departmentsParam: {
82
+          id: 0,
83
+          name: ''
84
+        },
85
+        repairmanParam: {
86
+          id: 0,
87
+          name: ''
88
+        },
89
+        rules: {},
90
+        ruleForm: {
91
+          carid: '',
92
+          driver: ''
93
+        },
94
+        deptid: [],
95
+        loading: false,
96
+      };
97
+    },
98
+    created() {
99
+      this.getVehicleLists() //车辆arr
100
+      this.getVehicleUserLists() //司机arr
101
+    },
102
+    methods: {
103
+      getVehicleLists() {
104
+        const params = {
105
+          state: 0
106
+        }
107
+        getCarList(params).then(res => {
108
+          this.carArr = res.rows
109
+        })
110
+      },
111
+      getVehicleUserLists() {
112
+        const params = {
113
+          rolecode: 'SJ'
114
+        }
115
+        getCarUserList(params).then(res => {
116
+          this.repairman = res.rows
117
+        })
118
+      },
119
+      onsub() {
120
+        const params = {
121
+          orderid: this.selectids.toString(),
122
+          driver: this.ruleForm.driver,
123
+          carid: this.ruleForm.carid
124
+        }
125
+        getAssignWorkOrder(params).then(res => {
126
+          if (res.state == 'success') {
127
+            this.$parent.$layer.close(this.layerid);
128
+            this.$message.success('分配成功')
129
+            this.$parent.getList()
130
+          }
131
+        })
132
+      },
133
+      resetForm() {
134
+        this.$refs.ruleForm.resetFields();
135
+      },
136
+    },
137
+  };
138
+</script>
139
+
140
+<style rel="stylesheet/scss" lang="scss" scoped>
141
+</style>

+ 53 - 9
CallCenterWeb.UI/RMYY/src/views/vehicleDispatch/vehicleScheduling/vehicleSchedulingList/index.vue

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div class="app-container">
3 3
     <div class="filter-container">
4
-      <!-- <el-input v-model="keyword" placeholder="请输入关键词" class="filter-item" /> -->
4
+      <el-input clearable v-model="ordercode" placeholder="请输入工单编号" class="filter-item" />
5 5
       <el-select clearable v-model="type" placeholder="请选择工单类型" size="medium">
6 6
         <el-option v-for="item in typeList" :key="item.fid" :label="item.fname" :value="item.fid">
7 7
         </el-option>
@@ -9,6 +9,7 @@
9 9
       <el-date-picker v-model="startTime" size="medium" type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
10 10
         range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" />
11 11
       <el-button type="primary" class="filter-item" size="medium" @click="btn_search">搜索</el-button>
12
+      <el-button type="primary" class="filter-item" size="medium" @click='btn_distribute'>批量分配</el-button>
12 13
     </div>
13 14
     <el-tabs v-model="activeName" @tab-click="handleClick">
14 15
       <el-tab-pane label="全部" name="-1" />
@@ -16,8 +17,9 @@
16 17
       <el-tab-pane label="已分配" name="1" />
17 18
       <el-tab-pane label="已完成" name="10" />
18 19
     </el-tabs>
19
-    <el-table v-loading="loading" :data="dataLists" border stripe>
20
-      <el-table-column type="index" label="编号" align="center" fixed width="80" />
20
+    <el-table v-loading="loading" :data="dataLists" border stripe @selection-change="handleSelectionChange">
21
+      <el-table-column type="selection" width="55">
22
+      </el-table-column>
21 23
       <el-table-column prop="F_WorkOrderCode" label="工单编号" align="center" min-width="110">
22 24
         <template slot-scope="scope">
23 25
           <el-button type="text" size="small" @click="hadndleOrderCode(scope.row.F_ID,scope.row.F_WorkOrderCode)">
@@ -50,11 +52,10 @@
50 52
       </el-table-column>
51 53
       <el-table-column label="操作" width="160" align="center" class-name="oparate_btn" fixed="right">
52 54
         <template slot-scope="scope">
53
-          <el-button size="mini" type="text"
54
-            @click="btn_edit(scope.row.F_ID,scope.row.F_WorkOrderCode)">编辑</el-button>
55
+          <el-button size="mini" type="text" @click="btn_edit(scope.row.F_ID,scope.row.F_WorkOrderCode)">编辑</el-button>
55 56
           <el-button size="mini" type="text" @click="btn_delete(scope.row.F_WorkOrderCode)">删除
56 57
           </el-button>
57
-          <el-button size="mini" type="text">分配</el-button>
58
+          <el-button size="mini" type="text" @click="btn_fenpei(scope.row.F_WorkOrderCode,scope.row)">分配</el-button>
58 59
           <el-button size="mini" type="text">撤回</el-button>
59 60
           <!-- <el-button v-permission="'btnAssign'" v-if="scope.row.F_State==0" size="mini" type="text"
60 61
             @click="btn_assign(scope.row.F_ID)">派车
@@ -86,7 +87,7 @@
86 87
   import addOrEdit from './components/addOrEdit'
87 88
   import detail from './components/detail'
88 89
   import assign from './components/assign.vue'
89
-
90
+  import distribution from './components/distribution.vue'
90 91
   import Pagination from '@/components/context/Pagination'
91 92
 
92 93
   export default {
@@ -98,7 +99,7 @@
98 99
       return {
99 100
         activeName: '-1',
100 101
         loading: false,
101
-        keyword: '',
102
+        ordercode: '',
102 103
         state: '-1',
103 104
         typeList: [],
104 105
         type: '',
@@ -108,7 +109,9 @@
108 109
           pagesize: Number(this.$store.getters.serverConfig.PAGESIZE),
109 110
           total: 0
110 111
         },
111
-        dataLists: []
112
+        dataLists: [],
113
+        multipleSelection: [],
114
+        selectIds:[]
112 115
       }
113 116
     },
114 117
     created() {
@@ -121,6 +124,46 @@
121 124
       }
122 125
     },
123 126
     methods: {
127
+      btn_distribute(){
128
+        if(this.multipleSelection.length<1){
129
+          this.$message.error('没有要分配的选项')
130
+          return;
131
+        }
132
+        this.$layer.iframe({
133
+          content: {
134
+            content: distribution, // 传递的组件对象
135
+            parent: this, // 当前的vue对象
136
+            data: {
137
+              selectids:this.selectIds,
138
+              selectarr:this.multipleSelection
139
+            } // props
140
+          },
141
+          area: ['60%', '60%'],
142
+          title: '分配'
143
+        })
144
+      },
145
+      btn_fenpei(id,row){
146
+        this.selectIds=[]
147
+        this.multipleSelection=[]
148
+        this.selectIds.push(id)
149
+        this.multipleSelection.push(row)
150
+        this.$layer.iframe({
151
+          content: {
152
+            content: distribution, // 传递的组件对象
153
+            parent: this, // 当前的vue对象
154
+            data: {
155
+              selectids:this.selectIds,
156
+              selectarr:this.multipleSelection
157
+            } // props
158
+          },
159
+          area: ['60%', '60%'],
160
+          title: '分配'
161
+        })
162
+      },
163
+      handleSelectionChange(val) {
164
+        this.multipleSelection = val;
165
+        this.selectIds = val.map(item => item.F_WorkOrderCode)
166
+      },
124 167
       handleClick(res) {
125 168
         this.state = res.name
126 169
         this.getList()
@@ -142,6 +185,7 @@
142 185
             pageindex: this.pageParams.pageindex, // 第几页
143 186
             pagesize: this.pageParams.pagesize, // 每页几条信息
144 187
             state: this.state,
188
+            WorkOrderCode: this.ordercode,
145 189
             starttime: this.startTime && this.startTime[0],
146 190
             endtime: this.startTime && this.startTime[1]
147 191
           }