Browse Source

Merge branch 'qin_v20'

lwx_v24
herenshan112 8 months ago
parent
commit
e7a8c52d17
  1. 1
      src/api/DesignForm/fieldUnit.ts
  2. 38
      src/api/DesignForm/filterUnit.ts
  3. 232
      src/components/DesignForm/formControlPropertiNew.vue
  4. 73
      src/components/workflow/drwer/approverDrawer.vue
  5. 303
      src/components/workflow/drwer/promoterDrawer.vue
  6. 38
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/aiPage.vue
  7. 7
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageForm.vue
  8. 2
      src/views/sysworkflow/lowcodepage/appPage/createAppFormPage.vue

1
src/api/DesignForm/fieldUnit.ts

@ -5,3 +5,4 @@ export const choiceUnit = ["radio"]
export const switchUnit = ["switch"] export const switchUnit = ["switch"]
export const checkboxUnit = ["checkbox"] export const checkboxUnit = ["checkbox"]
export const orgDeptUnit = ["deptOrg"] export const orgDeptUnit = ["deptOrg"]
export const layoutUnit = ["grid","card","flex","div","tabs","divider","title","button","lowcodeImage","videoUpAndPlay","table","baidumap","lowcodeCarsusel","signaturemap","component"]

38
src/api/DesignForm/filterUnit.ts

@ -0,0 +1,38 @@
import { formStruct } from "@/api/DesignForm/types";
import { layoutUnit } from "@/api/DesignForm/fieldUnit";
/**
@ 作者: 秦东
@ 时间: 2025-04-11 15:12:02
@ 功能: 解析出表单可作为AI变量的元素
*/
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 {
analysisFromUnit
}

232
src/components/DesignForm/formControlPropertiNew.vue

