You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
288 lines
8.1 KiB
288 lines
8.1 KiB
|
1 year ago
|
<!--
|
||
|
|
@ 作者: 秦东
|
||
|
|
@ 时间: 2023-10-11 08:39:10
|
||
|
|
@ 备注: 发起人节点操作
|
||
|
|
-->
|
||
|
|
<script lang='ts' setup>
|
||
|
|
import employeesDialog from '@/components/workflow/dialog/employeesDialog.vue'
|
||
|
|
import { AnalysisForm } from '@/components/workflow/drwer/analysisForm'
|
||
|
|
import $func from '@/utils/workflow/index'
|
||
|
|
import { useStore } from '@/store/workflow/index'
|
||
|
|
|
||
|
|
import { analysisForm,setFlowFormKeyPower } from '@/api/workflowapi/index'
|
||
|
|
import AssociatedFormsTinyace from '@/widget/associatedforms/associatedFormsTinyace.vue'
|
||
|
|
|
||
|
|
|
||
|
|
const props = defineProps({
|
||
|
|
formData:{
|
||
|
|
type:Object,
|
||
|
|
default(){
|
||
|
|
return {}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
formKey:{
|
||
|
|
type:String,
|
||
|
|
default:""
|
||
|
|
},
|
||
|
|
formVersion:{
|
||
|
|
type:String,
|
||
|
|
default:""
|
||
|
|
},
|
||
|
|
nodeConfig:{
|
||
|
|
type: Object,
|
||
|
|
default: () => ({}),
|
||
|
|
},
|
||
|
|
});
|
||
|
|
const emits = defineEmits<{
|
||
|
|
(e: 'update:formData', val: any): void
|
||
|
|
}>()
|
||
|
|
|
||
|
|
const formData = computed({
|
||
|
|
get() {
|
||
|
|
return props.formData
|
||
|
|
},
|
||
|
|
set(val: formStruct) {
|
||
|
|
emits('update:formData', val)
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//当前节点操作权限
|
||
|
|
// const
|
||
|
|
|
||
|
|
let flowPermission = ref([])
|
||
|
|
let promoterVisible = ref(false)
|
||
|
|
let checkedList = ref([])
|
||
|
|
|
||
|
|
let store = useStore()
|
||
|
|
let { setPromoter, setFlowPermission } = store
|
||
|
|
let approverConfig1 = computed(():any=> store.approverConfig1)
|
||
|
|
let promoterDrawer = computed(()=> store.promoterDrawer)
|
||
|
|
let flowPermission1 = computed(()=> store.flowPermission1)
|
||
|
|
let visible = computed({
|
||
|
|
get() {
|
||
|
|
return promoterDrawer.value
|
||
|
|
},
|
||
|
|
set() {
|
||
|
|
closeDrawer()
|
||
|
|
}
|
||
|
|
})
|
||
|
|
watch(flowPermission1, (val) => {
|
||
|
|
flowPermission.value = val.value
|
||
|
|
})
|
||
|
|
|
||
|
|
const addPromoter = () => {
|
||
|
|
checkedList.value = flowPermission.value
|
||
|
|
promoterVisible.value = true;
|
||
|
|
}
|
||
|
|
const surePromoter = (data:any) => {
|
||
|
|
flowPermission.value = data;
|
||
|
|
promoterVisible.value = false;
|
||
|
|
}
|
||
|
|
const savePromoter = () => {
|
||
|
|
setFlowPermission({
|
||
|
|
value: flowPermission.value,
|
||
|
|
flag: true,
|
||
|
|
id: flowPermission1.value.id
|
||
|
|
})
|
||
|
|
let powerAry = [];
|
||
|
|
if(powerUnitAry.value.recUnitAry.masterUnitList && powerUnitAry.value.recUnitAry.masterUnitList.length > 0){
|
||
|
|
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item:any)=>{
|
||
|
|
powerAry.push(item)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
if(powerUnitAry.value.recUnitAry.sunUnitList && powerUnitAry.value.recUnitAry.sunUnitList.length > 0){
|
||
|
|
powerUnitAry.value.recUnitAry.sunUnitList.forEach((item:any)=>{
|
||
|
|
if(item.masterUnitList && item.masterUnitList.length > 0){
|
||
|
|
item.masterUnitList.forEach((itemSun:any) => {
|
||
|
|
// powerAry.push(item)
|
||
|
|
if(!powerAry.includes(itemSun)){
|
||
|
|
powerAry.push(itemSun)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
// console.log("正确",formData.value)
|
||
|
|
if(formData.value.purview){
|
||
|
|
// console.log("正确")
|
||
|
|
let isNew = true
|
||
|
|
formData.value.purview.forEach((item:any)=>{
|
||
|
|
// console.log("正确---->",item.nodeKey)
|
||
|
|
if(item.nodeKey == "begin"){
|
||
|
|
item.powerAry=powerAry
|
||
|
|
isNew = false
|
||
|
|
}
|
||
|
|
});
|
||
|
|
if(isNew){
|
||
|
|
formData.value.purview.push({
|
||
|
|
nodeKey: "begin",
|
||
|
|
powerAry:powerAry
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
formData.value.purview = [{
|
||
|
|
nodeKey: "begin",
|
||
|
|
powerAry:powerAry
|
||
|
|
}]
|
||
|
|
}
|
||
|
|
|
||
|
|
// formData.value.purview.push({
|
||
|
|
// nodeKey: "begin",
|
||
|
|
// powerAry:powerAry
|
||
|
|
// }) {{props.formKey}}=>{{props.formVersion}}
|
||
|
|
|
||
|
|
let sendInfo: any = {
|
||
|
|
formKey:props.formKey.toString(),
|
||
|
|
formVersion:props.formVersion.toString(),
|
||
|
|
formData:JSON.stringify(formData.value),
|
||
|
|
formPower:JSON.stringify(formData.value.purview)
|
||
|
|
}
|
||
|
|
// console.log("sendInfo",sendInfo)
|
||
|
|
setFlowFormKeyPower(sendInfo)
|
||
|
|
// console.log("formDataAll",formData)
|
||
|
|
// console.log("formData",formData.value.purview)
|
||
|
|
closeDrawer()
|
||
|
|
}
|
||
|
|
const closeDrawer = () => {
|
||
|
|
setPromoter(false)
|
||
|
|
}
|
||
|
|
|
||
|
|
const powerUnitAry = ref<any>({
|
||
|
|
nodeKey:"",
|
||
|
|
recUnitAry:{
|
||
|
|
masterUnitList:[],
|
||
|
|
sunUnitList:[],
|
||
|
|
unitAllKey:[],
|
||
|
|
unitAllState:[]
|
||
|
|
}
|
||
|
|
})
|
||
|
|
/**
|
||
|
|
@ 作者: 秦东
|
||
|
|
@ 时间: 2024-03-13 08:24:54
|
||
|
|
@ 功能: 解析表单
|
||
|
|
*/
|
||
|
|
const jieForm = () => {
|
||
|
|
analysisForm({nodeKey:"begin",nodeJson:JSON.stringify(formData.value)})
|
||
|
|
.then((data)=>{
|
||
|
|
if(data.code == 0){
|
||
|
|
powerUnitAry.value = data.data
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
watch(()=>visible.value,(val:boolean)=>{
|
||
|
|
if(val){
|
||
|
|
jieForm();
|
||
|
|
}
|
||
|
|
})
|
||
|
|
const nodeSetUp = ref("first")
|
||
|
|
const contentpage = ref("")
|
||
|
|
</script>
|
||
|
|
<template>
|
||
|
|
<el-drawer v-model="visible" :append-to-body="true" title="发起人" class="set_promoter" :show-close="false" :size="550" :before-close="closeDrawer">
|
||
|
|
<div class="demo-drawer__content">
|
||
|
|
|
||
|
|
<div class="promoter_content drawer_content">
|
||
|
|
<el-tabs v-model="nodeSetUp" class="demo-tabs">
|
||
|
|
<el-tab-pane name="first">
|
||
|
|
<template #label>
|
||
|
|
<span class="wordKeyCss">属性设置</span>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<!-- <el-divider content-position="left">节点属性</el-divider> -->
|
||
|
|
<div class="info_box">
|
||
|
|
<p>{{ $func.arrToStr(flowPermission) || '所有人' }}</p>
|
||
|
|
<el-button type="primary" @click="addPromoter">添加/修改发起人</el-button>
|
||
|
|
</div>
|
||
|
|
</el-tab-pane>
|
||
|
|
<el-tab-pane name="second">
|
||
|
|
<template #label>
|
||
|
|
<span class="wordKeyCss">操作权限</span>
|
||
|
|
</template>
|
||
|
|
<!-- <el-divider content-position="left">操作权限</el-divider> -->
|
||
|
|
<div class="info_box">
|
||
|
|
<div class="table_name"><el-text class="mx-1" type="primary">主表</el-text></div>
|
||
|
|
<el-table v-if="powerUnitAry.recUnitAry.masterUnitList" :data="powerUnitAry.recUnitAry.masterUnitList" size="small" style="width: 100%; --el-table-border-color: none;" :header-cell-style="{background:'#eef1f6',color:'#606266'}" class="customer-no-border-table" >
|
||
|
|
<el-table-column prop="name" label="字段" />
|
||
|
|
<el-table-column label="可见" align="center" width="80">
|
||
|
|
<template #default="scope">
|
||
|
|
<el-checkbox v-model="scope.row.isLook" label="" />
|
||
|
|
</template>
|
||
|
|
</el-table-column>
|
||
|
|
<el-table-column label="可编辑" align="center" width="80">
|
||
|
|
<template #default="scope">
|
||
|
|
<el-checkbox v-model="scope.row.isEdit" label="" />
|
||
|
|
</template>
|
||
|
|
</el-table-column>
|
||
|
|
</el-table>
|
||
|
|
<el-row v-if="powerUnitAry.recUnitAry.sunUnitList" v-for="(item,index) in powerUnitAry.recUnitAry.sunUnitList" :key="index">
|
||
|
|
<el-col :span="24" class="table_name"><el-text class="mx-1" type="primary">{{item.name}}</el-text>子表</el-col>
|
||
|
|
<el-col :span="24">
|
||
|
|
<el-table v-if="item.masterUnitList" :data="item.masterUnitList" size="small" style="width: 100%; --el-table-border-color: none;" :header-cell-style="{background:'#eef1f6',color:'#606266'}">
|
||
|
|
<el-table-column prop="name" label="字段" />
|
||
|
|
<el-table-column label="可见" align="center" width="80">
|
||
|
|
<template #default="scope">
|
||
|
|
<el-checkbox v-model="scope.row.isLook" label="" />
|
||
|
|
</template>
|
||
|
|
</el-table-column>
|
||
|
|
<el-table-column label="可编辑" align="center" width="80">
|
||
|
|
<template #default="scope">
|
||
|
|
<el-checkbox v-model="scope.row.isEdit" label="" />
|
||
|
|
</template>
|
||
|
|
</el-table-column>
|
||
|
|
</el-table>
|
||
|
|
</el-col>
|
||
|
|
</el-row>
|
||
|
|
</div>
|
||
|
|
</el-tab-pane>
|
||
|
|
<el-tab-pane name="helpInstructions">
|
||
|
|
<template #label>
|
||
|
|
<span class="wordKeyCss">帮助说明</span>
|
||
|
|
</template>
|
||
|
|
<div class="info_box">
|
||
|
|
<QuillEditor v-model="props.nodeConfig.helpTips" height="400px" />
|
||
|
|
</div>
|
||
|
|
</el-tab-pane>
|
||
|
|
</el-tabs>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="demo-drawer__footer clear">
|
||
|
|
<el-button type="primary" @click="savePromoter">确 定</el-button>
|
||
|
|
<el-button @click="closeDrawer">取 消</el-button>
|
||
|
|
</div>
|
||
|
|
<employees-dialog
|
||
|
|
v-model:visible="promoterVisible"
|
||
|
|
:isdepartment="true"
|
||
|
|
:data="checkedList"
|
||
|
|
@change="surePromoter"
|
||
|
|
/>
|
||
|
|
</div>
|
||
|
|
</el-drawer>
|
||
|
|
</template>
|
||
|
|
<style lang='scss' scoped>
|
||
|
|
.set_promoter {
|
||
|
|
.promoter_content {
|
||
|
|
padding: 0 0px;
|
||
|
|
.info_box{
|
||
|
|
padding: 0 20px;
|
||
|
|
}
|
||
|
|
.el-button {
|
||
|
|
margin-bottom: 20px;
|
||
|
|
}
|
||
|
|
p {
|
||
|
|
padding: 18px 0;
|
||
|
|
font-size: 14px;
|
||
|
|
line-height: 20px;
|
||
|
|
color: #000000;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
.table_name{
|
||
|
|
padding : 10px 0
|
||
|
|
}
|
||
|
|
|
||
|
|
</style>
|