ticket&component
This commit is contained in:
parent
b2d50e536a
commit
490c0e489d
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
|
@ -82,6 +82,14 @@ export default {
|
||||||
data);
|
data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
cateAgg: {
|
||||||
|
name: "时间分类聚合",
|
||||||
|
req: async function(data){
|
||||||
|
return await http.post(
|
||||||
|
`${config.API_URL}/ecm/event/cate_agg/`,
|
||||||
|
data);
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
|
|
||||||
|
|
|
@ -99,8 +99,8 @@ export default {
|
||||||
},
|
},
|
||||||
ticketAccept: {
|
ticketAccept: {
|
||||||
name: "接单",
|
name: "接单",
|
||||||
req: async function(id){
|
req: async function(id,data){
|
||||||
return await http.post(`${config.API_URL}/wf/ticket/${id}/accpet/`);
|
return await http.post(`${config.API_URL}/wf/ticket/${id}/accpet/`,data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addNodeEnd: {
|
addNodeEnd: {
|
||||||
|
@ -118,7 +118,7 @@ export default {
|
||||||
ticketClose: {
|
ticketClose: {
|
||||||
name: "关闭工单",
|
name: "关闭工单",
|
||||||
req: async function(id,data){
|
req: async function(id,data){
|
||||||
return await http.post(`${config.API_URL}/wf/ticket/{id}/close/`,data);
|
return await http.post(`${config.API_URL}/wf/ticket/${id}/close/`,data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ticketDeliver: {
|
ticketDeliver: {
|
||||||
|
|
|
@ -0,0 +1,274 @@
|
||||||
|
<template>
|
||||||
|
<el-button
|
||||||
|
v-if="selectable"
|
||||||
|
type="primary"
|
||||||
|
circle
|
||||||
|
size="mini"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
@click="showDialog()"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="选择人员"
|
||||||
|
width="80%"
|
||||||
|
v-model="dialoguser"
|
||||||
|
:before-close="handleClose"
|
||||||
|
:append-to-body="true"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :md="8" :sm="24">
|
||||||
|
<el-main class="nopadding">
|
||||||
|
<el-tabs type="border-card" stretch="true">
|
||||||
|
<el-tab-pane label="按部门分类">
|
||||||
|
<el-input placeholder="输入关键字进行过滤" v-model="filterText">
|
||||||
|
</el-input>
|
||||||
|
<el-tree
|
||||||
|
class="filter-tree"
|
||||||
|
style="padding-top: 15px"
|
||||||
|
:data="deptdata"
|
||||||
|
default-expand-all
|
||||||
|
:filter-node-method="filterNode"
|
||||||
|
ref="tree"
|
||||||
|
@node-click="handleNodeClick"
|
||||||
|
>
|
||||||
|
</el-tree>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="按岗位分类">
|
||||||
|
<el-input
|
||||||
|
placeholder="输入关键字进行过滤"
|
||||||
|
v-model="filterTexts"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
|
||||||
|
<el-tree
|
||||||
|
class="filter-tree"
|
||||||
|
style="padding-top: 15px"
|
||||||
|
:data="postdata"
|
||||||
|
default-expand-all
|
||||||
|
:filter-node-method="filterNodes"
|
||||||
|
ref="tree"
|
||||||
|
@node-click="handleNodeClicks"
|
||||||
|
>
|
||||||
|
</el-tree>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</el-main>
|
||||||
|
</el-col>
|
||||||
|
<el-col :md="16" :sm="24">
|
||||||
|
<el-header style="border-bottom: none">
|
||||||
|
<div class="left-panel">
|
||||||
|
<el-input
|
||||||
|
v-model="search.keyword"
|
||||||
|
placeholder="姓名"
|
||||||
|
clearable
|
||||||
|
@click="upsearch"
|
||||||
|
></el-input>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
@click="upsearch"
|
||||||
|
></el-button>
|
||||||
|
</div>
|
||||||
|
</el-header>
|
||||||
|
<el-main class="nopadding">
|
||||||
|
<el-table
|
||||||
|
ref="userTable"
|
||||||
|
:data="apiObj"
|
||||||
|
row-key="id"
|
||||||
|
stripe
|
||||||
|
height="400"
|
||||||
|
@selection-change="selectionChange"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" width="50"></el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="#"
|
||||||
|
type="index"
|
||||||
|
width="50"
|
||||||
|
></el-table-column>
|
||||||
|
<el-table-column label="姓名" prop="name"></el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="手机号" prop="phone"></el-table-column>
|
||||||
|
<el-table-column label="部门" prop="belong_dept">
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.belong_dept_">{{scope.row.belong_dept_.name}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="创建时间"
|
||||||
|
prop="create_time"
|
||||||
|
></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-main>
|
||||||
|
<div class="right-panel">
|
||||||
|
<el-button
|
||||||
|
@click="handleClose"
|
||||||
|
style="float: right"
|
||||||
|
>取 消
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
:loading="isSaveing"
|
||||||
|
@click="submitfrom()"
|
||||||
|
style="float: right;margin-right: 10px"
|
||||||
|
>确定
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import {genTree} from "@/utils/verificate";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "employee",
|
||||||
|
components: {},
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
// 接受外部v-model传入的值
|
||||||
|
type: [String],
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
user: {
|
||||||
|
// 接受外部v-model传入的值
|
||||||
|
type: [String],
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
apiObj: [],
|
||||||
|
query: {},
|
||||||
|
selection: [],
|
||||||
|
search: {
|
||||||
|
keyword: null,
|
||||||
|
},
|
||||||
|
filterText: "",
|
||||||
|
filterTexts: "",
|
||||||
|
deptdata: [],
|
||||||
|
postdata: [],
|
||||||
|
username: [],
|
||||||
|
selectable: true,
|
||||||
|
dialoguser: false,
|
||||||
|
isSaveing: false,
|
||||||
|
dataValue: this.value,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getUser();
|
||||||
|
this.getDept();
|
||||||
|
this.getPost();
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
filterText(val) {
|
||||||
|
this.$refs.tree.filter(val);
|
||||||
|
},
|
||||||
|
filterTexts(val) {
|
||||||
|
this.$refs.tree.filter(val);
|
||||||
|
},
|
||||||
|
dataValue(val) {
|
||||||
|
this.$emit("input", val);
|
||||||
|
console.log(val)
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showDialog() {
|
||||||
|
this.dialoguser = true;
|
||||||
|
this.$nextTick(function () {
|
||||||
|
this.apiObj.map(item => {
|
||||||
|
if (item.id === this.user) {
|
||||||
|
this.$refs.table.toggleRowSelection(item, true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
//加载人员
|
||||||
|
getUser() {
|
||||||
|
this.$API.system.user.list.req({page: 0}).then((res) => {
|
||||||
|
this.apiObj = res;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
upsearch() {
|
||||||
|
this.$API.system.user.list
|
||||||
|
.req({name: this.search.keyword, page: 0})
|
||||||
|
.then((res) => {
|
||||||
|
this.apiObj = res;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//加载部门树数据
|
||||||
|
async getDept() {
|
||||||
|
let res = await this.$API.system.dept.list.req({page: 0});
|
||||||
|
this.deptdata = genTree(res);
|
||||||
|
},
|
||||||
|
//加载部门树数据
|
||||||
|
async getPost() {
|
||||||
|
let res = await this.$API.system.post.list.req({page: 0});
|
||||||
|
this.postdata = genTree(res);
|
||||||
|
},
|
||||||
|
filterNode(value, data) {
|
||||||
|
console.log(value);
|
||||||
|
if (!value) return true;
|
||||||
|
return data.label.indexOf(value) !== -1;
|
||||||
|
},
|
||||||
|
filterNodes(value, data) {
|
||||||
|
console.log(value);
|
||||||
|
if (!value) return true;
|
||||||
|
return data.label.indexOf(value) !== -1;
|
||||||
|
},
|
||||||
|
//部门点击显示对应的人员
|
||||||
|
handleNodeClick(data) {
|
||||||
|
this.$API.system.user.list
|
||||||
|
.req({belong_dept: data.id, page: 0})
|
||||||
|
.then((res) => {
|
||||||
|
this.apiObj = res;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//岗位点击显示对应的人员
|
||||||
|
handleNodeClicks(data) {
|
||||||
|
this.$API.system.user.list.req({post: data.id, page: 0}).then((res) => {
|
||||||
|
this.apiObj = res;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//表格选择后回调事件
|
||||||
|
selectionChange(selection) {
|
||||||
|
if (selection.length > 1) {
|
||||||
|
let del_row = selection.shift();
|
||||||
|
this.selection = selection[1];
|
||||||
|
this.$refs.userTable.toggleRowSelection(del_row, false); // 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
|
||||||
|
}else{
|
||||||
|
this.selection = selection;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
submitfrom() {
|
||||||
|
if(this.selection.length===1){
|
||||||
|
let obj={id:this.selection[0].id,name:this.selection[0].name};
|
||||||
|
this.$emit("handlerSubmit", obj);
|
||||||
|
this.dialoguser = false;
|
||||||
|
}else{
|
||||||
|
this.$message.warning('请选择您要加签的处理人')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
resetQuery() {
|
||||||
|
this.query = {};
|
||||||
|
},
|
||||||
|
handleClose(){
|
||||||
|
this.$confirm(`您未更改人员,确定关闭吗?`, '提示', {
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.dialoguser = false;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
10
src/scui.js
10
src/scui.js
|
@ -14,6 +14,7 @@ import scFormTable from './components/scFormTable'
|
||||||
import scTableSelect from './components/scTableSelect'
|
import scTableSelect from './components/scTableSelect'
|
||||||
import scPageHeader from './components/scPageHeader'
|
import scPageHeader from './components/scPageHeader'
|
||||||
import scSelect from './components/scSelect'
|
import scSelect from './components/scSelect'
|
||||||
|
import scUserSelect from './components/scSelect/userselect'
|
||||||
import scDialog from './components/scDialog'
|
import scDialog from './components/scDialog'
|
||||||
import scForm from './components/scForm'
|
import scForm from './components/scForm'
|
||||||
import scTitle from './components/scTitle'
|
import scTitle from './components/scTitle'
|
||||||
|
@ -59,13 +60,14 @@ export default {
|
||||||
app.component('scWaterMark', scWaterMark);
|
app.component('scWaterMark', scWaterMark);
|
||||||
app.component('scQrCode', scQrCode);
|
app.component('scQrCode', scQrCode);
|
||||||
app.component('scStatusIndicator', scStatusIndicator);
|
app.component('scStatusIndicator', scStatusIndicator);
|
||||||
|
app.component('scUserSelect', scUserSelect);
|
||||||
app.component('scTrend', scTrend);
|
app.component('scTrend', scTrend);
|
||||||
|
|
||||||
//注册全局指令
|
//注册全局指令
|
||||||
app.directive('auth', auth)
|
app.directive('auth', auth);
|
||||||
app.directive('role', role)
|
app.directive('role', role);
|
||||||
app.directive('time', time)
|
app.directive('time', time);
|
||||||
app.directive('copy', copy)
|
app.directive('copy', copy);
|
||||||
|
|
||||||
//统一注册el-icon图标
|
//统一注册el-icon图标
|
||||||
for(let icon in elIcons){
|
for(let icon in elIcons){
|
||||||
|
|
|
@ -1,266 +1,281 @@
|
||||||
<template>
|
<template>
|
||||||
<el-Dialog
|
<el-Dialog
|
||||||
:title="titleMap[mode]"
|
:title="titleMap[mode]"
|
||||||
v-model="visible"
|
v-model="visible"
|
||||||
destroy-on-close
|
destroy-on-close
|
||||||
@closed="closeDrawer"
|
@closed="closeDrawer"
|
||||||
>
|
>
|
||||||
<el-form
|
<el-form
|
||||||
ref="dialogForm"
|
ref="dialogForm"
|
||||||
:model="form"
|
:model="form"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
:disabled="mode === 'show'"
|
:disabled="mode === 'show'"
|
||||||
label-width="120px"
|
label-width="120px"
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="区域名称" prop="name">
|
<el-form-item label="区域名称" prop="name">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.name"
|
v-model="form.name"
|
||||||
placeholder="请输入真实姓名"
|
placeholder="请输入真实姓名"
|
||||||
clearable
|
clearable
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="区域类型" prop="cate">
|
<el-form-item label="区域类型" prop="cate">
|
||||||
<el-select v-model="form.cate" style="width: 100%">
|
<el-select v-model="form.cate" style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in cateOptions"
|
v-for="item in cateOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="风险等级" prop="level">
|
<el-form-item label="风险等级" prop="level">
|
||||||
<el-select v-model="form.level" style="width: 100%">
|
<el-select v-model="form.level" style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in levelOptions"
|
v-for="item in levelOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="区域编号">
|
<el-form-item label="区域编号">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.number"
|
v-model="form.number"
|
||||||
placeholder="请输入手机号"
|
placeholder="请输入手机号"
|
||||||
clearable
|
clearable
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="所属部门">
|
<el-form-item label="所属部门">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
v-model="form.dept"
|
v-model="form.dept"
|
||||||
:options="group"
|
:options="group"
|
||||||
:props="groupsProps"
|
:props="groupsProps"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
>
|
>
|
||||||
</el-cascader>
|
</el-cascader>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="区域负责人">
|
<el-form-item label="区域负责人">
|
||||||
<el-select v-model="form.manager" placeholder="选择区域负责人">
|
<el-select v-model="form.manager" placeholder="选择区域负责人">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in useroptions"
|
v-for="item in useroptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="最小人员数">
|
<el-form-item label="最小人员数">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.count_people_min"
|
v-model="form.count_people_min"
|
||||||
placeholder="最小人员数"
|
placeholder="最小人员数"
|
||||||
clearable
|
clearable
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="最大人员数">
|
<el-form-item label="最大人员数">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.count_people_max"
|
v-model="form.count_people_max"
|
||||||
placeholder="最大人员数"
|
placeholder="最大人员数"
|
||||||
clearable
|
clearable
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="当前人数">
|
<el-form-item label="当前人数">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.count_people"
|
v-model="form.count_people"
|
||||||
placeholder="当前人数"
|
placeholder="当前人数"
|
||||||
clearable
|
clearable
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="准许访客人员">
|
<el-form-item label="准许访客人员">
|
||||||
<el-switch v-model="form.visitor_yes" />
|
<el-switch v-model="visitor_yes"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="准许相关方人员">
|
<el-form-item label="准许相关方人员">
|
||||||
<el-switch v-model="form.remployee_yes" />
|
<el-switch v-model="remployee_yes"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="12" :sm="24">
|
<el-col :md="12" :sm="24">
|
||||||
<el-form-item label="准许全部员工">
|
<el-form-item label="准许全部员工">
|
||||||
<el-switch v-model="form.employee_yes" />
|
<el-switch v-model="employee_yes"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button type="primary" :loading="isSaveing" @click="submit">
|
<el-button type="primary" :loading="isSaveing" @click="submit">
|
||||||
保存
|
保存
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button @click="visible = false">取消</el-button>
|
<el-button @click="visible = false">取消</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-Dialog>
|
</el-Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { genTree } from "@/utils/verificate";
|
import {genTree} from "@/utils/verificate";
|
||||||
const defaultForm = {
|
|
||||||
id: null,
|
const defaultForm = {
|
||||||
name: "",
|
id: null,
|
||||||
level: 10,
|
name: "",
|
||||||
number: "",
|
level: 10,
|
||||||
visitor_yes: false,
|
number: "",
|
||||||
remployee_yes: false,
|
access_list:[],
|
||||||
employee_yes: false,
|
belong_dept: "",
|
||||||
belong_dept: "",
|
count_people_min: 1,
|
||||||
count_people_min: 1,
|
count_people_max: 1,
|
||||||
count_people_max: 1,
|
count_people: 0,
|
||||||
count_people: 0,
|
cate: 10,
|
||||||
cate: 10,
|
};
|
||||||
};
|
export default {
|
||||||
export default {
|
emits: ["success", "closed"],
|
||||||
emits: ["success", "closed"],
|
data() {
|
||||||
data() {
|
return {
|
||||||
return {
|
loading: false,
|
||||||
loading: false,
|
mode: "add",
|
||||||
mode: "add",
|
titleMap: {
|
||||||
titleMap: {
|
add: "新增区域",
|
||||||
add: "新增区域",
|
edit: "区域编辑",
|
||||||
edit: "区域编辑",
|
},
|
||||||
},
|
levelOptions: [
|
||||||
levelOptions: [
|
{id: 10, name: "低风险"},
|
||||||
{ id: 10, name: "低风险" },
|
{id: 20, name: "一般风险"},
|
||||||
{ id: 20, name: "一般风险" },
|
{id: 30, name: "较大风险"},
|
||||||
{ id: 30, name: "较大风险" },
|
{id: 40, name: "重大风险"},
|
||||||
{ id: 40, name: "重大风险" },
|
],
|
||||||
],
|
cateOptions: [
|
||||||
cateOptions: [
|
{id: 10, name: "生活区域"},
|
||||||
{ id: 10, name: "生活区域" },
|
{id: 20, name: "一般区域"},
|
||||||
{ id: 20, name: "一般区域" },
|
{id: 30, name: "重点区域"},
|
||||||
{ id: 30, name: "重点区域" },
|
],
|
||||||
],
|
visible: false,
|
||||||
visible: false,
|
isSaveing: false,
|
||||||
isSaveing: false,
|
form: defaultForm,
|
||||||
form: defaultForm,
|
useroptions: [],
|
||||||
useroptions:[],
|
//验证规则
|
||||||
//验证规则
|
rules: {
|
||||||
rules: {
|
name: [{required: true, message: "请输入区域名称"}],
|
||||||
name: [{ required: true, message: "请输入区域名称" }],
|
level: [{required: true, message: " 区域风险等级"}],
|
||||||
level: [{ required: true, message: " 区域风险等级" }],
|
cate: [{required: true, message: "区域分类"}],
|
||||||
cate: [{ required: true, message: "区域分类" }],
|
},
|
||||||
},
|
groupsProps: {
|
||||||
groupsProps: {
|
// value: "id",
|
||||||
// value: "id",
|
multiple: false,
|
||||||
multiple: false,
|
emitPath: false,
|
||||||
emitPath: false,
|
checkStrictly: true,
|
||||||
checkStrictly: true,
|
},
|
||||||
},
|
visitor_yes: false,
|
||||||
group: [],
|
remployee_yes: false,
|
||||||
postOptions: [],
|
employee_yes: false,
|
||||||
selectionFilters: [],
|
group: [],
|
||||||
};
|
postOptions: [],
|
||||||
},
|
selectionFilters: [],
|
||||||
mounted() {
|
};
|
||||||
this.getGroup();
|
},
|
||||||
this.getUser();
|
mounted() {
|
||||||
},
|
this.getGroup();
|
||||||
methods: {
|
this.getUser();
|
||||||
//加载树数据
|
},
|
||||||
async getGroup() {
|
methods: {
|
||||||
let res = await this.$API.system.dept.list.req({ page: 0 });
|
//加载树数据
|
||||||
this.group = genTree(res);
|
async getGroup() {
|
||||||
},
|
let res = await this.$API.system.dept.list.req({page: 0});
|
||||||
//项目负责人
|
this.group = genTree(res);
|
||||||
getUser() {
|
},
|
||||||
this.$API.system.user.list.req({ page: 0 }).then((res) => {
|
//项目负责人
|
||||||
this.useroptions = res;
|
getUser() {
|
||||||
});
|
this.$API.system.user.list.req({page: 0}).then((res) => {
|
||||||
},
|
this.useroptions = res;
|
||||||
//显示
|
});
|
||||||
open(mode) {
|
},
|
||||||
this.mode = mode;
|
//显示
|
||||||
this.visible = true;
|
open(mode) {
|
||||||
return this;
|
this.mode = mode;
|
||||||
},
|
this.visible = true;
|
||||||
closeDrawer() {
|
return this;
|
||||||
this.visible = false;
|
},
|
||||||
this.$emit("closed");
|
closeDrawer() {
|
||||||
},
|
this.visible = false;
|
||||||
//表单提交方法
|
this.$emit("closed");
|
||||||
submit() {
|
},
|
||||||
this.$refs.dialogForm.validate((valid) => {
|
//表单提交方法
|
||||||
if (valid) {
|
submit() {
|
||||||
this.isSaveing = true;
|
this.$refs.dialogForm.validate((valid) => {
|
||||||
if (this.mode === "add") {
|
if (valid) {
|
||||||
this.$API.am.area.create
|
let arr = [];
|
||||||
.req(this.form)
|
if (this.employee_yes){arr.push('employee')}
|
||||||
.then((res) => {
|
if (this.remployee_yes){arr.push('remployee')}
|
||||||
this.isSaveing = false;
|
if (this.visitor_yes){arr.push('visitor')}
|
||||||
this.visible = false;
|
this.form.access_list = arr;
|
||||||
this.$emit("success", this.form, this.mode);
|
this.isSaveing = true;
|
||||||
this.$message.success("操作成功");
|
if (this.mode === "add") {
|
||||||
return res;
|
this.$API.am.area.create
|
||||||
})
|
.req(this.form)
|
||||||
.catch((err) => {
|
.then((res) => {
|
||||||
this.isSaveing = false;
|
this.isSaveing = false;
|
||||||
return err;
|
this.visible = false;
|
||||||
});
|
this.$emit("success", this.form, this.mode);
|
||||||
} else {
|
this.$message.success("操作成功");
|
||||||
this.$API.am.area.update
|
return res;
|
||||||
.req(this.form.id, this.form)
|
})
|
||||||
.then((res) => {
|
.catch((err) => {
|
||||||
this.isSaveing = false;
|
this.isSaveing = false;
|
||||||
this.visible = false;
|
return err;
|
||||||
this.$emit("success", this.form, this.mode);
|
});
|
||||||
this.$message.success("操作成功");
|
} else {
|
||||||
return res;
|
this.$API.am.area.update
|
||||||
})
|
.req(this.form.id, this.form)
|
||||||
.catch((err) => {
|
.then((res) => {
|
||||||
this.isSaveing = false;
|
this.isSaveing = false;
|
||||||
return err;
|
this.visible = false;
|
||||||
});
|
this.$emit("success", this.form, this.mode);
|
||||||
}
|
this.$message.success("操作成功");
|
||||||
}
|
return res;
|
||||||
});
|
})
|
||||||
},
|
.catch((err) => {
|
||||||
//表单注入数据
|
this.isSaveing = false;
|
||||||
setData(data) {
|
return err;
|
||||||
console.log(defaultForm);
|
});
|
||||||
// this.form = defaultForm;
|
}
|
||||||
Object.assign(this.form, data);
|
}
|
||||||
},
|
});
|
||||||
},
|
},
|
||||||
};
|
//表单注入数据
|
||||||
|
setData(data) {
|
||||||
|
debugger;
|
||||||
|
Object.assign(this.form, data);
|
||||||
|
if (data.access_list.indexOf('employee')> -1) {
|
||||||
|
this.employee_yes = true;
|
||||||
|
}
|
||||||
|
if (data.access_list.indexOf('remployee')>-1) {
|
||||||
|
this.remployee_yes = true;
|
||||||
|
}
|
||||||
|
if (data.access_list.indexOf('visitor')>-1) {
|
||||||
|
this.visitor_yes = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
|
@ -150,7 +150,7 @@
|
||||||
<div class="simple-title" @click="warningDetail= true">
|
<div class="simple-title" @click="warningDetail= true">
|
||||||
<span>报警实时展示</span>
|
<span>报警实时展示</span>
|
||||||
<div class="simple-btn-bg alarm-bell danger">
|
<div class="simple-btn-bg alarm-bell danger">
|
||||||
<span>{{warningData.total}}</span> 报警
|
<span>{{wStatistics.total_count}}</span> 报警
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm-content">
|
<div class="alarm-content">
|
||||||
|
@ -158,22 +158,12 @@
|
||||||
<div class="alarm-danger"></div>
|
<div class="alarm-danger"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-right">
|
<div class="content-right">
|
||||||
<div title="缺员报警 3" class="alarm-item alarm-item-danger"><span class="item-icon"></span><span
|
<!--alarm-item-safe-->
|
||||||
class="item-name">缺员报警</span><span class="item-number" style="">3</span></div>
|
<div v-for="item in wStatistics.details" :key="item.cate" class="alarm-item alarm-item-danger">
|
||||||
<div title="超员报警 2" class="alarm-item alarm-item-danger"><span class="item-icon"></span><span
|
<span class="item-icon"></span>
|
||||||
class="item-name">超员报警</span><span class="item-number" style="">2</span></div>
|
<span class="item-name">{{item.cate__name}}</span>
|
||||||
<div title="静止报警 0" class="alarm-item alarm-item-safe"><span class="item-icon"></span><span
|
<span class="item-number" style="">{{item.count}}</span>
|
||||||
class="item-name">静止报警</span><span class="item-number" style="display: none;">0</span></div>
|
</div>
|
||||||
<div title="越界报警 2" class="alarm-item alarm-item-danger"><span class="item-icon"></span><span
|
|
||||||
class="item-name">越界报警</span><span class="item-number" style="">2</span></div>
|
|
||||||
<div title="一键报警 0" class="alarm-item alarm-item-safe"><span class="item-icon"></span><span
|
|
||||||
class="item-name">一键报警</span><span class="item-number" style="display: none;">0</span></div>
|
|
||||||
<div title="滞留报警 0" class="alarm-item alarm-item-safe"><span class="item-icon"></span><span
|
|
||||||
class="item-name">滞留报警</span><span class="item-number" style="display: none;">0</span></div>
|
|
||||||
<div title="车辆报警 0" class="alarm-item alarm-item-safe"><span class="item-icon"></span><span
|
|
||||||
class="item-name">车辆报警</span><span class="item-number" style="display: none;">0</span></div>
|
|
||||||
<div title="作业报警 2" class="alarm-item alarm-item-danger"><span class="item-icon"></span><span
|
|
||||||
class="item-name">作业报警</span><span class="item-number" style="">2</span></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm-detail-info left_arrow" v-if="warningDetail">
|
<div class="alarm-detail-info left_arrow" v-if="warningDetail">
|
||||||
|
@ -195,48 +185,19 @@
|
||||||
</div>
|
</div>
|
||||||
<div v-show="warningTypeShow" class="multiple-select-wrap">
|
<div v-show="warningTypeShow" class="multiple-select-wrap">
|
||||||
<div class="multiple-select-ul">
|
<div class="multiple-select-ul">
|
||||||
<div class="multiple-select-li" @click="warningTypeSelected">
|
<div class="multiple-select-li" @click="warningTypeSelected(null)">
|
||||||
<span class="multiple-select-label">全部</span>
|
<span class="multiple-select-label">全部</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="multiple-select-li" @click="warningTypeSelected">
|
|
||||||
<span title="超员报警" class="multiple-select-label">超员报警</span>
|
<div v-for="type in warningTypes" :key="type.id" class="multiple-select-li" @click="warningTypeSelected(type.id)">
|
||||||
</div>
|
<span title="超员报警" class="multiple-select-label">{{type.name}}</span>
|
||||||
<div class="multiple-select-li" @click="warningTypeSelected">
|
|
||||||
<span title="缺员报警" class="multiple-select-label">缺员报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li" @click="warningTypeSelected">
|
|
||||||
<span title="静止报警" class="multiple-select-label">静止报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li" @click="warningTypeSelected">
|
|
||||||
<span title="越界报警" class="multiple-select-label">越界报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li" @click="warningTypeSelected">
|
|
||||||
<span title="滞留报警" class="multiple-select-label">滞留报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li">
|
|
||||||
<span title="一键报警" class="multiple-select-label">一键报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li">
|
|
||||||
<span title="车辆超速报警" class="multiple-select-label">车辆超速报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li">
|
|
||||||
<span title="车辆越界报警" class="multiple-select-label">车辆越界报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li">
|
|
||||||
<span title="车辆滞留报警" class="multiple-select-label">车辆滞留报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li">
|
|
||||||
<span title="非作业人员闯入报警" class="multiple-select-label">非作业人员闯入报警</span>
|
|
||||||
</div>
|
|
||||||
<div class="multiple-select-li">
|
|
||||||
<span title="作业人员离开报警" class="multiple-select-label">作业人员离开报警</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="head-sound sound-ring"></div>
|
<div class="head-sound sound-ring"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-body">
|
<div class="content-body" v-if="warningData.total>0">
|
||||||
<!--warningList-->
|
<!--warningList-->
|
||||||
<div class="alarm-item" v-for="(item) in warningData.list" :key="item.id">
|
<div class="alarm-item" v-for="(item) in warningData.list" :key="item.id">
|
||||||
<div class="item-type">未处理</div>
|
<div class="item-type">未处理</div>
|
||||||
|
@ -248,64 +209,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--<div class="alarm-item">
|
|
||||||
<div class="item-type">越界报警</div>
|
|
||||||
<div class="item-content">
|
|
||||||
<div class="item-content-top"><span class="time">2022-07-01 11:39:03</span><span
|
|
||||||
class="status">未处理</span></div>
|
|
||||||
<div class="item-content-middle mt6">
|
|
||||||
<div class="alarm-info">【生产管理部】【马经艺】进入【测试-绿地】【0分钟】触发了【越界报警】</div><!––><!––>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="alarm-item">
|
|
||||||
<div class="item-type">超员报警</div>
|
|
||||||
<div class="item-content">
|
|
||||||
<div class="item-content-top"><span class="time">2022-06-28 10:41:04</span><span
|
|
||||||
class="status">未处理</span></div>
|
|
||||||
<div class="item-content-middle mt6">
|
|
||||||
<div class="alarm-info">【生产车间三】多于【5人】【1分钟】发生了【超员报警】</div><!––><!––></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="alarm-item">
|
|
||||||
<div class="item-type">越界报警</div>
|
|
||||||
<div class="item-content">
|
|
||||||
<div class="item-content-top"><span class="time">2022-06-28 10:38:40</span><span
|
|
||||||
class="status">未处理</span></div>
|
|
||||||
<div class="item-content-middle mt6">
|
|
||||||
<div class="alarm-info">【生产管理部】【马浩初】进入【测试-绿地】【0分钟】触发了【越界报警】</div><!––><!––>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="alarm-item">
|
|
||||||
<div class="item-type">缺员报警</div>
|
|
||||||
<div class="item-content">
|
|
||||||
<div class="item-content-top"><span class="time">2022-06-28 10:37:53</span><span
|
|
||||||
class="status">未处理</span></div>
|
|
||||||
<div class="item-content-middle mt6">
|
|
||||||
<div class="alarm-info">【生产车间三】少于【8人】发生了【缺员报警】</div><!––><!––></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="alarm-item">
|
|
||||||
<div class="item-type">超员报警</div>
|
|
||||||
<div class="item-content">
|
|
||||||
<div class="item-content-top"><span class="time">2022-06-28 10:37:41</span><span
|
|
||||||
class="status">未处理</span></div>
|
|
||||||
<div class="item-content-middle mt6">
|
|
||||||
<div class="alarm-info">【承包商开票区】多于【2人】【0分钟】发生了【超员报警】</div><!––><!––></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="alarm-item">
|
|
||||||
<div class="item-type">缺员报警</div>
|
|
||||||
<div class="item-content">
|
|
||||||
<div class="item-content-top"><span class="time">2022-06-28 10:37:27</span><span
|
|
||||||
class="status">未处理</span></div>
|
|
||||||
<div class="item-content-middle mt6">
|
|
||||||
<div class="alarm-info">【浓硫酸车间二】少于【2人】发生了【缺员报警】</div><!––><!––></div>
|
|
||||||
</div>
|
|
||||||
</div>-->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="content-footer" style="">
|
<div v-if="warningData.total>0" class="content-footer" style="">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
:page-size="warningData.params.page_size"
|
:page-size="warningData.params.page_size"
|
||||||
:pager-count="5"
|
:pager-count="5"
|
||||||
|
@ -314,8 +219,8 @@
|
||||||
:total="warningData.total"
|
:total="warningData.total"
|
||||||
@current-change="handleCurrentChange"/>
|
@current-change="handleCurrentChange"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="el-loading-mask" style="background-color: transparent; display: none;">
|
<div class="noData" v-else>
|
||||||
<div class="el-loading-spinner"><i class="el-icon-loading"></i><!----></div>
|
<img src="/img/nodata.png">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -863,9 +768,17 @@
|
||||||
total: 0,
|
total: 0,
|
||||||
params: {
|
params: {
|
||||||
page: 1,
|
page: 1,
|
||||||
page_size: 10
|
page_size: 10,
|
||||||
|
start_create:'',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
cateAggForm:{
|
||||||
|
start_create: '',
|
||||||
|
is_handled: false,
|
||||||
|
completed: true
|
||||||
|
},
|
||||||
|
wStatistics:{},
|
||||||
|
warningTypes:[],//事件类型
|
||||||
Vchannels: [],//摄像头列表
|
Vchannels: [],//摄像头列表
|
||||||
warningList: [],//报警事件列表
|
warningList: [],//报警事件列表
|
||||||
speakerList: [],//喇叭列表
|
speakerList: [],//喇叭列表
|
||||||
|
@ -881,6 +794,7 @@
|
||||||
count_remployee: 0,//访客
|
count_remployee: 0,//访客
|
||||||
count_visitor: 0//相关方
|
count_visitor: 0//相关方
|
||||||
},
|
},
|
||||||
|
|
||||||
screenJobItem: {},//危险作业信息
|
screenJobItem: {},//危险作业信息
|
||||||
screenRiskItem: {},//风险区域信息
|
screenRiskItem: {},//风险区域信息
|
||||||
screenWarningItem: {},//风险区域信息
|
screenWarningItem: {},//风险区域信息
|
||||||
|
@ -916,6 +830,7 @@
|
||||||
},
|
},
|
||||||
LBType: '1',
|
LBType: '1',
|
||||||
userMarker: {},
|
userMarker: {},
|
||||||
|
todayDate:'',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -925,6 +840,8 @@
|
||||||
document.head.appendChild(scriptInfo)
|
document.head.appendChild(scriptInfo)
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
let date = new Date();
|
||||||
|
this.todayDate = this.warningData.params.start_create = this.cateAggForm.start_create =date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();
|
||||||
window.map = new jsmap.JSMap({
|
window.map = new jsmap.JSMap({
|
||||||
mapType: jsmap.JSMapType.MAP_3D,
|
mapType: jsmap.JSMapType.MAP_3D,
|
||||||
container: 'mapContainer',
|
container: 'mapContainer',
|
||||||
|
@ -1094,12 +1011,27 @@
|
||||||
this.getSpeakers();//喇叭$$
|
this.getSpeakers();//喇叭$$
|
||||||
// this.getAllMen();//人员
|
// this.getAllMen();//人员
|
||||||
this.getAllPost();//岗位
|
this.getAllPost();//岗位
|
||||||
setInterval(function () {
|
this.getWarningTotal();//事件统计
|
||||||
|
this.getWarningType();//事件类型
|
||||||
}, 3000)
|
setInterval(function () {}, 3000)
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getWarningTotal(){
|
||||||
|
let that = this;
|
||||||
|
that.$API.ecm.event.cateAgg.req(that.cateAggForm).then(res=>{
|
||||||
|
if(res.err_msg){}else{
|
||||||
|
that.wStatistics = res;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getWarningType(){
|
||||||
|
let that = this;
|
||||||
|
that.$API.ecm.event_cate.list.req().then(res=>{
|
||||||
|
if(res.err_msg){}else{
|
||||||
|
that.warningTypes = res.results;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
areaRowClick(data) {
|
areaRowClick(data) {
|
||||||
let that = this;
|
let that = this;
|
||||||
that.areaDetail = true;
|
that.areaDetail = true;
|
||||||
|
@ -1134,7 +1066,6 @@
|
||||||
arr.push(obj)
|
arr.push(obj)
|
||||||
}
|
}
|
||||||
this.postList = arr;
|
this.postList = arr;
|
||||||
// console.log(arr)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
//人员统计
|
//人员统计
|
||||||
|
@ -1223,8 +1154,20 @@
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
//警报类型查询
|
//警报类型查询
|
||||||
warningTypeSelected() {
|
warningTypeSelected(id) {
|
||||||
|
debugger;
|
||||||
|
let that = this;
|
||||||
this.warningTypeShow = false;
|
this.warningTypeShow = false;
|
||||||
|
let params = new Object();
|
||||||
|
params = that.warningData.params;
|
||||||
|
if(id!==null){
|
||||||
|
params.cates = id;
|
||||||
|
}
|
||||||
|
that.$API.ecm.event.list.req(params).then(res=>{
|
||||||
|
if(res.err_msg){}else{
|
||||||
|
that.warningData.list = res;
|
||||||
|
}
|
||||||
|
})
|
||||||
//获取新数据
|
//获取新数据
|
||||||
},
|
},
|
||||||
//加载部门数据
|
//加载部门数据
|
||||||
|
@ -2674,23 +2617,19 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-right {
|
.content-right {
|
||||||
width: calc(100% - 170px);
|
width: calc(100% - 130px);
|
||||||
height: 100%;
|
overflow: hidden;
|
||||||
display: flex;
|
height: fit-content;
|
||||||
flex-wrap: wrap;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
|
|
||||||
.alarm-item {
|
.alarm-item {
|
||||||
width: 50%;
|
min-width: 50%;
|
||||||
height: 25%;
|
height: 26px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
float: left;
|
||||||
.item-name {
|
.item-name {
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
@ -3064,6 +3003,15 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.noData{
|
||||||
|
width: 100%;
|
||||||
|
height: 300px;
|
||||||
|
img{
|
||||||
|
margin: 50px auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.alarm-detail-info {
|
.alarm-detail-info {
|
||||||
|
@ -3075,6 +3023,7 @@
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 0 12px 0 12px;
|
padding: 0 12px 0 12px;
|
||||||
z-index: 20;
|
z-index: 20;
|
||||||
|
/*min-height: 400px;*/
|
||||||
|
|
||||||
.action-group {
|
.action-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -1,102 +1,111 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<scTable
|
<scTable
|
||||||
ref="table"
|
ref="table"
|
||||||
:data="list"
|
:data="list"
|
||||||
row-key="id"
|
row-key="id"
|
||||||
stripe
|
stripe
|
||||||
highlightCurrentRow
|
highlightCurrentRow
|
||||||
hidePagination
|
hidePagination
|
||||||
>
|
>
|
||||||
<el-table-column label="ID" prop="id"></el-table-column>
|
<el-table-column label="ID" prop="id"></el-table-column>
|
||||||
<el-table-column label="工单标题" prop="title"></el-table-column>
|
<el-table-column label="工单标题" prop="title"></el-table-column>
|
||||||
<el-table-column label="流水号" prop="sn"></el-table-column>
|
<el-table-column label="流水号" prop="sn"></el-table-column>
|
||||||
<el-table-column label="当前状态">
|
<el-table-column label="当前状态">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.state_.name }}
|
{{ scope.row.state_.name }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="进行状态" prop="sort">
|
<el-table-column label="进行状态" prop="sort">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ actstate_[scope.row.act_state] }}
|
{{ actstate_[scope.row.act_state] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="关联工作流" prop="title">
|
<el-table-column label="关联工作流" prop="title">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.workflow_.name }}
|
{{ scope.row.workflow_.name }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="处理人类型">
|
<el-table-column label="处理人类型">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ participant_[scope.row.participant_type] }}
|
{{ participant_[scope.row.participant_type] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
||||||
<el-table-column label="操作" fixed="right" align="right" width="120">
|
<el-table-column label="操作" fixed="right" align="right" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="text" size="small" @click="handleShow(scope.row)"
|
<el-button type="text" size="small" @click="handleShow(scope.row)">查看详情</el-button>
|
||||||
>查看详情</el-button
|
<!--多人且主动接单-->
|
||||||
>
|
<el-button v-if="scope.row.state_.distribute_type===1&&scope.row.participant_type===2"
|
||||||
</template>
|
type="text" size="small" @click="handleAccept(scope.row)">接单
|
||||||
</el-table-column>
|
</el-button>
|
||||||
</scTable>
|
</template>
|
||||||
</el-main>
|
</el-table-column>
|
||||||
</el-container>
|
</scTable>
|
||||||
|
</el-main>
|
||||||
|
</el-container>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "state",
|
name: "state",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
list: [],
|
list: [],
|
||||||
|
|
||||||
actstate_: {
|
actstate_: {
|
||||||
0: "草稿中",
|
0: "草稿中",
|
||||||
1: "进行中",
|
1: "进行中",
|
||||||
2: "被退回",
|
2: "被退回",
|
||||||
3: "被撤回",
|
3: "被撤回",
|
||||||
4: "已完成",
|
4: "已完成",
|
||||||
5: "已关闭",
|
5: "已关闭",
|
||||||
},
|
},
|
||||||
participant_: {
|
participant_: {
|
||||||
0: "无处理人",
|
0: "无处理人",
|
||||||
1: "个人",
|
1: "个人",
|
||||||
2: "多人",
|
2: "多人",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getList();
|
this.getList();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async getList() {
|
async getList() {
|
||||||
let res = await this.$API.wf.ticket.list.req({
|
let res = await this.$API.wf.ticket.list.req({
|
||||||
category: "all",
|
category: "all",
|
||||||
page: 0,
|
page: 0,
|
||||||
});
|
});
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.list = res;
|
this.list = res;
|
||||||
},
|
},
|
||||||
handleShow(row) {
|
handleShow(row) {
|
||||||
|
var catetype = row.workflow_.key;
|
||||||
var catetype = row.workflow_.key;
|
switch (catetype) {
|
||||||
|
case 'visit':
|
||||||
switch (catetype) {
|
this.$router.push({
|
||||||
case 'visit':
|
name: "visitdetail",
|
||||||
this.$router.push({
|
query: {
|
||||||
name: "visitdetail",
|
id: row.id,
|
||||||
query: {
|
type: 'show',
|
||||||
id: row.id,
|
visitID: row.ticket_data.visit
|
||||||
visitID:row.ticket_data.visit
|
},
|
||||||
},
|
});
|
||||||
});
|
break;
|
||||||
break;
|
}
|
||||||
}
|
},
|
||||||
},
|
handleAccept(row) {
|
||||||
},
|
this.$API.wf.ticket.ticketAccept.req(row.id, {}).then(res => {
|
||||||
};
|
if (res.err_msg) {
|
||||||
|
} else {
|
||||||
|
this.getList();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
|
@ -28,15 +28,16 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="处理人类型">
|
<el-table-column label="处理人类型">
|
||||||
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ participant_[scope.row.participant_type] }}
|
{{ participant_[scope.row.participant_type] }}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" align="right" width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button type="text" size="small" @click="handleShow(scope.row)">查看详情</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</scTable>
|
</scTable>
|
||||||
</el-main>
|
</el-main>
|
||||||
</el-container>
|
</el-container>
|
||||||
|
@ -73,6 +74,21 @@ export default {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.list = res;
|
this.list = res;
|
||||||
},
|
},
|
||||||
|
handleShow(row) {
|
||||||
|
var catetype = row.workflow_.key;
|
||||||
|
switch (catetype) {
|
||||||
|
case 'visit':
|
||||||
|
this.$router.push({
|
||||||
|
name: "visitdetail",
|
||||||
|
query: {
|
||||||
|
id: row.id,
|
||||||
|
type: 'show',
|
||||||
|
visitID: row.ticket_data.visit
|
||||||
|
},
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,74 +1,83 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
|
<el-table
|
||||||
<el-card style="margin-left: 10px">
|
:data="logs"
|
||||||
<el-table
|
fit
|
||||||
:data="logs"
|
stripe
|
||||||
fit
|
style="width: 100%;"
|
||||||
stripe
|
height="500"
|
||||||
style="width: 100%; border-top: 1px solid #ebeef5"
|
highlight-current-row
|
||||||
height="500"
|
>
|
||||||
highlight-current-row
|
<el-table-column label="工单标题" min-width="100">
|
||||||
>
|
<template #default="scope">
|
||||||
<el-table-column label="工单标题" min-width="100">
|
<span v-if="scope.row.ticket_data.title">{{ scope.row.ticket_data.title }}中</span>
|
||||||
<template #default="scope">
|
</template>
|
||||||
<span v-if="scope.row.ticket_data.title">{{ scope.row.ticket_data.title }}中</span>
|
</el-table-column>
|
||||||
</template>
|
<el-table-column label="进行状态" min-width="100">
|
||||||
</el-table-column>
|
<template #default="scope">
|
||||||
<el-table-column label="进行状态" min-width="100">
|
|
||||||
<template #default="scope">
|
|
||||||
<span v-if="scope.row.state_.type == 0"
|
<span v-if="scope.row.state_.type == 0"
|
||||||
>{{ scope.row.state_.name }}中</span
|
>{{ scope.row.state_.name }}中</span
|
||||||
>
|
>
|
||||||
<span v-else>已{{ scope.row.state_.name }}</span>
|
<span v-else>已{{ scope.row.state_.name }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作人" min-width="100">
|
<el-table-column label="操作人" min-width="100">
|
||||||
<template #default="scope" ><el-span v-if="scope.row.participant_">{{
|
<template #default="scope">
|
||||||
scope.row.participant_.name
|
<el-span v-if="scope.row.participant_">{{
|
||||||
}}</el-span></template>
|
scope.row.participant_.name
|
||||||
</el-table-column>
|
}}
|
||||||
<el-table-column
|
</el-span>
|
||||||
label="操作意见"
|
</template>
|
||||||
min-width="100"
|
</el-table-column>
|
||||||
prop="suggestion"
|
<el-table-column
|
||||||
>
|
label="操作意见"
|
||||||
</el-table-column>
|
min-width="100"
|
||||||
<el-table-column
|
prop="suggestion"
|
||||||
label="更新时间"
|
>
|
||||||
min-width="100"
|
</el-table-column>
|
||||||
prop="update_time"
|
<el-table-column
|
||||||
>
|
label="更新时间"
|
||||||
</el-table-column>
|
min-width="100"
|
||||||
</el-table>
|
prop="update_time"
|
||||||
</el-card>
|
>
|
||||||
|
</el-table-column>
|
||||||
</el-main>
|
</el-table>
|
||||||
</el-container>
|
</el-main>
|
||||||
|
</el-container>
|
||||||
</template>
|
</template>
|
||||||
<!--工单处理详情组件-->
|
<!--工单处理详情组件-->
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "detail",
|
name: "detail",
|
||||||
data() {
|
props: {
|
||||||
return {
|
ticket: {
|
||||||
logs: [],
|
type: String,
|
||||||
};
|
default: null
|
||||||
},
|
}
|
||||||
mounted() {
|
},
|
||||||
this.workId = this.$route.query.id;
|
data() {
|
||||||
this.getFlowlogss();
|
return {
|
||||||
},
|
logs: [],
|
||||||
methods: {
|
ticketId: null,
|
||||||
async getFlowlogss() {
|
};
|
||||||
|
},
|
||||||
this.$API.wf.ticket.ticketFlowlogs.req(this.workId).then(res => {
|
mounted() {
|
||||||
this.logs = res
|
debugger;
|
||||||
|
this.ticketId = this.ticket;
|
||||||
})
|
this.getFlowlogss();
|
||||||
},
|
},
|
||||||
},
|
methods: {
|
||||||
};
|
getFlowlogss() {
|
||||||
|
let that = this;
|
||||||
|
this.$API.wf.ticket.ticketFlowlogs.req(that.ticketId).then(res => {
|
||||||
|
if (res.err_msg) {
|
||||||
|
} else {
|
||||||
|
that.logs = res;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -1,80 +1,160 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<scTable
|
<scTable
|
||||||
ref="table"
|
ref="table"
|
||||||
:data="list"
|
:data="list"
|
||||||
row-key="id"
|
row-key="id"
|
||||||
stripe
|
stripe
|
||||||
highlightCurrentRow
|
highlightCurrentRow
|
||||||
hidePagination
|
hidePagination
|
||||||
>
|
>
|
||||||
<el-table-column label="ID" prop="id"></el-table-column>
|
<el-table-column label="ID" prop="id"></el-table-column>
|
||||||
<el-table-column label="工单标题" prop="title"></el-table-column>
|
<el-table-column label="工单标题" prop="title"></el-table-column>
|
||||||
<el-table-column label="流水号" prop="sn"></el-table-column>
|
<el-table-column label="流水号" prop="sn"></el-table-column>
|
||||||
<el-table-column label="当前状态">
|
<el-table-column label="当前状态">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.state_.name }}
|
{{ scope.row.state_.name }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="进行状态" prop="sort">
|
<el-table-column label="进行状态" prop="sort">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ actstate_[scope.row.act_state] }}
|
{{ actstate_[scope.row.act_state] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="关联工作流" prop="title">
|
<el-table-column label="关联工作流" prop="title">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.workflow_.name }}
|
{{ scope.row.workflow_.name }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="处理人类型">
|
<el-table-column label="处理人类型">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ participant_[scope.row.participant_type] }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
||||||
|
<el-table-column label="操作" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-link
|
||||||
|
v-if="(scope.row.act_state===1||scope.row.act_state===3)&&scope.row.participant_type!==2&&scope.row.state_.type===0"
|
||||||
|
type="primary"
|
||||||
|
@click="handleDetail(scope.row)"
|
||||||
|
>
|
||||||
|
处理
|
||||||
|
</el-link>
|
||||||
|
<el-link
|
||||||
|
type="success"
|
||||||
|
@click="handleLogs(scope.row)"
|
||||||
|
>
|
||||||
|
工单日志
|
||||||
|
</el-link>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</scTable>
|
||||||
|
</el-main>
|
||||||
|
</el-container>
|
||||||
|
<el-dialog v-model="limitedFlowLogs" title="工单日志">
|
||||||
|
<ticket-log ref="ticketLogs" :ticket="ticketId"></ticket-log>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
<template #default="scope">
|
<!--<el-dialog v-model="limitedFlowLogs" title="工单日志">
|
||||||
{{ participant_[scope.row.participant_type] }}
|
<el-table
|
||||||
</template>
|
:data="floeLogs"
|
||||||
|
fit
|
||||||
|
stripe
|
||||||
</el-table-column>
|
style="width: 100%;border-top:1px solid #EBEEF5;"
|
||||||
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
>
|
||||||
|
<el-table-column label="工单标题">
|
||||||
</scTable>
|
<template #defalut="scope">
|
||||||
</el-main>
|
<span v-if="scope.row.ticket_data">{{scope.row.ticket_data.title}}</span>
|
||||||
</el-container>
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="进行状态">
|
||||||
|
<template #defalut="scope">
|
||||||
|
<span v-if="scope.row.state_">{{scope.row.state_.name}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作人">
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.participant_">{{ scope.row.participant_.name }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作意见" prop="suggestion">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="更新时间" prop="update_time">
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-dialog>-->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
import ticketLog from "./details.vue";
|
||||||
name: "state",
|
export default {
|
||||||
data() {
|
components: {
|
||||||
return {
|
ticketLog,
|
||||||
list:[],
|
},
|
||||||
|
name: "state",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: [],
|
||||||
|
actstate_: {
|
||||||
|
0: "草稿中",
|
||||||
|
1: "进行中",
|
||||||
|
2: "被退回",
|
||||||
|
3: "被撤回",
|
||||||
|
4: "已完成",
|
||||||
|
5: "已关闭",
|
||||||
|
},
|
||||||
|
participant_: {
|
||||||
|
0: "无处理人",
|
||||||
|
1: "个人",
|
||||||
|
2: "多人",
|
||||||
|
},
|
||||||
|
floeLogs:[],
|
||||||
|
ticketId:'',
|
||||||
|
limitedFlowLogs:false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getList() {
|
||||||
|
let res = await this.$API.wf.ticket.list.req({category: "duty", page: 0});
|
||||||
|
console.log(res);
|
||||||
|
this.list = res;
|
||||||
|
},
|
||||||
|
handleDetail(row){
|
||||||
|
let catetype = row.workflow_.key;
|
||||||
|
switch (catetype) {
|
||||||
|
case 'visit':
|
||||||
|
this.$router.push({
|
||||||
|
name: "visitdetail",
|
||||||
|
query: {
|
||||||
|
id: row.id,
|
||||||
|
visitID:row.ticket_data.visit
|
||||||
|
},
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleLogs(row) {
|
||||||
|
debugger;
|
||||||
|
console.log(row)
|
||||||
|
let that = this;
|
||||||
|
let id = row.id;
|
||||||
|
this.ticketId = row.id;
|
||||||
|
that.limitedFlowLogs = true;
|
||||||
|
that.$API.wf.ticket.ticketFlow.req({ticket:id}).then(res => {
|
||||||
|
if (res.err_msg) {
|
||||||
|
|
||||||
actstate_: {
|
}else{
|
||||||
0: "草稿中",
|
that.floeLogs = res.results;
|
||||||
1: "进行中",
|
}
|
||||||
2: "被退回",
|
})
|
||||||
3: "被撤回",
|
},
|
||||||
4: "已完成",
|
},
|
||||||
5: "已关闭",
|
};
|
||||||
},
|
|
||||||
participant_: {
|
|
||||||
0: "无处理人",
|
|
||||||
1: "个人",
|
|
||||||
2: "多人",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.getList();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async getList() {
|
|
||||||
let res = await this.$API.wf.ticket.list.req({ category: "duty",page:0 });
|
|
||||||
console.log(res);
|
|
||||||
this.list = res;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
|
@ -1,80 +1,170 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<scTable
|
<scTable
|
||||||
ref="table"
|
ref="table"
|
||||||
:data="list"
|
:data="list"
|
||||||
row-key="id"
|
row-key="id"
|
||||||
stripe
|
stripe
|
||||||
highlightCurrentRow
|
highlightCurrentRow
|
||||||
hidePagination
|
hidePagination
|
||||||
>
|
>
|
||||||
<el-table-column label="ID" prop="id"></el-table-column>
|
<el-table-column label="ID" prop="id"></el-table-column>
|
||||||
<el-table-column label="工单标题" prop="title"></el-table-column>
|
<el-table-column label="工单标题" prop="title"></el-table-column>
|
||||||
<el-table-column label="流水号" prop="sn"></el-table-column>
|
<el-table-column label="流水号" prop="sn"></el-table-column>
|
||||||
<el-table-column label="当前状态">
|
<el-table-column label="当前状态">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.state_.name }}
|
{{ scope.row.state_.name }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="进行状态" prop="sort">
|
<el-table-column label="进行状态" prop="sort">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ actstate_[scope.row.act_state] }}
|
{{ actstate_[scope.row.act_state] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="关联工作流" prop="title">
|
<el-table-column label="关联工作流" prop="title">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.workflow_.name }}
|
{{ scope.row.workflow_.name }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="处理人类型">
|
<el-table-column label="处理人类型">
|
||||||
|
<template #default="scope">
|
||||||
<template #default="scope">
|
{{ participant_[scope.row.participant_type] }}
|
||||||
{{ participant_[scope.row.participant_type] }}
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
|
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" align="right" width="120">
|
||||||
</el-table-column>
|
<template #default="scope">
|
||||||
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
<el-button type="text" size="small" @click="handleShow(scope.row)">查看详情</el-button>
|
||||||
|
<!--创建人在初始状态-->
|
||||||
</scTable>
|
<el-link
|
||||||
</el-main>
|
v-if="scope.row.state_.type===1&&userId===scope.row.create_by"
|
||||||
</el-container>
|
type="danger"
|
||||||
|
@click="handleClose(scope,'2')"
|
||||||
|
>
|
||||||
|
关闭
|
||||||
|
</el-link>
|
||||||
|
<!--如果state_.retreat/state_.type==1处于草稿状态 -->
|
||||||
|
<el-link
|
||||||
|
v-if="scope.row.state_.enable_retreat&&userId===scope.row.create_by&&scope.row.state_.type!==1"
|
||||||
|
type="danger"
|
||||||
|
@click="handleClose(scope,'1')"
|
||||||
|
>
|
||||||
|
撤回
|
||||||
|
</el-link>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</scTable>
|
||||||
|
</el-main>
|
||||||
|
<el-dialog v-model="limitedRetreat" :title="handleTitle">
|
||||||
|
<el-form ref="Form" :model="handleForm" label-width="100px" label-position="right">
|
||||||
|
<el-form-item :label="handleLabel">
|
||||||
|
<el-input type="textarea" :rows="3" v-model="handleForm.suggestion" placeholder="原因"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<el-button class="filter-item" type="" @click="handleCancel">取消</el-button>
|
||||||
|
<el-button class="filter-item" type="primary" @click="handleSubmit">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</el-container>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "state",
|
name: "state",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
list:[],
|
list: [],
|
||||||
|
userId:this.$TOOL.data.get("USER_INFO").id,
|
||||||
actstate_: {
|
actstate_: {
|
||||||
0: "草稿中",
|
0: "草稿中",
|
||||||
1: "进行中",
|
1: "进行中",
|
||||||
2: "被退回",
|
2: "被退回",
|
||||||
3: "被撤回",
|
3: "被撤回",
|
||||||
4: "已完成",
|
4: "已完成",
|
||||||
5: "已关闭",
|
5: "已关闭",
|
||||||
},
|
},
|
||||||
participant_: {
|
participant_: {
|
||||||
0: "无处理人",
|
0: "无处理人",
|
||||||
1: "个人",
|
1: "个人",
|
||||||
2: "多人",
|
2: "多人",
|
||||||
},
|
},
|
||||||
};
|
handleForm: {
|
||||||
},
|
suggestion: '',
|
||||||
mounted() {
|
},
|
||||||
this.getList();
|
handleLabel: '撤回原因',
|
||||||
},
|
handleTitle: '撤回工单',
|
||||||
methods: {
|
ticketId:null,
|
||||||
async getList() {
|
limitedRetreat:false,
|
||||||
let res = await this.$API.wf.ticket.list.req({ category: "owner",page:0 });
|
};
|
||||||
console.log(res);
|
},
|
||||||
this.list = res;
|
mounted() {
|
||||||
},
|
this.getList();
|
||||||
},
|
this.userId = this.$TOOL.data.get("USER_INFO").id;
|
||||||
};
|
},
|
||||||
|
methods: {
|
||||||
|
handleShow(row) {
|
||||||
|
var catetype = row.workflow_.key;
|
||||||
|
switch (catetype) {
|
||||||
|
case 'visit':
|
||||||
|
this.$router.push({
|
||||||
|
name: "visitdetail",
|
||||||
|
query: {
|
||||||
|
id: row.id,
|
||||||
|
type: 'show',
|
||||||
|
visitID: row.ticket_data.visit
|
||||||
|
},
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getList() {
|
||||||
|
let res = await this.$API.wf.ticket.list.req({category: "owner", page: 0});
|
||||||
|
console.log(res);
|
||||||
|
this.list = res;
|
||||||
|
},
|
||||||
|
handleClose(scope, index) {
|
||||||
|
if (index === '1') {
|
||||||
|
this.handleTitle = '撤回工单';
|
||||||
|
this.handleLabel = '撤回原因';
|
||||||
|
} else {
|
||||||
|
this.handleTitle = '关闭工单';
|
||||||
|
this.handleLabel = '关闭原因';
|
||||||
|
}
|
||||||
|
this.limitedRetreat = true;
|
||||||
|
this.ticketId = scope.row.id;
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.limitedRetreat = false;
|
||||||
|
},
|
||||||
|
handleSubmit() {
|
||||||
|
let res = '';
|
||||||
|
let that = this;
|
||||||
|
that.$confirm('确认'+that.handleTitle+'吗?', "温馨提示", {
|
||||||
|
confirmButtonText: "确认",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
|
if (that.handleTitle === '撤回工单') {
|
||||||
|
res = that.$API.wf.ticket.ticketRetreat.req(that.ticketId, that.handleForm);
|
||||||
|
} else {
|
||||||
|
res = that.$API.wf.ticket.ticketClose.req(that.ticketId, that.handleForm);
|
||||||
|
}
|
||||||
|
if(res.err_msg){
|
||||||
|
that.getList();
|
||||||
|
}else{
|
||||||
|
that.limitedRetreat = false;
|
||||||
|
that.getList();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
|
@ -1,66 +1,69 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<el-card style="margin-bottom: 10px">
|
<el-card style="margin-bottom: 10px">
|
||||||
<el-steps
|
<el-steps
|
||||||
:active="actives"
|
:active="actives"
|
||||||
spac="400px"
|
spac="400px"
|
||||||
align-center=""
|
align-center=""
|
||||||
style="padding-top: 20px"
|
style="padding-top: 20px"
|
||||||
>
|
>
|
||||||
<el-step
|
<el-step
|
||||||
:title="item.name"
|
:title="item.name"
|
||||||
v-for="item in flowSteps"
|
v-for="item in flowSteps"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
></el-step>
|
></el-step>
|
||||||
</el-steps>
|
</el-steps>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
</el-main>
|
||||||
</el-main>
|
</el-container>
|
||||||
</el-container>
|
|
||||||
</template>
|
</template>
|
||||||
<!--工单进度组件-->
|
<!--工单进度组件-->
|
||||||
<script>
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "workstep",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sort: 0,
|
||||||
|
actives: 4,
|
||||||
|
flowSteps: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.workId = this.$route.query.id;
|
||||||
|
this.getFlowSteps();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getFlowSteps() {
|
||||||
|
this.$API.wf.ticket.ticketFlowSteps.req(this.workId).then((res) => {
|
||||||
|
this.flowSteps = res;
|
||||||
|
this.$API.wf.ticket.ticketItem.req(this.workId).then((resp) => {
|
||||||
|
let state = resp.state;
|
||||||
|
let dat = this.flowSteps.filter((item) => {
|
||||||
|
return item.id == state;
|
||||||
|
});
|
||||||
|
debugger;
|
||||||
|
this.sort = dat[0].sort;
|
||||||
|
this.actives = this.flowSteps.indexOf(dat[0]);
|
||||||
|
if (this.flowSteps.length - this.actives > 1) {
|
||||||
|
|
||||||
export default {
|
} else {
|
||||||
|
this.actives = this.flowSteps.length;
|
||||||
name: "workstep",
|
}
|
||||||
data() {
|
});
|
||||||
return {
|
});
|
||||||
sort: 0,
|
},
|
||||||
actives: 4,
|
},
|
||||||
flowSteps: [],
|
};
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.workId = this.$route.query.id;
|
|
||||||
this.getFlowSteps();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getFlowSteps() {
|
|
||||||
|
|
||||||
this.$API.wf.ticket.ticketFlowSteps.req(this.workId).then((res) => {;
|
|
||||||
this.flowSteps = res
|
|
||||||
this.$API.wf.ticket.ticketItem.req(this.workId).then((res) => {
|
|
||||||
let state = res.state;
|
|
||||||
let dat = this.flowSteps.filter((item) => {
|
|
||||||
return item.id == state;
|
|
||||||
})
|
|
||||||
this.sort = dat[0].sort;
|
|
||||||
this.actives = this.flowSteps.indexOf(dat[0]);
|
|
||||||
if (this.flowSteps.length - this.actives > 1) {
|
|
||||||
} else {
|
|
||||||
this.actives = this.flowSteps.length;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style>
|
||||||
|
.el-step__head.is-process .el-step__icon{
|
||||||
|
border: 2px solid #409eff;
|
||||||
|
background: #409eff;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.el-step__title.is-process{
|
||||||
|
color: #409eff;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,112 +1,245 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<el-card style="margin-bottom: 10px">
|
<el-card style="margin-bottom: 10px">
|
||||||
<work-step ref="workStep"></work-step>
|
<work-step ref="workStep"></work-step>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
<el-card style="margin-left: 10px; margin-bottom: 10px">
|
||||||
|
<el-descriptions title="来访信息" :column="3">
|
||||||
|
<el-descriptions-item label="工单流水号:">
|
||||||
|
{{ticketDetail.sn }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="来访概述:">
|
||||||
|
{{visitDetail.name }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="来访单位:">
|
||||||
|
{{visitDetail.company }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="来访人数:">
|
||||||
|
<el-tag size="small">{{ visitDetail.count_people }}人</el-tag>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="来访人员:">
|
||||||
|
<el-tag v-for="item in visitDetail.visitors_" :key='item.id' size="small">
|
||||||
|
{{ item.visitor_.name }}
|
||||||
|
</el-tag>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="状态:">
|
||||||
|
{{state_[visitDetail.state] }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="来访时间:">
|
||||||
|
{{visitDetail.visit_time }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="离开时间:">
|
||||||
|
{{visitDetail.leave_time }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="来访事由:">
|
||||||
|
{{purpose_[visitDetail.purpose] }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="来访详述:">
|
||||||
|
{{visitDetail.description }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="接待人:" v-if="visitDetail.receptionist_">
|
||||||
|
{{ visitDetail.receptionist_.name }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</el-card>
|
||||||
|
<el-card style="margin-left: 10px; margin-bottom: 10px" v-if="type!=='show'">
|
||||||
|
<scTitle title="处理"></scTitle>
|
||||||
|
<el-form :model="form" ref="addForm" label-width="100px" label-position="left">
|
||||||
|
<el-form-item label="处理意见">
|
||||||
|
<el-input v-model="form.suggestion" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div v-if="ticketDetail.in_add_node" style="text-align: right">
|
||||||
|
<el-button v-if="ticketDetail.in_add_node" class="filter-item" type="primary" @click="addNodeHandler('2')">加签处理</el-button>
|
||||||
|
</div>
|
||||||
|
<div v-else style="display: flex;justify-content: space-between;">
|
||||||
|
<div>
|
||||||
|
<el-button type="primary" @click="addNode">加签</el-button>
|
||||||
|
<el-button v-if="ticketDetail.state_&&ticketDetail.state_.enable_deliver" type="primary" plain @click="deliverNode">转交</el-button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-button v-for="item in operationBtn" :key="item.id" class="filter-item" type="primary" @click="operationSubmit(item.id)">{{item.name}}</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card style="margin-left: 10px;">
|
||||||
|
<work-details ref="workDetails" :ticket="ticketId"></work-details>
|
||||||
|
</el-card>
|
||||||
|
</el-main>
|
||||||
|
</el-container>
|
||||||
|
<el-dialog v-model="limitedAdd" title="加签">
|
||||||
|
<el-form ref="Form" :model="addForm" label-width="100px" label-position="right">
|
||||||
|
<el-form-item label="处理人">
|
||||||
|
<el-input style="width: 50%;" v-model="userName" disabled placeholder="选择处理人"></el-input>
|
||||||
|
<scUserSelect :closable="true" :multiple="false" @addNodeHandlerSubmit="addNodeHandlerSubmit"></scUserSelect>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="加签原因">
|
||||||
|
<el-input type="textarea" :rows="3" v-model="addForm.suggestion" placeholder="加签原因"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<el-button class="filter-item" type="" @click="addCancel">取消</el-button>
|
||||||
|
<el-button class="filter-item" type="primary" @click="addNodeHandler('1')">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
<el-dialog v-model="limitedDeliver" title="转交工单">
|
||||||
|
<el-form ref="Form" :model="deliverForm" label-width="100px" label-position="right">
|
||||||
|
<el-form-item label="转交人">
|
||||||
|
<el-input style="width: 50%;" v-model="userName" disabled placeholder="选择转交人"></el-input>
|
||||||
|
<scUserSelect :closable="true" :multiple="false" @handlerSubmit="deliverHandlerSubmit"></scUserSelect>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="转交原因">
|
||||||
|
<el-input type="textarea" :rows="3" v-model="deliverForm.suggestion" placeholder="转交原因"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<el-button class="filter-item" type="" @click="deliverCancel">取消</el-button>
|
||||||
|
<el-button class="filter-item" type="primary" @click="deliverNodeHandler('1')">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
<el-card style="margin-left: 10px; margin-bottom: 10px">
|
|
||||||
<el-descriptions title="来访信息" :column="3">
|
|
||||||
|
|
||||||
<el-descriptions-item label="工单流水号:">{{
|
|
||||||
ticketDetail.sn
|
|
||||||
}}</el-descriptions-item>
|
|
||||||
|
|
||||||
<el-descriptions-item label="来访概述:">{{
|
|
||||||
visitDetail.name
|
|
||||||
}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="来访单位:">{{
|
|
||||||
visitDetail.company
|
|
||||||
}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="来访人数:">
|
|
||||||
<el-tag size="small">{{ visitDetail.count_people }}人</el-tag>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="来访人员:" >
|
|
||||||
<el-tag v-for="item in visitDetail.visitors_" :key='item.id' size="small">{{ item.visitor_.name }}</el-tag>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="状态:">{{
|
|
||||||
state_[visitDetail.state]
|
|
||||||
}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="来访时间:">{{
|
|
||||||
visitDetail.visit_time
|
|
||||||
}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="离开时间:">{{
|
|
||||||
visitDetail.leave_time
|
|
||||||
}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="来访事由:">{{
|
|
||||||
purpose_[visitDetail.purpose]
|
|
||||||
}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="来访详述:">{{
|
|
||||||
visitDetail.description
|
|
||||||
}}</el-descriptions-item>
|
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="接待人:" v-if="visitDetail.receptionist_">
|
|
||||||
{{ visitDetail.receptionist_.name }}
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
</el-descriptions>
|
|
||||||
</el-card>
|
|
||||||
<el-card>
|
|
||||||
<work-details ref="workDetails"></work-details>
|
|
||||||
</el-card>
|
|
||||||
</el-main>
|
|
||||||
</el-container>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import workDetails from "./details.vue";
|
import workDetails from "./details.vue";
|
||||||
import workStep from "./steps.vue";
|
import workStep from "./steps.vue";
|
||||||
export default {
|
import selectUser from '@/layout/components/userselect'
|
||||||
components: {
|
|
||||||
workDetails,
|
|
||||||
workStep,
|
|
||||||
},
|
|
||||||
name: "visitdetail",
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
workId: "",
|
|
||||||
visitId: "",
|
|
||||||
ticketDetail: [],
|
|
||||||
visitDetail: [],
|
|
||||||
purpose_: {
|
|
||||||
10: "参观",
|
|
||||||
20: "拜访",
|
|
||||||
30: "面试",
|
|
||||||
40: "开会"
|
|
||||||
},
|
|
||||||
state_: {
|
|
||||||
10: "创建中",
|
|
||||||
20: "审批中",
|
|
||||||
30: "待入厂",
|
|
||||||
40: "进行中",
|
|
||||||
50: "已完成",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.workId = this.$route.query.id;
|
|
||||||
this.visitId = this.$route.query.visitID;
|
|
||||||
this.getticketItem();
|
|
||||||
this.getVisit();
|
|
||||||
|
|
||||||
},
|
export default {
|
||||||
methods: {
|
components: {
|
||||||
//工单详情
|
workDetails,
|
||||||
getticketItem() {
|
workStep,
|
||||||
this.$API.wf.ticket.ticketItem.req(this.workId).then((res) => {
|
selectUser
|
||||||
this.ticketDetail = res;
|
},
|
||||||
|
name: "visitdetail",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
ticketId: "",
|
||||||
|
visitId: "",
|
||||||
|
userName: "",
|
||||||
|
ticketDetail: [],
|
||||||
|
visitDetail: [],
|
||||||
|
employeeLists: [],
|
||||||
|
operationBtn: [],
|
||||||
|
form:{
|
||||||
|
suggestion:''
|
||||||
|
},
|
||||||
|
addForm:{
|
||||||
|
suggestion:'',
|
||||||
|
toadd_user:'',
|
||||||
|
},
|
||||||
|
deliverForm:{
|
||||||
|
suggestion:'',
|
||||||
|
target_user:'',
|
||||||
|
},
|
||||||
|
limitedAdd:false,
|
||||||
|
limitedDeliver:false,
|
||||||
|
limitedUserSelect:false,
|
||||||
|
purpose_: {
|
||||||
|
10: "参观",
|
||||||
|
20: "拜访",
|
||||||
|
30: "面试",
|
||||||
|
40: "开会"
|
||||||
|
},
|
||||||
|
state_: {
|
||||||
|
10: "创建中",
|
||||||
|
20: "审批中",
|
||||||
|
30: "待入厂",
|
||||||
|
40: "进行中",
|
||||||
|
50: "已完成",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
this.ticketId = this.$route.query.id;
|
||||||
|
this.type = this.$route.query.type;
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.ticketId = this.$route.query.id;
|
||||||
|
this.type = this.$route.query.type;
|
||||||
|
this.visitId = this.$route.query.visitID;
|
||||||
|
this.getticketItem();
|
||||||
|
this.getVisit();
|
||||||
|
this.getBtns();
|
||||||
|
|
||||||
});
|
},
|
||||||
},
|
methods: {
|
||||||
//访客详情
|
//工单详情
|
||||||
getVisit() {
|
getticketItem() {
|
||||||
this.$API.vm.visit.read.req(this.visitId).then((res) => {
|
this.$API.wf.ticket.ticketItem.req(this.ticketId).then((res) => {
|
||||||
this.visitDetail = res;
|
this.ticketDetail = res;
|
||||||
});
|
debugger;
|
||||||
},
|
console.log(res);
|
||||||
},
|
});
|
||||||
};
|
},
|
||||||
|
getBtns(){
|
||||||
|
this.$API.wf.ticket.ticketTransitions.req(this.ticketId).then(res=>{
|
||||||
|
this.operationBtn = res;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
//访客详情
|
||||||
|
getVisit() {
|
||||||
|
this.$API.vm.visit.read.req(this.visitId).then((res) => {
|
||||||
|
this.visitDetail = res;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
addNodeHandlerSubmit(data) {
|
||||||
|
this.addForm.toadd_user=data.id;
|
||||||
|
this.userName=data.name;
|
||||||
|
},
|
||||||
|
addNode(){
|
||||||
|
this.limitedAdd = true;
|
||||||
|
},
|
||||||
|
addCancel(){
|
||||||
|
this.limitedAdd = false;
|
||||||
|
},
|
||||||
|
addNodeHandler(index){
|
||||||
|
let res = null;
|
||||||
|
if(index==='1'){
|
||||||
|
res = this.$API.wf.ticket.addNode.req(this.ticketId,this.addForm);
|
||||||
|
}else{
|
||||||
|
res = this.$API.wf.ticket.addNodeEnd.req(this.ticketId,this.form);
|
||||||
|
}
|
||||||
|
if(res.err_msg){}else{
|
||||||
|
this.limitedAdd = false;
|
||||||
|
this.$router.push("/dutywork");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
deliverNode(){
|
||||||
|
this.limitedDeliver = true;
|
||||||
|
},
|
||||||
|
deliverCancel(){
|
||||||
|
this.limitedDeliver = false;
|
||||||
|
},
|
||||||
|
deliverHandlerSubmit(data) {
|
||||||
|
this.deliverForm.target_user=data.id;
|
||||||
|
this.userName=data.name;
|
||||||
|
},
|
||||||
|
deliverNodeHandler(){
|
||||||
|
this.$API.wf.ticket.ticketDeliver.req(this.ticketId,this.deliverForm).then(res=>{
|
||||||
|
if(res.err_msg){}else{
|
||||||
|
this.limitedDeliver = false;
|
||||||
|
this.$router.push("/dutywork");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
operationSubmit(id){
|
||||||
|
let params = new Object();
|
||||||
|
params.transition = id;
|
||||||
|
params.ticket_data = {};
|
||||||
|
params.suggestion = this.form.suggestion;
|
||||||
|
this.$API.wf.ticket.ticketHandle.req(this.ticketId,params).then(res=>{
|
||||||
|
if(res.err_msg){}else{
|
||||||
|
this.$router.push("/dutywork");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
|
@ -1,80 +1,96 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<scTable
|
<scTable
|
||||||
ref="table"
|
ref="table"
|
||||||
:data="list"
|
:data="list"
|
||||||
row-key="id"
|
row-key="id"
|
||||||
stripe
|
stripe
|
||||||
highlightCurrentRow
|
highlightCurrentRow
|
||||||
hidePagination
|
hidePagination
|
||||||
>
|
>
|
||||||
<el-table-column label="ID" prop="id"></el-table-column>
|
<el-table-column label="ID" prop="id"></el-table-column>
|
||||||
<el-table-column label="工单标题" prop="title"></el-table-column>
|
<el-table-column label="工单标题" prop="title"></el-table-column>
|
||||||
<el-table-column label="流水号" prop="sn"></el-table-column>
|
<el-table-column label="流水号" prop="sn"></el-table-column>
|
||||||
<el-table-column label="当前状态">
|
<el-table-column label="当前状态">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.state_.name }}
|
{{ scope.row.state_.name }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="进行状态" prop="sort">
|
<el-table-column label="进行状态" prop="sort">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ actstate_[scope.row.act_state] }}
|
{{ actstate_[scope.row.act_state] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="关联工作流" prop="title">
|
<el-table-column label="关联工作流" prop="title">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.workflow_.name }}
|
{{ scope.row.workflow_.name }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="处理人类型">
|
<el-table-column label="处理人类型">
|
||||||
|
<template #default="scope">
|
||||||
<template #default="scope">
|
{{ participant_[scope.row.participant_type] }}
|
||||||
{{ participant_[scope.row.participant_type] }}
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
|
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" align="right" width="120">
|
||||||
</el-table-column>
|
<template #default="scope">
|
||||||
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
<el-button type="text" size="small" @click="handleShow(scope.row)">查看详情</el-button>
|
||||||
|
</template>
|
||||||
</scTable>
|
</el-table-column>
|
||||||
</el-main>
|
</scTable>
|
||||||
</el-container>
|
</el-main>
|
||||||
|
</el-container>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "state",
|
name: "state",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
list:[],
|
list: [],
|
||||||
|
|
||||||
actstate_: {
|
actstate_: {
|
||||||
0: "草稿中",
|
0: "草稿中",
|
||||||
1: "进行中",
|
1: "进行中",
|
||||||
2: "被退回",
|
2: "被退回",
|
||||||
3: "被撤回",
|
3: "被撤回",
|
||||||
4: "已完成",
|
4: "已完成",
|
||||||
5: "已关闭",
|
5: "已关闭",
|
||||||
},
|
},
|
||||||
participant_: {
|
participant_: {
|
||||||
0: "无处理人",
|
0: "无处理人",
|
||||||
1: "个人",
|
1: "个人",
|
||||||
2: "多人",
|
2: "多人",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getList();
|
this.getList();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async getList() {
|
async getList() {
|
||||||
let res = await this.$API.wf.ticket.list.req({ category: "worked",page:0 });
|
let res = await this.$API.wf.ticket.list.req({category: "worked", page: 0});
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.list = res;
|
this.list = res;
|
||||||
},
|
},
|
||||||
},
|
handleShow(row) {
|
||||||
};
|
var catetype = row.workflow_.key;
|
||||||
|
switch (catetype) {
|
||||||
|
case 'visit':
|
||||||
|
this.$router.push({
|
||||||
|
name: "visitdetail",
|
||||||
|
query: {
|
||||||
|
id: row.id,
|
||||||
|
type: 'show',
|
||||||
|
visitID: row.ticket_data.visit
|
||||||
|
},
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
Loading…
Reference in New Issue