Browse Source

AI配置Demo

qin_v20
herenshan112 8 months ago
parent
commit
3d83e5ad10
  1. 28
      src/api/DesignForm/filterUnit.ts
  2. 184
      src/components/DesignForm/formControlPropertiNew.vue
  3. 73
      src/components/workflow/drwer/approverDrawer.vue
  4. 717
      src/components/workflow/drwer/promoterDrawer.vue

28
src/api/DesignForm/filterUnit.ts

@ -5,12 +5,34 @@ import { layoutUnit } from "@/api/DesignForm/fieldUnit";
@ 时间: 2025-04-11 15:12:02
@ 功能: 解析出表单可作为AI变量的元素
*/
const analysisFromUnit = (formData:formStruct) => {
console.log("解析出表单可作为AI变量的元素------------>",formData)
const analysisFromUnit = (unitInfo:formStruct) => {
console.log("解析出表单可作为AI变量的元素------------>",unitInfo)
let optionsInfo = new Array
if(unitInfo.formData&&unitInfo.formData.list && unitInfo.formData.list.length>0 ){
unitInfo.formData.list.forEach((item:any) => {
// console.log("解析出表单可作为AI变量的元素------1---1--->",item.label?1:2)
if(!layoutUnit.includes(item.type)){
let labelName = ""
if(item.label){
labelName = item.label
}else if(item.item && item.item.label){
labelName = item.item.label
}else{
labelName = item.unitName
}
console.log("解析出表单可作为AI变量的元素----2--1-1----->",item)
optionsInfo.push({
label:labelName,
value:item.name
})
}
})
}
return optionsInfo
}
export default {
export {
analysisFromUnit
}

184
src/components/DesignForm/formControlPropertiNew.vue

@ -13,7 +13,13 @@ import validateInt from "./validateInt";
import { ValidateTextTypes } from "@/components/DesignForm/validateText";
import { ElMessage } from "element-plus";
import { formatNumber } from "@/api/DesignForm/utils";
import { PublicAtrr } from "@/api/DesignForm/types";
import {
PublicAtrr,
formStruct,
CarsuselConfig,
VideoMsg,
optionsInfo,
} from "@/api/DesignForm/types";
import {
chineseToPinyin,
@ -36,7 +42,6 @@ import { Plus } from "@element-plus/icons-vue";
import Draggable from "vuedraggable-es";
import { dataBaseStruct } from "@/api/date/type";
import { formStruct } from "@/api/DesignForm/types";
import { analysisFromUnit } from "@/api/DesignForm/filterUnit";
@ -1866,8 +1871,6 @@ const updataDigit = (key: string, val: any) => {
};
//liwenxuan 20240108 vidioupload start
import { VideoMsg } from "@/api/DesignForm/types";
import { genFileId } from "element-plus";
import type { UploadInstance, UploadProps, UploadRawFile } from "element-plus";
@ -1916,7 +1919,6 @@ function videoUploadErr(error: Error, uploadFile: UploadFile, uploadFiles: Uploa
//liwenxuan 20240111 carousel start
import { Delete } from "@element-plus/icons-vue";
import { CarsuselConfig } from "@/api/DesignForm/types";
import errimg from "@/assets/404_images/untilUploadImg.png";
import { v4 as uuidv4 } from "uuid";
@ -3493,12 +3495,13 @@ const scanTypes = [
let asfs: any[] = [];
let asfsExpectCurrent: any[] = [];
const unitFormList = ref<optionsInfo[]>([]);
watch(
() => props.formList,
(dataList: any) => {
//console.log(dataList)
analysisFromUnit(props.state);
unitFormList.value = analysisFromUnit(props.state);
if (
dataList &&
Array.isArray(dataList) &&
@ -5303,52 +5306,69 @@ const libraryList = ref([
</el-tab-pane>
<el-tab-pane label="AI配置" name="aiConfig">
<el-divider content-position="left">AI触发条件设置</el-divider>
{{ props.state }}
<el-card v-for="(item, index) in props.formInfo.aiConfig" class="aiCardBox">
<template #header>
<div class="card-header">
<i class="fa fa-close" @click="delList(index)"></i>
</div>
</template>
<el-form :model="item" label-width="auto">
<el-form-item label="触发字段">
<div v-for="llItem in props.formList">{{ llItem.item }}</div>
</el-form-item>
<el-form-item label="触发方式">
<el-radio-group v-model="item.trigger">
<el-radio :value="1">全部有值</el-radio>
<el-radio :value="2">任一有值</el-radio>
<el-radio :value="3">半数以上有值</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="采用的知识库">
<el-select
v-model="item.library"
multiple
collapse-tags
placeholder="请选择采用的知识库"
>
<el-option
v-for="lItem in libraryList"
:key="lItem.value"
:label="lItem.label"
:value="lItem.value"
/>
</el-select>
</el-form-item>
<el-form-item label="结果呈现方式">
<el-radio-group v-model="item.openShowType">
<el-radio :value="1">底部展示</el-radio>
<el-radio :value="2">消息弹出框</el-radio>
<el-radio :value="3">抽屉</el-radio>
<el-radio :value="4">消息提示</el-radio>
<el-radio :value="5">通知框</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</el-card>
<div class="common-layout">
<el-scrollbar class="aiBox">
<el-card v-for="(item, index) in props.formInfo.aiConfig" class="aiCardBox">
<template #header>
<div class="card-header">
<i class="fa fa-close" @click="delList(index)"></i>
</div>
</template>
<el-form :model="item" label-width="auto">
<el-form-item label="触发字段">
<el-select
v-model="item.title"
multiple
collapse-tags
placeholder="请选择触发字段"
>
<el-option
v-for="oItem in unitFormList"
:key="oItem.value"
:label="oItem.label"
:value="oItem.value"
/>
</el-select>
</el-form-item>
<el-form-item label="触发方式">
<el-radio-group v-model="item.trigger">
<el-radio :value="1">全部有值</el-radio>
<el-radio :value="2">任一有值</el-radio>
<el-radio :value="3">半数以上有值</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="采用的知识库">
<el-select
v-model="item.library"
multiple
collapse-tags
placeholder="请选择采用的知识库"
>
<el-option
v-for="lItem in libraryList"
:key="lItem.value"
:label="lItem.label"
:value="lItem.value"
/>
</el-select>
</el-form-item>
<el-form-item label="结果呈现方式">
<el-radio-group v-model="item.openShowType">
<el-radio :value="1">底部展示</el-radio>
<el-radio :value="2">消息弹出框</el-radio>
<el-radio :value="3">抽屉</el-radio>
<el-radio :value="4">消息提示</el-radio>
<el-radio :value="5">通知框</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</el-card>
<el-button type="primary" class="aiBut" @click="addPickTracn">添加条件</el-button>
<el-button type="primary" class="aiBut" @click="addPickTracn"
>添加条件</el-button
>
</el-scrollbar>
</div>
</el-tab-pane>
</el-tabs>
</div>
@ -6321,4 +6341,66 @@ li::before {
justify-content: space-between;
align-items: center;
}
.common-layout {
width: 100%;
height: calc(100vh - 170px);
:deep .el-header {
padding: 0px;
}
:deep .el-main {
padding: 10px;
}
.asideBox {
height: calc(100vh - 170px);
}
.aiButs {
width: 94%;
margin-left: 3%;
}
.contBox {
border-right: 1px solid #ccc;
}
.titleBox {
width: 100%;
height: 40px;
border-bottom: 1px solid #ccc;
display: flex;
align-items: center;
}
.rowBox {
width: 100%;
text-align: center;
}
}
.aiBox {
width: 100%;
height: calc(100vh - 170px);
.aiBut {
width: 94%;
margin-bottom: 15px;
margin-left: 3%;
}
:deep .el-card__header {
padding: 5px 10px;
border: 0;
i {
color: #ff0000;
}
}
:deep .el-card__body {
padding: 0px 10px 10px 10px;
}
}
.aiCardBox {
width: 94%;
margin-top: 15px;
margin-bottom: 15px;
margin-left: 3%;
}
.card-header {
text-align: right;
}
</style>

73
src/components/workflow/drwer/approverDrawer.vue

@ -19,7 +19,8 @@ import { govthree } from "@/api/opk/opk/api";
import PositionDialog from "@/components/workflow/dialog/positionDialog.vue";
import FormWord from "@/components/workflow/dialog/formWord.vue";
import MatrixPage from "@/components/workflow/dialog/matrix.vue";
import { formTableField } from "@/api/DesignForm/type";
import { gainFormTableField } from "@/api/DesignForm/requestapi";
import { matrixInfo } from "@/api/matrixapi/type";
let props = defineProps({
@ -263,6 +264,7 @@ const saveApprover = () => {
// console.log("---->",item.nodeKey)
if (item.nodeKey == approverConfig1.value.value.nodeNumber) {
item.powerAry = powerAry;
item.apiSetup = apiSetup;
isNew = false;
}
});
@ -270,6 +272,7 @@ const saveApprover = () => {
formData.value.purview.push({
nodeKey: approverConfig1.value.value.nodeNumber,
powerAry: powerAry,
apiSetup: apiSetup,
});
}
} else {
@ -277,6 +280,7 @@ const saveApprover = () => {
{
nodeKey: approverConfig1.value.value.nodeNumber,
powerAry: powerAry,
apiSetup: apiSetup,
},
];
}
@ -317,6 +321,8 @@ const sureFormTableApprover = (data: any) => {
const updateMatrix = (val: any) => {
approverConfig.value.matrix = val;
};
const formTableFielding = reactive<formTableField>({});
/**
@ 作者: 秦东
@ 时间: 2024-03-13 08:24:54
@ -332,6 +338,14 @@ const jieForm = () => {
powerUnitAry.value = data.data;
}
});
if (props.customerFormKey != "") {
gainFormTableField({ id: props.customerFormKey.toString() }).then((data) => {
// console.log('--->',data)
formTableFielding.masterTable = data.data.masterTable;
formTableFielding.sunTable = data.data.sunTable;
});
}
};
watch(
@ -546,6 +560,30 @@ const setOrgTree = (val: any) => {
flowOrgTree.value!.setCheckedKeys([val], true);
}
};
const apiSetup = reactive<any>({
title: [],
library: [],
});
/**
@ 作者: 秦东
@ 时间: 2025-04-10 08:12:21
@ 功能: 知识库
*/
const libraryList = ref([
{
label: "法律法规",
value: 1,
},
{
label: "安全环保",
value: 2,
},
{
label: "员工守则",
value: 3,
},
]);
</script>
<template>
<el-drawer
@ -1023,6 +1061,39 @@ const setOrgTree = (val: any) => {
</template>
<div class="info_box">
<QuillEditor v-model="approverConfig.helpTips" height="400px" />
<el-divider content-position="left">AI触发条件设置</el-divider>
<el-form :model="apiSetup" label-width="auto">
<el-form-item label="触发字段">
<el-select
v-model="apiSetup.title"
multiple
collapse-tags
placeholder="请选择触发字段"
>
<el-option
v-for="oItem in formTableFielding.masterTable"
:key="oItem.field"
:label="oItem.label"
:value="oItem.field"
/>
</el-select>
</el-form-item>
<el-form-item label="采用的知识库">
<el-select
v-model="apiSetup.library"
multiple
collapse-tags
placeholder="请选择采用的知识库"
>
<el-option
v-for="lItem in libraryList"
:key="lItem.value"
:label="lItem.label"
:value="lItem.value"
/>
</el-select>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
</el-tabs>

717
src/components/workflow/drwer/promoterDrawer.vue

@ -3,217 +3,225 @@
@ 时间: 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'
<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: () => ({}),
},
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
}>()
(e: "update:formData", val: any): void;
}>();
const formData = computed({
get() {
return props.formData
},
set(val: formStruct) {
emits('update:formData', val)
}
const formData = computed({
get() {
return props.formData;
},
set(val: formStruct) {
emits("update:formData", val);
},
});
const isLookAll = ref(false)
const isEditAll = ref(false)
const isLookAll = ref(false);
const isEditAll = ref(false);
//
// const
// const
let flowPermission = ref([])
let promoterVisible = ref(false)
let checkedList = ref([])
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 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()
}
})
get() {
return promoterDrawer.value;
},
set() {
closeDrawer();
},
});
watch(flowPermission1, (val) => {
flowPermission.value = val.value
})
flowPermission.value = val.value;
});
const addPromoter = () => {
checkedList.value = flowPermission.value
promoterVisible.value = true;
}
const surePromoter = (data:any) => {
flowPermission.value = data;
promoterVisible.value = false;
}
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
})
// console.log(1);
let powerAry = [];
if(powerUnitAry.value.recUnitAry.masterUnitList && powerUnitAry.value.recUnitAry.masterUnitList.length > 0){
setFlowPermission({
value: flowPermission.value,
flag: true,
id: flowPermission1.value.id,
});
// console.log(1);
let powerAry = [];
if (
powerUnitAry.value.recUnitAry.masterUnitList &&
powerUnitAry.value.recUnitAry.masterUnitList.length > 0
) {
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
powerAry.push(item);
});
}
// console.log(2);
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 == props.nodeConfig.nodeNumber) {
item.powerAry = powerAry;
isNew = false;
}
});
if (isNew) {
formData.value.purview.push({
nodeKey: props.nodeConfig.nodeNumber,
powerAry: powerAry,
});
}
} else {
formData.value.purview = [
{
nodeKey: props.nodeConfig.nodeNumber,
powerAry: powerAry,
},
];
}
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item:any)=>{
powerAry.push(item)
})
}
// console.log(2);
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 == props.nodeConfig.nodeNumber){
item.powerAry=powerAry
isNew = false
}
});
if(isNew){
formData.value.purview.push({
nodeKey: props.nodeConfig.nodeNumber,
powerAry:powerAry
})
}
}else{
formData.value.purview = [{
nodeKey: props.nodeConfig.nodeNumber,
powerAry:powerAry
}]
}
// formData.value.purview.push({
// nodeKey: "begin",
// powerAry:powerAry
// }) {{props.formKey}}=>{{props.formVersion}}
// console.log(4);
// console.log("formKey--->",props.formKey.toString());
// console.log("formVersion--->",props.formVersion.toString());
// console.log("value--->",formData.value);
console.log("purview--->",formData.value.purview);
// formData.value.purview.push({
// nodeKey: "begin",
// powerAry:powerAry
// }) {{props.formKey}}=>{{props.formVersion}}
// console.log(4);
// console.log("formKey--->",props.formKey.toString());
// console.log("formVersion--->",props.formVersion.toString());
// console.log("value--->",formData.value);
console.log("purview--->", formData.value.purview);
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()
}
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)
}
setPromoter(false);
};
const powerUnitAry = ref<any>({
nodeKey:"",
recUnitAry:{
masterUnitList:[],
sunUnitList:[],
unitAllKey:[],
unitAllState:[]
}
})
nodeKey: "",
recUnitAry: {
masterUnitList: [],
sunUnitList: [],
unitAllKey: [],
unitAllState: [],
},
});
/**
@ 作者: 秦东
@ 时间: 2024-03-13 08:24:54
@ 功能: 解析表单
*/
const jieForm = () => {
// console.log("nodeConfig",props.nodeConfig)
analysisForm({nodeKey:props.nodeConfig.nodeNumber,nodeJson:JSON.stringify(formData.value)})
.then((data)=>{
if(data.code == 0){
powerUnitAry.value = data.data
// console.log("nodeConfig",props.nodeConfig)
analysisForm({
nodeKey: props.nodeConfig.nodeNumber,
nodeJson: JSON.stringify(formData.value),
}).then((data) => {
if (data.code == 0) {
powerUnitAry.value = data.data;
if(powerUnitAry.value.recUnitAry.masterUnitList && powerUnitAry.value.recUnitAry.masterUnitList.length > 0){
let allToal = powerUnitAry.value.recUnitAry.masterUnitList.length
let isAll = 0
let editAll = 0
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item:any)=>{
if(item.isLook){
isAll++
}
if(item.isEdit){
editAll++
}
})
if(isAll == allToal){
isLookAll.value = true
}
if(editAll == allToal){
isEditAll.value = true
}
}
}
})
}
if (
powerUnitAry.value.recUnitAry.masterUnitList &&
powerUnitAry.value.recUnitAry.masterUnitList.length > 0
) {
let allToal = powerUnitAry.value.recUnitAry.masterUnitList.length;
let isAll = 0;
let editAll = 0;
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
if (item.isLook) {
isAll++;
}
if (item.isEdit) {
editAll++;
}
});
if (isAll == allToal) {
isLookAll.value = true;
}
if (editAll == allToal) {
isEditAll.value = true;
}
}
}
});
};
watch(()=>visible.value,(val:boolean)=>{
if(val){
jieForm();
}
})
const nodeSetUp = ref("first")
const contentpage = ref("")
watch(
() => visible.value,
(val: boolean) => {
if (val) {
jieForm();
}
}
);
const nodeSetUp = ref("first");
const contentpage = ref("");
/**
@ 作者: 秦东
@ -221,179 +229,220 @@ const contentpage = ref("")
@ 功能: 选择情况
*/
const editOpenOrClose = (val: any) => {
if(powerUnitAry.value.recUnitAry.masterUnitList){
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item:any)=>{
item.isEdit = val
})
}
}
if (powerUnitAry.value.recUnitAry.masterUnitList) {
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
item.isEdit = val;
});
}
};
const lookOpenOrClose = (val: boolean) => {
if(powerUnitAry.value.recUnitAry.masterUnitList){
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item:any)=>{
item.isLook = val
if(!val){
item.isEdit = val
isEditAll.value = val
}
})
}
}
if (powerUnitAry.value.recUnitAry.masterUnitList) {
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
item.isLook = val;
if (!val) {
item.isEdit = val;
isEditAll.value = val;
}
});
}
};
/**
@ 作者: 秦东
@ 时间: 2024-07-25 16:09:18
@ 功能: 操作单一可见
*/
const oneLookSet = (val: any) => {
if(!val.isLook){
val.isEdit = val.isLook
isEditAll.value = val.isLook
}
if(powerUnitAry.value.recUnitAry.masterUnitList){
let lookAll = 0
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item:any)=>{
if(item.isLook){
lookAll++
}
})
if(lookAll != powerUnitAry.value.recUnitAry.masterUnitList.length){
isLookAll.value = false
}else{
isLookAll.value = true
}
}
}
if (!val.isLook) {
val.isEdit = val.isLook;
isEditAll.value = val.isLook;
}
if (powerUnitAry.value.recUnitAry.masterUnitList) {
let lookAll = 0;
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
if (item.isLook) {
lookAll++;
}
});
if (lookAll != powerUnitAry.value.recUnitAry.masterUnitList.length) {
isLookAll.value = false;
} else {
isLookAll.value = true;
}
}
};
/**
@ 作者: 秦东
@ 时间: 2024-07-25 16:17:32
@ 功能: 操作单一可编辑
*/
const oneEditSet = (val: any) => {
if(powerUnitAry.value.recUnitAry.masterUnitList){
let lookAll = 0
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item:any)=>{
if(item.isEdit){
lookAll++
}
})
if(lookAll != powerUnitAry.value.recUnitAry.masterUnitList.length){
isEditAll.value = false
}else{
isEditAll.value = true
}
}
}
if (powerUnitAry.value.recUnitAry.masterUnitList) {
let lookAll = 0;
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
if (item.isEdit) {
lookAll++;
}
});
if (lookAll != powerUnitAry.value.recUnitAry.masterUnitList.length) {
isEditAll.value = false;
} else {
isEditAll.value = true;
}
}
};
</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">
<!-- {{powerUnitAry.recUnitAry.masterUnitList}} -->
<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-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">
<!-- {{powerUnitAry.recUnitAry.masterUnitList}} -->
<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 align="center" width="80">
<template #header>
<el-checkbox v-model="isLookAll" label="" @change="lookOpenOrClose" />可见
</template>
<template #default="scope">
<el-checkbox v-model="scope.row.isLook" label="" @change="oneLookSet(scope.row)" />
</template>
</el-table-column>
<el-table-column align="center" width="120">
<template #header>
<el-checkbox v-model="isEditAll" label="" @change="editOpenOrClose" />可编辑
</template>
<template #default="scope">
<el-checkbox v-model="scope.row.isEdit" label="" @change="oneEditSet(scope.row)" />
</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>
<!-- <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 align="center" width="80">
<template #header>
<el-checkbox
v-model="isLookAll"
label=""
@change="lookOpenOrClose"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isLook"
label=""
@change="oneLookSet(scope.row)"
/>
</template>
</el-table-column>
<el-table-column align="center" width="120">
<template #header>
<el-checkbox
v-model="isEditAll"
label=""
@change="editOpenOrClose"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isEdit"
label=""
@change="oneEditSet(scope.row)"
/>
</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>
<div class="demo-drawer__footer clear">
<el-button type="primary" @click="savePromoter"> </el-button>
<el-button @click="closeDrawer"> </el-button>
</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>
<employees-dialog
v-model:visible="promoterVisible"
:isdepartment="true"
:data="checkedList"
@change="surePromoter"
/>
</div>
</el-drawer>
</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>
<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;
}
.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
.table_name {
padding: 10px 0;
}
</style>

Loading…
Cancel
Save