Browse Source

流程开发完毕

dev
超级管理员 3 years ago
parent
commit
50a6409390
  1. 3
      src/api/people/peopledata.js
  2. 9
      src/api/systemaccredit/systemapi.js
  3. 2
      src/customworkflow/addNode.vue
  4. 8
      src/customworkflow/dialog/employeesDialog.vue
  5. 16
      src/customworkflow/dialog/employeesRoleDialog.vue
  6. 4
      src/customworkflow/dialog/positionDialog.vue
  7. 2
      src/customworkflow/dialog/roleDialog.vue
  8. 40
      src/customworkflow/drawer/approverDrawer.vue
  9. 12
      src/customworkflow/drawer/conditionDrawer.vue
  10. 3
      src/router/index.js
  11. 12
      src/views/qualitative/index.vue
  12. 255
      src/views/qualitative/qualpage.vue

3
src/api/people/peopledata.js

@ -558,6 +558,7 @@ export function tableMergeTrade(dataAry = Array,mergeArr = Array,lastname ='endt
mergeArr.forEach((key, index1) => {
let count = 0; // 用来记录需要合并行的起始位置
mergeObj[key] = []; // 记录每一列的合并信息
if(dataAry){
//数据列表循环
dataAry.forEach((item, index) => {
// index == 0表示数据为第一行,直接 push 一个 1
@ -575,6 +576,8 @@ export function tableMergeTrade(dataAry = Array,mergeArr = Array,lastname ='endt
}
}
});
}
if(index1 == 0){
endObj = mergeObj[key]
}

9
src/api/systemaccredit/systemapi.js

@ -460,3 +460,12 @@ export function getAllParentNode(data) {
data
})
}
// 获取定性考核提报列表
export function GetQualityTasks(data) {
return request({
url: '/department_pc/get_quality_tasks',
method: 'post',
data
})
}

2
src/customworkflow/addNode.vue