@ -13,7 +13,13 @@ import validateInt from "./validateInt";
import { ValidateTextTypes } from "@/components/DesignForm/validateText"; import { ValidateTextTypes } from "@/components/DesignForm/validateText";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { formatNumber } from "@/api/DesignForm/utils"; import { formatNumber } from "@/api/DesignForm/utils";
import { PublicAtrr } from "@/api/DesignForm/types"; import {
PublicAtrr,
formStruct,
CarsuselConfig,
VideoMsg,
optionsInfo,
} from "@/api/DesignForm/types";
import { import {
chineseToPinyin, chineseToPinyin,
@ -37,6 +43,8 @@ import { Plus } from "@element-plus/icons-vue";
import Draggable from "vuedraggable-es"; import Draggable from "vuedraggable-es";
import { dataBaseStruct } from "@/api/date/type"; import { dataBaseStruct } from "@/api/date/type";
import { analysisFromUnit } from "@/api/DesignForm/filterUnit";
const props = withDefaults( const props = withDefaults(
// //
defineProps<{ defineProps<{
@ -49,6 +57,7 @@ const props = withDefaults(
isEdit: boolean; isEdit: boolean;
formField: any[]; formField: any[];
sunFormField: any[]; sunFormField: any[];
state: formStruct;
}>(), }>(),
{ {
formConfig: () => { formConfig: () => {
@ -805,12 +814,12 @@ const attrList = computed(() => {
vShow: ["videoUpAndPlay"], vShow: ["videoUpAndPlay"],
}, },
{ {
label: '默认图片', label: "默认图片",
value: config.lowcodeImage, value: config.lowcodeImage,
path: 'config.lowcodeImage', path: "config.lowcodeImage",
type: 'lowcodeImage_url', type: "lowcodeImage_url",
vIf: state.isSearch, vIf: state.isSearch,
vShow: ['lowcodeImage'] vShow: ["lowcodeImage"],
}, },
/*{ /*{
label: '尺寸', label: '尺寸',
@ -1874,8 +1883,6 @@ const updataDigit = (key: string, val: any) => {
}; };
//liwenxuan 20240108 vidioupload start //liwenxuan 20240108 vidioupload start
import { VideoMsg } from "@/api/DesignForm/types";
import { genFileId } from "element-plus"; import { genFileId } from "element-plus";
import type { UploadInstance, UploadProps, UploadRawFile } from "element-plus"; import type { UploadInstance, UploadProps, UploadRawFile } from "element-plus";
@ -1924,7 +1931,6 @@ function videoUploadErr(error: Error, uploadFile: UploadFile, uploadFiles: Uploa
//liwenxuan 20240111 carousel start //liwenxuan 20240111 carousel start
import { Delete } from "@element-plus/icons-vue"; import { Delete } from "@element-plus/icons-vue";
import { CarsuselConfig } from "@/api/DesignForm/types";
import errimg from "@/assets/404_images/untilUploadImg.png"; import errimg from "@/assets/404_images/untilUploadImg.png";
import { v4 as uuidv4 } from "uuid"; import { v4 as uuidv4 } from "uuid";
@ -2579,25 +2585,23 @@ function getAssociatedFormsCurrentFieldTree1() {
resDataHasTableButNoTableChild.splice(2, 4); resDataHasTableButNoTableChild.splice(2, 4);
resDataHasTableButNoTableChild.forEach((element: any) => { resDataHasTableButNoTableChild.forEach((element: any) => {
if (element.type && element.type == "table") { if (element.type && element.type == "table") {
element.children = [] element.children = [];
element.disabled = false element.disabled = false;
} }
let currentIdArr = element.id.split(":") let currentIdArr = element.id.split(":");
//console.log(currentIdArr) //console.log(currentIdArr)
let currentId = currentIdArr[currentIdArr.length-1] let currentId = currentIdArr[currentIdArr.length - 1];
//console.log(currentId) //console.log(currentId)
if (currentId == controlData.value.name) { if (currentId == controlData.value.name) {
/* alert(currentId) /* alert(currentId)
console.log(currentId) */ console.log(currentId) */
element.disabled = true element.disabled = true;
} }
}); });
//liwenxuan bug end 250409 //liwenxuan bug end 250409
resDataNoTable = resDataNoTable.filter( resDataNoTable = resDataNoTable.filter(
(item: { type: string | null }) => item.type != "table" (item: { type: string | null }) => item.type != "table"
); );
@ -2660,9 +2664,7 @@ function removeTreeNode(tree: any, targetId: any) {
// //
if (node.children?.length) { if (node.children?.length) {
node.children = node.children node.children = node.children.map((child) => processNode(child)).filter(Boolean);
.map(child => processNode(child))
.filter(Boolean);
} }
return node; return node;
@ -2670,7 +2672,7 @@ function removeTreeNode(tree: any, targetId: any) {
// //
const result = Array.isArray(clonedTree) const result = Array.isArray(clonedTree)
? clonedTree.map(node => processNode(node)).filter(Boolean) ? clonedTree.map((node) => processNode(node)).filter(Boolean)
: processNode(clonedTree); : processNode(clonedTree);
return result || null; return result || null;
@ -2680,7 +2682,7 @@ const customerFormTree = ref<Tree[]>();
getCustomerFormList().then(({ data }) => { getCustomerFormList().then(({ data }) => {
/* console.log(data.children) /* console.log(data.children)
console.log(props.customerformid) */ console.log(props.customerformid) */
let datachildrenWithoutSelf = removeTreeNode(data.children,props.customerformid) let datachildrenWithoutSelf = removeTreeNode(data.children, props.customerformid);
let resData = ref(datachildrenWithoutSelf); let resData = ref(datachildrenWithoutSelf);
customerFormTree.value = [ customerFormTree.value = [
{ {
@ -3332,8 +3334,8 @@ watch(
) )
); );
} else { } else {
console.log(changedOptions) console.log(changedOptions);
console.log(controlData.value.control.glxxsz) console.log(controlData.value.control.glxxsz);
for (var i = 0; i < changedOptions.length; i++) { for (var i = 0; i < changedOptions.length; i++) {
if (controlData.value.control.glxxsz[i] === undefined) { if (controlData.value.control.glxxsz[i] === undefined) {
//option //option
@ -3505,12 +3507,13 @@ const scanTypes = [
let asfs: any[] = []; let asfs: any[] = [];
let asfsExpectCurrent: any[] = []; let asfsExpectCurrent: any[] = [];
const unitFormList = ref<optionsInfo[]>([]);
watch( watch(
() => props.formList, () => props.formList,
(dataList: any) => { (dataList: any) => {
//console.log(dataList) //console.log(dataList)
unitFormList.value = analysisFromUnit(props.state);
if ( if (
dataList && dataList &&
Array.isArray(dataList) && Array.isArray(dataList) &&
@ -3593,6 +3596,7 @@ watch(
onMounted(() => { onMounted(() => {
gainFormGroupList(); gainFormGroupList();
analysisFromUnit(props.state);
}); });
watch( watch(
@ -3942,6 +3946,43 @@ const updataBase = (val: any) => {
// console.log("------2-------", val.fields); // console.log("------2-------", val.fields);
// console.log("------3-------", state.dataSourceList); // console.log("------3-------", state.dataSourceList);
}; };
//
const addPickTracn = () => {
if (props.formInfo.aiConfig) {
props.formInfo.aiConfig.push({
title: [],
trigger: 1,
openShowType: 1,
});
} else {
props.formInfo.aiConfig = [
{
title: [],
trigger: 1,
openShowType: 1,
},
];
}
};
/**
@ 作者: 秦东
@ 时间: 2025-04-10 08:12:21
@ 功能: 知识库
*/
const libraryList = ref([
{
label: "法律法规",
value: 1,
},
{
label: "安全环保",
value: 2,
},
{
label: "员工守则",
value: 3,
},
]);
</script> </script>
<template> <template>
<DataSourcePage <DataSourcePage
@ -4179,13 +4220,19 @@ const updataBase = (val: any) => {
</el-row> </el-row>
<el-row v-else-if="item.type === 'lowcodeImage_url'"> <el-row v-else-if="item.type === 'lowcodeImage_url'">
<el-upload <el-upload
:action="uploadUrl" :before-remove="beforeRemove" :action="uploadUrl"
:before-remove="beforeRemove"
:on-success="lowcodeImageUploadSuccess" :on-success="lowcodeImageUploadSuccess"
:on-error="videoUploadErr" :on-error="videoUploadErr"
:limit="1" :limit="1"
accept=".jpg,.jpeg,.png,.tif,.tga,.bmp,.dds,.svg,.eps,.pdf,.hdr,.raw,.exr,.psd,.afphoto,.afdesign"> accept=".jpg,.jpeg,.png,.tif,.tga,.bmp,.dds,.svg,.eps,.pdf,.hdr,.raw,.exr,.psd,.afphoto,.afdesign"
<el-button v-if="!controlData.control.uploadFlag" type="primary">默认图片</el-button> >
<el-button v-if="controlData.control.uploadFlag" type="primary">已上传默认图片,点击修改</el-button> <el-button v-if="!controlData.control.uploadFlag" type="primary"
>默认图片</el-button
>
<el-button v-if="controlData.control.uploadFlag" type="primary"
>已上传默认图片,点击修改</el-button
>
</el-upload> </el-upload>
</el-row> </el-row>
<!-- <el-row v-else-if="item.type === 'lowcodeImage_radius'"> <!-- <el-row v-else-if="item.type === 'lowcodeImage_radius'">
@ -5269,6 +5316,72 @@ const updataBase = (val: any) => {
</template> </template>
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="AI配置" name="aiConfig">
<el-divider content-position="left">AI触发条件设置</el-divider>
<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-scrollbar>
</div>
</el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<!-- 轮播图设置弹窗 20240122 start --> <!-- 轮播图设置弹窗 20240122 start -->
@ -5856,7 +5969,8 @@ const updataBase = (val: any) => {
@del-role="delRole" @del-role="delRole"
@child-role-right-changed="childRoleRightChanged" @child-role-right-changed="childRoleRightChanged"
> >
</AssociatedFormsFillRole><!-- --> </AssociatedFormsFillRole
><!-- -->
</template> </template>
</div> </div>
</div> </div>
@ -6239,4 +6353,66 @@ li::before {
justify-content: space-between; justify-content: space-between;
align-items: center; 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> </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 PositionDialog from "@/components/workflow/dialog/positionDialog.vue";
import FormWord from "@/components/workflow/dialog/formWord.vue"; import FormWord from "@/components/workflow/dialog/formWord.vue";
import MatrixPage from "@/components/workflow/dialog/matrix.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"; import { matrixInfo } from "@/api/matrixapi/type";
let props = defineProps({ let props = defineProps({
@ -263,6 +264,7 @@ const saveApprover = () => {
// console.log("---->",item.nodeKey) // console.log("---->",item.nodeKey)
if (item.nodeKey == approverConfig1.value.value.nodeNumber) { if (item.nodeKey == approverConfig1.value.value.nodeNumber) {
item.powerAry = powerAry; item.powerAry = powerAry;
item.apiSetup = apiSetup;
isNew = false; isNew = false;
} }
}); });
@ -270,6 +272,7 @@ const saveApprover = () => {
formData.value.purview.push({ formData.value.purview.push({
nodeKey: approverConfig1.value.value.nodeNumber, nodeKey: approverConfig1.value.value.nodeNumber,
powerAry: powerAry, powerAry: powerAry,
apiSetup: apiSetup,
}); });
} }
} else { } else {
@ -277,6 +280,7 @@ const saveApprover = () => {
{ {
nodeKey: approverConfig1.value.value.nodeNumber, nodeKey: approverConfig1.value.value.nodeNumber,
powerAry: powerAry, powerAry: powerAry,
apiSetup: apiSetup,
}, },
]; ];
} }
@ -317,6 +321,8 @@ const sureFormTableApprover = (data: any) => {
const updateMatrix = (val: any) => { const updateMatrix = (val: any) => {
approverConfig.value.matrix = val; approverConfig.value.matrix = val;
}; };
const formTableFielding = reactive<formTableField>({});
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-13 08:24:54 @ 时间: 2024-03-13 08:24:54
@ -332,6 +338,14 @@ const jieForm = () => {
powerUnitAry.value = data.data; 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( watch(
@ -546,6 +560,30 @@ const setOrgTree = (val: any) => {
flowOrgTree.value!.setCheckedKeys([val], true); 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> </script>
<template> <template>
<el-drawer <el-drawer
@ -1023,6 +1061,39 @@ const setOrgTree = (val: any) => {
</template> </template>
<div class="info_box"> <div class="info_box">
<QuillEditor v-model="approverConfig.helpTips" height="400px" /> <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> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>

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

@ -3,30 +3,29 @@
@ 时间: 2023-10-11 08:39:10 @ 时间: 2023-10-11 08:39:10
@ 备注: 发起人节点操作 @ 备注: 发起人节点操作
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import employeesDialog from '@/components/workflow/dialog/employeesDialog.vue' import employeesDialog from "@/components/workflow/dialog/employeesDialog.vue";
import { AnalysisForm } from '@/components/workflow/drwer/analysisForm' import { AnalysisForm } from "@/components/workflow/drwer/analysisForm";
import $func from '@/utils/workflow/index' import $func from "@/utils/workflow/index";
import { useStore } from '@/store/workflow/index' import { useStore } from "@/store/workflow/index";
import { analysisForm,setFlowFormKeyPower } from '@/api/workflowapi/index'
import AssociatedFormsTinyace from '@/widget/associatedforms/associatedFormsTinyace.vue'
import { analysisForm, setFlowFormKeyPower } from "@/api/workflowapi/index";
import AssociatedFormsTinyace from "@/widget/associatedforms/associatedFormsTinyace.vue";
const props = defineProps({ const props = defineProps({
formData: { formData: {
type: Object, type: Object,
default() { default() {
return {} return {};
} },
}, },
formKey: { formKey: {
type: String, type: String,
default:"" default: "",
}, },
formVersion: { formVersion: {
type: String, type: String,
default:"" default: "",
}, },
nodeConfig: { nodeConfig: {
type: Object, type: Object,
@ -34,104 +33,108 @@ const props = defineProps({
}, },
}); });
const emits = defineEmits<{ const emits = defineEmits<{
(e: 'update:formData', val: any): void (e: "update:formData", val: any): void;
}>() }>();
const formData = computed({ const formData = computed({
get() { get() {
return props.formData return props.formData;
}, },
set(val: formStruct) { set(val: formStruct) {
emits('update:formData', val) emits("update:formData", val);
} },
}); });
const isLookAll = ref(false) const isLookAll = ref(false);
const isEditAll = ref(false) const isEditAll = ref(false);
// //
// const // const
let flowPermission = ref([]) let flowPermission = ref([]);
let promoterVisible = ref(false) let promoterVisible = ref(false);
let checkedList = ref([]) let checkedList = ref([]);
let store = useStore() let store = useStore();
let { setPromoter, setFlowPermission } = store let { setPromoter, setFlowPermission } = store;
let approverConfig1 = computed(():any=> store.approverConfig1) let approverConfig1 = computed((): any => store.approverConfig1);
let promoterDrawer = computed(()=> store.promoterDrawer) let promoterDrawer = computed(() => store.promoterDrawer);
let flowPermission1 = computed(()=> store.flowPermission1) let flowPermission1 = computed(() => store.flowPermission1);
let visible = computed({ let visible = computed({
get() { get() {
return promoterDrawer.value return promoterDrawer.value;
}, },
set() { set() {
closeDrawer() closeDrawer();
} },
}) });
watch(flowPermission1, (val) => { watch(flowPermission1, (val) => {
flowPermission.value = val.value flowPermission.value = val.value;
}) });
const addPromoter = () => { const addPromoter = () => {
checkedList.value = flowPermission.value checkedList.value = flowPermission.value;
promoterVisible.value = true; promoterVisible.value = true;
} };
const surePromoter = (data: any) => { const surePromoter = (data: any) => {
flowPermission.value = data; flowPermission.value = data;
promoterVisible.value = false; promoterVisible.value = false;
} };
const savePromoter = () => { const savePromoter = () => {
setFlowPermission({ setFlowPermission({
value: flowPermission.value, value: flowPermission.value,
flag: true, flag: true,
id: flowPermission1.value.id id: flowPermission1.value.id,
}) });
// console.log(1); // console.log(1);
let powerAry = []; let powerAry = [];
if(powerUnitAry.value.recUnitAry.masterUnitList && powerUnitAry.value.recUnitAry.masterUnitList.length > 0){ if (
powerUnitAry.value.recUnitAry.masterUnitList &&
powerUnitAry.value.recUnitAry.masterUnitList.length > 0
) {
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => { powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
powerAry.push(item);
powerAry.push(item) });
})
} }
// console.log(2); // console.log(2);
if(powerUnitAry.value.recUnitAry.sunUnitList && powerUnitAry.value.recUnitAry.sunUnitList.length > 0){ if (
powerUnitAry.value.recUnitAry.sunUnitList &&
powerUnitAry.value.recUnitAry.sunUnitList.length > 0
) {
powerUnitAry.value.recUnitAry.sunUnitList.forEach((item: any) => { powerUnitAry.value.recUnitAry.sunUnitList.forEach((item: any) => {
if (item.masterUnitList && item.masterUnitList.length > 0) { if (item.masterUnitList && item.masterUnitList.length > 0) {
item.masterUnitList.forEach((itemSun: any) => { item.masterUnitList.forEach((itemSun: any) => {
// powerAry.push(item) // powerAry.push(item)
if (!powerAry.includes(itemSun)) { if (!powerAry.includes(itemSun)) {
powerAry.push(itemSun) powerAry.push(itemSun);
} }
}) });
} }
}); });
} }
// console.log("",formData.value) // console.log("",formData.value)
if (formData.value.purview) { if (formData.value.purview) {
// console.log("") // console.log("")
let isNew = true let isNew = true;
formData.value.purview.forEach((item: any) => { formData.value.purview.forEach((item: any) => {
// console.log("---->",item.nodeKey) // console.log("---->",item.nodeKey)
if (item.nodeKey == props.nodeConfig.nodeNumber) { if (item.nodeKey == props.nodeConfig.nodeNumber) {
item.powerAry=powerAry item.powerAry = powerAry;
isNew = false isNew = false;
} }
}); });
if (isNew) { if (isNew) {
formData.value.purview.push({ formData.value.purview.push({
nodeKey: props.nodeConfig.nodeNumber, nodeKey: props.nodeConfig.nodeNumber,
powerAry:powerAry powerAry: powerAry,
}) });
} }
} else { } else {
formData.value.purview = [{ formData.value.purview = [
{
nodeKey: props.nodeConfig.nodeNumber, nodeKey: props.nodeConfig.nodeNumber,
powerAry:powerAry powerAry: powerAry,
}] },
];
} }
// formData.value.purview.push({ // formData.value.purview.push({
@ -148,17 +151,17 @@ const savePromoter = () => {
formKey: props.formKey.toString(), formKey: props.formKey.toString(),
formVersion: props.formVersion.toString(), formVersion: props.formVersion.toString(),
formData: JSON.stringify(formData.value), formData: JSON.stringify(formData.value),
formPower:JSON.stringify(formData.value.purview) formPower: JSON.stringify(formData.value.purview),
} };
console.log("sendInfo",sendInfo) console.log("sendInfo", sendInfo);
setFlowFormKeyPower(sendInfo) setFlowFormKeyPower(sendInfo);
// console.log("formDataAll",formData) // console.log("formDataAll",formData)
// console.log("formData",formData.value.purview) // console.log("formData",formData.value.purview)
closeDrawer() closeDrawer();
} };
const closeDrawer = () => { const closeDrawer = () => {
setPromoter(false) setPromoter(false);
} };
const powerUnitAry = ref<any>({ const powerUnitAry = ref<any>({
nodeKey: "", nodeKey: "",
@ -166,9 +169,9 @@ const powerUnitAry = ref<any>({
masterUnitList: [], masterUnitList: [],
sunUnitList: [], sunUnitList: [],
unitAllKey: [], unitAllKey: [],
unitAllState:[] unitAllState: [],
} },
}) });
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-13 08:24:54 @ 时间: 2024-03-13 08:24:54
@ -176,44 +179,49 @@ const powerUnitAry = ref<any>({
*/ */
const jieForm = () => { const jieForm = () => {
// console.log("nodeConfig",props.nodeConfig) // console.log("nodeConfig",props.nodeConfig)
analysisForm({nodeKey:props.nodeConfig.nodeNumber,nodeJson:JSON.stringify(formData.value)}) analysisForm({
.then((data)=>{ nodeKey: props.nodeConfig.nodeNumber,
nodeJson: JSON.stringify(formData.value),
}).then((data) => {
if (data.code == 0) { if (data.code == 0) {
powerUnitAry.value = data.data powerUnitAry.value = data.data;
if(powerUnitAry.value.recUnitAry.masterUnitList && powerUnitAry.value.recUnitAry.masterUnitList.length > 0){ if (
let allToal = powerUnitAry.value.recUnitAry.masterUnitList.length powerUnitAry.value.recUnitAry.masterUnitList &&
let isAll = 0 powerUnitAry.value.recUnitAry.masterUnitList.length > 0
let editAll = 0 ) {
let allToal = powerUnitAry.value.recUnitAry.masterUnitList.length;
let isAll = 0;
let editAll = 0;
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => { powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
if (item.isLook) { if (item.isLook) {
isAll++ isAll++;
} }
if (item.isEdit) { if (item.isEdit) {
editAll++ editAll++;
} }
}) });
if (isAll == allToal) { if (isAll == allToal) {
isLookAll.value = true isLookAll.value = true;
} }
if (editAll == allToal) { if (editAll == allToal) {
isEditAll.value = true isEditAll.value = true;
} }
} }
}
})
} }
});
};
watch(()=>visible.value,(val:boolean)=>{ watch(
() => visible.value,
(val: boolean) => {
if (val) { if (val) {
jieForm(); jieForm();
} }
}) }
const nodeSetUp = ref("first") );
const contentpage = ref("") const nodeSetUp = ref("first");
const contentpage = ref("");
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ -223,23 +231,21 @@ const contentpage = ref("")
const editOpenOrClose = (val: any) => { const editOpenOrClose = (val: any) => {
if (powerUnitAry.value.recUnitAry.masterUnitList) { if (powerUnitAry.value.recUnitAry.masterUnitList) {
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => { powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
item.isEdit = val item.isEdit = val;
}) });
}
} }
};
const lookOpenOrClose = (val: boolean) => { const lookOpenOrClose = (val: boolean) => {
if (powerUnitAry.value.recUnitAry.masterUnitList) { if (powerUnitAry.value.recUnitAry.masterUnitList) {
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => { powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
item.isLook = val item.isLook = val;
if (!val) { if (!val) {
item.isEdit = val item.isEdit = val;
isEditAll.value = val isEditAll.value = val;
}
})
} }
});
} }
};
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-25 16:09:18 @ 时间: 2024-07-25 16:09:18
@ -247,23 +253,23 @@ const lookOpenOrClose = (val: boolean) => {
*/ */
const oneLookSet = (val: any) => { const oneLookSet = (val: any) => {
if (!val.isLook) { if (!val.isLook) {
val.isEdit = val.isLook val.isEdit = val.isLook;
isEditAll.value = val.isLook isEditAll.value = val.isLook;
} }
if (powerUnitAry.value.recUnitAry.masterUnitList) { if (powerUnitAry.value.recUnitAry.masterUnitList) {
let lookAll = 0 let lookAll = 0;
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => { powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
if (item.isLook) { if (item.isLook) {
lookAll++ lookAll++;
} }
}) });
if (lookAll != powerUnitAry.value.recUnitAry.masterUnitList.length) { if (lookAll != powerUnitAry.value.recUnitAry.masterUnitList.length) {
isLookAll.value = false isLookAll.value = false;
} else { } else {
isLookAll.value = true isLookAll.value = true;
}
} }
} }
};
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-25 16:17:32 @ 时间: 2024-07-25 16:17:32
@ -271,22 +277,30 @@ const oneLookSet = (val: any) => {
*/ */
const oneEditSet = (val: any) => { const oneEditSet = (val: any) => {
if (powerUnitAry.value.recUnitAry.masterUnitList) { if (powerUnitAry.value.recUnitAry.masterUnitList) {
let lookAll = 0 let lookAll = 0;
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => { powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
if (item.isEdit) { if (item.isEdit) {
lookAll++ lookAll++;
} }
}) });
if (lookAll != powerUnitAry.value.recUnitAry.masterUnitList.length) { if (lookAll != powerUnitAry.value.recUnitAry.masterUnitList.length) {
isEditAll.value = false isEditAll.value = false;
} else { } else {
isEditAll.value = true isEditAll.value = true;
}
} }
} }
};
</script> </script>
<template> <template>
<el-drawer v-model="visible" :append-to-body="true" title="发起人" class="set_promoter" :show-close="false" :size="550" :before-close="closeDrawer"> <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="demo-drawer__content">
<!-- {{powerUnitAry.recUnitAry.masterUnitList}} --> <!-- {{powerUnitAry.recUnitAry.masterUnitList}} -->
<div class="promoter_content drawer_content"> <div class="promoter_content drawer_content">
@ -298,7 +312,7 @@ const oneEditSet = (val: any) => {
<!-- <el-divider content-position="left">节点属性</el-divider> --> <!-- <el-divider content-position="left">节点属性</el-divider> -->
<div class="info_box"> <div class="info_box">
<p>{{ $func.arrToStr(flowPermission) || '所有人' }}</p> <p>{{ $func.arrToStr(flowPermission) || "所有人" }}</p>
<el-button type="primary" @click="addPromoter">添加/修改发起人</el-button> <el-button type="primary" @click="addPromoter">添加/修改发起人</el-button>
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -308,31 +322,68 @@ const oneEditSet = (val: any) => {
</template> </template>
<!-- <el-divider content-position="left">操作权限</el-divider> --> <!-- <el-divider content-position="left">操作权限</el-divider> -->
<div class="info_box"> <div class="info_box">
<div class="table_name"><el-text class="mx-1" type="primary">主表</el-text></div> <div class="table_name">
<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-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 prop="name" label="字段" />
<el-table-column align="center" width="80"> <el-table-column align="center" width="80">
<template #header> <template #header>
<el-checkbox v-model="isLookAll" label="" @change="lookOpenOrClose" />可见 <el-checkbox
v-model="isLookAll"
label=""
@change="lookOpenOrClose"
/>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-checkbox v-model="scope.row.isLook" label="" @change="oneLookSet(scope.row)" /> <el-checkbox
v-model="scope.row.isLook"
label=""
@change="oneLookSet(scope.row)"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" width="120"> <el-table-column align="center" width="120">
<template #header> <template #header>
<el-checkbox v-model="isEditAll" label="" @change="editOpenOrClose" />可编辑 <el-checkbox
v-model="isEditAll"
label=""
@change="editOpenOrClose"
/>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-checkbox v-model="scope.row.isEdit" label="" @change="oneEditSet(scope.row)" /> <el-checkbox
v-model="scope.row.isEdit"
label=""
@change="oneEditSet(scope.row)"
/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-row v-if="powerUnitAry.recUnitAry.sunUnitList" v-for="(item,index) in powerUnitAry.recUnitAry.sunUnitList" :key="index"> <el-row
<el-col :span="24" class="table_name"><el-text class="mx-1" type="primary">{{item.name}}</el-text></el-col> 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-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
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 prop="name" label="字段" />
<el-table-column label="可见" align="center" width="80"> <el-table-column label="可见" align="center" width="80">
<template #default="scope"> <template #default="scope">
@ -358,7 +409,6 @@ const oneEditSet = (val: any) => {
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<div class="demo-drawer__footer clear"> <div class="demo-drawer__footer clear">
@ -374,7 +424,7 @@ const oneEditSet = (val: any) => {
</div> </div>
</el-drawer> </el-drawer>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.set_promoter { .set_promoter {
.promoter_content { .promoter_content {
padding: 0 0px; padding: 0 0px;
@ -393,7 +443,6 @@ const oneEditSet = (val: any) => {
} }
} }
.table_name { .table_name {
padding : 10px 0 padding: 10px 0;
} }
</style> </style>

38
src/views/sysworkflow/lowcodepage/appPage/appPageForm/aiPage.vue

@ -56,18 +56,27 @@ const aiList = reactive([
const aiFormField = ref([]); const aiFormField = ref([]);
// //
const addPickTracn = () => { const addPickTracn = () => {
aiList.push({ if (props.state.formData.aiConfig) {
props.state.formData.aiConfig.push({
title: "", title: "",
trigger: 1, trigger: 1,
openShowType: 1, openShowType: 1,
}); });
props.state.formData.aiConfig = aiList; } else {
props.state.formData.aiConfig = [
{
title: "",
trigger: 1,
openShowType: 1,
},
];
}
}; };
// //
const delList = (index: number) => { const delList = (index: number) => {
console.log("删除条件=========>", index); console.log("删除条件=========>", index);
if (aiList && aiList.length > 0) { if (props.state.formData.aiConfig && props.state.formData.aiConfig.length > 0) {
aiList.splice(index, 1); props.state.formData.aiConfig.splice(index, 1);
} }
}; };
/** /**
@ -107,6 +116,15 @@ const jieForm = () => {
onMounted(() => { onMounted(() => {
jieForm(); jieForm();
}); });
/**
@ 作者: 秦东
@ 时间: 2025-04-10 13:56:29
@ 功能: 发布
*/
const sendPickTracn = () => {
console.log("发布---------------------->", props);
// props.state.formData.aiConfig = aiList;
};
</script> </script>
<template> <template>
<div class="common-layout"> <div class="common-layout">
@ -123,8 +141,14 @@ onMounted(() => {
</el-main> </el-main>
<el-aside width="400px" class="asideBox"> <el-aside width="400px" class="asideBox">
<el-divider content-position="left">AI触发条件设置</el-divider> <el-divider content-position="left">AI触发条件设置</el-divider>
<el-button type="warning" class="aiButs" @click="sendPickTracn"
>发布AI触发条件</el-button
>
<el-scrollbar class="aiBox"> <el-scrollbar class="aiBox">
<el-card v-for="(item, index) in aiList" class="aiCardBox"> <el-card
v-for="(item, index) in props.state.formData.aiConfig"
class="aiCardBox"
>
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
<i class="fa fa-close" @click="delList(index)"></i> <i class="fa fa-close" @click="delList(index)"></i>
@ -202,6 +226,10 @@ onMounted(() => {
.asideBox { .asideBox {
height: calc(100vh - 40px); height: calc(100vh - 40px);
} }
.aiButs {
width: 94%;
margin-left: 3%;
}
.contBox { .contBox {
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
} }

7
src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageForm.vue

@ -326,6 +326,12 @@ const gainTableForm = () => {
let kjdkjksd = string2json(result.mastesformjson); let kjdkjksd = string2json(result.mastesformjson);
// console.log("-begin-->",state.value.formData.purview) // console.log("-begin-->",state.value.formData.purview)
state.value.formData.purview = kjdkjksd.purview; state.value.formData.purview = kjdkjksd.purview;
if (kjdkjksd.aiConfig) {
state.value.formData.aiConfig = kjdkjksd.aiConfig;
} else {
state.value.formData.aiConfig = [];
}
// console.log("--->",kjdkjksd) // console.log("--->",kjdkjksd)
} }
state.value.formData.config.groupKey = result.groupKey; state.value.formData.config.groupKey = result.groupKey;
@ -746,6 +752,7 @@ const dialogConfirmTree = (val: treeStruct[], types: string) => {
:is-edit="isEdit" :is-edit="isEdit"
:form-field="formFieldAry" :form-field="formFieldAry"
:sun-form-field="sunFormFieldAry" :sun-form-field="sunFormFieldAry"
:state="state"
@open-dialog="openAceEditDrawer" @open-dialog="openAceEditDrawer"
@form-name-change="formNameChanged" @form-name-change="formNameChanged"
/> />

2
src/views/sysworkflow/lowcodepage/appPage/createAppFormPage.vue

@ -222,7 +222,7 @@ onBeforeMount(() => {
<el-tab-pane label="① 页面管理" :name="1"> </el-tab-pane> <el-tab-pane label="① 页面管理" :name="1"> </el-tab-pane>
<el-tab-pane label="② 流程设计" :name="2"> </el-tab-pane> <el-tab-pane label="② 流程设计" :name="2"> </el-tab-pane>
<el-tab-pane label="③ 列表设计" :name="3"> </el-tab-pane> <el-tab-pane label="③ 列表设计" :name="3"> </el-tab-pane>
<el-tab-pane label="④ AI设置" :name="4"> </el-tab-pane> <!-- <el-tab-pane label="④ AI设置" :name="4"> </el-tab-pane> -->
<el-tab-pane label="⑤ 打印设计" :name="5"> </el-tab-pane> <el-tab-pane label="⑤ 打印设计" :name="5"> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>

Loading…
Cancel
Save