zuoye
This commit is contained in:
commit
3ae7648954
|
@ -5,8 +5,7 @@ NODE_ENV = development
|
|||
VUE_APP_TITLE = '曲阳金隅安全智能管控平台'
|
||||
|
||||
# 接口地址
|
||||
|
||||
VUE_APP_API_BASEURL = http://49.232.14.174:2226/api
|
||||
VUE_APP_API_BASEURL = http://1.203.161.103:2800/api
|
||||
#VUE_APP_API_BASEURL = http://127.0.0.1:8000/api
|
||||
|
||||
# 本地端口
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
"tinymce": "6.0.3",
|
||||
"vue": "3.2.36",
|
||||
"vue-i18n": "9.1.10",
|
||||
"vue-json-editor": "^1.4.3",
|
||||
"vue-router": "4.0.15",
|
||||
"vuedraggable": "4.0.3",
|
||||
"vuex": "4.0.2",
|
||||
|
@ -49,8 +50,7 @@
|
|||
"APP_CONFIG": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/vue3-essential",
|
||||
"eslint:recommended"
|
||||
"plugin:vue/vue3-essential"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
|
@ -62,7 +62,8 @@
|
|||
"vue/no-unused-components": 0,
|
||||
"vue/multi-word-component-names": 0,
|
||||
"no-debugger": "off",
|
||||
"no-console": "off"
|
||||
"no-console": "off",
|
||||
"no-trailing-spaces": "off"
|
||||
}
|
||||
},
|
||||
"browserslist": [
|
||||
|
|
|
@ -29,7 +29,7 @@ export default {
|
|||
delete: {
|
||||
name: "删除部门",
|
||||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/system/employee/${id}/`);
|
||||
return await http.delete(`${config.API_URL}/system/dept/${id}/`);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -173,12 +173,13 @@ export default {
|
|||
},
|
||||
user: {
|
||||
list: {
|
||||
url: `${config.API_URL}/system/user`,
|
||||
url: `${config.API_URL}/system/user/`,
|
||||
name: "获取用户列表",
|
||||
req: async function(params){
|
||||
return await http.get(this.url, params);
|
||||
}
|
||||
},
|
||||
|
||||
create: {
|
||||
url: `${config.API_URL}/system/user/`,
|
||||
name: "新增用户",
|
||||
|
@ -200,7 +201,7 @@ export default {
|
|||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/system/user/${id}/`);
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
post: {
|
||||
list: {
|
||||
|
@ -233,4 +234,129 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
postrole: {
|
||||
list: {
|
||||
url: `${config.API_URL}/system/post_role/`,
|
||||
name: "获取岗位列表",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
create: {
|
||||
url: `${config.API_URL}/system/post_role/`,
|
||||
name: "新增岗位",
|
||||
req: async function(data){
|
||||
return await http.post(this.url,data);
|
||||
}
|
||||
},
|
||||
/*update: {
|
||||
name: "更新岗位",
|
||||
req: async function(id, data){
|
||||
return await http.put(
|
||||
`${config.API_URL}/system/post_role/${id}/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},*/
|
||||
delete: {
|
||||
name: "删除岗位",
|
||||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/system/post_role/${id}/`);
|
||||
}
|
||||
}
|
||||
},
|
||||
task: {
|
||||
list: {
|
||||
url: `${config.API_URL}/system/ptask/`,
|
||||
name: "定时任务列表",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
item: {
|
||||
name: "定时任务详情",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/system/ptask/${id}/`);
|
||||
}
|
||||
},
|
||||
create: {
|
||||
url: `${config.API_URL}/system/ptask/`,
|
||||
name: "创建定时任务",
|
||||
req: async function(data){
|
||||
return await http.post(this.url,data);
|
||||
}
|
||||
},
|
||||
update: {
|
||||
name: "更新定时任务",
|
||||
req: async function(id, data){
|
||||
return await http.put(
|
||||
`${config.API_URL}/system/ptask/${id}/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
updateToggle: {
|
||||
name: "修改启用禁用状态",
|
||||
req: async function(id, data){
|
||||
return await http.put(
|
||||
`${config.API_URL}/system/ptask/${id}/toggle/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
delete: {
|
||||
name: "删除定时任务",
|
||||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/system/ptask/${id}/`);
|
||||
}
|
||||
},
|
||||
deletes: {
|
||||
url: `${config.API_URL}/system/ptask/deletes/`,
|
||||
name: "批量删除定时任务",
|
||||
req: async function(data){
|
||||
return await http.post(this.url,data);
|
||||
}
|
||||
},
|
||||
runOnce: {
|
||||
name: "执行一次",
|
||||
req: async function(data){
|
||||
return await http.post(`${config.API_URL}/system/ptask/${id}/run_once/`,data);
|
||||
}
|
||||
},
|
||||
result: {
|
||||
url: `${config.API_URL}/system/ptask_result/`,
|
||||
name: "任务执行结果列表",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
resultItem: {
|
||||
name: "任务执行结果详情",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/system/ptask_result/${id}/`);
|
||||
}
|
||||
},
|
||||
},
|
||||
userPost:{
|
||||
list: {
|
||||
url: `${config.API_URL}/system/user_post/`,
|
||||
name: "用户/岗位关系",
|
||||
req: async function(params){
|
||||
return await http.get(this.url, params);
|
||||
}
|
||||
},
|
||||
create: {
|
||||
url: `${config.API_URL}/system/user_post/`,
|
||||
name: "新增用户/岗位关系",
|
||||
req: async function(data){
|
||||
return await http.post(this.url,data);
|
||||
}
|
||||
},
|
||||
delete: {
|
||||
name: "删除用户/岗位关系",
|
||||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/system/user_post/${id}/`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,286 @@
|
|||
import config from "@/config"
|
||||
import http from "@/utils/request"
|
||||
|
||||
export default {
|
||||
workflow: {
|
||||
list: {
|
||||
url: `${config.API_URL}/wf/workflow/`,
|
||||
name: "工作流列表",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
item: {
|
||||
name: "工作流详情",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/workflow/${id}/`);
|
||||
}
|
||||
},
|
||||
create: {
|
||||
url: `${config.API_URL}/wf/workflow/`,
|
||||
name: "新增工作流",
|
||||
req: async function(data){
|
||||
return await http.post(this.url, data);
|
||||
}
|
||||
},
|
||||
update: {
|
||||
name: "更新工作流",
|
||||
req: async function(id, data){
|
||||
return await http.put(
|
||||
`${config.API_URL}/wf/workflow/${id}/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
delete: {
|
||||
name: "删除工作流",
|
||||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/wf/workflow/${id}/`);
|
||||
}
|
||||
},
|
||||
init: {
|
||||
name: "新建工单初始化",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/workflow/${id}/init/`);
|
||||
}
|
||||
},
|
||||
customfields: {
|
||||
name: "工作流下的自定义字段",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/workflow/${id}/customfields/`);
|
||||
}
|
||||
},
|
||||
states: {
|
||||
name: "工作流下的状态节点",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/workflow/${id}/states/`);
|
||||
}
|
||||
},
|
||||
transitions: {
|
||||
name: "工作流下的流转规则",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/workflow/${id}/transitions/`);
|
||||
}
|
||||
}
|
||||
},
|
||||
ticket: {
|
||||
list: {
|
||||
url: `${config.API_URL}/wf/ticket/`,
|
||||
name: "工单列表",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
ticketItem: {
|
||||
name: "工单详情",
|
||||
req: async function(id){
|
||||
return await http.get(`${config.API_URL}/wf/ticket/${id}/`);
|
||||
}
|
||||
},
|
||||
create: {
|
||||
url: `${config.API_URL}/wf/ticket/`,
|
||||
name: "新增工单",
|
||||
req: async function(data){
|
||||
return await http.post(this.url, data);
|
||||
}
|
||||
},
|
||||
destorys: {
|
||||
url: `${config.API_URL}/wf/ticket/destorys/`,
|
||||
name: "批量物理删除",
|
||||
req: async function(data){
|
||||
return await http.post(this.url, data);
|
||||
}
|
||||
},
|
||||
ticketAccept: {
|
||||
name: "接单",
|
||||
req: async function(id){
|
||||
return await http.post(`${config.API_URL}/wf/ticket/${id}/accpet/`);
|
||||
}
|
||||
},
|
||||
addNodeEnd: {
|
||||
name: "加签完成",
|
||||
req: async function(id,data){
|
||||
return await http.post(`${config.API_URL}/wf/ticket/${id}/add_node_end/`,data);
|
||||
}
|
||||
},
|
||||
addNode: {
|
||||
name: "加签",
|
||||
req: async function(id,data){
|
||||
return await http.post(`${config.API_URL}/wf/ticket/${id}/add_node/`,data);
|
||||
}
|
||||
},
|
||||
ticketClose: {
|
||||
name: "关闭工单",
|
||||
req: async function(id,data){
|
||||
return await http.post(`${config.API_URL}/wf/ticket/{id}/close/`,data);
|
||||
}
|
||||
},
|
||||
ticketDeliver: {
|
||||
name: "转交工单",
|
||||
req: async function(id,data){
|
||||
return await http.post(`${config.API_URL}/wf/ticket/${id}/deliver/`,data);
|
||||
}
|
||||
},
|
||||
ticketHandle: {
|
||||
name: "处理工单",
|
||||
req: async function(id,data){
|
||||
return await http.post(`${config.API_URL}/wf/ticket/${id}/handle/`,data);
|
||||
}
|
||||
},
|
||||
ticketRetreat: {
|
||||
name: "撤回工单",
|
||||
req: async function(id,data){
|
||||
return await http.post(`${config.API_URL}/wf/ticket/${id}/retreat/`,data);
|
||||
}
|
||||
},
|
||||
ticketFlowlogs: {
|
||||
name: "工单流转记录",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/ticket/${id}/flowlogs/`);
|
||||
}
|
||||
},
|
||||
ticketFlowSteps: {
|
||||
name: "工单流转step, 用于显示当前状态的step图(线性结构)",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/ticket/${id}/flowsteps/`);
|
||||
}
|
||||
},
|
||||
ticketTransitions: {
|
||||
name: "获取工单可执行的操作",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/ticket/${id}/transitions/`);
|
||||
}
|
||||
},
|
||||
dutyAgg: {
|
||||
url: `${config.API_URL}/wf/ticket/duty_agg/`,
|
||||
name: "工单待办聚合",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
ticketFlow: {
|
||||
url: `${config.API_URL}/wf/ticketflow/`,
|
||||
name: "工单日志",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
ticketFlowItem: {
|
||||
name: "获取工单可执行的操作",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/ticketflow/${id}/`);
|
||||
}
|
||||
}
|
||||
},
|
||||
field:{
|
||||
list: {
|
||||
url: `${config.API_URL}/wf/customfield/`,
|
||||
name: "字段列表",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
item: {
|
||||
name: "字段详情",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/customfield/${id}/`);
|
||||
}
|
||||
},
|
||||
create: {
|
||||
url: `${config.API_URL}/wf/customfield/`,
|
||||
name: "新增字段",
|
||||
req: async function(data){
|
||||
return await http.post(this.url, data);
|
||||
}
|
||||
},
|
||||
update: {
|
||||
name: "更新字段",
|
||||
req: async function(id, data){
|
||||
return await http.put(
|
||||
`${config.API_URL}/wf/customfield/${id}/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
delete: {
|
||||
name: "删除字段",
|
||||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/wf/customfield/${id}/`);
|
||||
}
|
||||
}
|
||||
},
|
||||
state:{
|
||||
list: {
|
||||
url: `${config.API_URL}/wf/state/`,
|
||||
name: "状态列表",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
item: {
|
||||
name: "状态详情",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/state/${id}/`);
|
||||
}
|
||||
},
|
||||
create: {
|
||||
url: `${config.API_URL}/wf/state/`,
|
||||
name: "新增状态",
|
||||
req: async function(data){
|
||||
return await http.post(this.url, data);
|
||||
}
|
||||
},
|
||||
update: {
|
||||
name: "更新状态",
|
||||
req: async function(id, data){
|
||||
return await http.put(
|
||||
`${config.API_URL}/wf/state/${id}/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
delete: {
|
||||
name: "删除状态",
|
||||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/wf/state/${id}/`);
|
||||
}
|
||||
}
|
||||
},
|
||||
transition:{
|
||||
list: {
|
||||
url: `${config.API_URL}/wf/transition/`,
|
||||
name: "流转列表",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
item: {
|
||||
name: "流转详情",
|
||||
req: async function(id){
|
||||
return await http.get( `${config.API_URL}/wf/transition/${id}/`);
|
||||
}
|
||||
},
|
||||
create: {
|
||||
url: `${config.API_URL}/wf/transition/`,
|
||||
name: "新增流转",
|
||||
req: async function(data){
|
||||
return await http.post(this.url, data);
|
||||
}
|
||||
},
|
||||
update: {
|
||||
name: "更新流转",
|
||||
req: async function(id, data){
|
||||
return await http.put(
|
||||
`${config.API_URL}/wf/transition/${id}/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
delete: {
|
||||
name: "删除流转",
|
||||
req: async function(id){
|
||||
return await http.delete(`${config.API_URL}/wf/transition/${id}/`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -122,6 +122,16 @@ const routes = [
|
|||
"icon": "el-icon-menu",
|
||||
},
|
||||
"component": "wf/ticket"
|
||||
},
|
||||
{
|
||||
"name": "configuration",
|
||||
"path": "/wf/configuration",
|
||||
"meta": {
|
||||
"title": "工单",
|
||||
"icon": "el-icon-menu",
|
||||
"hidden":true
|
||||
},
|
||||
"component": "wf/configuration"
|
||||
},
|
||||
]
|
||||
},
|
||||
|
@ -368,7 +378,7 @@ const routes = [
|
|||
},
|
||||
"component": "ops/log_request"
|
||||
},
|
||||
{
|
||||
/*{
|
||||
"name": "monitor",
|
||||
"path": "/ops/monitor",
|
||||
"meta": {
|
||||
|
@ -376,7 +386,7 @@ const routes = [
|
|||
"icon": "el-icon-fold",
|
||||
},
|
||||
"component": "ops/monitor"
|
||||
},
|
||||
},*/
|
||||
]
|
||||
},
|
||||
]
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
this.dialog.save = true;
|
||||
this.$nextTick(() => {
|
||||
if(type==='add'){
|
||||
this.$refs.saveDialog.open(type).setData({})
|
||||
this.$refs.saveDialog.open(type)
|
||||
}else{
|
||||
this.$refs.saveDialog.open(type).setData(row)
|
||||
}
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
<el-col :md="12" :sm="24">
|
||||
<el-form-item label="性别">
|
||||
<el-radio-group v-model="form.gender">
|
||||
<el-radio label="男" size="large" >男</el-radio>
|
||||
<el-radio label="男" size="large">男</el-radio>
|
||||
<el-radio label="女" size="large">女</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
@ -110,6 +110,50 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<!--drag-sort -->
|
||||
<sc-form-table v-model="userPostForm.list" :addTemplate="addTemplate" placeholder="暂无数据">
|
||||
<el-table-column prop="val" label="名称" min-width="150">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.id">{{scope.row.name}}</span>
|
||||
<el-input v-else v-model="scope.row.name" placeholder="名称"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="time" label="部门" min-width="150">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.id">{{scope.row.dept}}</span>
|
||||
<el-cascader
|
||||
v-else
|
||||
v-model="scope.row.dept"
|
||||
:options="group"
|
||||
:props="groupsProps"
|
||||
:show-all-levels="false"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
@change="handleChange"
|
||||
></el-cascader>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="type" label="岗位" min-width="150">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.id">{{scope.row.post}}</span>
|
||||
<el-select v-else v-model="scope.row.post" placeholder="请选择所在岗位">
|
||||
<el-option v-for="item in postOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="val" label="排序" min-width="80">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.id">{{scope.row.sort}}</span>
|
||||
<el-input v-else v-model="scope.row.sort" placeholder="请输入内容"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="open" label="操作" width="80" align="center">
|
||||
<template #default="scope">
|
||||
<el-button v-if="scope.row.id" text type="danger" size="small" @click="userPostDel(scope.row.id)">删除</el-button>
|
||||
<el-button v-else text type="primary" size="small" @click="createUserPost(scope.row)">添加</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</sc-form-table>
|
||||
</el-main>
|
||||
<el-footer v-if="mode!=='show'">
|
||||
<el-button
|
||||
|
@ -147,6 +191,45 @@
|
|||
emits: ["success", "closed"],
|
||||
data() {
|
||||
return {
|
||||
addTemplate: {
|
||||
name: '',
|
||||
sort: '',
|
||||
user: '',
|
||||
post: "",
|
||||
dept: "",
|
||||
},
|
||||
userPostForm: {
|
||||
title: "用户/岗位关系",
|
||||
list: [
|
||||
{
|
||||
id:'1001',
|
||||
name: "关系1",
|
||||
sort: "1",
|
||||
user: "石静",
|
||||
post: "岗位",
|
||||
dept: "部门",
|
||||
},
|
||||
{
|
||||
name: '',
|
||||
sort: '',
|
||||
user: '',
|
||||
post: "",
|
||||
dept: "",
|
||||
}
|
||||
]
|
||||
},
|
||||
typeDic: [
|
||||
{
|
||||
label: "全局",
|
||||
value: "0"
|
||||
},
|
||||
{
|
||||
label: "局部",
|
||||
value: "1"
|
||||
}
|
||||
],
|
||||
|
||||
|
||||
loading: false,
|
||||
mode: "add",
|
||||
titleMap: {
|
||||
|
@ -189,20 +272,20 @@
|
|||
}*/
|
||||
],
|
||||
},
|
||||
addTemplate: {
|
||||
label: "",
|
||||
prop: "",
|
||||
width: "100",
|
||||
hide: false,
|
||||
sortable: false,
|
||||
fixed: false,
|
||||
filters: [],
|
||||
addForm: {
|
||||
name: "",
|
||||
sort: "",
|
||||
user: "",
|
||||
post: "",
|
||||
dept: [],
|
||||
},
|
||||
depts: [],
|
||||
deptsProps: {
|
||||
groupsProps: {
|
||||
value: "id",
|
||||
checkStrictly: true
|
||||
multiple: false,
|
||||
checkStrictly: true,
|
||||
},
|
||||
group: [],
|
||||
postOptions: [],
|
||||
selectionFilters: [],
|
||||
filtersAddTemplate: {
|
||||
text: "",
|
||||
|
@ -212,18 +295,65 @@
|
|||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getPosts();
|
||||
this.getGroup();
|
||||
this.getUserPostList();
|
||||
},
|
||||
methods: {
|
||||
getPosts(){
|
||||
this.$API.system.post.list.req({page:0}).then(res=>{
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.postOptions = res;
|
||||
}
|
||||
})
|
||||
},
|
||||
//加载树数据
|
||||
async getGroup() {
|
||||
let res = await this.$API.system.dept.list.req({page: 0});
|
||||
let postList = res;
|
||||
this.group = res;
|
||||
let posts = [];
|
||||
postList.forEach(item => {
|
||||
let obj = new Object();
|
||||
obj.id = item.id;
|
||||
obj.sort = item.sort;
|
||||
obj.label = item.name;
|
||||
obj.type = item.type;
|
||||
obj.parent = item.parent;
|
||||
obj.create_time = item.create_time;
|
||||
posts.push(obj)
|
||||
});
|
||||
let obj = posts.reduce((res, v) => (res[v.id] = v , res), {});//Object
|
||||
let arr = [];
|
||||
for (let item of posts) {
|
||||
// debugger;
|
||||
if (item.parent == null) {
|
||||
arr.push(item);
|
||||
continue
|
||||
}
|
||||
let parent = obj[item.parent];
|
||||
parent.children = parent.children ? parent.children : [];
|
||||
parent.children.push(item);
|
||||
}
|
||||
this.group = arr;
|
||||
},
|
||||
//显示
|
||||
open(mode) {
|
||||
this.mode = mode;
|
||||
this.visible = true;
|
||||
return this;
|
||||
},
|
||||
closeDrawer(){
|
||||
closeDrawer() {
|
||||
this.visible = false;
|
||||
this.$emit('closed');
|
||||
},
|
||||
handleChange(value) {
|
||||
debugger;
|
||||
console.log(value);
|
||||
console.log(this.addForm.parent);
|
||||
},
|
||||
//表单提交方法
|
||||
submit() {
|
||||
//debugger;
|
||||
|
@ -232,6 +362,7 @@
|
|||
if (valid) {
|
||||
// debugger;
|
||||
this.isSaveing = true;
|
||||
this.addForm.dept = this.addForm.dept[1];
|
||||
if (this.mode === 'add') {
|
||||
// debugger;
|
||||
this.$API.hrm.employee.create.req(this.form)
|
||||
|
@ -257,6 +388,17 @@
|
|||
this.isSaveing = false;
|
||||
return err
|
||||
})
|
||||
this.$API.hrm.employee.update.req(this.form.id, this.form)
|
||||
.then(res => {
|
||||
this.isSaveing = false;
|
||||
this.visible = false;
|
||||
this.$emit("success", this.form, this.mode);
|
||||
this.$message.success("操作成功");
|
||||
return res
|
||||
}).catch(err => {
|
||||
this.isSaveing = false;
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -274,6 +416,49 @@
|
|||
this.selectionFilters = filters;
|
||||
this.setFiltersVisible = true;
|
||||
},
|
||||
/////
|
||||
//用户岗位关系列表
|
||||
getUserPostList(){
|
||||
this.$API.system.userPost.list.req().then(res=>{
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.userPostForm.list=res.results;
|
||||
}
|
||||
})
|
||||
},
|
||||
//新增用户岗位关系
|
||||
createUserPost(row){
|
||||
debugger;
|
||||
console.log(row);
|
||||
this.isSaveing = true;
|
||||
row.dept = row.dept.slice(-1)[0];
|
||||
row.user = this.form.id;
|
||||
this.$API.system.userPost.create.req(row).then(res=>{
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.userPostForm.list=res.results;
|
||||
}
|
||||
})
|
||||
},
|
||||
//用户岗位关系删除
|
||||
userPostDel(id){
|
||||
this.$confirm(`确定删除该岗位关系吗?`, '提示', {
|
||||
type: 'warning',
|
||||
confirmButtonText: '删除',
|
||||
confirmButtonClass: 'el-button--danger'
|
||||
}).then(() => {
|
||||
this.$API.system.userPost.delete.req(id).then(res=>{
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.$message.success("操作成功");
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -27,13 +27,14 @@
|
|||
<el-table-column label="排序" prop="sort" min-width="200"></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="center" width="200">
|
||||
<template #default="scope">
|
||||
<el-button type="text" size="small" @click="editDept(scope.row, scope.$index)">编辑</el-button>
|
||||
<el-button text type="primary" size="small" @click="editMenu(scope.row, scope.$index)">编辑</el-button>
|
||||
<el-divider direction="vertical"></el-divider>
|
||||
<el-popconfirm title="确定删除吗?" @confirm="delDept(scope.row, scope.$index)">
|
||||
<el-button text type="danger" size="small" @click="delMenu(scope.row.id)">删除</el-button>
|
||||
<!--<el-popconfirm title="确定删除吗?" @confirm="delMenu(scope.row, scope.$index)">
|
||||
<template #reference>
|
||||
<el-button type="text" size="small">删除</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</el-popconfirm>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
|
@ -53,15 +54,6 @@
|
|||
</el-form-item>
|
||||
<el-form-item label="标识">
|
||||
<el-input v-model="codes" clearable style="width: 90%;"></el-input>
|
||||
<!--<el-button class="formAddButton" type="primary" icon="el-icon-plus" @click="addCodes"></el-button>
|
||||
<div v-if="codesLimited" style="display: flex">
|
||||
<el-input v-model="codes" clearable style="width: 50%;flex: 1"></el-input>
|
||||
<div style="width: 50%;display: inline-block;position: relative;flex: 1">
|
||||
<el-button class="formSaveButton" type="success" icon="el-icon-check" @click="saveCodes"></el-button>
|
||||
<el-button class="formDelButton" type="danger" icon="el-icon-close" @click="delCodes"></el-button>
|
||||
</div>
|
||||
|
||||
</div>-->
|
||||
</el-form-item>
|
||||
<el-form-item label="父级">
|
||||
<el-cascader
|
||||
|
@ -73,11 +65,9 @@
|
|||
style="width: 100%"
|
||||
@change="handleChange"
|
||||
></el-cascader>
|
||||
<!--<el-input v-model="addForm.parent" clearable></el-input>-->
|
||||
</el-form-item>
|
||||
<el-form-item label="排序">
|
||||
<el-input-number v-model="addForm.sort" controls-position="right" :min="1"
|
||||
style="width: 100%;"></el-input-number>
|
||||
<el-input-number v-model="addForm.sort" controls-position="right" :min="1" style="width: 100%;"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
|
@ -209,7 +199,7 @@
|
|||
this.codes = ''
|
||||
},
|
||||
//编辑
|
||||
editDept(row) {
|
||||
editMenu(row) {
|
||||
// debugger;
|
||||
this.type = 'edit';
|
||||
this.addForm.id = row.id;
|
||||
|
@ -243,36 +233,34 @@
|
|||
return data
|
||||
},
|
||||
//删除
|
||||
delDept(row) {
|
||||
var id = row.id;
|
||||
var res = this.$API.system.permDel.delete(id);
|
||||
if (res.code == 200) {
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success("删除成功")
|
||||
} else {
|
||||
this.$alert(res.message, "提示", {type: 'error'})
|
||||
}
|
||||
delMenu(id) {
|
||||
this.$confirm(`确定删除吗?`, '提示', {
|
||||
type: 'warning',
|
||||
confirmButtonText: '删除',
|
||||
confirmButtonClass: 'el-button--danger'
|
||||
}).then(() => {
|
||||
this.$API.system.permission.delete.req(id).then(res=>{
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg);
|
||||
this.$refs.table.refresh()
|
||||
}else{
|
||||
this.$message.success("操作成功");
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
submitHandle() {
|
||||
let that = this;
|
||||
// debugger;
|
||||
console.log(this.addForm.parent);
|
||||
// debugger;
|
||||
if (this.addForm.parent !== null) {
|
||||
this.addForm.parent = this.addForm.parent[this.addForm.parent.length - 1];
|
||||
} else {
|
||||
this.addForm.parent = ""
|
||||
}
|
||||
// debugger;
|
||||
console.log(this.codes);
|
||||
|
||||
if(this.codes.indexOf(','>-1)){
|
||||
this.addForm.codes = this.codes.split(',');
|
||||
}else{
|
||||
this.addForm.codes.push(this.codes)
|
||||
}
|
||||
// debugger;
|
||||
console.log(this.addForm.codes);
|
||||
this.$refs.addForm.validate((valid) => {
|
||||
// debugger;
|
||||
if (valid) {
|
||||
|
@ -283,11 +271,15 @@
|
|||
} else {
|
||||
res = this.$API.system.permission.update.req(that.addForm.id, that.addForm);
|
||||
}
|
||||
this.isSaveing = false;
|
||||
this.limitedVisible = false;
|
||||
this.$refs.table.refresh();
|
||||
console.log(res);
|
||||
// debugger;
|
||||
debugger;
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.isSaveing = false;
|
||||
this.limitedVisible = false;
|
||||
this.$refs.table.refresh();
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
@ -297,7 +289,8 @@
|
|||
},
|
||||
//搜索
|
||||
upsearch() {
|
||||
|
||||
let params = {search:this.search.keyword};
|
||||
this.$refs.table.queryData(params);
|
||||
},
|
||||
//本地更新数据
|
||||
handleSaveSuccess(data, mode) {
|
||||
|
|
|
@ -138,5 +138,5 @@
|
|||
</script>
|
||||
|
||||
<style scoped>
|
||||
.treeMain {height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
|
||||
.treeMain {width: 100%;height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
|
||||
</style>
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<el-divider direction="vertical"></el-divider>
|
||||
<el-popconfirm title="确定删除吗?" @confirm="delDept(scope.row, scope.$index)">
|
||||
<template #reference>
|
||||
<el-button type="text" size="small">删除</el-button>
|
||||
<el-button text type="danger" size="small">删除</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
|
@ -192,20 +192,17 @@
|
|||
},
|
||||
//删除
|
||||
delDept(row){
|
||||
var id = row.id;
|
||||
var res = this.$API.system.dept.delete.req(id);
|
||||
if(res.code == 200){
|
||||
let id = row.id;
|
||||
let res = this.$API.system.dept.delete.req(id);
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success("删除成功")
|
||||
}else{
|
||||
this.$alert(res.message, "提示", {type: 'error'})
|
||||
}
|
||||
},
|
||||
submitHandle(){
|
||||
let that = this;
|
||||
//debugger;
|
||||
console.log(this.addForm.parent);
|
||||
//debugger;
|
||||
this.addForm.parent = this.addForm.parent!==null?this.addForm.parent[0]?this.addForm.parent[0]:'':'';
|
||||
this.$refs.addForm.validate( (valid) => {
|
||||
// debugger;
|
||||
|
@ -217,11 +214,15 @@
|
|||
}else{
|
||||
res = this.$API.system.dept.update.req(that.addForm.id,that.addForm);
|
||||
}
|
||||
this.isSaveing = false;
|
||||
this.limitedVisible = false;
|
||||
this.$refs.table.refresh();
|
||||
console.log(res);
|
||||
// debugger;
|
||||
debugger;
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.isSaveing = false;
|
||||
this.limitedVisible = false;
|
||||
this.$refs.table.refresh();
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
|
|
@ -385,11 +385,11 @@
|
|||
async delDic(row,index){
|
||||
var delId = row.id;
|
||||
var res = await this.$API.system.dict.delete.req(delId);
|
||||
if(res.code == 200){
|
||||
if(res.err.msg){
|
||||
this.$message.error(res.err.msg)
|
||||
}else{
|
||||
this.$refs.table.tableData.splice(index, 1);
|
||||
this.$message.success("删除成功")
|
||||
}else{
|
||||
this.$alert(res.message, "提示", {type: 'error'})
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -4,21 +4,25 @@
|
|||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<div style="margin-right: 20px">岗位列表</div>
|
||||
<el-button type="primary" icon="el-icon-plus" @click="add"></el-button>
|
||||
<!-- <el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button> -->
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow @row-click="rowClick" :hidePagination="true">
|
||||
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow @row-click="rowClick"
|
||||
:hidePagination="true">
|
||||
<el-table-column type="selection" width="50"></el-table-column>
|
||||
<el-table-column label="" type="index"></el-table-column>
|
||||
<el-table-column label="名称" prop="name" width="120"></el-table-column>
|
||||
<el-table-column label="标识" prop="code" width="60"></el-table-column>
|
||||
<el-table-column label="最短在岗(h)" prop="min_hour" width="100"></el-table-column>
|
||||
<el-table-column label="最长在岗(h)" prop="max_hour" width="100"></el-table-column>
|
||||
<el-table-column label="最短在岗(h)" prop="min_hour" width="100"></el-table-column>
|
||||
<el-table-column label="最长在岗(h)" prop="max_hour" width="100"></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="right">
|
||||
<template #default="scope">
|
||||
<el-button type="warning" link size="small" @click="table_edit(scope.row)">编辑</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #default="scope">
|
||||
<el-button type="warning" link size="small" @click="table_edit(scope.row)">编辑
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
@ -26,77 +30,107 @@
|
|||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<el-button type="primary" icon="el-icon-plus"></el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete"></el-button>
|
||||
<div style="margin-right: 20px">岗位关系</div>
|
||||
<el-button type="primary" icon="el-icon-plus" @click="addPostRole"></el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" @click="delPostRole"></el-button>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable ref="table2" :apiObj="apiObj2" row-key="id" stripe :hidePagination="true">
|
||||
<el-table-column type="selection" width="50"></el-table-column>
|
||||
<el-table-column label="提醒岗位" prop="post" width="150">
|
||||
<el-table-column label="" type="index"></el-table-column>
|
||||
<el-table-column label="权限范围" prop="data_range" min-width="80">
|
||||
<template #default="scope">{{options[scope.row.data_range]}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="关联岗位" prop="post" min-width="80">
|
||||
<template #default="scope">{{scope.row.post_.name}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="关联角色" prop="role" min-width="80">
|
||||
<template #default="scope">{{scope.row.role_.name}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" prop="create_time" min-width="80">
|
||||
<template #default="scope">{{scope.row.create_time}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="right">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.speaker_on" :disabled="true"></el-switch>
|
||||
<el-button type="warning" link size="small" @click="postRoleEdit(scope.row)">编辑
|
||||
</el-button>
|
||||
<el-button type="warning" link size="small" @click="postRoleDel(scope.row)">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="岗位人员过滤" prop="filter_recipient" width="150"></el-table-column>
|
||||
<el-table-column label="区域级别过滤" prop="filter_area_level" width="150"></el-table-column>
|
||||
<el-table-column label="可处理" prop="can_handle" width="80"></el-table-column>
|
||||
<el-table-column label="短信通知" prop="sms_enable" width="80"></el-table-column>
|
||||
<el-table-column label="微信通知" prop="wechat_enable" width="80"></el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</el-container>
|
||||
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess" @closed="dialog.save=false"></save-dialog>
|
||||
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess"
|
||||
@closed="dialog.save=false"></save-dialog>
|
||||
<save-role-dialog v-if="dialog.roleSave" ref="saveRoleDialog" @success="handleSaveRoleSuccess"
|
||||
@closed="dialog.roleSave=false"></save-role-dialog>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import saveDialog from './post_form.vue'
|
||||
import saveDialog from './post_form.vue'
|
||||
import saveRoleDialog from './post_role_form.vue'
|
||||
export default {
|
||||
name: 'listSon',
|
||||
components: {
|
||||
saveDialog,
|
||||
saveRoleDialog,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
apiObj: this.$API.system.post.list,
|
||||
apiObj2: this.$API.ecm.notify_setting.list,
|
||||
dialog:{
|
||||
apiObj2: this.$API.system.postrole.list,
|
||||
dialog: {
|
||||
save: false,
|
||||
roleSave: false,
|
||||
},
|
||||
selection: [],
|
||||
postId:'',
|
||||
options: {
|
||||
10: "全部",
|
||||
20: "自定义",
|
||||
30: "同级及以下",
|
||||
40: "本级及以下",
|
||||
50: "本级",
|
||||
60: "仅本人"
|
||||
},
|
||||
selection: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
rowClick(row){
|
||||
var params = {
|
||||
event_cate: row.id
|
||||
}
|
||||
rowClick(row) {
|
||||
let params = {
|
||||
post: row.id
|
||||
};
|
||||
this.postId = row.id;
|
||||
this.$refs.table2.reload(params)
|
||||
},
|
||||
//窗口新增
|
||||
add(){
|
||||
this.dialog.save = true
|
||||
add() {
|
||||
this.dialog.save = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveDialog.open()
|
||||
})
|
||||
},
|
||||
//窗口编辑
|
||||
table_edit(row){
|
||||
this.dialog.save = true
|
||||
table_edit(row) {
|
||||
this.dialog.save = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveDialog.open('edit').setData(row)
|
||||
})
|
||||
},
|
||||
//批量删除
|
||||
async batch_del(){
|
||||
async batch_del() {
|
||||
var confirmRes = await this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', {
|
||||
type: 'warning',
|
||||
confirmButtonText: '删除',
|
||||
confirmButtonClass: 'el-button--danger'
|
||||
}).catch(() => {})
|
||||
}).catch(() => {
|
||||
})
|
||||
|
||||
if(!confirmRes){
|
||||
if (!confirmRes) {
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -105,18 +139,62 @@ import saveDialog from './post_form.vue'
|
|||
this.$message.success("操作成功")
|
||||
|
||||
},
|
||||
//本地更新数据
|
||||
handleSaveSuccess(data, mode){
|
||||
//新增岗位后更新数据
|
||||
handleSaveSuccess(data, mode) {
|
||||
//为了减少网络请求,直接变更表格内存数据
|
||||
if(mode=='add'){
|
||||
if (mode == 'add') {
|
||||
this.$refs.table.unshiftRow(data)
|
||||
}else if(mode=='edit'){
|
||||
} else if (mode == 'edit') {
|
||||
this.$refs.table.updateKey(data)
|
||||
}
|
||||
|
||||
//当然也可以暴力的直接刷新表格
|
||||
// this.$refs.table.refresh()
|
||||
}
|
||||
},
|
||||
//新增岗位关系后更新数据
|
||||
handleSaveRoleSuccess() {
|
||||
this.$refs.table2.refresh()
|
||||
},
|
||||
addPostRole(){
|
||||
this.dialog.roleSave = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveRoleDialog.open("add").setData({postId:this.postId})
|
||||
})
|
||||
},
|
||||
postRoleEdit(row){
|
||||
this.dialog.roleSave = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveRoleDialog.open("edit").setData(row)
|
||||
})
|
||||
},
|
||||
delPostRole(){
|
||||
|
||||
},
|
||||
closed(){
|
||||
this.dialog.save = false;
|
||||
this.dialog.roleSave = false;
|
||||
this.postId = '';
|
||||
this.$refs.table2.refresh();
|
||||
},
|
||||
postRoleDel(row){
|
||||
this.$confirm(`确定删除选中的岗位关系吗?`, '提示', {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$API.system.postrole.delete.req(row.id).then(res=>{
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
const loading = this.$loading();
|
||||
this.$refs.table2.refresh();
|
||||
loading.close();
|
||||
this.$message.success("操作成功")
|
||||
}
|
||||
})
|
||||
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -6,52 +6,66 @@
|
|||
destroy-on-close
|
||||
@closed="$emit('closed')"
|
||||
>
|
||||
<el-form
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
:disabled="mode == 'show'"
|
||||
ref="dialogForm"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="form.name" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标识" prop="code">
|
||||
<el-input v-model="form.code" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="触发" prop="trigger">
|
||||
<el-select v-model="form.trigger">
|
||||
<el-option
|
||||
v-for="item in trigger_options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="区域过滤" prop="filter_area_level">
|
||||
<el-select v-model="form.filter_area_level">
|
||||
<el-option
|
||||
v-for="item in filter_area_level_options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="音响开启" prop="speaker_on">
|
||||
<el-switch v-model="form.speaker_on"></el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
ref="form"
|
||||
label-width="100px"
|
||||
label-position="left"
|
||||
>
|
||||
<el-form-item label="权限范围">
|
||||
<el-select
|
||||
v-model="form.data_range"
|
||||
placeholder="请选择权限范围"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in rangeOptions"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联岗位">
|
||||
<el-select
|
||||
v-model="form.post"
|
||||
placeholder="请选择关联岗位"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in postOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联角色">
|
||||
<el-select
|
||||
v-model="form.role"
|
||||
placeholder="请选择关联角色"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in roleOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button
|
||||
v-if="mode != 'show'"
|
||||
v-if="mode !== 'show'"
|
||||
type="primary"
|
||||
:loading="isSaveing"
|
||||
@click="submit()"
|
||||
>保 存</el-button
|
||||
>
|
||||
>
|
||||
保 存
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
@ -69,68 +83,67 @@ export default {
|
|||
},
|
||||
visible: false,
|
||||
isSaveing: false,
|
||||
//表单数据
|
||||
form: {
|
||||
speaker_on: true
|
||||
},
|
||||
//验证规则
|
||||
rules: {
|
||||
name: [{ required: true, message: "请输入" }],
|
||||
},
|
||||
filter_area_level_options: [
|
||||
{
|
||||
value: 10,
|
||||
label: "办公生活区以上",
|
||||
},
|
||||
{
|
||||
value: 20,
|
||||
label: "生产一般区以上",
|
||||
},
|
||||
{
|
||||
value: 30,
|
||||
label: "生产重点区以上",
|
||||
},
|
||||
],
|
||||
trigger_options: [
|
||||
{
|
||||
value: 10,
|
||||
label: "监控",
|
||||
},
|
||||
{
|
||||
value: 20,
|
||||
label: "定位",
|
||||
},
|
||||
],
|
||||
//所需数据选项
|
||||
groups: [],
|
||||
groupsProps: {
|
||||
value: "id",
|
||||
emitPath: false,
|
||||
checkStrictly: true,
|
||||
},
|
||||
//表单数据
|
||||
form: {
|
||||
data_range: 10,
|
||||
post: "",
|
||||
role: "",
|
||||
},
|
||||
//验证规则
|
||||
rules: {
|
||||
name: [{required: true, message: "请输入姓名"}],
|
||||
},
|
||||
postProps: {
|
||||
value: "id",
|
||||
multiple: true,
|
||||
checkStrictly: true,
|
||||
},
|
||||
roleOptions:[],
|
||||
postOptions:[],
|
||||
rangeOptions: [
|
||||
{id: 10, value: "全部"},
|
||||
// {id:20,value: "全部"},
|
||||
{id: 30, value: "同级及以下"},
|
||||
{id: 40, value: "本级及以下"},
|
||||
{id: 50, value: "本级"},
|
||||
{id: 60, value: "仅本人"},
|
||||
],
|
||||
};
|
||||
},
|
||||
mounted() {},
|
||||
mounted() {
|
||||
this.getPosts();
|
||||
this.getRole();
|
||||
},
|
||||
methods: {
|
||||
//显示
|
||||
open(mode = "add") {
|
||||
open(mode = "add"){
|
||||
debugger;
|
||||
this.mode = mode;
|
||||
this.visible = true;
|
||||
return this;
|
||||
},
|
||||
//表单注入数据
|
||||
setData(data) {
|
||||
debugger;
|
||||
if(data.postId){
|
||||
this.form.post=data.postId;
|
||||
}else{
|
||||
Object.assign(this.form, data);
|
||||
}
|
||||
},
|
||||
//表单提交方法
|
||||
async submit() {
|
||||
var valid = await this.$refs.dialogForm.validate().catch(() => {});
|
||||
var valid = await this.$refs.form.validate().catch(() => {});
|
||||
if (!valid) {
|
||||
return false;
|
||||
}
|
||||
this.isSaveing = true;
|
||||
try {
|
||||
var res;
|
||||
if (this.mode == "add") {
|
||||
res = await this.$API.ecm.event_cate.create.req(this.form);
|
||||
} else if (this.mode == "edit") {
|
||||
res = await this.$API.ecm.event_cate.update.req(this.form.id, this.form);
|
||||
let res;
|
||||
if (this.mode === "add") {
|
||||
res = await this.$API.system.postrole.create.req(this.form);
|
||||
} else if (this.mode === "edit") {
|
||||
res = await this.$API.system.postrole.update.req(this.form.id, this.form);
|
||||
}
|
||||
this.isSaveing = false;
|
||||
this.$emit("success", this.form, this.mode);
|
||||
|
@ -143,10 +156,25 @@ export default {
|
|||
return err;
|
||||
}
|
||||
},
|
||||
//表单注入数据
|
||||
setData(data) {
|
||||
Object.assign(this.form, data);
|
||||
},
|
||||
|
||||
getPosts(){
|
||||
this.$API.system.post.list.req({page:0}).then(res=>{
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.postOptions = res;
|
||||
}
|
||||
})
|
||||
},
|
||||
getRole(){
|
||||
this.$API.system.role.list.req({page:0}).then(res=>{
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.roleOptions = res;
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
},
|
||||
//加载树数据
|
||||
async getGroup() {
|
||||
var res = await this.$API.system.dept.list.req({page: 0});
|
||||
let res = await this.$API.system.permission.list.req({page: 0});
|
||||
let postList = res;
|
||||
let posts = [];
|
||||
postList.forEach(item => {
|
||||
|
@ -169,25 +169,28 @@
|
|||
console.log(this.menu.list);
|
||||
},*/
|
||||
submitHandle(){
|
||||
// debugger;
|
||||
let that = this;
|
||||
// debugger;
|
||||
this.addForm.perms = this.menu.checked;
|
||||
this.$refs.addForm.validate( (valid) => {
|
||||
// debugger;
|
||||
if (valid) {
|
||||
this.isSaveing = true;
|
||||
var res;
|
||||
let res;
|
||||
if(this.type==='add'){
|
||||
res = this.$API.system.role.create.req(that.addForm);
|
||||
}else{
|
||||
res = this.$API.system.role.update.req(that.addForm.id,that.addForm);
|
||||
}
|
||||
this.isSaveing = false;
|
||||
this.limitedVisible = false;
|
||||
this.$refs.table.refresh();
|
||||
console.log(res);
|
||||
// debugger;
|
||||
debugger;
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg);
|
||||
}else{
|
||||
this.isSaveing = false;
|
||||
this.limitedVisible = false;
|
||||
this.$refs.table.refresh();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
|
@ -195,11 +198,13 @@
|
|||
//编辑角色
|
||||
roleEdit(row){
|
||||
this.type='edit';
|
||||
this.limitedVisible = true;
|
||||
this.menu.checked = '[]';
|
||||
this.addForm.id=row.id;
|
||||
this.addForm.name=row.name;
|
||||
this.addForm.code=row.code;
|
||||
this.menu.checked = row.perms;
|
||||
this.addForm.description=row.description;
|
||||
this.limitedVisible = true;
|
||||
},
|
||||
|
||||
//删除角色
|
||||
|
@ -250,5 +255,5 @@
|
|||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.treeMain {height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
|
||||
.treeMain {width: 100%;height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
|
||||
</style>
|
||||
|
|
|
@ -0,0 +1,220 @@
|
|||
<template>
|
||||
<el-main>
|
||||
<el-row :gutter="15">
|
||||
<el-col :xl="6" :lg="6" :md="8" :sm="12" :xs="24" v-for="item in list" :key="item.id">
|
||||
<el-card class="task task-item" shadow="hover">
|
||||
<h2>{{item.title}}</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<h4>执行类</h4>
|
||||
<p>{{item.handler}}</p>
|
||||
</li>
|
||||
<li>
|
||||
<h4>定时规则</h4>
|
||||
<p>{{item.cron}}</p>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bottom">
|
||||
<div class="state">
|
||||
<el-tag v-if="item.state=='1'" size="mini">准备就绪</el-tag>
|
||||
<el-tag v-if="item.state=='-1'" size="mini" type="info">停用</el-tag>
|
||||
</div>
|
||||
<div class="handler">
|
||||
<el-popconfirm title="确定立即执行吗?" @confirm="run(item)">
|
||||
<template #reference>
|
||||
<el-button type="primary" icon="el-icon-caret-right" size="mini" circle></el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
<el-dropdown trigger="click">
|
||||
<el-button type="primary" icon="el-icon-more" size="mini" circle plain></el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item @click="editTask(item)">编辑</el-dropdown-item>
|
||||
<el-dropdown-item @click="logs(item)">日志</el-dropdown-item>
|
||||
<el-dropdown-item @click="delTask(item)" divided>删除</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :xl="6" :lg="6" :md="8" :sm="12" :xs="24">
|
||||
<el-card class="task task-add" shadow="none" @click="addTask">
|
||||
<i class="el-icon-plus"></i>
|
||||
<p>添加计划任务</p>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-main>
|
||||
<el-dialog :title="titleMap[mode]" v-model="visible" destroy-on-close>
|
||||
<el-form :model="form" :rules="rules" ref="addForm" label-width="100px" label-position="left">
|
||||
<el-form-item label="任务标题" prop="name">
|
||||
<el-input v-model="form.name" placeholder="计划任务标题" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="执行任务" prop="task">
|
||||
<el-input v-model="form.task" placeholder="执行任务" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="定时间隔">
|
||||
<el-input v-model="form.interval" placeholder="请输入定时间隔" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="定时命令">
|
||||
<el-input v-model="form.crontab" placeholder="请输入定时命令" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="定时规则">
|
||||
<el-input v-model="form.args" placeholder="请输入Cron定时规则" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="定时规则">
|
||||
<el-input v-model="form.kwargs" placeholder="请输入Cron定时规则" clearable></el-input>
|
||||
</el-form-item>
|
||||
<!--<el-form-item label="是否启用">
|
||||
<el-switch v-model="form.used" active-value="1" inactive-value="-1"></el-switch>
|
||||
</el-form-item>-->
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visible=false" >取 消</el-button>
|
||||
<el-button type="primary" :loading="isSaving" @click="submit()">保 存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-drawer title="计划任务日志" v-model="logsVisible" :size="600" direction="rtl" destroy-on-close>
|
||||
<logs></logs>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import logs from './taskLogs'
|
||||
|
||||
export default {
|
||||
name: 'task',
|
||||
components: {
|
||||
logs
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list: [
|
||||
{
|
||||
id: "1",
|
||||
title: "清理服务器缓存",
|
||||
handler: "cleanUpCacheHandler",
|
||||
cron: "59 59 23 * * ? *",
|
||||
state: "1"
|
||||
}
|
||||
],
|
||||
mode: "add",
|
||||
editId:null,
|
||||
titleMap: {
|
||||
add: '新增计划任务',
|
||||
edit: '编辑计划任务'
|
||||
},
|
||||
form: {
|
||||
name: "",
|
||||
task: "",
|
||||
interval: "",
|
||||
crontab: "",
|
||||
args: "",
|
||||
kwargs: "",
|
||||
},
|
||||
rules: {
|
||||
name:[
|
||||
{required: true, message: '请填写任务名称'}
|
||||
],
|
||||
task:[
|
||||
{required: true, message: '请填写任务内容'}
|
||||
]
|
||||
},
|
||||
visible: false,
|
||||
isSaving: false,
|
||||
logsVisible: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
getList(){
|
||||
this.$API.system.task.list.req().then(res=>{
|
||||
if(res.err_msg){
|
||||
this.message.error(res.err_msg)
|
||||
}else{
|
||||
debugger;
|
||||
this.list.concat(res.results)
|
||||
}
|
||||
})
|
||||
},
|
||||
addTask(){
|
||||
this.visible = true;
|
||||
this.mode = 'add';
|
||||
},
|
||||
editTask(item){
|
||||
this.visible = true;
|
||||
this.mode = 'edit';
|
||||
this.editId = item.id;
|
||||
Object.assign(this.form, item);
|
||||
},
|
||||
//表单提交方法
|
||||
submit(){
|
||||
this.$refs.addForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSaveing = true;
|
||||
let res = null;
|
||||
if(this.mode==='add'){
|
||||
res = this.$API.system.task.create.req(this.form);
|
||||
}else{
|
||||
res = this.$API.system.task.update.req(this.editId,this.form);
|
||||
}
|
||||
if(res.err_msg){
|
||||
this.message.error(res.err_msg)
|
||||
}else{
|
||||
this.getList();
|
||||
this.isSaveing = false;
|
||||
this.visible = false;
|
||||
this.$message.success("操作成功");
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
delTask(task){
|
||||
this.$confirm(`确认删除 ${task.title} 计划任务吗?`,'提示', {
|
||||
type: 'warning',
|
||||
confirmButtonText: '删除',
|
||||
confirmButtonClass: 'el-button--danger'
|
||||
}).then(() => {
|
||||
this.$API.system.task.delete.req(task.id).then(res=>{
|
||||
if(res.err_msg){
|
||||
this.message.error(res.err_msg)
|
||||
}else{
|
||||
this.list.splice(this.list.findIndex(item => item.id === task.id), 1);
|
||||
this.getList();
|
||||
this.$message.success("操作成功");
|
||||
}
|
||||
})
|
||||
}).catch(() => {
|
||||
//取消
|
||||
})
|
||||
},
|
||||
logs(){
|
||||
this.logsVisible = true
|
||||
},
|
||||
run(task){
|
||||
this.$API.system.task.runOnce.req(task.id).then(res=>{
|
||||
})
|
||||
this.$message.success(`已成功执行计划任务:${task.title}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.task {height: 210px;}
|
||||
.task-item h2 {font-size: 15px;color: #3c4a54;padding-bottom:15px;}
|
||||
.task-item li {list-style-type:none;margin-bottom: 10px;}
|
||||
.task-item li h4 {font-size: 12px;font-weight: normal;color: #999;}
|
||||
.task-item li p {margin-top: 5px;}
|
||||
.task-item .bottom {border-top: 1px solid #EBEEF5;text-align: right;padding-top:10px;display: flex;justify-content: space-between;align-items: center;}
|
||||
|
||||
.task-add {display: flex;flex-direction: column;align-items: center;justify-content: center;text-align: center;cursor: pointer;color: #999;}
|
||||
.task-add:hover {color: #409EFF;}
|
||||
.task-add i {font-size: 30px;}
|
||||
.task-add p {font-size: 12px;margin-top: 20px;}
|
||||
</style>
|
|
@ -0,0 +1,99 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-main style="padding:0 20px;">
|
||||
<scTable ref="table" :data="data" stripe>
|
||||
<el-table-column label="执行时间" prop="time" width="200"></el-table-column>
|
||||
<el-table-column label="执行结果" prop="state" width="100">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.state==200" style="color: #67C23A;"><i class="el-icon-success"></i> 成功</span>
|
||||
<span v-else style="color: #F56C6C;"><i class="el-icon-error"></i> 异常</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="执行日志" prop="logs" width="100" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button size="mini" @click="show(scope.row)" type="text">日志</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
||||
<el-drawer title="日志" v-model="logsVisible" :size="500" direction="rtl" destroy-on-close>
|
||||
<el-main style="padding:0 20px 20px 20px;">
|
||||
<pre style="font-size: 12px;color: #999;padding:20px;background: #333;font-family: consolas;line-height: 1.5;overflow: auto;">{{demoLog}}</pre>
|
||||
</el-main>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
logsVisible: false,
|
||||
demoLog: `2021-07-07 12:35:00 [com.xxl.job.core.thread.JobThread#run]-[124]-[Thread-308]
|
||||
----------- xxl-job job execute start -----------
|
||||
----------- Param:
|
||||
2021-07-07 12:35:00 [com.heronshn.reservation.jobhandler.AqshMasterDataSendHandler#execute]-[31]-[Thread-308] aqshMasterDataSendHandler start
|
||||
2021-07-07 12:35:00 [com.heronshn.reservation.data.service.impl.AqshVehicleServiceImpl#send]-[42]-[Thread-308] send 45
|
||||
2021-07-07 12:35:00 [com.heronshn.reservation.data.service.impl.AqshVehicleServiceImpl#send]-[45]-[Thread-308] webapi http://127.0.0.1:48080
|
||||
2021-07-07 12:35:00 [com.heronshn.reservation.jobhandler.AqshMasterDataSendHandler#execute]-[33]-[Thread-308] aqshMasterDataSendHandler vehicle end
|
||||
2021-07-07 12:35:00 [com.heronshn.reservation.jobhandler.AqshMasterDataSendHandler#execute]-[35]-[Thread-308] aqshMasterDataSendHandler stop
|
||||
2021-07-07 12:35:00 [com.xxl.job.core.thread.JobThread#run]-[158]-[Thread-308]
|
||||
----------- xxl-job job execute end(finish) -----------
|
||||
----------- ReturnT:ReturnT [code=200, msg=null, content=null]
|
||||
2021-07-07 12:35:00 [com.xxl.job.core.thread.TriggerCallbackThread#callbackLog]-[176]-[Thread-10]
|
||||
----------- xxl-job job callback finish.
|
||||
|
||||
[Load Log Finish]`,
|
||||
data: [
|
||||
{
|
||||
time: "2021-07-07 00:00:00",
|
||||
state: "500",
|
||||
logs: ""
|
||||
},
|
||||
{
|
||||
time: "2021-07-06 00:00:00",
|
||||
state: "200",
|
||||
logs: ""
|
||||
},
|
||||
{
|
||||
time: "2021-07-05 00:00:00",
|
||||
state: "200",
|
||||
logs: ""
|
||||
},
|
||||
{
|
||||
time: "2021-07-04 00:00:00",
|
||||
state: "200",
|
||||
logs: ""
|
||||
},
|
||||
{
|
||||
time: "2021-07-03 00:00:00",
|
||||
state: "200",
|
||||
logs: ""
|
||||
},
|
||||
{
|
||||
time: "2021-07-02 00:00:00",
|
||||
state: "200",
|
||||
logs: ""
|
||||
},
|
||||
{
|
||||
time: "2021-07-01 00:00:00",
|
||||
state: "200",
|
||||
logs: ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
show(){
|
||||
this.logsVisible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
|
@ -39,12 +39,6 @@
|
|||
:disabled="selection.length == 0"
|
||||
@click="batch_del"
|
||||
></el-button>
|
||||
<!--<el-button
|
||||
type="primary"
|
||||
plain
|
||||
:disabled="selection.length == 0"
|
||||
>分配角色
|
||||
</el-button>-->
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
|
@ -84,22 +78,6 @@
|
|||
label="ID"
|
||||
prop="id"
|
||||
></el-table-column>
|
||||
<!--<el-table-column
|
||||
label="头像"
|
||||
width="80"
|
||||
column-key="filterAvatar"
|
||||
:filters="[
|
||||
{ text: '已上传', value: '1' },
|
||||
{ text: '未上传', value: '0' },
|
||||
]"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-avatar
|
||||
:src="getImgUrl(scope.row.avatar)"
|
||||
size="small"
|
||||
></el-avatar>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column
|
||||
label="姓名"
|
||||
prop="name"
|
||||
|
@ -134,7 +112,7 @@
|
|||
@confirm="table_del(scope.row, scope.$index)"
|
||||
>
|
||||
<template #reference>
|
||||
<el-button type="text" size="small">
|
||||
<el-button text type="danger" size="small">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
|
@ -178,16 +156,6 @@
|
|||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!--<el-form-item label="所属部门">
|
||||
<el-cascader
|
||||
v-model="addForm.belong_dept"
|
||||
:options="group"
|
||||
:props="groupsProps"
|
||||
:show-all-levels="false"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
></el-cascader>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="是否在用">
|
||||
<el-switch v-model="addForm.is_active" />
|
||||
</el-form-item>
|
||||
|
@ -276,6 +244,7 @@
|
|||
add() {
|
||||
this.type = "add";
|
||||
this.limitedVisible = true;
|
||||
this.addForm = {};
|
||||
},
|
||||
//编辑
|
||||
formEdit(row,index) {
|
||||
|
@ -320,8 +289,8 @@
|
|||
//删除
|
||||
async table_del(row) {
|
||||
let res = await this.$API.system.user.delete.req(row.id);
|
||||
if (res.err.msg) {
|
||||
this.$alert(res.message, "提示", {type: "error"});
|
||||
if (res.err_msg) {
|
||||
this.$message.error(res.err_msg);
|
||||
} else {
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success("删除成功");
|
||||
|
@ -383,9 +352,7 @@
|
|||
// debugger;
|
||||
this.$refs.addForm.validate(async (valid) => {
|
||||
if (valid) {
|
||||
// debugger;
|
||||
this.isSaveing = true;
|
||||
// this.addForm.belong_dept = this.addForm.belong_dept[this.addForm.belong_dept.length - 1];
|
||||
let res;
|
||||
if(this.type==='add'){
|
||||
res = await this.$API.system.user.create.req(this.addForm);
|
||||
|
@ -393,12 +360,11 @@
|
|||
res = await this.$API.system.user.update.req(this.addForm.id,this.addForm);
|
||||
}
|
||||
this.isSaveing = false;
|
||||
if(res.code == 200){
|
||||
this.visible = false;
|
||||
this.$message.success("操作成功")
|
||||
if(res.err_msg){
|
||||
this.$message(res.err_msg);
|
||||
}else{
|
||||
this.visible = false;
|
||||
this.$alert(res.message, "提示", {type: 'error'});
|
||||
this.limitedVisible = false;
|
||||
this.$message.success("操作成功")
|
||||
}
|
||||
}else{
|
||||
return false;
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-tabs style="width: 100%" type="border-card" v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="自定义字段" name="customField">
|
||||
<field v-if="activeName==='customField'"></field>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="状态" name="state">
|
||||
<state v-if="activeName==='state'"></state>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="流转" name="transform">
|
||||
<transform v-if="activeName==='transform'"></transform>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import field from './field'
|
||||
import state from './state'
|
||||
import transform from './transform'
|
||||
|
||||
export default {
|
||||
name: 'configuration',
|
||||
components: {
|
||||
field,
|
||||
state,
|
||||
transform
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
workflow:null,
|
||||
activeName:'customField',
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.workflow = sessionStorage.getItem('jinYuWorkflowId');
|
||||
},
|
||||
methods: {
|
||||
handleClick(tab,event){
|
||||
debugger;
|
||||
console.log(tab,event);
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
@ -0,0 +1,284 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow>
|
||||
<el-table-column type="index" width="50"/>
|
||||
<el-table-column label="字段标识" prop="field_key"></el-table-column>
|
||||
<el-table-column label="字段名称" prop="field_name"></el-table-column>
|
||||
<el-table-column label="字段类型" prop="field_type"></el-table-column>
|
||||
<el-table-column label="顺序ID" prop="sort"></el-table-column>
|
||||
<el-table-column label="字段描述" prop="description"></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="handleEdit(scope.row)">编辑</el-button>
|
||||
<el-popconfirm title="确定删除吗?">
|
||||
<template #reference>
|
||||
<el-button type="text" size="small">删除</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="titleMap[type]">
|
||||
<el-form
|
||||
ref="Form"
|
||||
:model="addForm"
|
||||
label-width="80px"
|
||||
label-position="right"
|
||||
:rules="rule">
|
||||
<el-form-item label="字段标识" prop="field_key">
|
||||
<el-input v-model="addForm.field_key" placeholder="字段标识"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="字段名称" prop="field_name">
|
||||
<el-input v-model="addForm.field_name" placeholder="字段名称"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="字段描述" prop="description">
|
||||
<el-input v-model="addForm.description" placeholder="字段描述"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="占位符" prop="placeholder">
|
||||
<el-input v-model="addForm.placeholder" placeholder="占位符"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="展示标签" prop="field_type">
|
||||
<el-select style="width: 100%" v-model="addForm.field_type" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="字段标签" v-show="addForm.field_type=='select'||addForm.field_type=='selects'">
|
||||
<el-input v-model="addForm.label" placeholder="选项类型"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="选项" v-show="addForm.field_type=='select'||addForm.field_type=='selects'">
|
||||
<el-button @click.prevent="addDomain" style="border: none;">
|
||||
<i class="el-icon-circle-plus-outline"></i>
|
||||
<span style="font-size:14px;">添加</span>
|
||||
</el-button>
|
||||
<el-row v-for="(domain, $index) in choiceOption" :key='$index+1' style="margin-bottom: 10px">
|
||||
<el-col :span="10">
|
||||
<template>
|
||||
<el-form-item label="id:">
|
||||
<el-input type="number" v-model="domain.id" auto-complete="off"
|
||||
placeholder="id为整数"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<template>
|
||||
<el-form-item label="name:">
|
||||
<el-input v-model="domain.name" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
|
||||
</el-col>
|
||||
<el-col :span="3" style="text-align: center" v-if="$index!==0">
|
||||
<i
|
||||
class="el-icon-remove-outline"
|
||||
style="color: red;font-size: 16px;"
|
||||
@click.prevent="removeDomain($index,'1')"
|
||||
></i>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="顺序ID">
|
||||
<el-input v-model="addForm.sort" type="number" placeholder="顺序"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="默认值">
|
||||
<el-input v-model="addForm.default_value" placeholder="默认值"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="模板">
|
||||
<el-input v-model="addForm.field_template" placeholder="你有一个待办工单:{title}"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否隐藏">
|
||||
<el-radio-group v-model="addForm.is_hidden">
|
||||
<el-radio :label="false">显示</el-radio>
|
||||
<el-radio :label="true">隐藏</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="text-align: right">
|
||||
<el-button type="danger" @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitHandle('Form')">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "field",
|
||||
data() {
|
||||
return {
|
||||
apiObj: this.$API.wf.field.list,
|
||||
id: sessionStorage.getItem('jinYuWorkflowId'),
|
||||
list: null,
|
||||
type: "add",
|
||||
titleMap: {
|
||||
add: '新增',
|
||||
edit: '编辑',
|
||||
show: '查看'
|
||||
},
|
||||
//表单数据
|
||||
addForm: {
|
||||
field_key: '',
|
||||
field_name: '',
|
||||
placeholder: '',
|
||||
field_type: '',
|
||||
sort: '',
|
||||
label: 'name',
|
||||
default_value: '',
|
||||
field_template: '',
|
||||
field_choice: [],
|
||||
is_hidden: false,
|
||||
},
|
||||
//验证规则
|
||||
rules: {
|
||||
name: [
|
||||
{required: true, message: '请输入工作流名称'}
|
||||
]
|
||||
},
|
||||
choiceOption: [{id: null, name: ""}],
|
||||
labels: [{
|
||||
label: '常规',
|
||||
value: 'name'
|
||||
}, {
|
||||
label: '名称|id',
|
||||
value: 'name|id'
|
||||
}, {
|
||||
label: '人员选择',
|
||||
value: 'user'
|
||||
}],
|
||||
options: [{
|
||||
value: 'string',
|
||||
label: '文本'
|
||||
}, {
|
||||
value: 'int',
|
||||
label: '整数'
|
||||
}, {
|
||||
value: 'float',
|
||||
label: '小数'
|
||||
}, {
|
||||
value: 'date',
|
||||
label: '日期'
|
||||
}, {
|
||||
value: 'datetime',
|
||||
label: '日期时间'
|
||||
}, {
|
||||
value: 'select',
|
||||
label: '单选'
|
||||
}, {
|
||||
value: 'selects',
|
||||
label: '多选'
|
||||
}, {
|
||||
value: 'textarea',
|
||||
label: '文本域'
|
||||
}, {
|
||||
value: 'file',
|
||||
label: '附件'
|
||||
}],
|
||||
editId: null,
|
||||
dialogVisible: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.list = [
|
||||
{
|
||||
id: "5001",
|
||||
name: "scEcharts",
|
||||
subtitle: "重新封装的Echarts,暴露源对象",
|
||||
state: "1",
|
||||
type: "数据",
|
||||
progress: 70,
|
||||
user: "sss",
|
||||
time: "2010-10-10"
|
||||
},
|
||||
{
|
||||
id: "5002",
|
||||
name: "scEditor",
|
||||
subtitle: "Tinymce封装的富文本编辑器",
|
||||
state: "2",
|
||||
type: "表单",
|
||||
progress: 40,
|
||||
user: "sss",
|
||||
time: "2010-10-10"
|
||||
}
|
||||
];
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
//添加字段选项
|
||||
addDomain() {
|
||||
this.choiceOption.push({id: null, name: ""})
|
||||
},
|
||||
//删除字段选项
|
||||
removeDomain(index) {
|
||||
this.choiceOption.splice(index, 1)
|
||||
},
|
||||
handleAdd() {
|
||||
this.type = 'add';
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
submitHandle() {
|
||||
let that = this, choiceArr = [];
|
||||
debugger;
|
||||
this.$refs.Form.validate((valid) => {
|
||||
if (valid) {
|
||||
if (that.choiceOption[0] && that.choiceOption[0].name !== '' && that.choiceOption[0].name !== null && that.choiceOption[0].name !== undefined) {
|
||||
that.choiceOption.forEach((item) => {
|
||||
let obj = new Object();
|
||||
obj.id = parseInt(item.id);
|
||||
obj.name = item.name;
|
||||
choiceArr.push(obj);
|
||||
})
|
||||
}
|
||||
that.addForm.field_choice = choiceArr;
|
||||
that.isSaveing = true;
|
||||
let res = null;
|
||||
if (that.type === 'add') {
|
||||
debugger;
|
||||
that.addForm.workflow = this.id;
|
||||
res = that.$API.wf.customfield.create.req(that.addForm);
|
||||
} else {
|
||||
res = that.$API.wf.customfield.update.req(that.editId, that.addForm);
|
||||
}
|
||||
if (res.err_msg) {
|
||||
this.$message.error(res.err_msg)
|
||||
} else {
|
||||
that.isSaveing = false;
|
||||
that.limitedVisible = false;
|
||||
that.$refs.table.refresh();
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.type = 'edit';
|
||||
this.editId = row.id;
|
||||
this.dialogVisible = true;
|
||||
this.addForm = Object.assign({}, row);
|
||||
},
|
||||
async getList() {
|
||||
let res = await this.$API.wf.getCustomfields.get(this.id);
|
||||
console.log(res);
|
||||
this.list = res;
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -0,0 +1,381 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<el-table ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow>
|
||||
<el-table-column type="index" width="50"/>
|
||||
<el-table-column label="名称" prop="name"></el-table-column>
|
||||
<el-table-column label="是否隐藏">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.is_hidde">是</span>
|
||||
<span v-else>否</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="顺序ID" prop="sort"></el-table-column>
|
||||
<el-table-column label="类型">
|
||||
<template #default="scope">
|
||||
<el-tag effect="plain" v-if="scope.row.type==0">
|
||||
普通类型
|
||||
</el-tag>
|
||||
<el-tag effect="plain" v-if="scope.row.type==1">
|
||||
初始状态
|
||||
</el-tag>
|
||||
<el-tag effect="plain" v-if="scope.row.type==2">
|
||||
结束状态
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="参与人类型">
|
||||
<template #default="scope">{{ options_[scope.row.participant_type] }}</template>
|
||||
</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="handleEdit(scope.row)">编辑</el-button>
|
||||
<el-popconfirm title="确定删除吗?">
|
||||
<template #reference>
|
||||
<el-button type="text" size="small">删除</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="titleMap[type]"
|
||||
>
|
||||
<el-form
|
||||
ref="Form"
|
||||
:model="addForm"
|
||||
label-width="100px"
|
||||
label-position="right"
|
||||
:rules="rule"
|
||||
>
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="addForm.name" placeholder="名称"/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="是否隐藏"
|
||||
prop="is_hidden"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-switch v-model="addForm.is_hidden"></el-switch>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态顺序" prop="sort">
|
||||
<el-input v-model="addForm.sort" type="number" placeholder="状态顺序"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态类型" prop="type">
|
||||
<el-select style="width: 100%" v-model="addForm.type" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="允许撤回"
|
||||
prop="enable_retreat"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-switch v-model="addForm.enable_retreat"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="参与者类型" prop="participant_type">
|
||||
<el-select style="width: 100%" v-model="addForm.participant_type" placeholder="请选择"
|
||||
@change="typeChange">
|
||||
<el-option
|
||||
v-for="item in typeoptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="参与者" prop="participant" v-if="addForm.participant_type==1">
|
||||
<el-select style="width: 100%" v-model="participant" placeholder="请选择参与者">
|
||||
<el-option v-for="item in staffs" :key="item.id" :label="item.name" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="参与者" prop="participant" v-if="addForm.participant_type==2">
|
||||
<el-select style="width: 100%" v-model="participants" multiple placeholder="请选择参与者">
|
||||
<el-option v-for="item in staffs" :key="item.id" :label="item.name" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="参与者" prop="participant" v-if="addForm.participant_type==7">
|
||||
<el-select style="width: 100%" v-model="participant" placeholder="请选择字段">
|
||||
<el-option v-for="item in fieldList" :key="item.id" :label="item.field_name"
|
||||
:value="item.field_key">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="分配方式" prop="participant" v-if="addForm.participant_type==2">
|
||||
<el-select style="width: 100%" v-model="addForm.distribute_type" placeholder="请选择分配方式">
|
||||
<el-option label="主动接单" value="1"></el-option>
|
||||
<el-option label="直接处理" value="2"></el-option>
|
||||
<el-option label="随机分配" value="3"></el-option>
|
||||
<el-option label="全部处理" value="4"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="角色" prop="participant" v-if="addForm.participant_type==4">
|
||||
<el-select style="width: 100%" v-model="participants" multiple placeholder="请选择角色">
|
||||
<el-option v-for="item in roles" :key="item.id" :label="item.name" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="过滤策略" prop="participant" v-if="addForm.participant_type==4">
|
||||
<el-select style="width: 100%" v-model="addForm.filter_policy" placeholder="请选择过滤策略">
|
||||
<el-option label="无" value="0"></el-option>
|
||||
<el-option label="和工单同属以及上级部门" value="1"></el-option>
|
||||
<el-option label="和创建人同属以及上级部门" value="2"></el-option>
|
||||
<el-option label="和上步处理人同属以及上级部门" value="3"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="代码选择" prop="participant" v-if="addForm.participant_type==9">
|
||||
<el-select style="width: 100%" v-model="participants" placeholder="请选择代码">
|
||||
<el-option v-for="item in codes" :key="item.func" :label="item.name" :value="item.func">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="抄送给" prop="participant">
|
||||
<el-select style="width: 100%" v-model="addForm.participant_cc" multiple placeholder="请选择抄送给谁">
|
||||
<el-option v-for="item in staffs" :key="item.id" :label="item.name" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="字段状态">
|
||||
<el-button @click="addWordStateChange">添加修改</el-button>
|
||||
<el-row v-for="(item,$index) in stateChange" :key="item+$index" style="margin-top: 2px">
|
||||
<el-col :span="11">
|
||||
<el-select style="width: 100%" v-model="item.name" placeholder="请选择字段">
|
||||
<el-option v-for="item in fieldList" :key="item.id" :label="item.field_name"
|
||||
:value="item.field_key">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="1" style="height: 1px;"></el-col>
|
||||
<el-col :span="8">
|
||||
<el-select style="width: 100%" v-model="item.value" placeholder="请选择状态">
|
||||
<el-option
|
||||
v-for="item in state_fields"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:key="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="2" style="text-align: center" v-if="$index!==0">
|
||||
<i
|
||||
class="el-icon-remove-outline"
|
||||
style="color: red;font-size: 16px;"
|
||||
@click.prevent="removeStateChange($index)"
|
||||
></i>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="text-align: right">
|
||||
<el-button type="danger" @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitHandle('Form')">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "state",
|
||||
data() {
|
||||
return {
|
||||
apiObj: this.$API.wf.state.list,
|
||||
id: sessionStorage.getItem('jinYuWorkflowId'),
|
||||
list: null,
|
||||
type: "add",
|
||||
titleMap: {
|
||||
add: '新增',
|
||||
edit: '编辑',
|
||||
show: '查看'
|
||||
},
|
||||
participant: '',
|
||||
participants: [],
|
||||
roles: [],
|
||||
staffs: [],
|
||||
stateChange: [],
|
||||
fieldList: [],
|
||||
//表单数据
|
||||
addForm: {
|
||||
name: '',
|
||||
is_hidden: false,
|
||||
sort: '',
|
||||
type: '',
|
||||
participant_cc: [],
|
||||
enable_retreat: false,
|
||||
participant_type: 0,
|
||||
filter_policy: 0,
|
||||
distribute_type: '2',//分发类型
|
||||
state_fields: {}//字段状态是否可写
|
||||
},
|
||||
//验证规则
|
||||
rules: {
|
||||
name: [
|
||||
{required: true, message: '请输入工作流名称'}
|
||||
]
|
||||
},
|
||||
options_: {
|
||||
"0": '无处理',
|
||||
"1": '个人',
|
||||
"2": '多人',
|
||||
"4": '角色',
|
||||
"6": '脚本',
|
||||
"7": '工单的字段',
|
||||
"9": '代码获取',
|
||||
},
|
||||
options: [{
|
||||
value: 0,
|
||||
label: '普通类型'
|
||||
}, {
|
||||
value: 1,
|
||||
label: '初始状态'
|
||||
}, {
|
||||
value: 2,
|
||||
label: '结束状态'
|
||||
}],
|
||||
typeoptions: [{
|
||||
value: 0,
|
||||
label: '无处理'
|
||||
}, {
|
||||
value: 1,
|
||||
label: '个人'
|
||||
}, {
|
||||
value: 2,
|
||||
label: '多人'
|
||||
}
|
||||
, {
|
||||
value: 4,
|
||||
label: '角色'
|
||||
}
|
||||
, {
|
||||
value: 6,
|
||||
label: '脚本'
|
||||
}
|
||||
, {
|
||||
value: 7,
|
||||
label: '工单的字段'
|
||||
}
|
||||
, {
|
||||
value: 9,
|
||||
label: '代码获取'
|
||||
}],
|
||||
state_fields: [
|
||||
{
|
||||
value: 1,
|
||||
label: '只读'
|
||||
}, {
|
||||
value: 2,
|
||||
label: '必填'
|
||||
}, {
|
||||
value: 3,
|
||||
label: '可选'
|
||||
}, {
|
||||
value: 4,
|
||||
label: '隐藏'
|
||||
},
|
||||
],
|
||||
editId: null,
|
||||
dialogVisible: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
debugger;
|
||||
this.id = sessionStorage.getItem('jinYuWorkflowId');
|
||||
this.getList();
|
||||
this.getUsers();
|
||||
this.getRole();
|
||||
this.getField();
|
||||
},
|
||||
methods: {
|
||||
//添加字段选项
|
||||
addWordStateChange() {
|
||||
this.stateChange.push({name: '', value: ''})
|
||||
},
|
||||
//删除字段选项
|
||||
removeStateChange(index) {
|
||||
this.stateChange.splice(index, 1)
|
||||
},
|
||||
//获取员工
|
||||
async getUsers() {
|
||||
let staffs = await this.$API.system.user.get({page: 0});
|
||||
this.staffs = staffs;
|
||||
},
|
||||
//获取角色
|
||||
async getRole() {
|
||||
let roles = await this.$API.system.role.get({page: 0});
|
||||
this.roles = roles;
|
||||
},
|
||||
//获取字段
|
||||
async getField() {
|
||||
let fieldList = await this.$API.wf.getCustomfields.get(this.id);
|
||||
this.fieldList = fieldList;
|
||||
},
|
||||
handleAdd() {
|
||||
this.type = 'add';
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
submitHandle() {
|
||||
let that = this;
|
||||
debugger;
|
||||
this.$refs.Form.validate((valid) => {
|
||||
if (valid) {
|
||||
let state_fields = {};
|
||||
if (this.stateChange.length > 0) {
|
||||
for (let i = 0; i < this.stateChange.length; i++) {
|
||||
state_fields[this.stateChange[i].name] = this.stateChange[i].value;
|
||||
}
|
||||
}
|
||||
this.addForm.state_fields = state_fields;
|
||||
this.addForm.participant = this.addForm.participant_type === 1 ? this.participant : this.participants;
|
||||
that.isSaveing = true;
|
||||
let res = null;
|
||||
if (that.type === 'add') {
|
||||
that.addForm.workflow = this.id;
|
||||
res = that.$API.wf.stateAdd.post(that.addForm)
|
||||
} else {
|
||||
res = that.$API.wf.stateEdit.put(that.editId, that.addForm);
|
||||
}
|
||||
if (res.err_msg) {
|
||||
that.isSaveing = false;
|
||||
} else {
|
||||
that.isSaveing = false;
|
||||
that.dialogVisible = false;
|
||||
that.getList();
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.type = 'edit';
|
||||
this.editId = row.id;
|
||||
this.dialogVisible = true;
|
||||
this.addForm = Object.assign({}, row);
|
||||
},
|
||||
async getList() {
|
||||
let res = await this.$API.wf.getWorkflowState.get(this.id);
|
||||
console.log(res);
|
||||
this.list = res;
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -0,0 +1,326 @@
|
|||
<!--
|
||||
<template>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<div class="right-panel-search">
|
||||
<el-input v-model="search.keyword" placeholder="工单名称" clearable></el-input>
|
||||
<el-button type="primary" icon="el-icon-search" @click="upsearch"></el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<el-tabs v-model="pageForm.category" type="card" @tab-click="handleClick">
|
||||
<el-tab-pane label="待处理" name="duty"></el-tab-pane>
|
||||
<el-tab-pane label="我处理" name="worked"></el-tab-pane>
|
||||
<el-tab-pane label="我发起" name="owner"></el-tab-pane>
|
||||
<el-tab-pane label="抄送我" name="cc"></el-tab-pane>
|
||||
</el-tabs>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
fit
|
||||
stripe
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column label="工单标题" min-width="100" prop="title">
|
||||
</el-table-column>
|
||||
<el-table-column label="当前状态" min-width="100">
|
||||
<template #default="scope">
|
||||
<el-tag>{{states[scope.row.act_state]}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="进行状态" min-width="100">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.state_.type==0">{{scope.row.state_.name}}中</span>
|
||||
<span v-else>已{{scope.row.state_.name}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="类型" min-width="100">
|
||||
<template #default="scope">
|
||||
{{scope.row.workflow_.name}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" min-width="100" prop="create_time">
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作">
|
||||
<template #default="scope">
|
||||
<el-link
|
||||
v-if="scope.row.state_.distribute_type===1&&scope.row.participant_type===2"
|
||||
type="danger"
|
||||
@click="handleGetTicket(scope)"
|
||||
>
|
||||
接单
|
||||
</el-link>
|
||||
<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)"
|
||||
>
|
||||
处理
|
||||
</el-link>
|
||||
<el-link
|
||||
v-if="scope.row.state_.type===1&&userId===1"
|
||||
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>
|
||||
<el-link
|
||||
type="primary"
|
||||
@click="handleShow(scope)"
|
||||
>
|
||||
详情
|
||||
</el-link>
|
||||
<el-link
|
||||
type="success"
|
||||
@click="handleDelete(scope)"
|
||||
>
|
||||
删除
|
||||
</el-link>
|
||||
<el-link
|
||||
type="success"
|
||||
@click="handlePicture(scope)"
|
||||
>
|
||||
查看流程图
|
||||
</el-link>
|
||||
<el-link
|
||||
type="success"
|
||||
@click="handleLogs(scope)"
|
||||
>
|
||||
工单日志
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page.sync="pageForm.page"
|
||||
:page-size="100"
|
||||
layout="prev, pager, next, jumper"
|
||||
:total="10">
|
||||
</el-pagination>
|
||||
</el-main>
|
||||
</el-container>
|
||||
<el-dialog title="新增工单" v-model="limitedVisible" :width="600">
|
||||
<el-form :model="addForm" :rules="rules" ref="addForm" label-width="100px" label-position="left">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="addForm.title" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="工作流" prop="workflow">
|
||||
<el-select v-model="addForm.workflow" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="limitedVisible=false" >取 消</el-button>
|
||||
<el-button type="primary" :loading="isSaving" @click="submitHandle()">保 存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'ticket',
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
workflow: '',
|
||||
category: 'duty',
|
||||
},
|
||||
list:[
|
||||
{id: 191,
|
||||
title: "单片冷加工玻璃的重审",
|
||||
sn: "hb_202201040002",
|
||||
workflow: 5,
|
||||
workflow_: {id: 5, name: "不合格品审理单"},
|
||||
state: 20,
|
||||
state_: {id: 20, name: "检验员确认", type: 0, distribute_type: 1, enable_retreat: false},
|
||||
act_state: 1,
|
||||
create_time: "2022-01-04 13:26:49",
|
||||
update_time: "2022-01-04 13:26:49",
|
||||
participant_type: 1,
|
||||
create_by: 1
|
||||
},
|
||||
],//工单列表
|
||||
options:[],//工作流
|
||||
search: {
|
||||
keyword: null
|
||||
},
|
||||
isSaving: false,
|
||||
listLoading: false,
|
||||
limitedVisible : false,
|
||||
//表单数据
|
||||
addForm: {
|
||||
title: "",
|
||||
workflow: "",
|
||||
},
|
||||
//验证规则
|
||||
rules: {
|
||||
title: [
|
||||
{required: true, message: '请输入工单名称'}
|
||||
],
|
||||
workflow: [
|
||||
{required: true, message: '请选择工单所属工作流'}
|
||||
],
|
||||
},
|
||||
logs: [
|
||||
{
|
||||
content: 'sssss 创建了物流记录 1',
|
||||
timestamp: '2018-04-17'
|
||||
},
|
||||
{
|
||||
content: 'sssss 维护了客户信息',
|
||||
timestamp: '2018-04-15'
|
||||
},
|
||||
{
|
||||
content: 'sssss 创建订单',
|
||||
timestamp: '2018-04-15'
|
||||
}
|
||||
],
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.getList();
|
||||
// this.getWorkFlow();
|
||||
},
|
||||
methods: {
|
||||
handleClick(tab, event) {
|
||||
console.log(tab, event);
|
||||
this.getList();
|
||||
},
|
||||
/*//加载树数据
|
||||
async getGroup() {
|
||||
var res = await this.$API.system.dept.get({page: 0});
|
||||
let postList = res;
|
||||
let posts = [];
|
||||
postList.forEach(item => {
|
||||
let obj = new Object();
|
||||
obj.id = item.id;
|
||||
obj.name = item.name;
|
||||
obj.parentId = item.parent;
|
||||
obj.label=item.name;
|
||||
posts.push(obj)
|
||||
});
|
||||
let obj = posts.reduce((res, v) => (res[v.id] = v , res), {});//Object
|
||||
let arr = [];
|
||||
// debugger;
|
||||
console.log(obj);
|
||||
for (let item of posts) {
|
||||
debugger;
|
||||
if (item.parentId == null) {
|
||||
arr.push(item);
|
||||
continue
|
||||
}
|
||||
let parent = obj[item.parentId];
|
||||
parent.children = parent.children ? parent.children : [];
|
||||
parent.children.push(item);
|
||||
}
|
||||
this.menu.list = arr;
|
||||
},*/
|
||||
//获取订单列表
|
||||
getList(){
|
||||
var res = this.$API.wf.ticketList.get(this.pageForm);
|
||||
// this.list = res.results;
|
||||
},
|
||||
async getWorkFlow(){
|
||||
var res = await this.$API.wf.workflowList.get({page:0});
|
||||
this.options = res;
|
||||
console.log(this.options);
|
||||
debugger;
|
||||
},
|
||||
//添加订单
|
||||
handleAdd(){
|
||||
this.limitedVisible = true;
|
||||
},
|
||||
//订单撤回
|
||||
handleClose(){
|
||||
},
|
||||
//订单处理
|
||||
handleDetail(){
|
||||
},
|
||||
//订单详情
|
||||
handleShow(){
|
||||
},
|
||||
//订单流程图
|
||||
handlePicture(){
|
||||
},
|
||||
//订单日志
|
||||
handleLogs(){
|
||||
},
|
||||
//提交订单
|
||||
submitHandle(){
|
||||
debugger;
|
||||
let that = this;
|
||||
debugger;
|
||||
this.addForm.perms = this.menu.checked;
|
||||
this.$refs.addForm.validate( (valid) => {
|
||||
debugger;
|
||||
if (valid) {
|
||||
this.isSaveing = true;
|
||||
var res= this.$API.system.ticketAdd.post(that.addForm);
|
||||
this.isSaveing = false;
|
||||
this.limitedVisible = false;
|
||||
this.$refs.table.refresh();
|
||||
console.log(res);
|
||||
debugger;
|
||||
}
|
||||
})
|
||||
},
|
||||
//查看订单详情
|
||||
handlePicture(row){
|
||||
this.limitedVisible = true;
|
||||
this.addForm.id=row.id;
|
||||
this.addForm.name=row.name;
|
||||
this.addForm.code=row.code;
|
||||
this.addForm.description=row.description;
|
||||
},
|
||||
//接单
|
||||
handleGetTicket(){},
|
||||
//删除订单
|
||||
async handleDelete(row){
|
||||
var id = row.id;
|
||||
var res = await this.$API.system.roleDel.delete(id);
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success("删除成功")
|
||||
}
|
||||
},
|
||||
//搜索
|
||||
upsearch(){
|
||||
|
||||
},
|
||||
currentPage(){},
|
||||
//本地更新数据
|
||||
handleSaveSuccess(){
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
handleCurrentChange(){},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.treeMain {height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
|
||||
</style>
|
||||
-->
|
|
@ -0,0 +1,218 @@
|
|||
<template>
|
||||
<el-main class="nopadding">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
|
||||
<el-table
|
||||
:data="list"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column type="index" width="50"/>
|
||||
<el-table-column label="名称" prop="name"></el-table-column>
|
||||
<el-table-column label="定时器(单位秒)" prop="timer"></el-table-column>
|
||||
<el-table-column label="源状态">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.source_state_">{{scope.row.source_state_.name}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="目的状态">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.destination_state_">{{scope.row.destination_state_.name}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间">
|
||||
<template #default="scope">{{ scope.row.create_time }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
label="操作"
|
||||
width="220px"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-link @click="handleEdit(scope.row)">
|
||||
编辑
|
||||
</el-link>
|
||||
<el-link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="titleMap[type]"
|
||||
>
|
||||
<el-form
|
||||
ref="Form"
|
||||
:model="addForm"
|
||||
label-width="130px"
|
||||
label-position="right"
|
||||
:rules="rule"
|
||||
>
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="addForm.name" placeholder="名称"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="定时器(单位秒)" prop="timer">
|
||||
<el-input v-model="addForm.timer" type="number" placeholder="0"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="源状态" prop="source_state">
|
||||
<el-select v-model="addForm.source_state" placeholder="请选择" style="width:100%">
|
||||
<el-option
|
||||
v-for="item in stateList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="目的状态" prop="destination_state">
|
||||
<el-select v-model="addForm.destination_state" placeholder="请选择" style="width:100%">
|
||||
<el-option
|
||||
v-for="item in stateList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="条件表达式" prop="condition_expression">
|
||||
<vue-json-editor
|
||||
v-model="addForm.condition_expression"
|
||||
:showBtns="false"
|
||||
:mode="'code'"
|
||||
lang="zh"
|
||||
@json-change="onJsonChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="属性类型" prop="attribute_type">
|
||||
<el-select style="width: 100%" v-model="addForm.attribute_type" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否校验必填" prop="field_require_check">
|
||||
<el-switch v-model="addForm.field_require_check"></el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="text-align: right">
|
||||
<el-button type="danger" @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitHandle('Form')">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-main>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import vueJsonEditor from 'vue-json-editor'
|
||||
export default {
|
||||
name: "transform",
|
||||
components: { vueJsonEditor },
|
||||
data() {
|
||||
return {
|
||||
id: sessionStorage.getItem('jinYuWorkflowId'),
|
||||
type: "add",
|
||||
titleMap: {
|
||||
add: '新增',
|
||||
edit: '编辑',
|
||||
},
|
||||
editId: null,
|
||||
list: [],
|
||||
options: [{
|
||||
value: 1,
|
||||
label: '同意'
|
||||
}, {
|
||||
value: 2,
|
||||
label: '拒绝'
|
||||
}, {
|
||||
value: 3,
|
||||
label: '其他'
|
||||
}],
|
||||
addForm: {
|
||||
name: '',
|
||||
timer: '',
|
||||
source_state: '',
|
||||
destination_state: '',
|
||||
condition_expression: {},
|
||||
field_require_check: false,
|
||||
},
|
||||
stateList: [],
|
||||
dialogVisible: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList();
|
||||
this.getStateList();
|
||||
},
|
||||
methods: {
|
||||
onJsonChange (value) {
|
||||
console.log('更改value:', value);
|
||||
// 实时保存
|
||||
this.addForm.condition_expression = value;
|
||||
console.log(this.addForm.condition_expression)
|
||||
},
|
||||
// 检查json
|
||||
checkJson(){
|
||||
if (this.hasJsonFlag == false){
|
||||
alert("json验证失败");
|
||||
return false
|
||||
} else {
|
||||
alert("json验证成功");
|
||||
return true
|
||||
}
|
||||
},
|
||||
handleAdd() {
|
||||
this.type = 'add';
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.type = 'edit';
|
||||
this.editId = row.id;
|
||||
this.dialogVisible = true;
|
||||
this.addForm = Object.assign({}, row);
|
||||
},
|
||||
async getList() {
|
||||
let res = await this.$API.wf.getWorkflowTransition.get(this.id);
|
||||
this.list = res;
|
||||
},
|
||||
async getStateList() {
|
||||
let res = await this.$API.wf.getWorkflowState.get(this.id);
|
||||
console.log(res);
|
||||
this.stateList = res;
|
||||
},
|
||||
submitHandle(){
|
||||
let that = this;
|
||||
this.$refs.Form.validate((valid) => {
|
||||
if (valid) {
|
||||
let res = null;
|
||||
if (that.type === 'add') {
|
||||
debugger;
|
||||
that.addForm.workflow = this.id;
|
||||
res = that.$API.wf.transitionAdd.post(that.addForm);
|
||||
} else {
|
||||
res = that.$API.wf.transitionEdit.put(that.editId, that.addForm);
|
||||
}
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
that.isSaveing = false;
|
||||
that.limitedVisible = false;
|
||||
that.$refs.table.refresh();
|
||||
}
|
||||
that.isSaveing = false;
|
||||
that.limitedVisible = false;
|
||||
that.getList();
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -0,0 +1,243 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length!==1"
|
||||
@click="batch_del"></el-button>
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<div class="right-panel-search">
|
||||
<el-input v-model="search.keyword" placeholder="工作流名称" clearable></el-input>
|
||||
<el-button type="primary" icon="el-icon-search" @click="upsearch"></el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable ref="table" :apiObj="apiObj" row-key="id">
|
||||
<el-table-column label="#" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="工作流名称" prop="name" min-width="250"></el-table-column>
|
||||
<el-table-column label="工单查看权限校验" prop="view_permission_check" min-width="150">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.view_permission_check">是</span>
|
||||
<span v-else>否</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="工作流描述" prop="description" min-width="150"></el-table-column>
|
||||
<el-table-column label="创建时间" prop="create_time" min-width="150"></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="center" width="220">
|
||||
<template #default="scope">
|
||||
<el-button type="text" size="small" @click="workflowShow(scope.row)">配置</el-button>
|
||||
<el-divider direction="vertical"></el-divider>
|
||||
<el-button type="text" size="small" @click="workflowEdit(scope.row)">编辑</el-button>
|
||||
<el-divider direction="vertical"></el-divider>
|
||||
<el-popconfirm title="确定删除吗?" @confirm="workflowDel(scope.row)">
|
||||
<template #reference>
|
||||
<el-button type="text" size="small">删除</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
<el-dialog :title="titleMap[type]" v-model="limitedVisible">
|
||||
<el-form :model="addForm" :rules="rules" ref="addForm" label-width="100px" label-position="left">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="addForm.name" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流水前缀">
|
||||
<el-input v-model="addForm.sn_prefix" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述">
|
||||
<el-input
|
||||
v-model="addForm.description"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
placeholder="描述"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="查看权限校验">
|
||||
<el-switch v-model="addForm.view_permission_check" ></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="展现表单字段">
|
||||
<el-transfer
|
||||
v-model="addForm.display_form_str"
|
||||
:data="choiceOption"
|
||||
:titles="['未展示字段', '展示字段']"
|
||||
:props="{ key: 'id', label: 'field_name' }"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题模板">
|
||||
<el-input v-model="addForm.title_template" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="内容模板">
|
||||
<el-input v-model="addForm.content_template" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="limitedVisible=false">取 消</el-button>
|
||||
<el-button v-if="type!=='show'" type="primary" :loading="isSaving" @click="submitHandle()">保 存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'index',
|
||||
data() {
|
||||
return {
|
||||
apiObj: this.$API.wf.workflow.list,
|
||||
selection: [],
|
||||
checkList: [],
|
||||
choiceOption: [],
|
||||
search: {
|
||||
keyword: null
|
||||
},
|
||||
editId: null,
|
||||
isSaving: false,
|
||||
limitedVisible: false,
|
||||
type: "add",
|
||||
titleMap: {
|
||||
add: '新增',
|
||||
edit: '编辑',
|
||||
show: '查看'
|
||||
},
|
||||
//表单数据
|
||||
addForm: {
|
||||
name: "",
|
||||
sn_prefix: "",
|
||||
description: "",
|
||||
view_permission_check: true,
|
||||
display_form_str:[],
|
||||
title_template: "",
|
||||
content_template: "",
|
||||
},
|
||||
//验证规则
|
||||
rules: {
|
||||
name: [
|
||||
{required: true, message: '请输入工作流名称'}
|
||||
]
|
||||
},
|
||||
menu: {
|
||||
list: [],
|
||||
checked: ['1513426415243104256'],
|
||||
props: {
|
||||
children: 'children',
|
||||
label: 'name',
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.getGroup();
|
||||
},
|
||||
methods: {
|
||||
//添加工作流
|
||||
handleAdd() {
|
||||
this.type = 'add';
|
||||
this.limitedVisible = true;
|
||||
},
|
||||
submitHandle() {
|
||||
let that = this;
|
||||
debugger;
|
||||
console.log(that.addForm.view_permission_check);
|
||||
this.$refs.addForm.validate((valid) => {
|
||||
if (valid) {
|
||||
that.isSaveing = true;
|
||||
let res = null;
|
||||
if (that.type === 'add') {
|
||||
debugger;
|
||||
res = that.$API.wf.workflow.create.req(that.addForm);
|
||||
} else {
|
||||
res = that.$API.wf.workflow.update.req(that.editId, that.addForm);
|
||||
}
|
||||
if(res.err_msg){
|
||||
this.$message.error(res.err_msg)
|
||||
}else{
|
||||
that.isSaveing = false;
|
||||
that.limitedVisible = false;
|
||||
that.$refs.table.refresh();
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//编辑工作流
|
||||
workflowEdit(row) {
|
||||
this.type = 'edit';
|
||||
this.editId = row.id;
|
||||
this.limitedVisible = true;
|
||||
this.addForm = Object.assign({}, row);
|
||||
},
|
||||
|
||||
//工作流配置
|
||||
workflowShow(row) {
|
||||
let workflow = sessionStorage.getItem('jinYuWorkflowId');
|
||||
if(workflow){
|
||||
sessionStorage.removeItem('jinYuWorkflowId');
|
||||
sessionStorage.setItem('jinYuWorkflowId',row.id);
|
||||
}else{
|
||||
sessionStorage.setItem('jinYuWorkflowId',row.id);
|
||||
}
|
||||
this.$router.push({path:'/wf/configuration'});
|
||||
},
|
||||
|
||||
//删除工作流
|
||||
async workflowDel(row) {
|
||||
var id = row.id;
|
||||
var res = await this.$API.wf.workflow.delete.req(id);
|
||||
if (res.err_msg) {
|
||||
this.$message.error(res.err_msg)
|
||||
} else {
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success("删除成功")
|
||||
// this.$alert(res.message, "提示", {type: 'error'})
|
||||
}
|
||||
},
|
||||
//表格选择后回调事件
|
||||
selectionChange(selection) {
|
||||
this.selection = selection;
|
||||
},
|
||||
//搜索
|
||||
upsearch() {
|
||||
|
||||
},
|
||||
//根据ID获取树结构
|
||||
filterTree(id) {
|
||||
var target = null;
|
||||
function filter(tree) {
|
||||
tree.forEach(item => {
|
||||
if (item.id == id) {
|
||||
target = item
|
||||
}
|
||||
if (item.children) {
|
||||
filter(item.children)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
filter(this.$refs.table.tableData)
|
||||
return target
|
||||
},
|
||||
//本地更新数据
|
||||
handleSaveSuccess(data, type) {
|
||||
if (type == 'add') {
|
||||
this.$refs.table.refresh()
|
||||
} else if (type == 'edit') {
|
||||
this.$refs.table.refresh()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.treeMain {
|
||||
height: 280px;
|
||||
overflow: auto;
|
||||
border: 1px solid #dcdfe6;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
Loading…
Reference in New Issue