@ -81,6 +81,7 @@ export default {
"nodeName": "审核人",
"error": true,
"type": 1,
"attribute":1,
"settype": 1,
"selectMode": 0,
"selectRange": 0,
@ -111,6 +112,7 @@ export default {
"nodeName": "执行人",
"error": true,
"type": 3,
"attribute":1,
"settype": 1,
"selectMode": 0,
"selectRange": 0,

8
src/customworkflow/dialog/employeesDialog.vue

@ -50,13 +50,13 @@ export default {
if(this.data){
this.checkedEmployessList = this.data.filter(item => item.type === 1).map(({ name, targetId ,icon ,iconToBase64}) => ({
employeeName: name,
id: targetId,
id: targetId.toString(),
icon: icon,
iconToBase64: iconToBase64
}));
this.checkedDepartmentList = this.data.filter(item => item.type === 3).map(({ name, targetId }) => ({
departmentName: name,
id: targetId
id: targetId.toString()
}));
}
}
@ -116,12 +116,12 @@ export default {
saveDialog() {
let checkedList = [...this.checkedDepartmentList, ...this.checkedEmployessList].map(item => ({
type: item.employeeName ? "1" : "3",
targetId: item.id,
targetId: item.id.toString(),
icon: item.icon,
iconToBase64: item.iconToBase64,
name: item.employeeName || item.departmentName
}))
// console.log("checkedList--->",checkedList);
console.log("checkedList--->",checkedList,this.checkedDepartmentList,this.checkedEmployessList);
this.$emit('change', checkedList)
},
//

16
src/customworkflow/dialog/employeesRoleDialog.vue

@ -55,7 +55,7 @@ export default {
if(this.data){
this.checkedEmployessList = this.data.filter(item => item.type === 1).map(({ name, targetId ,icon ,iconToBase64 }) => ({
employeeName: name,
id: targetId,
id: targetId.toString(),
icon: icon,
iconToBase64: iconToBase64
}));
@ -65,10 +65,12 @@ export default {
}));
this.checkedDepartmentList = this.data.filter(item => item.type === 3).map(({ name, targetId }) => ({
departmentName: name,
id: targetId
id: targetId.toString()
}));
}
// console.log("visible--1->",this.checkedEmployessList)
// console.log("visible--2->",this.checkedRoleList)
// console.log("visible--3->",this.checkedDepartmentList)
}
},
visibleDialog(val) {
@ -123,6 +125,7 @@ export default {
cancel: (item) => this.$func.removeEle(this.checkedDepartmentList, item)
})
}
return data
},
},
@ -136,16 +139,17 @@ export default {
// iconToBase64: item.iconToBase64,
// name: item.employeeName || item.departmentName
// }))
// console.log("--->",this.checkedRoleList,this.checkedEmployessList,this.checkedDepartmentList)
let checkedList = [...this.checkedRoleList, ...this.checkedEmployessList, ...this.checkedDepartmentList].map(item => ({
type: item.employeeName ? 1 : (item.roleName ? 2 : 3),
type: item.employeeName ? "1" : (item.roleName ? "2" : "3"),
targetId: item.id || item.roleId,
name: item.employeeName || item.roleName || item.departmentName,
icon: item.icon,
iconToBase64: item.iconToBase64,
}))
checkedList.map(String)
this.$emit('change', checkedList)
console.log("保存选择",checkedList)
// console.log("",checkedList)
},
//
delList() {

4
src/customworkflow/dialog/positionDialog.vue

@ -42,7 +42,7 @@ export default {
this.searchVal = "";
this.checkedRoleList = this.data.map(({ name, targetId }) => ({
name: name,
id: targetId
id: targetId.toString()
}));
}
},
@ -75,7 +75,7 @@ export default {
saveDialog() {
let checkedList = this.checkedRoleList.map(item => ({
type: "position",
targetId: item.id,
targetId: item.id.toString(),
name: item.name
}))
console.log("岗位保存--->",checkedList)

2
src/customworkflow/dialog/roleDialog.vue

@ -75,7 +75,7 @@ export default {
methods:{
saveDialog() {
let checkedList = this.checkedRoleList.map(item => ({
type: 2,
type: "2",
targetId: item.roleId,
name: item.roleName
}))

40
src/customworkflow/drawer/approverDrawer.vue

@ -7,6 +7,7 @@
<el-drawer :append-to-body="true" :title="nodeTitle" :visible.sync="approverDrawer" direction="rtl" class="set_promoter" size="550px" :before-close="saveApprover">
<div class="demo-drawer__content">
<div class="drawer_content">
<!--选择处理界限-->
<div class="approver_content">
<el-radio-group v-model="approverConfig.settype" class="clear" @change="changeType">
@ -29,17 +30,40 @@
<!--主管选项-->
<div class="approver_manager" v-if="approverConfig.settype==2">
<p>
<span>发起人的</span>
<select v-model="approverConfig.directorLevel">
<el-row>
<el-col :span="6">
<select v-model="approverConfig.attribute" style="width:100%">
<option value="1">发起人</option>
<option value="2">执行人</option>
</select>
</el-col>
<el-col :span="18">
<select v-model="approverConfig.directorLevel" style="width:100%">
<option v-for="item in directorMaxLevel" :value="item" :key="item">{{item==1?'直接':''+item+''}}主管</option>
</select>
</el-col>
</el-row>
<!-- <span>发起人的</span> -->
</p>
<p class="tip">找不到主管时由上级主管代审批</p>
</div>
<div class="approver_manager" v-if="approverConfig.settype==3">
<el-row :gutter="20">
<el-col :span="12">
<el-button type="primary" @click="addApproverPost">添加/修改岗位</el-button>
</el-col>
<el-col :span="5" :offset="7">
<select v-model="approverConfig.attribute" style="width:100%">
<option value="1">发起人</option>
<option value="2">执行人</option>
</select>
</el-col>
</el-row>
<p class="selected_list" style="margin-top:30px">
<span v-for="(item,index) in approverConfig.nodeUserList" :key="index">{{item.name}}
<img src="@/assets/images/add-close1.png" @click="$func.removeEle(approverConfig.nodeUserList,item,'targetId')">
@ -76,10 +100,20 @@
<div class="approver_manager" v-if="approverConfig.settype==7">
<p>审批终点</p>
<p style="padding-bottom:20px">
<span>发起人的</span>
<el-row>
<el-col :span="6">
<select v-model="approverConfig.attribute" style="width:100%">
<option value="1">发起人</option>
<option value="2">执行人</option>
</select>
</el-col>
<el-col :span="18">
<select v-model="approverConfig.examineEndDirectorLevel">
<option v-for="item in directorMaxLevel" :value="item" :key="item">{{item==1?'最高':''+item}}层级主管</option>
</select>
</el-col>
</el-row>
</p>
</div>
<!--指定审批节点自选-->

12
src/customworkflow/drawer/conditionDrawer.vue

@ -363,7 +363,7 @@ export default {
if (columnId == 0) {
this.conditionConfig.nodeUserList == [];
this.conditionConfig.conditionList.push({
"type": 1,
"type": "1",
columnId,
"showName": '发起人'
});
@ -372,7 +372,7 @@ export default {
this.conditionConfig.conditionList.push({
showType,
columnId,
"type": 2,
"type": "2",
showName,
"optType": "1",
"zdy1": "2",
@ -386,7 +386,7 @@ export default {
this.conditionConfig.conditionList.push({
showType,
columnId,
"type": 2,
"type": "2",
showName,
"zdy1": "",
"columnDbname": columnName,
@ -397,7 +397,7 @@ export default {
this.conditionConfig.conditionList.push({
showType,
columnId,
"type": 3,
"type": "3",
showName,
"columnDbname": columnName,
columnType,
@ -407,7 +407,7 @@ export default {
}else if(columnType == "custom"){
this.conditionConfig.conditionList.push({
showType,
"type": 4,
"type": "4",
columnId,
showName,
columnType,
@ -429,7 +429,7 @@ export default {
this.conditionConfig.conditionList.push({
showType,
columnId,
"type": 5,
"type": "5",
showName,
"zdy1": "",
"columnDbname": columnName,

3
src/router/index.js

@ -195,7 +195,8 @@ export const constantRoutes = [
// UserHome 将被渲染到 User 的 <router-view> 内部
{
path: 'qualitative',
component: () => import('@/views/qualitative/index'),
component: () => import('@/views/qualitative/qualpage'),
// component: () => import('@/views/qualitative/index'),
meta: { title: '定性考核'}
},
{

12
src/views/qualitative/index.vue

@ -278,9 +278,9 @@
{{a.workshopname}}-{{a.postname}}-{{a.name}}
<el-row>
<div v-for="(i,logIndex) in a.log" :key="logIndex">
<div class="left" v-if="i.state==2">已同意&nbsp·&nbsp</div>
<div class="left" v-if="i.state==1" type="info">未操作&nbsp·&nbsp</div>
<div class="left" v-if="i.state==3" type="danger">驳回&nbsp·&nbsp</div>
<div class="left" v-if="i.state==2">已同意&nbsp;·&nbsp;</div>
<div class="left" v-if="i.state==1" type="info">未操作&nbsp;·&nbsp;</div>
<div class="left" v-if="i.state==3" type="danger">驳回&nbsp;·&nbsp;</div>
<div class="left">{{i.time}}</div>
</div>
</el-row>
@ -493,9 +493,9 @@
{{a.workshopname}}-{{a.postname}}-{{a.name}}
<el-row>
<div v-for="(i,logIndex) in a.log" :key="logIndex">
<div class="left" v-if="i.state==2">已同意&nbsp·&nbsp</div>
<div class="left" v-if="i.state==1" type="info">未操作&nbsp·&nbsp</div>
<div class="left" v-if="i.state==3" type="danger">驳回&nbsp·&nbsp</div>
<div class="left" v-if="i.state==2">已同意&nbsp;·&nbsp;</div>
<div class="left" v-if="i.state==1" type="info">未操作&nbsp;·&nbsp;</div>
<div class="left" v-if="i.state==3" type="danger">驳回&nbsp;·&nbsp;</div>
<div class="left">{{i.time}}</div>
</div>
</el-row>

255
src/views/qualitative/qualpage.vue

@ -0,0 +1,255 @@
<!--
@ 作者: 秦东
@ 时间: 2023-03-31 16:26:35
@ 备注: 定性考核
-->
<template>
<el-container>
<el-header>
<el-form ref="searchForm" :inline="true" :model="searchInfo" class="demo-form-inline">
<el-form-item label="行政组织">
<el-cascader filterable clearable v-model="searchInfo.orgid" :options="orgList" :show-all-levels="false" :props="props1"></el-cascader>
</el-form-item>
<el-form-item label="考核指标">
<el-input placeholder="请输入名称" v-model="searchInfo.title" clearable></el-input>
</el-form-item>
<el-form-item label="日期">
<el-date-picker
v-model="searchInfo.time"
type="month"
placeholder="选择时间"
format="yyyy 年 MM 月"
value-format="yyyy-MM"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searckClick">查询</el-button>
<el-button icon="el-icon-refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</el-header>
<el-main>
<div class="tableBox" ref="mainBox">
<el-table
:data="targetList"
:span-method="objectSpanMethod"
border
:height="tableHeight"
style="width: 100%">
<el-table-column
prop="orgname"
label="行政组织"
width="300"
>
</el-table-column>
<el-table-column
label="指标"
>
<template slot-scope="scope">
<el-link type="primary" @click="showMethod(scope.row)">{{scope.row.title}}</el-link>
</template>
</el-table-column>
<el-table-column
prop="minusscore"
label="减分"
width="100"
align="center"
>
</el-table-column>
<el-table-column
prop="bonuspoints"
label="加分"
width="100"
align="center"
>
</el-table-column>
</el-table>
</div>
</el-main>
<el-footer>
<div class="block">
<el-pagination
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-size="searchInfo.pagesize"
layout="prev, pager, next, jumper"
:total="targetTotal">
</el-pagination>
</div>
</el-footer>
</el-container>
</template>
<script>
import { tableMergeTrade } from "@/api/people/peopledata";
import { govthree } from "@/api/personnel/post";
import { GetQualityTasks } from "@/api/systemaccredit/systemapi"
export default {
data() {
return {
mergeObj: {}, //
mergeArr: ['orgname',"endClick"],//
searchInfo:{
orgid:"", //
title:"", //
time:"",
page:1,
pagesize:20
},
orgList:[], //
props1: {
checkStrictly: true,
value: "id",
label: "name",
children: "child",
emitPath:false,
},
targetList:[], //
targetTotal:0,
currentPage:1,
tableHeight:300, //
bylawsBox:false, //
orgTarget:{
orgid:"", //
targetid:"", //
}
}
},
mounted() {
// DOM
this.$nextTick(()=>{
let $ele = this.$refs.mainBox
this.tableHeight = $ele.offsetHeight
// console.log("-height-->",this.tableHeight)
})
},
created(){
// this.tableHeight=this.$refs.mainBox.offsetHeight;
// console.log("--->",this.tableHeight)
this.getOrgList(); //
this.dingXingList(); //
},
methods:{
//
async getOrgList(){
let sendData ={
page:309,
level:0,
all:1
}
const res = await govthree(sendData);
this.orgList = res.data
// console.log("this.orgList--->",this.orgList)
},
//
async dingXingList(){
// console.log("--1->",this.searchInfo)
let orgidval = ""
if(this.searchInfo.orgid != "" && this.searchInfo.orgid != null){
orgidval = this.searchInfo.orgid.toString()
}
let sendData = {
orgid:orgidval, //
title:this.searchInfo.title, //
time:this.searchInfo.time,
page:this.searchInfo.page,
pagesize:this.searchInfo.pagesize
}
const res = await GetQualityTasks(sendData)
// console.log("--->",res)
if(res.code == 0){
this.targetList = res.data.list
this.targetTotal = res.data.total
this.mergeObj = tableMergeTrade(this.targetList,this.mergeArr,"endClick")
// console.log("--->",this.mergeObj)
}
},
//
onReset() {
this.searchInfo = {
orgid:"", //
title:"", //
time:"",
page:1,
pagesize:20
}
this.dingXingList();
},
//
handleCurrentChange(val) {
this.searchInfo.page = val
this.dingXingList();
},
//
searckClick(){
this.dingXingList();
},
//
// { , , , }
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
// console.log(" { , , , }",row, column, rowIndex, columnIndex)
//
if(this.mergeArr.indexOf(column.property) !== -1) {
// 0
if(this.mergeObj[column.property][rowIndex]) {
return [this.mergeObj[column.property][rowIndex], 1]
} else {
// 0
return [0, 0];
}
}
},
//
async showMethod(val){
this.orgTarget={
orgid:val.orgid, //
targetid:val.targetid, //
}
console.log(`查看需要提交得指标细则: `,val);
this.bylawsBox=true;
},
}
}
</script>
<style lang='less'>
.el-container {
height:calc(100% - 50px);
overflow: hidden;
}
.el-header, .el-footer {
border-bottom: 1px solid rgb(220, 223, 230);
text-align: left;
padding: 10px 0 0 10px;
}
.el-scrollbar {
height: 101%;
width: 100%;
}
.el-scrollbar__wrap {
overflow: auto;
overflow: scroll;
}
.el-tree-node.is-current>.el-tree-node__content {
color:#2E89DE!important
}
.el-tree-node_black {
background-color:red !important;
color:#2E89DE!important
}
.block{
text-align: center;
}
.el-main{
padding-bottom: 0px;
}
.tableBox{
height: 100%;
}
</style>
Loading…
Cancel
Save