作者 朱兆平

住宿位置管理

1 import axios from 'axios' 1 import axios from 'axios'
2 2
3 -let base = 'empt-location/job'; 3 +let base = 'empt-location/location';
4 4
5 5
6 export const getList = params => { return axios.get(`${base}/list`, { params: params }); }; 6 export const getList = params => { return axios.get(`${base}/list`, { params: params }); };
  1 +/**
  2 +* @Author: jianglei
  3 +* @Date: 2017-10-12 12:06:49
  4 +*/
  5 +'use strict'
  6 +import Vue from 'vue'
  7 +export default function treeToArray(data, expandAll, parent, level, item) {
  8 + const marLTemp = []
  9 + let tmp = []
  10 + Array.from(data).forEach(function(record) {
  11 + if (record._expanded === undefined) {
  12 + Vue.set(record, '_expanded', expandAll)
  13 + }
  14 + let _level = 1
  15 + if (level !== undefined && level !== null) {
  16 + _level = level + 1
  17 + }
  18 + Vue.set(record, '_level', _level)
  19 + // 如果有父元素
  20 + if (parent) {
  21 + Vue.set(record, 'parent', parent)
  22 + // 如果父元素有偏移量,需要计算在this的偏移量中
  23 + // 偏移量还与前面同级元素有关,需要加上前面所有元素的长度和
  24 + if (!marLTemp[_level]) {
  25 + marLTemp[_level] = 0
  26 + }
  27 + Vue.set(record, '_marginLeft', marLTemp[_level] + parent._marginLeft)
  28 + Vue.set(record, '_width', record[item] / parent[item] * parent._width)
  29 + // 在本次计算过偏移量后加上自己长度,以供下一个元素使用
  30 + marLTemp[_level] += record._width
  31 + } else {
  32 + // 如果为根
  33 + // 初始化偏移量存储map
  34 + marLTemp[record.id] = []
  35 + // map中是一个数组,存储的是每级的长度和
  36 + // 初始情况下为0
  37 + marLTemp[record.id][_level] = 0
  38 + Vue.set(record, '_marginLeft', 0)
  39 + Vue.set(record, '_width', 1)
  40 + }
  41 + tmp.push(record)
  42 + if (record.children && record.children.length > 0) {
  43 + const children = treeToArray(record.children, expandAll, record, _level, item)
  44 + tmp = tmp.concat(children)
  45 + }
  46 + })
  47 + return tmp
  48 +}
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 <el-col :span="24" class="main"> 23 <el-col :span="24" class="main">
24 <aside :class="collapsed?'menu-collapsed':'menu-expanded'"> 24 <aside :class="collapsed?'menu-collapsed':'menu-expanded'">
25 <!--导航菜单--> 25 <!--导航菜单-->
26 - <el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen" @close="handleclose" @select="handleselect" unique-opened router v-show="!collapsed" style="min-width: 230px"> 26 + <el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen" @close="handleclose" @select="handleselect" unique-opened router v-show="!collapsed" style="min-width: 230px" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b">
27 <template v-for="(item,index) in $router.options.routes" v-if="!item.hidden"> 27 <template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
28 <el-submenu :index="index+''" v-if="!item.leaf"> 28 <el-submenu :index="index+''" v-if="!item.leaf">
29 <template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template> 29 <template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 <el-input v-model="filters.processName" placeholder="公寓名称"></el-input> 7 <el-input v-model="filters.processName" placeholder="公寓名称"></el-input>
8 </el-form-item> 8 </el-form-item>
9 <el-form-item> 9 <el-form-item>
10 - <el-button type="primary" v-on:click="getProcessList()">查询</el-button> 10 + <el-button type="primary" v-on:click="getList()">查询</el-button>
11 </el-form-item> 11 </el-form-item>
12 <el-form-item> 12 <el-form-item>
13 <el-button type="primary" @click="handleAdd()">新增</el-button> 13 <el-button type="primary" @click="handleAdd()">新增</el-button>
@@ -15,25 +15,35 @@ @@ -15,25 +15,35 @@
15 </el-form> 15 </el-form>
16 </el-col> 16 </el-col>
17 17
18 - <!--列表-->  
19 - <tree-table :data="locationList" :eval-func="func" :eval-args="args" :expand-all="expandAll" stripe style="font-size: 13px" border @selection-change="handleSelectionChange">  
20 - <el-table-column prop="adrname" label="名称" width="110px" align="center" sortable>  
21 - <template slot-scope="scope">  
22 - <span>{{ scope.row.adrname }}</span>  
23 - </template> 18 + <el-table
  19 + :data="locationList"
  20 + style="width: 100%;margin-bottom: 20px;"
  21 + row-key="id"
  22 + border
  23 + :row-class-name="tableRowClassName"
  24 + default-expand-all
  25 + :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
  26 + <el-table-column
  27 + prop="adrname"
  28 + label="名称"
  29 + sortable
  30 + width="300">
