Commit 10b74a55 authored by yaqizhang's avatar yaqizhang

工单

parent 9657199d
/**
/**
* 通用css样式布局处理
* Copyright (c) 2019 gassafety
*/
/** 基础通用 **/
/** 基础通用 **/
.pt5 {
padding-top: 5px;
padding-top: 5px;
}
.pr5 {
padding-right: 5px;
padding-right: 5px;
}
.pb5 {
padding-bottom: 5px;
padding-bottom: 5px;
}
.mt5 {
margin-top: 5px;
margin-top: 5px;
}
.mr5 {
margin-right: 5px;
margin-right: 5px;
}
.mb5 {
margin-bottom: 5px;
margin-bottom: 5px;
}
.mb8 {
margin-bottom: 8px;
margin-bottom: 8px;
}
.ml5 {
margin-left: 5px;
margin-left: 5px;
}
.mt10 {
margin-top: 10px;
margin-top: 10px;
}
.mr10 {
margin-right: 10px;
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px;
margin-bottom: 10px;
}
.ml0 {
margin-left: 10px;
margin-left: 10px;
}
.mt20 {
margin-top: 20px;
margin-top: 20px;
}
.mr20 {
margin-right: 20px;
margin-right: 20px;
}
.mb20 {
margin-bottom: 20px;
margin-bottom: 20px;
}
.m20 {
margin-left: 20px;
margin-left: 20px;
}
.el-dialog:not(.is-fullscreen){
margin-top: 6vh !important;
.el-dialog:not(.is-fullscreen) {
margin-top: 6vh !important;
}
.el-table {
.el-table__header-wrapper, .el-table__fixed-header-wrapper {
th {
word-break: break-word;
background-color: #f8f8f9;
color: #515a6e;
height: 40px;
font-size: 13px;
}
}
.el-table__body-wrapper {
.el-button [class*="el-icon-"] + span {
margin-left: 1px;
}
}
.el-table__header-wrapper,
.el-table__fixed-header-wrapper {
th {
word-break: break-word;
background-color: #053b6a;
color: #fff;
height: 40px;
font-size: 13px;
}
}
.el-table__body-wrapper {
.el-table__row:nth-child(2n + 1) {
background-color: #e6e6e6;
// &:hover {
// td {
// background-color: #f4f4f4;
// }
// }
td {
.cell {
color: #525252;
}
}
}
.el-table__row:nth-child(2n) {
background-color: #f4f4f4;
// &:hover {
// td {
// background-color: #e6e6e6;
// }
// }
td {
.cell {
color: #053b6a;
}
}
}
}
.el-table__body-wrapper {
.el-button [class*="el-icon-"] + span {
margin-left: 1px;
}
}
}
/** 表单布局 **/
.form-header {
font-size:15px;
color:#6379bb;
border-bottom:1px solid #ddd;
margin:8px 10px 25px 10px;
padding-bottom:5px
font-size: 15px;
color: #6379bb;
border-bottom: 1px solid #ddd;
margin: 8px 10px 25px 10px;
padding-bottom: 5px;
}
/** 表格布局 **/
.pagination-container {
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 10px 20px !important;
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 10px 20px !important;
}
/* tree border */
.tree-border {
margin-top: 5px;
border: 1px solid #e5e6e7;
background: #FFFFFF none;
border-radius:4px;
margin-top: 5px;
border: 1px solid #e5e6e7;
background: #ffffff none;
border-radius: 4px;
}
.pagination-container .el-pagination {
right: 0;
position: absolute;
right: 0;
position: absolute;
}
.el-table .fixed-width .el-button--mini {
padding-left: 0;
padding-right: 0;
width: inherit;
padding-left: 0;
padding-right: 0;
width: inherit;
}
.el-tree-node__content > .el-checkbox {
margin-right: 8px;
margin-right: 8px;
}
.list-group-striped > .list-group-item {
border-left: 0;
border-right: 0;
border-radius: 0;
padding-left: 0;
padding-right: 0;
border-left: 0;
border-right: 0;
border-radius: 0;
padding-left: 0;
padding-right: 0;
}
.list-group {
padding-left: 0px;
list-style: none;
padding-left: 0px;
list-style: none;
}
.list-group-item {
border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
margin-bottom: -1px;
padding: 11px 0px;
font-size: 13px;
border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
margin-bottom: -1px;
padding: 11px 0px;
font-size: 13px;
}
.pull-right {
float: right !important;
float: right !important;
}
.el-card__header {
padding: 14px 15px 7px;
min-height: 40px;
padding: 14px 15px 7px;
min-height: 40px;
}
.el-card__body {
padding: 15px 20px 20px 20px;
padding: 15px 20px 20px 20px;
}
.card-box {
padding-right: 15px;
padding-left: 15px;
margin-bottom: 10px;
padding-right: 15px;
padding-left: 15px;
margin-bottom: 10px;
}
/* button color */
.el-button--cyan.is-active,
.el-button--cyan:active {
background: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
background: #20b2aa;
border-color: #20b2aa;
color: #ffffff;
}
.el-button--cyan:focus,
.el-button--cyan:hover {
background: #48D1CC;
border-color: #48D1CC;
color: #FFFFFF;
background: #48d1cc;
border-color: #48d1cc;
color: #ffffff;
}
.el-button--cyan {
background-color: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
background-color: #20b2aa;
border-color: #20b2aa;
color: #ffffff;
}
/* text color */
.text-navy {
color: #1ab394;
color: #1ab394;
}
.text-primary {
color: inherit;
color: inherit;
}
.text-success {
color: #1c84c6;
color: #1c84c6;
}
.text-info {
color: #23c6c8;
color: #23c6c8;
}
.text-warning {
color: #f8ac59;
color: #f8ac59;
}
.text-danger {
color: #ed5565;
color: #ed5565;
}
.text-muted {
color: #888888;
color: #888888;
}
/* image */
.img-circle {
border-radius: 50%;
border-radius: 50%;
}
.img-lg {
width: 120px;
height: 120px;
width: 120px;
height: 120px;
}
.avatar-upload-preview {
position: absolute;
top: 50%;
transform: translate(50%, -50%);
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: 0 0 4px #ccc;
overflow: hidden;
position: absolute;
top: 50%;
transform: translate(50%, -50%);
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: 0 0 4px #ccc;
overflow: hidden;
}
/* 拖拽列样式 */
.sortable-ghost{
opacity: .8;
color: #fff!important;
background: #42b983!important;
.sortable-ghost {
opacity: 0.8;
color: #fff !important;
background: #42b983 !important;
}
.top-right-btn {
position: relative;
float: right;
position: relative;
float: right;
}
/**
* 通用css样式布局处理
* Copyright (c) 2019 gassafety
*/
/** 基础通用 **/
.pt5 {
padding-top: 5px;
}
.pr5 {
padding-right: 5px;
}
.pb5 {
padding-bottom: 5px;
}
.mt5 {
margin-top: 5px;
}
.mr5 {
margin-right: 5px;
}
.mb5 {
margin-bottom: 5px;
}
.mb8 {
margin-bottom: 8px;
}
.ml5 {
margin-left: 5px;
}
.mt10 {
margin-top: 10px;
}
.mr10 {
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px;
}
.ml0 {
margin-left: 10px;
}
.mt20 {
margin-top: 20px;
}
.mr20 {
margin-right: 20px;
}
.mb20 {
margin-bottom: 20px;
}
.m20 {
margin-left: 20px;
}
.el-dialog:not(.is-fullscreen){
margin-top: 6vh !important;
}
.el-table {
.el-table__header-wrapper, .el-table__fixed-header-wrapper {
th {
word-break: break-word;
background-color: #f8f8f9;
color: #515a6e;
height: 40px;
font-size: 13px;
}
}
.el-table__body-wrapper {
.el-button [class*="el-icon-"] + span {
margin-left: 1px;
}
}
}
/** 表单布局 **/
.form-header {
font-size:15px;
color:#6379bb;
border-bottom:1px solid #ddd;
margin:8px 10px 25px 10px;
padding-bottom:5px
}
/** 表格布局 **/
.pagination-container {
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 10px 20px !important;
}
/* tree border */
.tree-border {
margin-top: 5px;
border: 1px solid #e5e6e7;
background: #FFFFFF none;
border-radius:4px;
}
.pagination-container .el-pagination {
right: 0;
position: absolute;
}
.el-table .fixed-width .el-button--mini {
padding-left: 0;
padding-right: 0;
width: inherit;
}
.el-tree-node__content > .el-checkbox {
margin-right: 8px;
}
.list-group-striped > .list-group-item {
border-left: 0;
border-right: 0;
border-radius: 0;
padding-left: 0;
padding-right: 0;
}
.list-group {
padding-left: 0px;
list-style: none;
}
.list-group-item {
border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
margin-bottom: -1px;
padding: 11px 0px;
font-size: 13px;
}
.pull-right {
float: right !important;
}
.el-card__header {
padding: 14px 15px 7px;
min-height: 40px;
}
.el-card__body {
padding: 15px 20px 20px 20px;
}
.card-box {
padding-right: 15px;
padding-left: 15px;
margin-bottom: 10px;
}
/* button color */
.el-button--cyan.is-active,
.el-button--cyan:active {
background: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
.el-button--cyan:focus,
.el-button--cyan:hover {
background: #48D1CC;
border-color: #48D1CC;
color: #FFFFFF;
}
.el-button--cyan {
background-color: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
/* text color */
.text-navy {
color: #1ab394;
}
.text-primary {
color: inherit;
}
.text-success {
color: #1c84c6;
}
.text-info {
color: #23c6c8;
}
.text-warning {
color: #f8ac59;
}
.text-danger {
color: #ed5565;
}
.text-muted {
color: #888888;
}
/* image */
.img-circle {
border-radius: 50%;
}
.img-lg {
width: 120px;
height: 120px;
}
.avatar-upload-preview {
position: absolute;
top: 50%;
transform: translate(50%, -50%);
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: 0 0 4px #ccc;
overflow: hidden;
}
/* 拖拽列样式 */
.sortable-ghost{
opacity: .8;
color: #fff!important;
background: #42b983!important;
}
.top-right-btn {
position: relative;
float: right;
}
......@@ -93,7 +93,7 @@
}
& .theme-dark .is-active > .el-submenu__title {
color: #5CD9D4 !important;
color: #fff !important;
}
& .nest-menu .el-submenu>.el-submenu__title,
......@@ -125,7 +125,7 @@
}
.submenu-title-noDropdown {
padding: 0 !important;
padding: 0 0 !important;
position: relative;
.el-tooltip {
......@@ -141,7 +141,7 @@
overflow: hidden;
&>.el-submenu__title {
padding: 0 !important;
padding: 0 0 !important;
.svg-icon {
margin-left: 20px;
......
......@@ -105,15 +105,22 @@ export default {
text-overflow: ellipsis !important;
background: rgba(0, 0, 0, 0);
}
.el-menu-item:hover, .el-menu-item:focus,.is-active {
.el-menu-item:hover {
outline: none;
background-image: url("../../../assets/logo/item-background.png");
background-repeat: no-repeat;
background-size: 100% 100%;
/* background: rgba(0, 0, 0, 0); */
color: #fff !important;
color: #31EAEA !important;
}
.el-menu-item:focus,.is-active {
outline: none;
background-image: url("../../../assets/logo/item-background.png");
background-repeat: no-repeat;
background-size: 100% 100%;
/* background: rgba(0, 0, 0, 0); */
color: #31EAEA !important;
}
.el-menu--horizontal > .el-submenu .el-submenu__title:hover {
background-color: rgba(0, 0, 0, 0);
color: #fff;
......
......@@ -106,6 +106,33 @@ export const constantRoutes = [
}
]
},
{
path: '/basicsInfo',
component: Layout,
hidden: true,
children: [
{
path: 'detail',
component: (resolve) => require(['@/views/workOrder/basicsInfo/detail'], resolve),
name: 'basicsInfo-detail',
meta: { title: '详情' }
}
],
},
{
path: '/basicsInfo',
component: Layout,
hidden: true,
children: [
{
path: 'index',
component: (resolve) => require(['@/views/workOrder/basicsInfo/index'], resolve),
name: 'index',
meta: { title: '返回' }
}
]
},
{
path: '/gen',
component: Layout,
......
<template>
<div class="app-container detail" style="background-color: rgb(238, 241, 245);">
<div style="background-color: rgb(252, 252, 252);padding-top: 10px;">
<span style="color: #31EAEA;font-weight: 900;margin-left: 15px;">工单信息</span>
<el-steps :active="active" finish-status="success" simple prop="orderStatus" style="margin-top: 20px">
<el-step title="未接收" ></el-step>
<el-step title="已接收" ></el-step>
<el-step title="进行中" ></el-step>
<el-step title="已反馈" ></el-step>
<el-step title="已归档" ></el-step>
</el-steps>
<el-divider></el-divider>
<div style="width: 100%;height: 200px;margin-bottom: 40px;">
<div style="color: #31EAEA;width: 100%;height: 40px;">
<ul><li>详细信息</li></ul>
</div>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="float: left;margin-left: 50px;">
<el-form-item label="工单类型:" prop="orderType">
<!-- <template slot-scope="scope">
<span>{{ scope.row.orderType}}</span>
</template> -->
<font>{{form.orderType}}</font>
</el-form-item>
<el-form-item label="工单编号:" prop="orderId">
<font>{{form.orderId}}</font>
</el-form-item>
<el-form-item label="工单名称:" prop="orderName">
<font>{{form.orderName}}</font>
</el-form-item>
<el-form-item label="指定执行人员:" prop="appointInspectorName">
<font>{{form.appointInspectorName}}</font>
</el-form-item>
<el-form-item label="设备类型:" prop="actualInspector">
<font>{{form.actualInspector}}</font>
</el-form-item>
</el-form>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="float: left;">
<el-form-item label="设备编号:" prop="deviceId">
<font>{{form.deviceId}}</font>
</el-form-item>
<el-form-item label="设备位置:" prop="remarks">
<font>{{form.remarks}}</font>
</el-form-item>
<el-form-item label="创建时间:" prop="allotTime">
<font>{{form.allotTime}}</font>
</el-form-item>
<el-form-item label="更新时间:" prop="actualTime">
<font>{{form.actualTime}}</font>
</el-form-item>
<el-form-item label="工单描述:" prop="actualTime">
<font>{{form.actualTime}}</font>
</el-form-item>
</el-form>
<div id="marbox" style="width: 700px;height: 180px;float: left;border: 1px solid rgb(218, 213, 213);">
<div style="width: 100%;height: 100%" id="container"></div>
</div>
</div>
<el-divider></el-divider>
<div style="color: #31EAEA;width: 100%;height: 40px;">
<ul><li>接单信息</li></ul>
</div>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="margin-left: 50px;">
<el-form-item label="接单人:" prop="actualInspectorName">
<font>{{form.actualInspectorName}}</font>
</el-form-item>
<el-form-item label="接单时间:" prop="actualTime">
<font>{{form.actualTime}}</font>
</el-form-item>
</el-form>
<el-divider></el-divider>
<div style="width: 100%;font-weight: 600;height: 250px;">
<div style="color: #31EAEA;width: 100%;height: 40px;">
<ul><li>反馈信息</li></ul>
</div>
<div style="width: 95%;height: 200px;float: right;">
<el-upload style="width:20%;float: left;"
action="#"
list-type="picture-card"
:auto-upload="false">
<i slot="default" class="el-icon-plus"></i>
<div slot="file" slot-scope="{file}">
<img
class="el-upload-list__item-thumbnail"
:src="file.url" alt=""
>
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePictureCardPreview(file)"
>
<i class="el-icon-zoom-in"></i>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleDownload(file)"
>
<i class="el-icon-download"></i>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleRemove(file)"
>
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="float: left;width: 50%;">
<el-form-item label="反馈信息:" prop="actualInspector">
<font>{{form.actualInspector}}</font>
</el-form-item>
<el-form-item label="反馈时间:" prop="actualTime">
<font>{{form.actualTime}}</font>
</el-form-item>
<el-form-item label="是否解决:" prop="actualTime">
<font>{{form.actualTime}}</font>
</el-form-item>
</el-form>
</div>
</div>
<div style="width: 100%;">
<el-button
size="medium"
type="text"
icon="el-icon-back"
@click="$router.go(-1)"
>返回</el-button>
</div>
</div>
</div>
</template>
<script>
import { listBasicsInfo, getBasicsInfo, delBasicsInfo, addBasicsInfo, updateBasicsInfo, exportBasicsInfo } from "@/api/workOrder/basicsInfo";
import gaodeMap from "utils/gaodeMap.js"
import {map} from "utils/gaodeMap.js"
export default {
name: "BasicsInfo",
components: {
},
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
disabled: false,
imageUrl: '',
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 工单基础信息表格数据
basicsInfoList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 工单状态字典
typeOptions: [],
pickerOptions:[],
// 工单类型字典
ordertypeOptions: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
orderType: null,
orderName: null,
orderStatus: null,
appointInspector: null,
allotTime: null,
actualInspector: null,
actualTime: null,
remarks: null
},
// 表单参数
form: {},
// 表单校验
rules: {
},
active : 0,
orderId : ""
};
},
created() {
// 如果是跳转来的,则接受初始化参数
// this.user_id = this.$route.query.id; //详细信息页接收参数
console.log(this.$route.query.orderId,"12234==========")
this.orderId = this.$route.query.orderId;
this.getList();
this.getDicts("t_order_status").then(response => {
this.typeOptions = response.data;
});
this.getDicts("t_order_type").then(response => {
this.ordertypeOptions = response.data;
});
this.getBasicsInfo();
},
mounted(){
let map = new gaodeMap("平山");
},
methods: {
handleRemove(file) {
console.log(file);
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
handleDownload(file) {
console.log(file);
},
/** 查询工单基础信息列表 */
getList() {
this.loading = true;
listBasicsInfo(this.queryParams).then(response => {
this.basicsInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
getBasicsInfo (){
getBasicsInfo(this.orderId).then(response =>{
this.form = response.data;
this.active = parseInt(response.data.orderStatus) + 1;
console.log("response.data",response.data)
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
orderId: null,
orderType: null,
orderName: null,
orderStatus: "0",
createTime: null,
appointInspector: null,
allotTime: null,
actualInspector: null,
actualTime: null,
remarks: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.orderId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加工单基础信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const orderId = row.orderId || this.ids
getBasicsInfo(orderId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改工单基础信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.orderId != null) {
updateBasicsInfo(this.form).then(response => {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addBasicsInfo(this.form).then(response => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const orderIds = row.orderId || this.ids;
this.$confirm('是否确认删除工单基础信息编号为"' + orderIds + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delBasicsInfo(orderIds);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有工单基础信息数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.exportLoading = true;
return exportBasicsInfo(queryParams);
}).then(response => {
this.download(response.msg);
this.exportLoading = false;
}).catch(() => {});
}
}
}
</script>
<style>
.detail .el-form{
width: 20%;
}
.detail .el-form-item{
margin-bottom: 0px;
}
.avatar-uploader{
width: 25%;
float: left;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
li{
font-size: 15px;
font-weight: 900;
}
</style>
\ No newline at end of file
<template>
<div class="app-container">
<div class="app-container basicsInfo">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="工单类型" prop="orderType">
<!-- <el-form-item label="工单类型" prop="orderType">
<el-select v-model="queryParams.orderType" placeholder="请选择工单类型" clearable size="small">
<el-option label="请选择字典生成" value="" />
<el-option
v-for="dict in ordertypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="工单名称" prop="orderName">
</el-form-item> -->
<el-form-item label="工单" prop="orderName">
<el-input
v-model="queryParams.orderName"
placeholder="请输入工单名称"
......@@ -15,12 +20,26 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="设备id" prop="deviceId">
<el-input
v-model="queryParams.deviceId"
placeholder="请输入设备id"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<el-form-item label="工单状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择工单状态" clearable size="small">
<el-option label="请选择字典生成" value="" />
<el-option
v-for="dict in typeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="指定执行人员" prop="appointInspector">
<!-- <el-form-item label="指定执行人员" prop="appointInspector">
<el-input
v-model="queryParams.appointInspector"
placeholder="请输入指定执行人员"
......@@ -28,8 +47,8 @@
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="下发时间" prop="allotTime">
</el-form-item> -->
<!-- <el-form-item label="下发时间" prop="allotTime">
<el-date-picker clearable size="small"
v-model="queryParams.allotTime"
type="date"
......@@ -45,16 +64,26 @@
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="实际接收时间" prop="actualTime">
<el-date-picker clearable size="small"
</el-form-item> -->
<el-form-item label="时间" prop="actualTime">
<!-- <el-date-picker clearable size="small"
v-model="queryParams.actualTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择实际接收时间">
</el-date-picker> -->
<el-date-picker
clearable size="small"
v-model="queryParams.actualTime"
type="datetimerange"
:picker-options="pickerOptions"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
align="right">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<!-- <el-form-item label="备注" prop="remarks">
<el-input
v-model="queryParams.remarks"
placeholder="请输入备注"
......@@ -62,14 +91,14 @@
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item> -->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> -->
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
......@@ -114,24 +143,47 @@
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
</el-row> -->
<el-table v-loading="loading" :data="basicsInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="工单id" align="center" prop="orderId" />
<el-table-column label="工单类型" align="center" prop="orderType" />
<!-- <el-table-column type="" width="55" align="center" /> -->
<el-table-column label="工单号" align="center" prop="orderId" />
<!-- <el-table-column label="设备编号" align="center" prop="deviceId" /> -->
<el-table-column label="工单类型" align="center" prop="orderType" >
<template slot-scope="scope">
<span v-if="scope.row.orderType == 1">巡检信息</span>
<span type="primary" v-if="scope.row.orderType == 2">隐患信息</span>
<span type="primary" v-if="scope.row.orderType == 3">报警信息</span>
</template>
</el-table-column>
<!-- <el-table-column label="接单人" align="center" prop="" /> -->
<el-table-column label="指定执行人员" align="center" prop="appointInspectorName">
</el-table-column>
<el-table-column label="实际接收人员" align="center" prop="actualInspectorName">
</el-table-column>
<!-- <el-table-column label="设备名称" align="center" prop="" />
<el-table-column label="位置" align="center" prop="" />
<el-table-column label="报警类型" align="center" prop="" /> -->
<el-table-column label="工单名称" align="center" prop="orderName" />
<el-table-column label="工单状态" align="center" prop="orderStatus" />
<el-table-column label="指定执行人员" align="center" prop="appointInspector" />
<el-table-column label="下发时间" align="center" prop="allotTime" width="180">
<el-table-column label="工单状态" align="center" prop="orderStatus" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.allotTime, '{y}-{m}-{d}') }}</span>
<el-button type="info" v-if="scope.row.orderStatus == 0">未接收</el-button>
<el-button type="info" v-if="scope.row.orderStatus == 1">已接收</el-button>
<el-button type="warning" v-if="scope.row.orderStatus == 2">进行中</el-button>
<el-button type="primary" v-if="scope.row.orderStatus == 3">已反馈</el-button>
<el-button type="success" v-if="scope.row.orderStatus == 4">已归档</el-button>
</template>
</el-table-column>
<el-table-column label="实际接收人员" align="center" prop="actualInspector" />
<el-table-column label="实际接收时间" align="center" prop="actualTime" width="180">
<!-- <el-table-column label="指定执行人员" align="center" prop="appointInspector" /> -->
<el-table-column label="创建时间" align="center" prop="allotTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.actualTime, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.allotTime) }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="实际接收人员" align="center" prop="actualInspector" /> -->
<el-table-column label="更新时间" align="center" prop="actualTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.actualTime) }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remarks" />
......@@ -143,50 +195,65 @@
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['workOrder:basicsInfo:edit']"
v-if="scope.row.orderStatus == 0"
>修改</el-button>
<el-button
<!-- <el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['workOrder:basicsInfo:remove']"
>删除</el-button>
>删除</el-button> -->
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['workOrder:basicsInfo:edit']"
v-if="scope.row.orderStatus == 3"
>归档</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="showDetail(scope.row)"
>详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改工单基础信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="工单类型" prop="orderType">
<el-select v-model="form.orderType" placeholder="请选择工单类型">
<el-option label="请选择字典生成" value="" />
<el-option
v-for="dict in ordertypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="工单名称" prop="orderName">
<el-input v-model="form.orderName" placeholder="请输入工单名称" />
</el-form-item>
<el-form-item label="工单状态">
<el-radio-group v-model="form.orderStatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="指定执行人员" prop="appointInspector">
<el-input v-model="form.appointInspector" placeholder="请输入指定执行人员" />
</el-form-item>
<el-form-item label="下发时间" prop="allotTime">
<el-date-picker clearable size="small"
v-model="form.allotTime"
type="date"
value-format="yyyy-MM-dd"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择下发时间">
</el-date-picker>
</el-form-item>
......@@ -196,8 +263,8 @@
<el-form-item label="实际接收时间" prop="actualTime">
<el-date-picker clearable size="small"
v-model="form.actualTime"
type="date"
value-format="yyyy-MM-dd"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择实际接收时间">
</el-date-picker>
</el-form-item>
......@@ -242,6 +309,11 @@ export default {
title: "",
// 是否显示弹出层
open: false,
// 工单状态字典
typeOptions: [],
pickerOptions:[],
// 工单类型字典
ordertypeOptions: [],
// 查询参数
queryParams: {
pageNum: 1,
......@@ -264,6 +336,12 @@ export default {
},
created() {
this.getList();
this.getDicts("t_order_status").then(response => {
this.typeOptions = response.data;
});
this.getDicts("t_order_type").then(response => {
this.ordertypeOptions = response.data;
});
},
methods: {
/** 查询工单基础信息列表 */
......@@ -328,6 +406,16 @@ export default {
this.title = "修改工单基础信息";
});
},
/** 详细信息跳转 */
showDetail(row) {
this.$router.push({
// path: '/workOrder/basicsInfo/'+row.orderId,
path: '/basicsInfo/detail',
query:{
orderId : row.orderId
}
}) //带参跳转
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
......@@ -380,3 +468,5 @@ export default {
}
};
</script>
<style>
</style>
\ No newline at end of file
......@@ -111,7 +111,7 @@
<el-table-column label="反馈内容" align="center" prop="contents" />
<el-table-column label="反馈时间" align="center" prop="feedbackTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.feedbackTime, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.feedbackTime)}}</span>
</template>
</el-table-column>
<el-table-column label="是否存在隐患" align="center" prop="isHiddenDanger" />
......@@ -151,10 +151,10 @@
<!-- 添加或修改工单反馈信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="工单id" prop="orderId">
<el-form-item label="工单" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入工单id" />
</el-form-item>
<el-form-item label="设备id" prop="deviceId">
<el-form-item label="设备编号" prop="deviceId">
<el-input v-model="form.deviceId" placeholder="请输入设备id" />
</el-form-item>
<el-form-item label="反馈内容" prop="contents">
......
<template>
<div class="app-container workorder">
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
<el-form-item label="登录地址" prop="ipaddr">
<el-input
v-model="queryParams.ipaddr"
placeholder="请输入登录地址"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<pagination v-show="total>0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" />
<el-table
v-loading="loading"
:data="list.slice((pageNum-1)*pageSize,pageNum*pageSize)"
style="width: 100%;"
>
<el-table-column label="序号" type="index" align="center">
<template slot-scope="scope">
<span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="会话编号" align="center" prop="tokenId" :show-overflow-tooltip="true" />
<el-table-column label="登录名称" align="center" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="主机" align="center" prop="ipaddr" :show-overflow-tooltip="true" />
<el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
<el-table-column label="浏览器" align="center" prop="browser" />
<el-table-column label="操作系统" align="center" prop="os" />
<el-table-column label="登录时间" align="center" prop="loginTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.loginTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleForceLogout(scope.row)"
v-hasPermi="['monitor:online:forceLogout']"
>强退</el-button>
</template>
</el-table-column>
</el-table>
<!-- <pagination v-show="total>0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" /> -->
</div>
</template>
<script>
import { list, forceLogout } from "@/api/monitor/online";
export default {
name: "Online",
data() {
return {
// 遮罩层
loading: true,
// 总条数
total: 0,
// 表格数据
list: [],
pageNum: 1,
pageSize: 10,
// 查询参数
queryParams: {
ipaddr: undefined,
userName: undefined
}
};
},
created() {
this.getList();
},
methods: {
/** 查询登录日志列表 */
getList() {
this.loading = true;
list(this.queryParams).then(response => {
this.list = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 强退按钮操作 */
handleForceLogout(row) {
this.$confirm('是否确认强退名称为"' + row.userName + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return forceLogout(row.tokenId);
}).then(() => {
this.getList();
this.msgSuccess("强退成功");
}).catch(() => {});
}
}
};
</script>
<style>
.workorder .pagination-container[data-v-72233bcd] {
background: #fff;
padding: 0;
}
.workorder .pagination-container {
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 0 !important;
}
.workorder .pagination-container .el-pagination {
left: 0;
position: absolute;
}
.workorder .el-pagination {
white-space: nowrap;
padding: 0;
color: #303133;
font-weight: bold;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment