Browse Source

定性考核关联工作流

dev
超级管理员 3 years ago
parent
commit
8d47846e01
  1. 17
      src/api/systemaccredit/systemapi.js
  2. 10
      src/api/workflowapi/workflowaip.js
  3. 4
      src/customworkflow/addNode.vue
  4. 13
      src/customworkflow/dialog/employeesRoleDialog.vue
  5. 12
      src/customworkflow/drawer/conditionDrawer.vue
  6. BIN
      src/images/bookfile.png
  7. BIN
      src/images/bumen.png
  8. BIN
      src/images/quzheng.png
  9. 195
      src/views/qualitative/qualitativecont/bylaws.vue
  10. 455
      src/views/qualitative/qualitativecont/plus_minus_score.vue
  11. 124
      src/views/qualitative/qualitativecont/plus_minus_score_20230403.vue
  12. 215
      src/views/qualitative/qualitativecont/xuanren/peopleTransfer.vue
  13. 15
      src/views/qualitative/qualpage.vue
  14. 29
      src/views/workflow/editflowcont.vue
  15. 16
      src/views/workflow/flowcont.vue

17
src/api/systemaccredit/systemapi.js

@ -468,4 +468,21 @@ export function GetQualityTasks(data) {
method: 'post',
data
})
}
// 相关提报人定性考核细则列表
export function getQualityBylawsTasks(data) {
return request({
url: '/department_pc/get_qualbylaws_tasks',
method: 'post',
data
})
}
// 获取流程图
export function getWorkflowFullView(data) {
return request({
url: '/workflowapi/get_work_flow_fullview',
method: 'post',
data
})
}

10
src/api/workflowapi/workflowaip.js

@ -166,4 +166,14 @@ export const publishWorkFlow = (data) => {
method: 'post',
data: data
})
}
/**
* 编辑流程主体
*/
export const EditWorkFlowCont = (data) => {
return request({
url: '/workflowapi/edit_workflow_cont',
method: 'post',
data: data
})
}

4
src/customworkflow/addNode.vue

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

13
src/customworkflow/dialog/employeesRoleDialog.vue

@ -53,24 +53,25 @@ export default {
this.getDepartmentList();
this.searchVal = "";
if(this.data){
this.checkedEmployessList = this.data.filter(item => item.type === 1).map(({ name, targetId ,icon ,iconToBase64 }) => ({
this.checkedEmployessList = this.data.filter(item => item.type === "1").map(({ name, targetId ,icon ,iconToBase64 }) => ({
employeeName: name,
id: targetId.toString(),
icon: icon,
iconToBase64: iconToBase64
}));
this.checkedRoleList = this.data.filter(item => item.type === 2).map(({ name, targetId }) => ({
this.checkedRoleList = this.data.filter(item => item.type === "2").map(({ name, targetId }) => ({
roleName: name,
roleId: targetId
}));
this.checkedDepartmentList = this.data.filter(item => item.type === 3).map(({ name, targetId }) => ({
this.checkedDepartmentList = this.data.filter(item => item.type === "3").map(({ name, targetId }) => ({
departmentName: name,
id: targetId.toString()
}));
}
// console.log("visible--1->",this.checkedEmployessList)
// console.log("visible--2->",this.checkedRoleList)
// console.log("visible--3->",this.checkedDepartmentList)
console.log("visible--1->",this.checkedEmployessList)
console.log("visible--2->",this.checkedRoleList)
console.log("visible--3->",this.checkedDepartmentList)
console.log("visible--4->",this.data)
}
},
visibleDialog(val) {

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,

BIN
src/images/bookfile.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
src/images/bumen.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
src/images/quzheng.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

195
src/views/qualitative/qualitativecont/bylaws.vue

@ -0,0 +1,195 @@
<!--
@ 作者: 秦东
@ 时间: 2023-04-01 13:07:53
@ 备注: 执行的考核项目
-->
<template>
<el-dialog title="考核项目" top="100px" :visible.sync="bylawsBox" width="50%" :before-close="handleClose">
<el-row>
<el-col :span="24">
<el-form ref="searchBylawsForm" :inline="true" :model="searchBylawsInfo" class="demo-form-inline">
<el-form-item label="考核内容">
<el-input placeholder="请输入考核内容" v-model="searchBylawsInfo.title" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searckBylawsClick">查询</el-button>
</el-form-item>
</el-form>
</el-col>
<el-col :span="24">
<el-table
:data="bylawsList"
:span-method="objectBylawsMethod"
border
:height="tableBylawsHeight"
style="width: 100%">
<el-table-column
prop="columntitle"
label="考核栏目"
width="180"
>
</el-table-column>
<el-table-column
prop="title"
label="考核内容"
>
</el-table-column>
<el-table-column
prop="standard"
label="考核标准"
width="100"
align="center"
>
</el-table-column>
<el-table-column
prop="unit"
label="单位"
width="100"
align="center"
>
</el-table-column>
<el-table-column label="操作" align="center" width="100">
<template slot-scope="scope">
<el-link type="danger" class="scoreLink" @click="addOrSubtraction(scope.row,1)" :underline="false" v-if="scope.row.plusminusscore==1||scope.row.plusminusscore==3" icon="el-icon-remove-outline">减分</el-link>
<el-link type="primary" class="scoreLink" @click="addOrSubtraction(scope.row,2)" :underline="false" v-if="scope.row.plusminusscore==2||scope.row.plusminusscore==3" icon="el-icon-circle-plus-outline">加分</el-link>
</template>
</el-table-column>
</el-table>
</el-col>
<el-col :span="24">
<div class="block">
<el-pagination
@current-change="bylawsCurrentChange"
:current-page.sync="currBylawsPage"
:page-size="searchBylawsInfo.pagesize"
layout="prev, pager, next, jumper"
:total="bylawsTotal">
</el-pagination>
</div>
</el-col>
</el-row>
<plusMinusScore :addOfMinusBox="addOfMinusBox" :addOfMinusCont="addOfMinusCont" :addOfMinusAttribute="addOfMinusAttribute" :orgTarget="orgTarget" @closeAddOfMinusBox="closeAddOfMinusBox" />
</el-dialog>
</template>
<script>
import { tableMergeTrade } from "@/api/people/peopledata";
import { getQualityBylawsTasks } from "@/api/systemaccredit/systemapi"
import plusMinusScore from "@/views/qualitative/qualitativecont/plus_minus_score"
export default {
name: 'bylaws',
components: {
plusMinusScore
},
props:['bylawsBox','orgTarget','closeBylawsBox'],
data() {
return {
//
searchBylawsInfo:{
orgid:"",
targetid:"",
title:"",
page:1,
pagesize:20,
},
mergeBylawsArr: ['columntitle',"endClick"], //
mergeBylawsObj:[],
bylawsTotal:0,
currBylawsPage:1,
tableBylawsHeight:450, //
bylawsList:[], //
addOfMinusBox:false, //
addOfMinusCont:{}, //
addOfMinusAttribute:1, //12
}
},
created(){
},
watch: {
bylawsBox(){
if(this.bylawsBox){
console.log("考核细则处理--1->",this.bylawsBox,this.orgTarget)
this.searchBylawsInfo.orgid = this.orgTarget.orgid;
this.searchBylawsInfo.targetid = this.orgTarget.targetid;
this.getBylawsList();
}
}
},
methods:{
//
async getBylawsList(){
const res = await getQualityBylawsTasks(this.searchBylawsInfo)
console.log("获取考核项目-->",res)
if(res.code == 0){
this.bylawsList = res.data.list
this.bylawsTotal = res.data.total
this.mergeBylawsObj = tableMergeTrade(this.bylawsList,this.mergeBylawsArr,"endClick")
// console.log("--->",this.mergeBylawsObj)
}
},
//
handleClose(){
this.$emit('closeBylawsBox');
this.initBylawsCont();
},
//
bylawsCurrentChange(val) {
this.searchBylawsInfo.page = val
this.getBylawsList();
},
//
initBylawsCont(){
this.searchBylawsInfo={
orgid:"",
targetid:"",
title:"",
page:1,
pagesize:20,
};
this.bylawsList=[];
this.bylawsTotal = 0;
this.currBylawsPage = 1
},
//
searckBylawsClick(){
this.searchBylawsInfo.page = 1
this.getBylawsList();
},
//
addOrSubtraction(val,attribute){
console.log("加减--->",val,attribute)
this.addOfMinusCont= val
this.addOfMinusAttribute = attribute
this.addOfMinusBox = true;
},
//
closeAddOfMinusBox(){
this.addOfMinusBox=false;
this.addOfMinusCont={};
},
//
// { , , , }
objectBylawsMethod({ row, column, rowIndex, columnIndex }) {
// console.log(" { , , , }",row, column, rowIndex, columnIndex)
//
if(this.mergeBylawsArr.indexOf(column.property) !== -1) {
// 0
if(this.mergeBylawsObj[column.property][rowIndex]) {
return [this.mergeBylawsObj[column.property][rowIndex], 1]
} else {
// 0
return [0, 0];
}
}
},
}
}
</script>
<style lang='less'>
.scoreLink{
padding: 0 5px;
}
</style>

455
src/views/qualitative/qualitativecont/plus_minus_score.vue

@ -0,0 +1,455 @@
<!--
@ 作者: 秦东
@ 时间: 2023-04-01 16:20:57
@ 备注: 加减分
-->
<template>
<el-dialog :title="addOfMinusTitle" :visible.sync="addOfMinusBox" width="620px" top="10px" append-to-body :before-close="handlePlusMinusClose" custom-class="">
<el-row>
<el-col :span="24">
<el-form :model="fromDataCont" :rules="rulesAddFrom" ref="ruleForm" label-width="0px" class="demo-ruleForm">
<el-descriptions class="margin-top" :column="4" :size="size" border>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
考核项目
</template>
{{ addOfMinusCont.columntitle }}
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
考核内容
</template>
{{ addOfMinusCont.title }}
</el-descriptions-item>
<el-descriptions-item span="3" label-class-name="my-label" content-class-name="my-label">
<template slot="label">
考核标准
</template>
{{ addOfMinusCont.standard }}
</el-descriptions-item>
<el-descriptions-item label-class-name="my-label">
<template slot="label">
考核单位
</template>
{{ addOfMinusCont.unit }}
</el-descriptions-item>
<el-descriptions-item span="4" v-if="addOfMinusCont.scoretype!=1" label-class-name="my-label">
<template slot="label">
<div class="lable_title">分值</div>
</template>
<el-form-item label="" style="margin-bottom:10px; margin-top:5px" prop="score">
<el-input v-model="fromDataCont.score" clearable placeholder="请输入分值(小数最多只能输入两位)" oninput="if(isNaN(value)) { value = null } if(value.indexOf('.')>0){value=value.slice(0,value.indexOf('.')+3)}" autocomplete="off" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item span="4" v-if="addOfMinusCont.scoretype==1" label-class-name="my-label">
<template slot="label">
<div class="lable_title">发生次数</div>
</template>
<el-form-item label="" style="margin-bottom:10px; margin-top:5px" prop="frequency">
<el-input-number v-model="fromDataCont.frequency" :step="1" :min="1" :max="100" step-strictly></el-input-number>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
<div class="lable_title">原因</div>
</template>
<el-form-item label="" style="margin-bottom:10px; margin-top:5px" prop="reason">
<el-input type="textarea" :rows="4" placeholder="请输入原因" v-model="fromDataCont.reason"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
<div class="lable_title">发生时间</div>
</template>
<el-form-item label="" style="margin-bottom:10px; margin-top:5px" prop="time">
<el-date-picker
v-model="fromDataCont.time"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
是否整改
</template>
<el-switch
v-model="fromDataCont.correct"
active-text="需要整改"
inactive-text="无需整改"
inactive-color="#ff4949"
active-value="1"
inactive-value="2"
@change="zhengGai($event)"
>
</el-switch>
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label" v-if="fromDataCont.attribute==1">
<template slot="label">
<div class="lable_title">整改期限</div>
</template>
<el-form-item label="" style="margin-bottom:10px; margin-top:5px" prop="duetime">
<el-date-picker
v-model="fromDataCont.duetime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
上传附件
</template>
<el-upload
:action="actionUrl"
list-type="picture-card"
:auto-upload="true"
:multiple="false"
:file-list="fileDataList"
:on-success="attachUploadSuccess"
:on-error="attachError"
:headers="headers"
:accept="fileType"
:limit="maxFileCount"
:on-exceed="excFileCount"
>
<i slot="default" class="el-icon-plus"></i>
<div slot="file" slot-scope="{file}">
<img
class="el-upload-list__item-thumbnail"
:src="file.url" alt=""
>
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePictureCardPreview(file)"
>
<i class="el-icon-zoom-in"></i>
</span>
<span
class="el-upload-list__item-delete"
@click="handleRemove(file,fileDataList)"
>
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload>
<el-dialog :visible.sync="dialogVisible" append-to-body>
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-col>
<el-col :span="24">
<el-card class="box-card ge_li">
<el-steps direction="vertical" :active="buzhou">
<el-step v-for="(item,index) in workflowListCont" :key="index" :title="item.nodename" icon="el-icon-circle-check" >
<template slot="description">
<div style="color: rgb(153,153,153);" v-for="(a,userlistIndex) in item.userlist" :key="userlistIndex">
<el-row>
<el-col :span="2" v-if="a.log!=null">
<el-badge is-dot type="primary ">
<el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar>
</el-badge>
</el-col>
<el-col :span="2" v-else>
<el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar>
</el-col>
<el-col :span="20" style="margin-top: -5px;">
{{a.departmentname}}-{{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">{{i.time}}</div>
</div>
</el-row>
</el-col>
</el-row>
</div>
<el-row v-if="nodeIsShow(item)">
<el-col :span="2" >
<div class="addPeople" @click="addManCont(item)">
<span class="el-icon-plus"></span>
</div>
</el-col>
</el-row>
<peopleTransfer :addManBox="addManBox" :checkedUser="checkedUser" @closeAddManBox="closeAddManBox" />
</template>
</el-step>
</el-steps>
</el-card>
</el-col>
<el-col :span="24"></el-col>
<el-col :span="24"></el-col>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="handlePlusMinusClose"> </el-button>
<el-button type="primary" @click="saveDataDialog" :loading="clickLoading"> </el-button>
</span>
</el-dialog>
</template>
<script>
import bookfile from "@/images/bookfile.png"
import quzheng from "@/images/quzheng.png"
import { getWorkflowFullView } from "@/api/systemaccredit/systemapi"
import peopleTransfer from "@/views/qualitative/qualitativecont/xuanren/peopleTransfer"
export default {
components: { peopleTransfer },
name: 'plusMinusScoreDx',
props:['addOfMinusBox','addOfMinusCont','addOfMinusAttribute','closeAddOfMinusBox','orgTarget'],
data() {
return {
maxFileCount:5, //
fileType:".jpg,.jpeg,.png,.gif,.bmp,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.mp4,.avi.3gp", //
fileDataList: [], //
dialogImageUrl:quzheng, //
dialogVisible:false, //
clickLoading:false,
size:"",
addOfMinusTitle:"减分操作",
fromDataCont:{
id:"",
score:"",
frequency:1,
time:"",
correct:2, // 12
duetime:"", //
}, //
rulesAddFrom:{
score:[{ required: true, message: '请输入分值', trigger: 'blur' }],
frequency:[{ required: true, message: '请输入发生次数', trigger: 'blur' }],
reason:[{ required: true, message: '请输入原因', trigger: 'blur' }],
time:[{ required: true, message: '请输选择发生时间', trigger: 'blur' }],
duetime:[{ required: true, message: '请输选择整改期限', trigger: 'blur' }],
}, //
workflowListCont:[], //
buzhou:1, //Id
flowIsTrue:true, //
addManBox:false, //
checkedUser:[], //
}
},
created(){
},
computed: {
//API
actionUrl() {
return "/api/upordown"
},
//
headers() {
return { token: "mytoken" }
},
},
watch: {
addOfMinusBox(){
if(this.addOfMinusBox){
console.log("考核细则处理--2232->",this.addOfMinusBox,this.addOfMinusCont,this.orgTarget)
if(this.plusminusscore != 1){
this.addOfMinusTitle="加分操作"
}else{
this.addOfMinusTitle="减分操作"
}
this.fromDataCont.id=this.addOfMinusAttribute.id
this.addOfMinusCont.scoretype=1
this.getWorkflowView();
}
}
},
methods:{
//
zhengGai(val){
console.log("整改开关",val)
this.fromDataCont.correct = val
this.getWorkflowView();
},
//
async getWorkflowView(){
let sendData ={
flowworkid: "103820507006115840",
orgid: this.orgTarget.orgid,
condition: [
{
words: "attribute",
price: "1"
},
{
words: "correct",
price: this.fromDataCont.correct.toString()
}
]
}
console.log("获取流程图---发送参数--->",sendData)
const res = await getWorkflowFullView(sendData)
console.log("获取流程图-->",res)
if(res.code == 0){
this.workflowListCont = res.data.nodecontlist
}
},
//
excFileCount(files, fileList){
this.$message.warning(`当前限制选择 ${this.maxFileCount} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
//
attachUploadSuccess(response, file, fileList) {
// console.log("",response, file, fileList)
if(response.code == 0){
let fengmian = quzheng
if(response.data.type != 1){
fengmian = bookfile
}else{
fengmian = response.data.url
}
this.fileDataList.push({
id: response.data.ID,
name: response.data.name,
url: fengmian,
fileUrl: response.data.url,
physicspath: response.data.physicspath,
type:response.data.type,
fileSize:response.data.fileSize,
size:response.data.size,
tag:response.data.tag
})
}
},
//
attachError(err, file, fileList) {
// console.log("--->",err, file, fileList)
this.$message.warning("当前文件上传失败!");
},
//
handleRemove(file) {
console.log(file,this.fileDataList);
let removeId = file.id
this.fileDataList.forEach((item, index) => {
if (item.id == removeId) {
this.fileDataList.splice(index, 1)
}
})
},
//
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
//
handlePlusMinusClose(){
this.fileDataList=[]
this.fromDataCont.correct = 2;
this.$refs.ruleForm.resetFields();
this.$emit('closeAddOfMinusBox');
},
//
async saveDataDialog(){
this.$refs.ruleForm.validate((valid) => {
if (valid) {
console.log("没有问题",valid)
}else{
console.log("1")
return false;
}
});
},
//
nodeIsShow(val){
// console.log("",val)
let isShow = false;
switch(val.runtype){
case 1:
if(val.step == 1){
isShow = true;
this.flowIsTrue = true;
}else{
isShow = false;
}
break;
case 2:
// isShow = true;
break;
case 3: //
if(val.customNode == this.workflowListCont.currentnode){
isShow = true;
}else{
isShow = false;
}
break;
case 4: //
if(val.runscope == 1){ //11
isShow = true;
}else{
isShow = false;
}
break;
default:
isShow= false;
break;
}
return isShow;
},
//
addManCont(manCont){
console.log("节点添加人员",manCont)
if(manCont.userlist){
if(manCont.userlist.length > 0){
manCont.userlist.forEach(item => {
if(item.xuan==1){
this.checkedUser.push(item)
}
})
}
}
this.addManBox = true
},
//
closeAddManBox(){
this.addManBox = false
},
}
}
</script>
<style lang='less'>
.my-label{
width: 80px;
}
.lable_title{
width: 100%;
height: 100%;
margin-top: 15px;
}
.ge_li{
margin-top: 20px;
}
.gundong_dialog{
height: 500px;
overflow: hidden;
overflow-y: auto;
}
.addPeople{
border: 1px dashed #c0ccda;
background-color: #fbfdff;
text-align: center;
width: 30px;
height: 30px;
font-size: 20px;
color: #8c939d;
cursor: pointer;
span{
margin-top: 5px;
}
}
</style>

124
src/views/qualitative/qualitativecont/plus_minus_score_20230403.vue

@ -0,0 +1,124 @@
<!--
@ 作者: 秦东
@ 时间: 2023-04-01 16:20:57
@ 备注: 加减分
-->
<template>
<el-dialog :title="addOfMinusTitle" :visible.sync="addOfMinusBox" width="600px" append-to-body :before-close="handlePlusMinusClose">
<el-row>
<el-col :span="24">
<el-descriptions class="margin-top" :column="4" :size="size" border>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
考核项目
</template>
{{ addOfMinusCont.columntitle }}
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
考核内容
</template>
{{ addOfMinusCont.title }}
</el-descriptions-item>
<el-descriptions-item span="3" label-class-name="my-label" content-class-name="my-label">
<template slot="label">
考核标准
</template>
{{ addOfMinusCont.standard }}
</el-descriptions-item>
<el-descriptions-item label-class-name="my-label">
<template slot="label">
考核单位
</template>
{{ addOfMinusCont.unit }}
</el-descriptions-item>
<el-descriptions-item span="4" v-if="addOfMinusCont.scoretype!=1" label-class-name="my-label">
<template slot="label">
分值
</template>
<el-input v-model="fromDataCont.score" clearable placeholder="请输入分值(小数最多只能输入两位)" oninput="if(isNaN(value)) { value = null } if(value.indexOf('.')>0){value=value.slice(0,value.indexOf('.')+3)}" />
</el-descriptions-item>
<el-descriptions-item span="4" v-if="addOfMinusCont.scoretype==1" label-class-name="my-label">
<template slot="label">
发生次数
</template>
<el-input-number v-model="fromDataCont.frequency" :step="1" step-strictly></el-input-number>
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
原因
</template>
<el-input type="textarea" :rows="4" placeholder="请输入原因" v-model="fromDataCont.reason"></el-input>
</el-descriptions-item>
<el-descriptions-item span="4" label-class-name="my-label">
<template slot="label">
发生时间
</template>
<el-date-picker
v-model="fromDataCont.time"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择日期时间">
</el-date-picker>
</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col :span="24"></el-col>
<el-col :span="24"></el-col>
<el-col :span="24"></el-col>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="handlePlusMinusClose"> </el-button>
<el-button type="primary" @click="saveDataDialog"> </el-button>
</span>
</el-dialog>
</template>
<script>
export default {
name: 'plusMinusScoreDx',
props:['addOfMinusBox','addOfMinusCont','addOfMinusAttribute','closeAddOfMinusBox'],
data() {
return {
size:"",
addOfMinusTitle:"减分操作",
fromDataCont:{
id:"",
score:"",
frequency:1,
}, //
}
},
created(){
},
watch: {
addOfMinusBox(){
if(this.addOfMinusBox){
console.log("考核细则处理--->",this.addOfMinusBox,this.addOfMinusCont)
if(this.plusminusscore != 1){
this.addOfMinusTitle="加分操作"
}else{
this.addOfMinusTitle="减分操作"
}
this.fromDataCont.id=this.addOfMinusAttribute.id
}
}
},
methods:{
//
handlePlusMinusClose(){
this.$emit('closeAddOfMinusBox');
},
//
async saveDataDialog(){
},
}
}
</script>
<style lang='less'>
.my-label{
width: 80px;
}
</style>

215
src/views/qualitative/qualitativecont/xuanren/peopleTransfer.vue

@ -0,0 +1,215 @@
<!--
@ 作者: 秦东
@ 时间: 2023-04-05 10:33:33
@ 备注: 选人
-->
<template>
<el-dialog title="选择人员" :visible.sync="addManBox" width="620px" append-to-body :before-close="closePeopleAddBox" custom-class="dia_box">
<el-row :gutter="5">
<el-col :span="12">
<div class="box_body">
<el-row>
<el-col :span="24">
<el-input prefix-icon="el-icon-search" size="small" v-model="searchPeople" placeholder="请输入姓名或工号" ></el-input>
</el-col>
<el-col :span="24" class="mianbaox">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item><span @click="breadClick(309)">所有</span></el-breadcrumb-item>
<el-breadcrumb-item><span @click="breadClick(309)">企管部</span></el-breadcrumb-item>
<el-breadcrumb-item><span @click="breadClick(309)">IT</span></el-breadcrumb-item>
</el-breadcrumb>
</el-col>
<el-col :span="24">
<div class="left_man_box">
<el-row class="ui_li_list lv_lan_se">
<el-col :span="2">
<i class="fa fa-lg fa-check-square-o"></i>
</el-col>
<el-col :span="2">
<!-- <el-image :src="departpic"></el-image> -->
<span class="fa fa-lg fa-sitemap"></span>
</el-col>
<el-col :span="15" class="listmank">企管部</el-col>
<el-col :span="4" class="rightLint"><span>下级</span></el-col>
</el-row>
<el-row class="ui_li_list">
<el-col :span="2">
<i class="fa fa-lg fa-square-o"></i>
</el-col>
<el-col :span="2">
<span class="fa fa-lg fa-sitemap"></span>
</el-col>
<el-col :span="15" class="listmank">企管部</el-col>
<el-col :span="4" class="rightLint"><span>下级</span></el-col>
</el-row>
</div>
</el-col>
</el-row>
</div>
</el-col>
<el-col :span="12">
<div class="box_body_right">
<el-row>
<el-col :span="12" class="right_hear">已选择{{ selected }}</el-col>
<el-col :span="12" class="right_hear clear_cont"><span>清除</span></el-col>
<el-col :span="24" class="seleced_body">
<el-row class="ui_li_list">
<el-col :span="2"><el-image :src="departpic"></el-image></el-col>
<el-col :span="18" class="sel_mancont">秦东</el-col>
<el-col :span="4" class="del_mancont"><i class="el-icon-circle-close"></i></el-col>
</el-row>
<el-row class="ui_li_list">
<el-col :span="2"><el-image :src="departpic"></el-image></el-col>
<el-col :span="18" class="sel_mancont">秦东</el-col>
<el-col :span="4" class="del_mancont"><i class="el-icon-circle-close"></i></el-col>
</el-row>
</el-col>
</el-row>
</div>
</el-col>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="closePeopleAddBox"> </el-button>
<el-button type="primary" @click="saveManDataDialog" :loading="clickManLoading"> </el-button>
</span>
</el-dialog>
</template>
<script>
import bumenpic from "@/images/bumen.png"
export default {
name:"xuanren",
props:['addManBox','userlist','closeAddManBox'],
data() {
return {
selected:0, //
departpic:bumenpic,
searchPeople:"", //
clickManLoading:false, //
checkList:[], //
}
},
created(){
console.log(this.departpic,bumenpic)
},
watch: {
addManBox(){
if(this.addManBox){
console.log("添加人员--2232->",this.addManBox,this.userlist)
// if(this.plusminusscore != 1){
// this.addOfMinusTitle=""
// }else{
// this.addOfMinusTitle=""
// }
// this.fromDataCont.id=this.addOfMinusAttribute.id
// this.addOfMinusCont.scoretype=1
// this.getWorkflowView();
}
}
},
methods:{
//
breadClick(orgid){
console.log("面包屑",orgid)
},
//
closePeopleAddBox(){
this.$emit('closeAddManBox');
},
//
saveManDataDialog(){
console.log("保存选中的内容")
}
}
}
</script>
<style lang='less'>
.dia_box{
padding: 0px 0px;
}
.box_body{
border: 1px solid #f5f5f5;
height: 450px;
padding: 10px 0 10px 10px;
}
.box_body_right{
border: 1px solid #f5f5f5;
height: 450px;
}
.mianbaox{
padding: 10px 0 5px 0;
color: #38adff;
span{
color: #38adff;
cursor: pointer;
}
}
.el-dialog__body{
padding: 15px 25px;
}
.ui_li_list{
margin: 5px 0;
}
.left_man_box{
width: 100%;
height: 375px;
overflow: hidden;
overflow-y: auto;
i{
margin: 7px 0 0 2px;
width: 16px;
height: 16px;
}
}
.xuanze_1{
width: 16px;
height: 16px;
border: 1px solid #dcdfe6;
border-radius: 2px;
text-align: center;
padding: 0px;
}
.rightLint{
border-left: 1px solid #eeeeee;
text-align: right;
cursor: pointer;
}
.listmank{
padding: 0px 0 0 5px;
font-size: 16px;
}
.right_hear{
padding: 10px 15px;
border-bottom: 1px solid #f5f5f5;
}
.clear_cont{
text-align: right;
color: #38adff;
cursor: pointer;
}
.seleced_body{
width: 100%;
padding: 0px 15px;
height: 400px;
overflow: hidden;
overflow-y: auto;
font-size: 16px;
}
.del_mancont{
text-align: right;
color: #FF0000;
}
.sel_mancont{
padding-left: 5px;
}
.lv_lan_se{
color: #38adff;
}
</style>

15
src/views/qualitative/qualpage.vue

@ -66,6 +66,7 @@
</el-table-column>
</el-table>
</div>
<bylaws :bylawsBox="bylawsBox" :orgTarget="orgTarget" @closeBylawsBox="closeBylawsBox" />
</el-main>
<el-footer>
<div class="block">
@ -84,7 +85,12 @@
import { tableMergeTrade } from "@/api/people/peopledata";
import { govthree } from "@/api/personnel/post";
import { GetQualityTasks } from "@/api/systemaccredit/systemapi"
import bylaws from "@/views/qualitative/qualitativecont/bylaws"
export default {
name:"targetcont",
components: {
bylaws
},
data() {
return {
mergeObj: {}, //
@ -183,6 +189,7 @@ export default {
},
//
searckClick(){
this.searchInfo.page = 1
this.dingXingList();
},
@ -213,6 +220,14 @@ export default {
this.bylawsBox=true;
},
//
closeBylawsBox(){
this.bylawsBox=false;
this.orgTarget={
orgid:"", //
targetid:"", //
}
}
}
}
</script>

29
src/views/workflow/editflowcont.vue

@ -7,7 +7,7 @@
<el-dialog title="编辑流程" :visible.sync="editWorkFlowIsShow" top="10px" width="90%" :before-close="closeDialogLook" class="dialogClass">
<el-row :gutter="15">
<el-col :span="2">
<el-col :span="2" style="line-height: 40px;">
名称
</el-col>
<el-col :span="5">
@ -17,7 +17,7 @@
clearable>
</el-input>
</el-col>
<el-col :span="2">
<el-col :span="2" style="line-height: 40px;">
描述
</el-col>
<el-col :span="5">
@ -27,6 +27,16 @@
clearable>
</el-input>
</el-col>
<el-col :span="2" style="line-height: 40px;">
关联企业微信
</el-col>
<el-col :span="8" style="line-height: 40px;">
<el-radio-group v-model="flowConfig.wechat">
<el-radio :label="1">无需关联</el-radio>
<el-radio :label="2">仅通知</el-radio>
<el-radio :label="3">通知和审批</el-radio>
</el-radio-group>
</el-col>
<el-col :span="24" style="margin-top:5px">
版本<el-button v-for="item in versionList" :key="item.id" type="primary" :plain="item.version==varsionCode?false:true" size="mini" class="versionclick active" @click="varyClick(item)">{{ item.version }}</el-button>
</el-col>
@ -66,7 +76,7 @@
</el-dialog>
</template>
<script>
import { getWorkFlowVersionList } from "@/api/workflowapi/workflowaip"
import { getWorkFlowVersionList,EditWorkFlowCont } from "@/api/workflowapi/workflowaip"
import promoterDrawer from "@/customworkflow/drawer/promoterDrawer" //
import approverDrawer from "@/customworkflow/drawer/approverDrawer" //
import copyerDrawer from "@/customworkflow/drawer/copyerDrawer" //
@ -97,7 +107,8 @@ export default {
flowConfig:{
flowid:"",
name:"",
describe:""
describe:"",
wechat:0
}, //
versionId:0,
}
@ -121,6 +132,7 @@ export default {
this.flowConfig.flowid = tableId
this.flowConfig.name = this.editWorkFlowInfo.name
this.flowConfig.describe = this.editWorkFlowInfo.describe
this.flowConfig.wechat = this.editWorkFlowInfo.openwechat
this.versionId = this.editWorkFlowInfo.vid
this.getWorkFlowVersionList();
}
@ -195,10 +207,16 @@ export default {
name:this.flowConfig.name,
describe:this.flowConfig.describe,
versionid:this.versionId.toString(),
wecaht:this.flowConfig.wecaht,
flowcont:this.processConfig
}
console.log("saveSet---发布--4->",sendData)
this.closeDialogLook()
const res = await EditWorkFlowCont(sendData)
console.log("saveSet---发布--5->",res)
if(res.code == 0){
this.closeDialogLook()
}
},
}
}
@ -206,6 +224,7 @@ export default {
<style lang='less'>
.miaoshu{
padding-left: 25px;
}
.versionclick{
.active{

16
src/views/workflow/flowcont.vue

@ -9,13 +9,20 @@
<el-step title="基本信息">2</el-step>
<el-step title="设置流程"></el-step>
</el-steps>
<el-form ref="form" v-show="flowActive==1" :model="flowConfig" label-width="90px" style="margin-top:50px">
<el-form ref="form" v-show="flowActive==1" :model="flowConfig" label-width="100px" style="margin-top:50px">
<el-form-item label="工作流名称">
<el-input v-model="flowConfig.name"></el-input>
</el-form-item>
<el-form-item label="工作流描述">
<el-input type="textarea" v-model="flowConfig.describe"></el-input>
</el-form-item>
<el-form-item label="关联企业微信">
<el-radio-group v-model="flowConfig.wechat">
<el-radio :label="1">无需关联</el-radio>
<el-radio :label="2">仅通知</el-radio>
<el-radio :label="3">通知和审批</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div class="kuangjiangao" v-show="flowActive==2">
<div class="dashboard-container">
@ -84,7 +91,8 @@ export default {
flowConfig:{
flowid:"",
name:"",
describe:""
describe:"",
wechat:1
}, //
}
},
@ -138,9 +146,10 @@ export default {
flowid:this.flowConfig.flowid.toString(),
name:this.flowConfig.name,
describe:this.flowConfig.describe,
wecaht:this.flowConfig.wecaht,
flowcont:this.processConfig
}
// console.log("saveSet-----4->",sendData)
console.log("saveSet---发布--4->",sendData)
const res = await publishWorkFlow(sendData);
// console.log("saveSet-----3->",res)
if(res.code == 0){
@ -194,6 +203,7 @@ export default {
initConfig(){
this.flowConfig.name = "";
this.flowConfig.describe = "";
this.flowConfig.wecaht = 1;
this.nodeConfig={};
this.flowPermission=[];
this.directorMaxLevel = 0

Loading…
Cancel
Save