24 </el-table-column> 31 </el-table-column>
25 - <el-table-column label="类型" width="120px" align="center" sortable>  
26 - <template slot-scope="scope">  
27 - <span>{{ scope.row.type }}</span>  
28 - </template> 32 + <el-table-column
  33 + prop="type"
  34 + label="类型"
  35 + align="center"
  36 + :formatter="formatType"
  37 + width="100">
29 </el-table-column> 38 </el-table-column>
30 <el-table-column :label="$t('table.actions')" align="center" class-name="small-padding fixed-width"> 39 <el-table-column :label="$t('table.actions')" align="center" class-name="small-padding fixed-width">
31 <template slot-scope="scope"> 40 <template slot-scope="scope">
32 <el-button type="primary" size="small" @click="handleUpdate(scope.row)">快速编辑</el-button> 41 <el-button type="primary" size="small" @click="handleUpdate(scope.row)">快速编辑</el-button>
  42 + <el-button type="primary" size="small" @click="handleUpdate(scope.row)">新增</el-button>
33 <el-button size="mini" type="danger" @click="handleModifyStatus(scope.row,'deleted')">{{ $t('table.delete') }}</el-button> 43 <el-button size="mini" type="danger" @click="handleModifyStatus(scope.row,'deleted')">{{ $t('table.delete') }}</el-button>
34 </template> 44 </template>
35 </el-table-column> 45 </el-table-column>
36 - </tree-table> 46 + </el-table>
37 47
38 <!--工具条--> 48 <!--工具条-->
39 <el-col :span="24" class="toolbar"> 49 <el-col :span="24" class="toolbar">
@@ -41,83 +51,28 @@ @@ -41,83 +51,28 @@
41 <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;"> 51 <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;">
42 </el-pagination> 52 </el-pagination>
43 </el-col> 53 </el-col>
44 -  
45 - <!--编辑界面-->  
46 - <el-dialog title="编辑" :visible.sync="editFormVisible" :close-on-click-modal="false">  
47 - <el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">  
48 - <el-form-item label="ID">  
49 - <span>{{editForm.roleId}}</span>  
50 - </el-form-item>  
51 - <el-form-item label="岗位名称">  
52 - <el-input v-model="editForm.roleName" auto-complete="off" placeholder="请输入岗位/角色名称:例如:ROLE_name"></el-input>  
53 - </el-form-item>  
54 - <el-form-item label="岗位描述">  
55 - <el-input v-model="editForm.description" auto-complete="off" placeholder="请输入岗位/角色描述:例如:用户管理员"></el-input>  
56 - </el-form-item>  
57 - <el-form-item label="部门名称">  
58 - <el-select v-model="editForm.departmentId" placeholder="请选择">  
59 - <el-option  
60 - v-for="item in departmentNameList"  
61 - :key="item.departmentId"  
62 - :label="item.departmentName"  
63 - :value="item.departmentId">  
64 - </el-option>  
65 - </el-select>  
66 - </el-form-item>  
67 - </el-form>  
68 - <div slot="footer" class="dialog-footer">  
69 - <el-button @click.native="editFormVisible = false">取消</el-button>  
70 - <el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>  
71 - </div>  
72 - </el-dialog>  
73 -  
74 - <!--新增界面-->  
75 - <el-dialog title="新增" :visible.sync="addFormVisible" width="60%">  
76 - <el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">  
77 - <el-form-item label="工单名称" prop="processname">  
78 - <el-input v-model="addForm.processname" auto-complete="off" placeholder="请输入工单标题:"></el-input>  
79 - </el-form-item>  
80 - <el-form-item label="开始日期" prop="begindate">  
81 - <el-date-picker :picker-options="pickerOptions" value-format="yyyy-MM-dd" placeholder="选择时间" v-model="addForm.begindate" style="width: 100%;"></el-date-picker>  
82 - </el-form-item>  
83 - <el-form-item label="结束日期" prop="enddate">  
84 - <el-date-picker :picker-options="pickerOptions" value-format="yyyy-MM-dd" placeholder="选择时间" v-model="addForm.enddate" style="width: 100%;"></el-date-picker>  
85 - </el-form-item>  
86 - <el-form-item label="工单类型" prop="vacationtype">  
87 - <el-select v-model="addForm.vacationtype" placeholder="请选择">  
88 - <el-option label="运维检查" value="0"></el-option>  
89 - <el-option label="设备故障" value="1"></el-option>  
90 - <el-option label="电话报修" value="3"></el-option>  
91 - </el-select>  
92 - </el-form-item>  
93 - <el-form-item label="工单内容" prop="reason">  
94 - <el-input type="textarea" v-model="addForm.reason"></el-input>  
95 - </el-form-item>  
96 - <el-form-item>  
97 - <el-cascader-panel  
98 - :options="options"  
99 - v-model="jodUserId"  
100 - @change="cascaderhandleChange"  
101 - ></el-cascader-panel>  
102 - </el-form-item>  
103 - </el-form>  
104 - <div slot="footer" class="dialog-footer">  
105 - <el-button @click.native="addFormVisible = false">取消</el-button>  
106 - <el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>  
107 - </div>  
108 - </el-dialog>  
109 </section> 54 </section>
110 </template> 55 </template>
  56 +<style>
  57 + .el-table .building {
  58 + background: oldlace;
  59 + }
  60 +
  61 + .el-table .floor {
  62 + background: #f0f9eb;
  63 + }
