1. 样式修改 2.详情加载修改 3. 首页修改

main
赵培友 3 years ago
parent ad001b4747
commit 7200aa4a82
  1. 2
      src/const/workflow/implementation.js
  2. 167
      src/views/maintenance/database1.vue
  3. 144
      src/views/maintenance/system.vue
  4. 161
      src/views/maintenance/task.vue
  5. 117
      src/views/plugin/workflow/process/components/detail.vue
  6. 8
      src/views/plugin/workflow/process/components/form.vue
  7. 232
      src/views/plugin/workflow/process/crontab.vue
  8. 256
      src/views/plugin/workflow/process/implementation.vue
  9. 33
      src/views/plugin/workflow/process/todo.vue
  10. 314
      src/views/plugin/workflow/process/workorder.vue
  11. 13
      src/views/wel/index.vue

@ -66,7 +66,7 @@ export const tableOption = {
},
{
type: "input",
label: "审批状态",
label: "状态",
prop: "isFinish",
align: "left",
overHidden: true,

@ -2,84 +2,85 @@
<div class="cus-container">
<el-form :model="searchForm">
<div class="search">
<div >
<el-select
v-model="searchForm.dataBaseName"
placeholder="数据库实例"
class="search-select"
<el-select
v-model="searchForm.dataBaseName"
placeholder="数据库实例"
class="search-select"
>
<el-option
v-for="item in dataBaseNamesList"
:key="item.dataBaseName"
:label="item.dataBaseName"
:value="item.dataBaseName"
>
<el-option
v-for="item in dataBaseNamesList"
:key="item.dataBaseName"
:label="item.dataBaseName"
:value="item.dataBaseName"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.dataBaseType"
placeholder="数据库类型"
class="search-select"
</el-option>
</el-select>
<el-select
v-model="searchForm.dataBaseType"
placeholder="数据库类型"
class="search-select"
>
<el-option
v-for="item in databaseTypeList"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
>
<el-option
v-for="item in databaseTypeList"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.company"
placeholder="运维公司"
class="search-select"
</el-option>
</el-select>
<el-select
v-model="searchForm.company"
placeholder="运维公司"
class="search-select"
>
<el-option
v-for="item in companysList"
:key="item.id"
:label="item.name"
:value="item.id"
>
<el-option
v-for="item in companysList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.deptId"
placeholder="管理部门"
class="search-select"
</el-option>
</el-select>
<el-select
v-model="searchForm.deptId"
placeholder="管理部门"
class="search-select"
>
<el-option
v-for="item in deptsList"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
<el-option
v-for="item in deptsList"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option>
</el-select>
<el-button class="search-btn" @click="searchHandle(1)"
>查询</el-button
>
<div class="search-reset" @click="searchHandle(2)">
<i class="el-icon-refresh-right" style="font-size: 20px"></i>
</div>
</div>
<div style="display: flex">
<el-button class="search-btn" @click="download">下载模板</el-button>
<el-upload
accept=".xls,.xlsx"
class="upload-demo"
:show-file-list="false"
:headers="headers"
action="/api/blade-workflow/database/dataImport"
:on-success="handleSuccess"
</el-option>
</el-select>
<div style="margin-left:auto;">
<el-button class="search-btn" @click="searchHandle(1)">查询</el-button>
<el-button
class="search-btn"
@click="searchHandle(2)"
style="background: #ff9130"
>重置</el-button
>
<el-button class="search-btn" @click="download">下载模板</el-button>
<el-upload
style="display:inline-block;"
accept=".xls,.xlsx"
class="upload-demo"
:show-file-list="false"
:headers="headers"
action="/api/blade-workflow/database/dataImport"
:on-success="handleSuccess"
>
<el-button class="search-btn" style="background: #2ee27c"
>导入</el-button
>
<el-button class="search-btn" style="margin: 0; background: #2ee27c"
>导入</el-button
>
</el-upload>
</div>
</el-upload>
</div>
</div>
</el-form>
<div style="margin-top: 30px">
<div style="margin-top: 15px">
<avue-crud
id="avue-id"
ref="crud"
@ -167,7 +168,11 @@ export default {
onLoad() {
this.loading = true;
const { currentPage, pageSize } = this.page;
getList({ current:currentPage, size:pageSize, ...this.searchForm }).then((res) => {
getList({
current: currentPage,
size: pageSize,
...this.searchForm,
}).then((res) => {
const { total, records } = res.data.data;
this.page.total = total;
this.tableData = records;
@ -219,33 +224,23 @@ export default {
<style lang="scss" scoped>
.search {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.search-select {
width: 150px;
margin-right: 20px;
margin-bottom: 15px;
margin-bottom: 15px;
}
.search-input {
width: 288px;
}
.search-btn {
width: 130px;
width: 100px;
height: 46px !important;
background: #2e92f6;
color: #fff;
margin: 0 20px;
}
.search-reset {
display: inline-block;
width: 46px;
height: 44px !important;
background: #ff9130;
margin-left: 0px;
color: #fff;
text-align: center;
line-height: 46px;
cursor: pointer;
margin-left: 20px;
}
/deep/ .el-input__inner {
height: 46px;

@ -2,75 +2,78 @@
<div class="cus-container">
<el-form :model="searchForm">
<div class="search">
<div>
<el-select
v-model="searchForm.projectInfoId"
placeholder="系统名称"
class="search-select"
<el-select
v-model="searchForm.projectInfoId"
placeholder="系统名称"
class="search-select"
>
<el-option
v-for="item in projectList"
:key="item.id"
:label="item.projectName"
:value="item.id"
>
<el-option
v-for="item in projectList"
:key="item.id"
:label="item.projectName"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.moduleName"
placeholder="模块名称"
class="search-select"
</el-option>
</el-select>
<el-select
v-model="searchForm.moduleName"
placeholder="模块名称"
class="search-select"
>
<el-option
v-for="item in moduleNamesList"
:key="item.moduleName"
:label="item.moduleName"
:value="item.moduleName"
>
<el-option
v-for="item in moduleNamesList"
:key="item.moduleName"
:label="item.moduleName"
:value="item.moduleName"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.manageDeptId"
placeholder="管理部门"
class="search-select"
</el-option>
</el-select>
<el-select
v-model="searchForm.manageDeptId"
placeholder="管理部门"
class="search-select"
>
<el-option
v-for="item in deptsList"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
<el-option
v-for="item in deptsList"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.maintenanceDeptId"
placeholder="运维公司"
class="search-select"
</el-option>
</el-select>
<el-select
v-model="searchForm.maintenanceDeptId"
placeholder="运维公司"
class="search-select"
>
<el-option
v-for="item in usersList"
:key="item.id"
:label="item.name"
:value="item.id"
>
<el-option
v-for="item in usersList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-option>
</el-select>
<div style="margin-left:auto;">
<el-button class="search-btn" @click="searchHandle(1)"
>查询</el-button
>
<div class="search-reset" @click="searchHandle(2)">
<i class="el-icon-refresh-right" style="font-size: 20px"></i>
</div>
</div>
<el-button
<el-button
class="search-btn"
style="margin: 0; background: #2ee27c;"
@click="searchHandle(2)"
style="margin-left: 20px;margin-right:10px; background: #ff9130"
>重置</el-button
>
<el-button
class="search-btn"
style="background: #2ee27c"
@click="addHandle"
>新增</el-button
>
</div>
</div>
</el-form>
<div style="margin-top: 30px">
<div style="margin-top: 15px">
<avue-crud
id="avue-id"
ref="crud"
@ -166,7 +169,11 @@ export default {
onLoad() {
this.loading = true;
const { currentPage, pageSize } = this.page;
getList({ current:currentPage, size:pageSize, ...this.searchForm }).then((res) => {
getList({
current: currentPage,
size: pageSize,
...this.searchForm,
}).then((res) => {
const { total, records } = res.data.data;
this.page.total = total;
this.tableData = records;
@ -263,35 +270,22 @@ export default {
</script>
<style lang="scss" scoped>
.search {
display:flex;
justify-content: space-between;
display: flex;
flex-wrap: wrap;
}
.search-select {
width: 150px;
margin-right: 20px;
margin-bottom: 15px;
}
.search-input {
width: 288px;
}
.search-btn {
width: 130px;
width: 100px;
height: 46px !important;
background: #2e92f6;
color: #fff;
margin: 0 20px;
}
.search-reset {
display:inline-block;
width: 46px;
height: 44px !important;
background: #ff9130;
margin-left: 0px;
color: #fff;
text-align: center;
line-height: 46px;
cursor: pointer;
}
/deep/ .el-input__inner {
height: 46px;
}

@ -2,78 +2,81 @@
<div class="cus-container">
<el-form :model="searchForm">
<div class="search">
<div >
<el-select
v-model="searchForm.taskParentId"
placeholder="任务父类"
class="search-select"
<el-select
v-model="searchForm.taskParentId"
placeholder="任务父类"
class="search-select"
>
<el-option
v-for="item in parentList"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
<el-option
v-for="item in parentList"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.taskTypeName"
placeholder="任务种类"
class="search-select"
</el-option>
</el-select>
<el-select
v-model="searchForm.taskTypeName"
placeholder="任务种类"
class="search-select"
>
<el-option
v-for="item in taskTypeList"
:key="item.taskTypeName"
:label="item.taskTypeName"
:value="item.taskTypeName"
>
<el-option
v-for="item in taskTypeList"
:key="item.taskTypeName"
:label="item.taskTypeName"
:value="item.taskTypeName"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.taskLevel"
placeholder="任务等级"
class="search-select"
</el-option>
</el-select>
<el-select
v-model="searchForm.taskLevel"
placeholder="任务等级"
class="search-select"
>
<el-option
v-for="item in levelList"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
<el-option
v-for="item in levelList"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
</el-option>
</el-select>
<el-date-picker
style="width: 314px; margin-right: 20px"
v-model="searchForm.timeArr"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
<el-input
v-model="searchForm.createUserName"
placeholder="请输入创建人"
class="search-input"
></el-input>
</el-option>
</el-select>
<el-date-picker
style="width: 314px; margin-right: 20px;margin-bottom:15px;"
v-model="searchForm.timeArr"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
<el-input
v-model="searchForm.createUserName"
placeholder="请输入创建人"
class="search-input"
></el-input>
<div style="margin-left: auto">
<el-button class="search-btn" @click="searchHandle(1)"
>查询</el-button
>
<div class="search-reset" @click="searchHandle(2)">
<i class="el-icon-refresh-right" style="font-size: 20px"></i>
</div>
<el-button
class="search-btn"
@click="searchHandle(2)"
style="background: #ff9130"
>重置</el-button
>
<el-button
class="search-btn"
style="background: #2ee27c"
@click="addHandle"
>新增</el-button
>
</div>
<el-button
class="search-btn"
style="margin: 0; background: #2ee27c;"
@click="addHandle"
>新增</el-button
>
</div>
</el-form>
<div style="margin-top: 30px">
<div style="margin-top: 15px">
<avue-crud
id="avue-id"
ref="crud"
@ -176,12 +179,14 @@ export default {
startTime,
endTime,
};
getList({ current:currentPage, size:pageSize, ...params }).then((res) => {
const { total, records } = res.data.data;
this.page.total = total;
this.tableData = records;
this.loading = false;
});
getList({ current: currentPage, size: pageSize, ...params }).then(
(res) => {
const { total, records } = res.data.data;
this.page.total = total;
this.tableData = records;
this.loading = false;
}
);
},
//
currentChange(currentPage) {
@ -268,33 +273,23 @@ export default {
<style lang="scss" scoped>
.search {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.search-select {
width: 150px;
margin-right: 20px;
margin-bottom: 15px;
}
.search-input {
width: 288px;
margin-bottom: 15px;
}
.search-btn {
width: 130px;
width: 100px;
height: 46px !important;
background: #2e92f6;
color: #fff;
margin-left: 40px;
margin-right: 20px;
}
.search-reset {
display: inline-block;
width: 46px;
height: 44px !important;
background: #ff9130;
color: #fff;
text-align: center;
line-height: 46px;
cursor: pointer;
margin-left: 20px;
}
/deep/ .el-input__inner {
height: 46px;

@ -33,7 +33,7 @@
:upload-preview="handleUploadPreview"
>
<template slot="uploadrecord">
<el-table
<el-table
v-if="form.uploadrecord && form.uploadrecord.length > 0"
:data="form.uploadrecord"
style="width: 100%"
@ -76,23 +76,22 @@
</div>
</el-card>
<!-- 控制 运维公司收到任务 只输入通过 -->
<div :style="{display:yibanTask?'block':'none'}">
<div :style="{ display: yibanTask ? 'block' : 'none' }">
<el-card
shadow="never"
style="margin-top: 20px"
v-if="process.status == 'todo'"
>
<wf-examine-form
:renwudengji="form.renwudengji"
ref="examineForm"
:comment.sync="comment"
:process="process"
@user-select="handleUserSelect"
@uploadSuccess="uploadSuccess"
></wf-examine-form>
</el-card>
shadow="never"
style="margin-top: 20px"
v-if="process.status == 'todo'"
>
<wf-examine-form
:renwudengji="form.renwudengji"
ref="examineForm"
:comment.sync="comment"
:process="process"
@user-select="handleUserSelect"
@uploadSuccess="uploadSuccess"
></wf-examine-form>
</el-card>
</div>
</el-tab-pane>
<el-tab-pane label="流转信息" name="second">
<el-card shadow="never" style="margin-top: 5px">
@ -229,7 +228,7 @@ export default {
},
//
getDetail(taskId, processInsId) {
this.getTaskDetail(taskId, processInsId).then((res) => {
this.getTaskDetail(taskId, processInsId).then(async (res) => {
const { process, form } = res;
const { variables, status } = process;
@ -277,57 +276,57 @@ export default {
detail: true,
});
}
this.option = option;
this.vars = vars;
//
const { yunweigongsi, renwufulei, xitongmingchengshujuku } =
variables;
getCompany().then((res) => {
const yunweigongsi = this.findObject(option.column, "yunweigongsi");
yunweigongsi.dicData = res.data.data;
});
getDepts({ id: yunweigongsi }).then((res) => {
const guanlibumen = this.findObject(option.column, "guanlibumen");
guanlibumen.dicData = res.data.data;
});
getTaskParent().then((res) => {
const renwufulei = this.findObject(option.column, "renwufulei");
renwufulei.dicData = res.data.data;
//
const companyData = await getCompany();
let ywgs = this.findObject(option.column, "yunweigongsi");
ywgs.dicData = companyData.data.data;
//
const deptDate = await getDepts({ id: yunweigongsi });
const guanlibumen = this.findObject(option.column, "guanlibumen");
guanlibumen.dicData = deptDate.data.data;
//
const taskParent = await getTaskParent();
const rwfl = this.findObject(option.column, "renwufulei");
rwfl.dicData = taskParent.data.data;
//
const taskTypeData = await getTaskTypeData({ parentId: renwufulei });
const renwuzhonglei = this.findObject(
this.option.column,
"renwuzhonglei"
);
renwuzhonglei.dicData = taskTypeData.data.data;
//
const taskAndDataBaseData = await getTaskAndDataBase({
id: yunweigongsi,
});
getTaskTypeData({ parentId: renwufulei }).then((res) => {
const renwuzhonglei = this.findObject(
this.option.column,
"renwuzhonglei"
);
renwuzhonglei.dicData = res.data.data;
let datasql = this.findObject(
this.option.column,
"xitongmingchengshujuku"
);
datasql.dicData = taskAndDataBaseData.data.data;
//
let obj = taskAndDataBaseData.data.data.find(function (i) {
return i.id === xitongmingchengshujuku;
});
getTaskAndDataBase({ id: yunweigongsi }).then((res) => {
const datasql = this.findObject(
this.option.column,
"xitongmingchengshujuku"
);
datasql.dicData = res.data.data;
let obj = res.data.data.find(function (i) {
return i.id === xitongmingchengshujuku;
});
getModuleAndDataTable({ id: obj.id, type: obj.type }).then(
(res2) => {
console.log("res", res);
const xitongmokuaishujubiao = this.findObject(
this.option.column,
"xitongmokuaishujubiao"
);
xitongmokuaishujubiao.dicData = res2.data.data;
}
);
const moduleAndDataTableData = await getModuleAndDataTable({
id: obj.id,
type: obj.type,
});
this.option = option;
this.vars = vars;
let xitongmokuaishujubiao = this.findObject(
this.option.column,
"xitongmokuaishujubiao"
);
xitongmokuaishujubiao.dicData = moduleAndDataTableData.data.data;
}
this.form = variables;
setTimeout(() => {
this.form = variables;
this.waiting = false;
}, 10);
}, 100);
});
},
handleResolveOption(option, taskForm, status) {

@ -270,10 +270,9 @@ export default {
return i.id === id;
});
getDepts({ id: obj.deptId }).then((res) => {
const guanlibumen = this.findObject(this.option.column, "guanlibumen");
this.$nextTick(() => {
guanlibumen.dicData = res.data.data;
});
// const guanlibumen = this.findObject(this.option.column, "guanlibumen");
const guanlibumen = this.option.column[1];
guanlibumen.dicData = res.data.data;
});
getTaskAndDataBase({ id }).then((res) => {
this.taskAndDataBaseList = res.data.data;
@ -284,7 +283,6 @@ export default {
getTaskTypeData({ parentId: id }).then((res) => {
this.form.renwuzhonglei = "";
this.form.renwudengji = "";
console.log(this.option);
const renwuzhonglei = this.option.column[3];
renwuzhonglei.dicData = res.data.data;
});

@ -2,97 +2,102 @@
<div class="cus-container">
<el-form :model="searchForm">
<div class="search">
<el-select
v-model="searchForm.taskParent"
placeholder="任务父类"
class="search-select"
clearable
<el-select
v-model="searchForm.taskParent"
placeholder="任务父类"
class="search-select"
clearable
>
<el-option
v-for="item in taskParent"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
<el-option
v-for="item in taskParent"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.taskType"
placeholder="任务种类"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.taskType"
placeholder="任务种类"
class="search-select"
clearable
>
<el-option
v-for="item in taskInfos"
:key="item.id"
:label="item.taskTypeName"
:value="item.id"
>
<el-option
v-for="item in taskInfos"
:key="item.id"
:label="item.taskTypeName"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.applyUser"
placeholder="发起人"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.applyUser"
placeholder="发起人"
class="search-select"
clearable
>
<el-option
v-for="item in users"
:key="item.id"
:label="item.realName"
:value="item.id"
>
<el-option
v-for="item in users"
:key="item.id"
:label="item.realName"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.maintenanceCompany"
placeholder="运维公司"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.maintenanceCompany"
placeholder="运维公司"
class="search-select"
clearable
>
<el-option
v-for="item in users"
:key="item.id"
:label="item.realName"
:value="item.id"
>
<el-option
v-for="item in users"
:key="item.id"
:label="item.realName"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.repeatMode"
placeholder="重复模式"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.repeatMode"
placeholder="重复模式"
class="search-select"
clearable
>
<el-option
v-for="item in repeatModeList"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
<el-option
v-for="item in repeatModeList"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
</el-option>
</el-select>
<el-date-picker
style="width: 314px; margin-right: 20px"
v-model="searchForm.timeArr"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="创建开始日期"
end-placeholder="创建结束日期"
></el-date-picker>
</el-option>
</el-select>
<el-date-picker
style="width: 314px"
v-model="searchForm.timeArr"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="创建开始日期"
end-placeholder="创建结束日期"
></el-date-picker>
<div style="margin-left: auto">
<el-button class="search-btn" @click="searchHandle(1)"
>查询</el-button
>
<div class="search-reset" @click="searchHandle(2)">
<i class="el-icon-refresh-right" style="font-size: 20px"></i>
<el-button
class="search-btn"
@click="searchHandle(2)"
style="margin-left: 20px; background: #ff9130"
>重置</el-button
>
</div>
</div>
</el-form>
<div style="margin-top: 30px">
<div style="margin-top: 15px">
<avue-crud
id="avue-id"
ref="crud"
@ -104,18 +109,14 @@
@size-change="sizeChange"
>
<template slot="menu" slot-scope="{ row }">
<el-button @click="dynamicRoute(row, 'detail')">详情</el-button>
<el-button
@click="dynamicRoute(row, 'detail')"
>详情</el-button
>
<el-button
v-if="row.isBreak === 0"
type="danger"
@click="stopHandle(row)"
>终止</el-button
>
</template>
</avue-crud>
</div>
</div>
@ -125,7 +126,7 @@ import {
taskList as getList,
conditionalData,
taskRemove,
repeatMode
repeatMode,
} from "@/api/plugin/workflow/workorder.js";
import { tableOption } from "@/const/workflow/crontab.js";
import { mapGetters } from "vuex";
@ -161,16 +162,17 @@ export default {
methods: {
dictBiz() {
conditionalData().then((res) => {
const { taskParent, taskInfos, depts, users, taskLevel } = res.data.data;
const { taskParent, taskInfos, depts, users, taskLevel } =
res.data.data;
this.taskParent = taskParent;
this.taskInfos = taskInfos;
this.depts = depts;
this.users = users;
this.taskLevel = taskLevel
this.taskLevel = taskLevel;
});
repeatMode().then((res) => {
this.repeatModeList = res.data.data;
});
repeatMode().then(res => {
this.repeatModeList = res.data.data
})
},
//
onLoad() {
@ -183,7 +185,11 @@ export default {
this.searchForm.startTime = this.searchForm.timeArr[0];
this.searchForm.endTime = this.searchForm.timeArr[1];
}
getList({ current:currentPage, size:pageSize,...this.searchForm }).then((res) => {
getList({
current: currentPage,
size: pageSize,
...this.searchForm,
}).then((res) => {
const { total, records } = res.data.data;
this.page.total = total;
this.tableData = records;
@ -211,13 +217,17 @@ export default {
},
//
stopHandle(row) {
this.$confirm("此操作会终止该条重复任务,且无法恢复,确定停止吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
this.$confirm(
"此操作会终止该条重复任务,且无法恢复,确定停止吗?",
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
)
.then(() => {
taskRemove({ids: row.id}).then((res) => {
taskRemove({ ids: row.id }).then((res) => {
this.$message.success("任务终止成功!");
this.onLoad();
});
@ -225,39 +235,27 @@ export default {
.catch(() => {
// this.$message({ type: "info", message: "" });
});
}
},
},
};
</script>
<style lang="scss" scoped>
.search-line {
margin-top: 20px;
.search {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
width: 100%;
}
.search-select {
width: 150px;
margin-right: 20px;
margin-bottom: 15px;
}
.search-input {
width: 288px;
}
.search-btn {
width: 130px;
width: 100px;
height: 46px !important;
background: #2e92f6;
color: #fff;
margin: 0 20px;
}
.search-reset {
display: inline-block;
width: 46px;
height: 44px !important;
background: #ff9130;
color: #fff;
text-align: center;
line-height: 46px;
cursor: pointer;
}
/deep/ .el-input__inner {
height: 46px;

@ -2,126 +2,114 @@
<div class="cus-container">
<el-form :model="searchForm">
<div class="search">
<div>
<el-select
v-model="searchForm.taskParent"
placeholder="任务父类"
class="search-select"
clearable
<el-select
v-model="searchForm.taskParent"
placeholder="任务父类"
class="search-select"
clearable
>
<el-option
v-for="item in taskParent"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
<el-option
v-for="item in taskParent"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.taskType"
placeholder="任务种类"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.taskType"
placeholder="任务种类"
class="search-select"
clearable
>
<el-option
v-for="item in taskInfos"
:key="item.id"
:label="item.taskTypeName"
:value="item.id"
>
<el-option
v-for="item in taskInfos"
:key="item.id"
:label="item.taskTypeName"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.management"
placeholder="管理部门"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.management"
placeholder="管理部门"
class="search-select"
clearable
>
<el-option
v-for="item in depts"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
<el-option
v-for="item in depts"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.taskLevel"
placeholder="任务级别"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.taskLevel"
placeholder="任务级别"
class="search-select"
clearable
>
<el-option
v-for="item in taskLevel"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
<el-option
v-for="item in taskLevel"
:key="item.id"
:label="item.dictValue"
:value="item.id"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.isFinish"
placeholder="状态"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.isFinish"
placeholder="状态"
class="search-select"
clearable
>
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.applyUser"
placeholder="发起人"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.applyUser"
placeholder="发起人"
class="search-select"
clearable
>
<el-option
v-for="item in users"
:key="item.id"
:label="item.realName"
:value="item.id"
>
</el-option>
</el-select>
<el-date-picker
style="width: 398px; "
v-model="searchForm.timeArr"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="创建日期"
end-placeholder="结束日期"
></el-date-picker>
<div style="margin-left: auto">
<el-button class="search-btn" @click="searchHandle(1)"
>查询</el-button
>
<el-button
class="search-btn"
@click="searchHandle(2)"
style="background: #ff9130"
>重置</el-button
>
<el-option
v-for="item in users"
:key="item.id"
:label="item.realName"
:value="item.id"
>
</el-option>
</el-select>
<el-date-picker
style="width: 314px; margin-right: 20px"
v-model="searchForm.timeArr"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="创建开始日期"
end-placeholder="创建结束日期"
></el-date-picker>
</div>
<div class="search-line">
<div style="display: flex">
<el-date-picker
style="width: 314px; margin-right: 20px"
v-model="searchForm.timeArr2"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
<el-button class="search-btn" @click="searchHandle(1)"
>查询</el-button
>
<div class="search-reset" @click="searchHandle(2)">
<i class="el-icon-refresh-right" style="font-size: 20px"></i>
</div>
</div>
<el-button
class="search-btn"
style="margin: 0; background: #2ee27c"
style="background: #2ee27c;"
@click="exportHandle"
>导出</el-button
>
@ -220,13 +208,6 @@ export default {
this.searchForm.startTime = this.searchForm.timeArr[0];
this.searchForm.endTime = this.searchForm.timeArr[1];
}
if (
this.searchForm.timeArr2 !== null &&
this.searchForm.timeArr2 !== undefined
) {
this.searchForm.startTime2 = this.searchForm.timeArr2[0];
this.searchForm.endTime2 = this.searchForm.timeArr2[1];
}
getList({
current: currentPage,
size: pageSize,
@ -253,7 +234,6 @@ export default {
if (index === 2) {
this.searchForm = {
timeArr: null,
timeArr2: null,
};
}
this.onLoad();
@ -267,13 +247,6 @@ export default {
this.searchForm.startTime = this.searchForm.timeArr[0];
this.searchForm.endTime = this.searchForm.timeArr[1];
}
if (
this.searchForm.timeArr2 !== null &&
this.searchForm.timeArr2 !== undefined
) {
this.searchForm.startTime2 = this.searchForm.timeArr2[0];
this.searchForm.endTime2 = this.searchForm.timeArr2[1];
}
workOrderExcel(this.searchForm).then((res) => {
const blob = res.data;
const link = document.createElement("a");
@ -293,43 +266,30 @@ export default {
//
details(row) {
this.$router.push({
path: '/workflow/process/effect',
path: "/workflow/process/effect",
query: {
form: JSON.stringify(row)
}
form: JSON.stringify(row),
},
});
},
},
};
</script>
<style lang="scss" scoped>
.search-line {
margin-top: 20px;
.search {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.search-select {
width: 150px;
width: 180px;
margin-right: 20px;
}
.search-input {
width: 288px;
margin-bottom: 15px;
}
.search-btn {
width: 130px;
width: 100px;
height: 46px !important;
background: #2e92f6;
color: #fff;
margin: 0 20px;
}
.search-reset {
width: 46px;
height: 44px !important;
background: #ff9130;
color: #fff;
text-align: center;
line-height: 46px;
cursor: pointer;
}
/deep/ .el-input__inner {
height: 46px;

@ -97,13 +97,13 @@
start-placeholder="创建开始日期"
end-placeholder="创建结束日期"
></el-date-picker>
<el-button class="search-btn" @click="searchHandle(1)">查询</el-button>
<div class="search-reset" @click="searchHandle(2)">
<i class="el-icon-refresh-right" style="font-size: 20px"></i>
<div style="margin-left:auto;">
<el-button class="search-btn" @click="searchHandle(1)">查询</el-button>
<el-button class="search-btn" @click="searchHandle(2)" style="margin-left:20px;background: #ff9130;">重置</el-button>
</div>
</div>
</el-form>
<div style="margin-top: 30px">
<div style="margin-top: 15px">
<avue-crud
id="avue-id"
ref="crud"
@ -130,7 +130,7 @@
? '#FF9130'
: scope.row.approvalStatus == '待实施'
? '#4CA3FB'
: '#ccc',
: '#FD4D66',
}"
>{{ scope.row.approvalStatus }}</span
>
@ -256,34 +256,21 @@ export default {
};
</script>
<style lang="scss" scoped>
.search-line {
margin-top: 20px;
.search {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
width: 100%;
}
.search-select {
width: 150px;
margin-right: 20px;
}
.search-input {
width: 288px;
margin-bottom: 15px;
}
.search-btn {
width: 130px;
width: 100px;
height: 46px !important;
background: #2e92f6;
color: #fff;
margin: 0 20px;
}
.search-reset {
display: inline-block;
width: 46px;
height: 44px !important;
background: #ff9130;
color: #fff;
text-align: center;
line-height: 46px;
cursor: pointer;
}
/deep/ .el-input__inner {
height: 46px;

@ -2,140 +2,128 @@
<div class="cus-container">
<el-form :model="searchForm">
<div class="search">
<div>
<el-select
v-model="searchForm.taskParent"
placeholder="任务父类"
class="search-select"
clearable
<el-select
v-model="searchForm.taskParent"
placeholder="任务父类"
class="search-select"
clearable
>
<el-option
v-for="item in taskParent"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictValue"
>
<el-option
v-for="item in taskParent"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictValue"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.taskType"
placeholder="任务种类"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.taskType"
placeholder="任务种类"
class="search-select"
clearable
>
<el-option
v-for="item in taskInfos"
:key="item.taskTypeName"
:label="item.taskTypeName"
:value="item.taskTypeName"
>
<el-option
v-for="item in taskInfos"
:key="item.taskTypeName"
:label="item.taskTypeName"
:value="item.taskTypeName"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.currentResponsiblePerson"
placeholder="当前责任人"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.currentResponsiblePerson"
placeholder="当前责任人"
class="search-select"
clearable
>
<el-option
v-for="item in users"
:key="item.realName"
:label="item.realName"
:value="item.realName"
>
<el-option
v-for="item in users"
:key="item.realName"
:label="item.realName"
:value="item.realName"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.management"
placeholder="管理部门"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.management"
placeholder="管理部门"
class="search-select"
clearable
>
<el-option
v-for="item in depts"
:key="item.deptName"
:label="item.deptName"
:value="item.deptName"
>
<el-option
v-for="item in depts"
:key="item.deptName"
:label="item.deptName"
:value="item.deptName"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.taskLevel"
placeholder="任务级别"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.taskLevel"
placeholder="任务级别"
class="search-select"
clearable
>
<el-option
v-for="item in taskLevel"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictValue"
>
<el-option
v-for="item in taskLevel"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictValue"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.approvalStatus"
placeholder="审批状态"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.approvalStatus"
placeholder="审批状态"
class="search-select"
clearable
>
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<el-select
v-model="searchForm.applyUser"
placeholder="发起人"
class="search-select"
clearable
</el-option>
</el-select>
<el-select
v-model="searchForm.applyUser"
placeholder="发起人"
class="search-select"
clearable
>
<el-option
v-for="item in users"
:key="item.realName"
:label="item.realName"
:value="item.realName"
>
</el-option>
</el-select>
<el-date-picker
style="width: 336px;"
v-model="searchForm.timeArr"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="创建开始日期"
end-placeholder="创建结束日期"
></el-date-picker>
<div style="margin-left:auto;">
<el-button class="search-btn" @click="searchHandle(1)"
>查询</el-button
>
<el-button
class="search-btn"
@click="searchHandle(2)"
style="background: #ff9130"
>重置</el-button
>
<el-option
v-for="item in users"
:key="item.realName"
:label="item.realName"
:value="item.realName"
>
</el-option>
</el-select>
<el-date-picker
style="width: 314px; margin-right: 20px"
v-model="searchForm.timeArr"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="创建开始日期"
end-placeholder="创建结束日期"
></el-date-picker>
</div>
<div class="search-line">
<div style="display: flex">
<el-date-picker
style="width: 314px; margin-right: 20px"
v-model="searchForm.timeArr2"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
class="search-picker"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
<el-button class="search-btn" @click="searchHandle(1)"
>查询</el-button
>
<div class="search-reset" @click="searchHandle(2)">
<i class="el-icon-refresh-right" style="font-size: 20px"></i>
</div>
</div>
<el-button
class="search-btn"
style="margin: 0; background: #2ee27c"
style="background: #2ee27c"
@click="exportHandle"
>导出</el-button
>
@ -162,21 +150,25 @@
color:
scope.row.status == '审批中'
? '#FF9130'
: scope.row.status == '进行中'
? '#4CA3FB'
: scope.row.status == '已驳回'
? '#FD4D66'
: scope.row.status == '已完成'
? '#2EE27C'
: '#000',
: '#ccc',
}"
>{{ scope.row.status }}</span
>
</template>
</avue-crud>
</avue-crud>
</div>
</div>
</template>
<script>
import { getList, conditionalData, exportExcel } from "@/api/plugin/workflow/workorder.js";
import {
getList,
conditionalData,
exportExcel,
} from "@/api/plugin/workflow/workorder.js";
import exForm from "../mixins/ex-form";
import { tableOption } from "@/const/workflow/workorder.js";
export default {
@ -203,11 +195,15 @@ export default {
label: "审批中",
value: "审批中",
},
{
label: "已驳回",
value: "已驳回",
},
{
label: "已完成",
value: "已完成",
},
]
],
};
},
created() {
@ -217,12 +213,13 @@ export default {
methods: {
dictBiz() {
conditionalData().then((res) => {
const { taskParent, taskInfos, depts, users, taskLevel } = res.data.data;
const { taskParent, taskInfos, depts, users, taskLevel } =
res.data.data;
this.taskParent = taskParent;
this.taskInfos = taskInfos;
this.depts = depts;
this.users = users;
this.taskLevel = taskLevel
this.taskLevel = taskLevel;
});
},
//
@ -236,15 +233,12 @@ export default {
this.searchForm.startTime = this.searchForm.timeArr[0];
this.searchForm.endTime = this.searchForm.timeArr[1];
}
if (
this.searchForm.timeArr2 !== null &&
this.searchForm.timeArr2 !== undefined
) {
this.searchForm.startTime2 = this.searchForm.timeArr2[0];
this.searchForm.endTime2 = this.searchForm.timeArr2[1];
}
getList({ current:currentPage, size:pageSize ,...this.searchForm }).then((res) => {
getList({
current: currentPage,
size: pageSize,
...this.searchForm,
}).then((res) => {
const { total, records } = res.data.data;
this.page.total = total;
this.tableData = records;
@ -266,7 +260,6 @@ export default {
if (index === 2) {
this.searchForm = {
timeArr: null,
timeArr2: null,
};
}
this.onLoad();
@ -280,13 +273,6 @@ export default {
this.searchForm.startTime = this.searchForm.timeArr[0];
this.searchForm.endTime = this.searchForm.timeArr[1];
}
if (
this.searchForm.timeArr2 !== null &&
this.searchForm.timeArr2 !== undefined
) {
this.searchForm.startTime2 = this.searchForm.timeArr2[0];
this.searchForm.endTime2 = this.searchForm.timeArr2[1];
}
exportExcel(this.searchForm).then((res) => {
const blob = res.data;
const link = document.createElement("a");
@ -307,35 +293,27 @@ export default {
};
</script>
<style lang="scss" scoped>
.search-line {
margin-top: 20px;
.search {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
width: 100%;
}
.search-select {
width: 150px;
width: 160px;
margin-right: 20px;
margin-bottom: 15px;
}
.search-input {
width: 288px;
}
.search-btn {
width: 130px;
width: 100px;
height: 46px !important;
background: #2e92f6;
color: #fff;
margin: 0 20px;
}
.search-reset {
width: 46px;
height: 44px !important;
background: #ff9130;
color: #fff;
text-align: center;
line-height: 46px;
cursor: pointer;
}
/deep/ .el-input__inner {
height: 46px;
}
/deep/ .el-button+.el-button {
margin-left: 20px;
}
</style>

@ -305,7 +305,7 @@ export default {
var option = {
color: ["#FF9130", "#4CA3FB", "#2EE27C"],
title: {
text: "按照完成状态统计",
text: "近一个月完成状态统计",
textStyle: {
color: "#000",
fontSize: 16,
@ -538,9 +538,8 @@ export default {
<style scoped lang="scss">
.header {
display: flex;
justify-content: space-between;
&__item {
width: 350px;
width: calc(100%/4);
height: 132px;
padding: 20px;
box-sizing: border-box;
@ -562,9 +561,15 @@ export default {
}
}
}
&__item:nth-child(2) {
margin: 0 30px;
}
&__item:nth-child(3) {
margin-right:30px;
}
}
.main {
height: calc(100% - 492px);
height: 427px;
width: 100%;
background: #fff;
border-radius: 3px;

Loading…
Cancel
Save