作者 朱兆平

住宿位置管理

import axios from 'axios'
let base = 'empt-location/job';
let base = 'empt-location/location';
export const getList = params => { return axios.get(`${base}/list`, { params: params }); };
... ...
/**
* @Author: jianglei
* @Date: 2017-10-12 12:06:49
*/
'use strict'
import Vue from 'vue'
export default function treeToArray(data, expandAll, parent, level, item) {
const marLTemp = []
let tmp = []
Array.from(data).forEach(function(record) {
if (record._expanded === undefined) {
Vue.set(record, '_expanded', expandAll)
}
let _level = 1
if (level !== undefined && level !== null) {
_level = level + 1
}
Vue.set(record, '_level', _level)
// 如果有父元素
if (parent) {
Vue.set(record, 'parent', parent)
// 如果父元素有偏移量,需要计算在this的偏移量中
// 偏移量还与前面同级元素有关,需要加上前面所有元素的长度和
if (!marLTemp[_level]) {
marLTemp[_level] = 0
}
Vue.set(record, '_marginLeft', marLTemp[_level] + parent._marginLeft)
Vue.set(record, '_width', record[item] / parent[item] * parent._width)
// 在本次计算过偏移量后加上自己长度,以供下一个元素使用
marLTemp[_level] += record._width
} else {
// 如果为根
// 初始化偏移量存储map
marLTemp[record.id] = []
// map中是一个数组,存储的是每级的长度和
// 初始情况下为0
marLTemp[record.id][_level] = 0
Vue.set(record, '_marginLeft', 0)
Vue.set(record, '_width', 1)
}
tmp.push(record)
if (record.children && record.children.length > 0) {
const children = treeToArray(record.children, expandAll, record, _level, item)
tmp = tmp.concat(children)
}
})
return tmp
}
... ...
... ... @@ -23,7 +23,7 @@
<el-col :span="24" class="main">
<aside :class="collapsed?'menu-collapsed':'menu-expanded'">
<!--导航菜单-->
<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">
<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">
<template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
<el-submenu :index="index+''" v-if="!item.leaf">
<template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
... ...
... ... @@ -7,7 +7,7 @@
<el-input v-model="filters.processName" placeholder="公寓名称"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" v-on:click="getProcessList()">查询</el-button>
<el-button type="primary" v-on:click="getList()">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleAdd()">新增</el-button>
... ... @@ -15,25 +15,35 @@
</el-form>
</el-col>
<!--列表-->
<tree-table :data="locationList" :eval-func="func" :eval-args="args" :expand-all="expandAll" stripe style="font-size: 13px" border @selection-change="handleSelectionChange">
<el-table-column prop="adrname" label="名称" width="110px" align="center" sortable>
<template slot-scope="scope">
<span>{{ scope.row.adrname }}</span>
</template>
<el-table
:data="locationList"
style="width: 100%;margin-bottom: 20px;"
row-key="id"
border
:row-class-name="tableRowClassName"
default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column
prop="adrname"
label="名称"
sortable
width="300">
</el-table-column>
<el-table-column label="类型" width="120px" align="center" sortable>
<template slot-scope="scope">
<span>{{ scope.row.type }}</span>
</template>
<el-table-column
prop="type"
label="类型"
align="center"
:formatter="formatType"
width="100">
</el-table-column>
<el-table-column :label="$t('table.actions')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="handleUpdate(scope.row)">快速编辑</el-button>
<el-button type="primary" size="small" @click="handleUpdate(scope.row)">新增</el-button>
<el-button size="mini" type="danger" @click="handleModifyStatus(scope.row,'deleted')">{{ $t('table.delete') }}</el-button>
</template>
</el-table-column>
</tree-table>
</el-table>
<!--工具条-->
<el-col :span="24" class="toolbar">
... ... @@ -41,83 +51,28 @@
<el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;">
</el-pagination>
</el-col>
<!--编辑界面-->
<el-dialog title="编辑" :visible.sync="editFormVisible" :close-on-click-modal="false">
<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
<el-form-item label="ID">
<span>{{editForm.roleId}}</span>
</el-form-item>
<el-form-item label="岗位名称">
<el-input v-model="editForm.roleName" auto-complete="off" placeholder="请输入岗位/角色名称:例如:ROLE_name"></el-input>
</el-form-item>
<el-form-item label="岗位描述">
<el-input v-model="editForm.description" auto-complete="off" placeholder="请输入岗位/角色描述:例如:用户管理员"></el-input>
</el-form-item>
<el-form-item label="部门名称">
<el-select v-model="editForm.departmentId" placeholder="请选择">
<el-option
v-for="item in departmentNameList"
:key="item.departmentId"
:label="item.departmentName"
:value="item.departmentId">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="editFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
</div>
</el-dialog>
<!--新增界面-->
<el-dialog title="新增" :visible.sync="addFormVisible" width="60%">
<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
<el-form-item label="工单名称" prop="processname">
<el-input v-model="addForm.processname" auto-complete="off" placeholder="请输入工单标题:"></el-input>
</el-form-item>
<el-form-item label="开始日期" prop="begindate">
<el-date-picker :picker-options="pickerOptions" value-format="yyyy-MM-dd" placeholder="选择时间" v-model="addForm.begindate" style="width: 100%;"></el-date-picker>
</el-form-item>
<el-form-item label="结束日期" prop="enddate">
<el-date-picker :picker-options="pickerOptions" value-format="yyyy-MM-dd" placeholder="选择时间" v-model="addForm.enddate" style="width: 100%;"></el-date-picker>
</el-form-item>
<el-form-item label="工单类型" prop="vacationtype">
<el-select v-model="addForm.vacationtype" placeholder="请选择">
<el-option label="运维检查" value="0"></el-option>
<el-option label="设备故障" value="1"></el-option>
<el-option label="电话报修" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="工单内容" prop="reason">
<el-input type="textarea" v-model="addForm.reason"></el-input>
</el-form-item>
<el-form-item>
<el-cascader-panel
:options="options"
v-model="jodUserId"
@change="cascaderhandleChange"
></el-cascader-panel>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="addFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
</div>
</el-dialog>
</section>
</template>
<style>
.el-table .building {
background: oldlace;
}
.el-table .floor {
background: #f0f9eb;
}
.el-table .house {
background: #99CCCC;
}
</style>
<script>
import util from '../../common/js/util'
import { getList,add} from '@/api/empt/location_api';
import moment from 'moment'
import parseTime from '@/utils'
import loginUserInfo from '@/api/base'
import ElFormItem from "../../../node_modules/element-ui/packages/form/src/form-item.vue";
export default {
components: {ElFormItem},
data() {
return {
filters: {
... ... @@ -125,9 +80,6 @@
parseTime: parseTime
},
locationList:[],
processList: [],
permissons: [],
permIds: [],
total: 0,
pageNum: 1,
pageSize: 5,
... ... @@ -150,13 +102,9 @@
departmentId:''
},
//用户ID
//执行任务人ID
jodUserId: 0,
//新增界面是否显示
addFormVisible: false,
//设置权限界面是否显示
PermFormVisible: false,
addLoading: false,
addFormRules: {
roleName: [
... ... @@ -253,18 +201,18 @@
//性别显示转换
formatType: function (row, column) {
let msg = '未知';
switch (row.auditresuld){
switch (row.type){
case 0:
msg='未执行';
msg='公寓';
break;
case 1:
msg='执行中';
msg='';
break;
case 2:
msg='执行完毕';
msg='';
break;
case 3:
msg='任务转交';
msg='门牌';
break;
}
return msg;
... ... @@ -402,23 +350,6 @@
}
});
},
startJob: function (index, row) {
let loading = this.$loading({ fullscreen: true,
background: 'gray',
text: '正在处理'});
let jobdata = Object.assign({}, row);
startJob(jobdata).then((res) => {
if (res.status ===200) {
this.getProcessList();
this.listLoading = false;
this.$message({
message: '提交成功',
type: 'success'
});
}
}).catch(error => alert(error));
loading.close();
},
selsChange: function (sels) {
this.sels = sels;
},
... ... @@ -443,15 +374,19 @@
});
},
shwoDialog(index,row) {
this.dialogData = Object.assign({}, row);
this.centerDialogVisible = true;
tableRowClassName({row, rowIndex}) {
let type = row.type;
if (type === 1) {
return 'building';
} else if (type === 2) {
return 'floor';
} else if (type === 3){
return 'house';
}
return '';
},
cascaderhandleChange:function (value) {
let defaultvalue = ["0","0","0","0"];
defaultvalue = value;
console.log(defaultvalue);
this.jodUserId = defaultvalue[3];
handleSelectionChange(val) {
this.multipleSelection = val
}
},
mounted() {
... ...