111 64
  65 + .el-table .house {
  66 + background: #99CCCC;
  67 + }
  68 +</style>
112 <script> 69 <script>
113 - import util from '../../common/js/util'  
114 import { getList,add} from '@/api/empt/location_api'; 70 import { getList,add} from '@/api/empt/location_api';
115 import moment from 'moment' 71 import moment from 'moment'
116 import parseTime from '@/utils' 72 import parseTime from '@/utils'
117 import loginUserInfo from '@/api/base' 73 import loginUserInfo from '@/api/base'
118 - import ElFormItem from "../../../node_modules/element-ui/packages/form/src/form-item.vue"; 74 +
119 export default { 75 export default {
120 - components: {ElFormItem},  
121 data() { 76 data() {
122 return { 77 return {
123 filters: { 78 filters: {
@@ -125,9 +80,6 @@ @@ -125,9 +80,6 @@
125 parseTime: parseTime 80 parseTime: parseTime
126 }, 81 },
127 locationList:[], 82 locationList:[],
128 - processList: [],  
129 - permissons: [],  
130 - permIds: [],  
131 total: 0, 83 total: 0,
132 pageNum: 1, 84 pageNum: 1,
133 pageSize: 5, 85 pageSize: 5,
@@ -150,13 +102,9 @@ @@ -150,13 +102,9 @@
150 departmentId:'' 102 departmentId:''
151 }, 103 },
152 //用户ID 104 //用户ID
153 -  
154 - //执行任务人ID  
155 - jodUserId: 0,  
156 //新增界面是否显示 105 //新增界面是否显示
157 addFormVisible: false, 106 addFormVisible: false,
158 //设置权限界面是否显示 107 //设置权限界面是否显示
159 - PermFormVisible: false,  
160 addLoading: false, 108 addLoading: false,
161 addFormRules: { 109 addFormRules: {
162 roleName: [ 110 roleName: [
@@ -253,18 +201,18 @@ @@ -253,18 +201,18 @@
253 //性别显示转换 201 //性别显示转换
254 formatType: function (row, column) { 202 formatType: function (row, column) {
255 let msg = '未知'; 203 let msg = '未知';
256 - switch (row.auditresuld){ 204 + switch (row.type){
257 case 0: 205 case 0:
258 - msg='未执行'; 206 + msg='公寓';
259 break; 207 break;
260 case 1: 208 case 1:
261 - msg='执行中'; 209 + msg='';
262 break; 210 break;
263 case 2: 211 case 2:
264 - msg='执行完毕'; 212 + msg='';
265 break; 213 break;
266 case 3: 214 case 3:
267 - msg='任务转交'; 215 + msg='门牌';
268 break; 216 break;
269 } 217 }
270 return msg; 218 return msg;
@@ -402,23 +350,6 @@ @@ -402,23 +350,6 @@
402 } 350 }
403 }); 351 });
404 }, 352 },
405 - startJob: function (index, row) {  
406 - let loading = this.$loading({ fullscreen: true,  
407 - background: 'gray',  
408 - text: '正在处理'});  
409 - let jobdata = Object.assign({}, row);  
410 - startJob(jobdata).then((res) => {  
411 - if (res.status ===200) {  
412 - this.getProcessList();  
413 - this.listLoading = false;  
414 - this.$message({  
415 - message: '提交成功',  
416 - type: 'success'  
417 - });  
418 - }  
419 - }).catch(error => alert(error));  
420 - loading.close();  
421 - },  
422 selsChange: function (sels) { 353 selsChange: function (sels) {
423 this.sels = sels; 354 this.sels = sels;
424 }, 355 },
@@ -443,15 +374,19 @@ @@ -443,15 +374,19 @@
443 374
444 }); 375 });
445 }, 376 },
446 - shwoDialog(index,row) {  
447 - this.dialogData = Object.assign({}, row);  
448 - this.centerDialogVisible = true; 377 + tableRowClassName({row, rowIndex}) {
  378 + let type = row.type;
  379 + if (type === 1) {
  380 + return 'building';
  381 + } else if (type === 2) {
  382 + return 'floor';
  383 + } else if (type === 3){
  384 + return 'house';
  385 + }
  386 + return '';
449 }, 387 },
450 - cascaderhandleChange:function (value) {  
451 - let defaultvalue = ["0","0","0","0"];  
452 - defaultvalue = value;  
453 - console.log(defaultvalue);  
454 - this.jodUserId = defaultvalue[3]; 388 + handleSelectionChange(val) {
  389 + this.multipleSelection = val
455 } 390 }
456 }, 391 },
457 mounted() { 392 mounted() {