Browse Source

修改审批节点可见权限

space2
herenshan112 3 months ago
parent
commit
15f358f611
  1. 118
      src/components/DesignForm/app/index.vue
  2. 65
      src/components/DesignForm/public/expand/datePicker.vue
  3. 6
      src/components/DesignForm/public/expand/lowcodeImage.vue
  4. 65
      src/components/DesignForm/public/form/form.vue
  5. 52
      src/components/DesignForm/public/form/formItem.vue
  6. 301
      src/views/sysworkflow/lowcodepage/index.vue
  7. 4
      src/views/sysworkflow/lowcodepage/newLowCode/appLayoutEdit/appContainerPage.vue
  8. 5
      src/views/sysworkflow/lowcodepage/pageFlow/appTableFlow.vue
  9. 6
      src/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue
  10. 73
      src/views/sysworkflow/lowcodepage/runApp/regularPage.vue
  11. 134
      src/views/sysworkflow/lowcodepage/runApp/regularPage/myToDoPage.vue
  12. 211
      src/views/taskplatform/taskmanagement/lookFlowInfoApp.vue

118
src/components/DesignForm/app/index.vue

@ -1902,123 +1902,7 @@ const readerColumnSun = (column: any) => {
{{ item.label }} {{ item.label }}
</el-button> </el-button>
</div> </div>
<div> <div></div>
<el-button-group class="ml-4">
<el-tooltip
v-if="config.searchFormIsShow"
class="box-item"
effect="dark"
content="折叠查询表单"
placement="bottom"
>
<el-button
size="small"
@click="config.searchIsShow = !config.searchIsShow"
class="fa fa-search"
/>
</el-tooltip>
<el-tooltip
v-if="props.viewPage.list.status"
class="box-item"
effect="dark"
content="列表视图"
placement="top"
>
<el-button
size="small"
class="fa fa-table"
:color="props.viewPage.list.isClick ? '#a0cfff' : ''"
@click="tabsView(props.viewPage.list, 1)"
/>
</el-tooltip>
<el-tooltip
v-if="props.viewPage.card && props.viewPage.card.status"
class="box-item"
effect="dark"
content="卡片视图"
placement="top"
>
<el-button
size="small"
class="fa fa-id-card-o"
:color="
props.viewPage.card && props.viewPage.card.isClick ? '#a0cfff' : ''
"
@click="tabsView(props.viewPage.card, 6)"
/>
</el-tooltip>
<el-tooltip
v-if="props.viewPage.date.status"
class="box-item"
effect="dark"
content="日历视图"
placement="top"
>
<el-button
size="small"
class="fa fa-calendar"
:color="props.viewPage.date.isClick ? '#a0cfff' : ''"
@click="tabsView(props.viewPage.date, 2)"
/>
</el-tooltip>
<el-tooltip
v-if="props.viewPage.time.status"
class="box-item"
effect="dark"
content="时间轴"
placement="top"
>
<el-button
size="small"
class="fa fa-clock-o"
:color="props.viewPage.time.isClick ? '#a0cfff' : ''"
@click="tabsView(props.viewPage.time, 3)"
/>
</el-tooltip>
<el-tooltip
v-if="props.viewPage.gantt.status"
class="box-item"
effect="dark"
content="甘特图"
placement="top"
>
<el-button
size="small"
class="fa fa-bar-chart"
:color="props.viewPage.gantt.isClick ? '#a0cfff' : ''"
@click="tabsView(props.viewPage.gantt, 4)"
/>
</el-tooltip>
<el-tooltip
v-if="props.viewPage.map.status"
class="box-item"
effect="dark"
content="地图视图"
placement="top"
>
<el-button
size="small"
class="fa fa-map-signs"
:color="props.viewPage.map.isClick ? '#a0cfff' : ''"
@click="tabsView(props.viewPage.map, 5)"
/>
</el-tooltip>
<el-tooltip
v-if="viewPage.chart.status"
class="box-item"
effect="dark"
content="BI报表"
placement="top"
>
<el-button
size="small"
class="fa fa-line-chart"
:color="viewPage.chart.isClick ? '#a0cfff' : ''"
@click="tabsView(viewPage.chart, 7)"
/>
</el-tooltip>
</el-button-group>
</div>
</div> </div>
</el-col> </el-col>

65
src/components/DesignForm/public/expand/datePicker.vue

@ -3,39 +3,42 @@
@ 时间: 2024-09-25 15:01:57 @ 时间: 2024-09-25 15:01:57
@ 备注: 时间控件 @ 备注: 时间控件
--> -->
<script lang='ts' setup> <script lang="ts" setup>
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
modelValue?: string modelValue?: string;
disabled?: boolean disabled?: boolean;
data?:any data?: any;
}>(), }>(),
{} {}
) );
const emits = defineEmits<{ const emits = defineEmits<{
(e: 'update:modelValue', value: string): void (e: "update:modelValue", value: string): void;
}>() }>();
const value = computed({ const value = computed({
get: () => { get: () => {
return props.modelValue return props.modelValue;
}, },
set: (newVal: any) => { set: (newVal: any) => {
emits('update:modelValue', newVal) emits("update:modelValue", newVal);
}, },
}); });
const shichangShowFlag = computed(() => { const shichangShowFlag = computed(() => {
if(props.data.control.type=="datetimerange"||props.data.control.type=="daterange"){//monthrange if (
props.data.control.type == "datetimerange" ||
props.data.control.type == "daterange"
) {
//monthrange
if (value.value) { if (value.value) {
return true return true;
} else { } else {
return false return false;
} }
} else { } else {
return false return false;
} }
}) });
function calculateTimeDiff(startTimestamp: string, endTimestamp: string) { function calculateTimeDiff(startTimestamp: string, endTimestamp: string) {
// //
@ -69,18 +72,17 @@ function calculateTimeDiff(startTimestamp: string, endTimestamp: string) {
} }
} }
const valueFormat = "x";
const valueFormat = "x"
const shichang = computed(() => { const shichang = computed(() => {
console.log(value.value) // console.log(value.value)
let start = value.value[0] let start = value.value[0];
let end = value.value[1] let end = value.value[1];
console.log(start) // console.log(start)
console.log(end) // console.log(end)
let a = calculateTimeDiff(start,end) let a = calculateTimeDiff(start, end);
return a return a;
}) });
</script> </script>
<template> <template>
<el-date-picker <el-date-picker
@ -96,25 +98,16 @@ const shichang = computed(() => {
:format="props.data.control.format" :format="props.data.control.format"
/> />
<!-- 2 3 小时 --> <!-- 2 3 小时 -->
<div v-if="shichangShowFlag" class="duration-text">时长 {{ shichang }}</div> <div v-if="shichangShowFlag" class="duration-text">时长 {{ shichang }}</div>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.duration-text { .duration-text {
margin-left: 20px; margin-left: 20px;
margin-right: 60px; margin-right: 60px;
color: #A8ABB2; color: #a8abb2;
font-size: 13px; font-size: 13px;
z-index: 10; z-index: 10;
pointer-events: none; pointer-events: none;
} }
</style> </style>

6
src/components/DesignForm/public/expand/lowcodeImage.vue

@ -65,12 +65,12 @@ const beforeAvatarUpload = (rawFile) => {
// //
const handleAvatarSuccess = (response, uploadFile) => { const handleAvatarSuccess = (response, uploadFile) => {
// imageUrl.value = URL.createObjectURL(uploadFile.raw!) // imageUrl.value = URL.createObjectURL(uploadFile.raw!)
console.log("上传成功回调", value); // console.log("", value);
emits("update:modelValue", response.data.url); emits("update:modelValue", response.data.url);
imgPath.value = response.data.url; imgPath.value = response.data.url;
value.value = response.data.url; value.value = response.data.url;
console.log("上传成功回调---------->", value.value); // console.log("---------->", value.value);
// let oldFormSetUp = props.formTableSetUp // let oldFormSetUp = props.formTableSetUp
// if(props.formTableSetUp && props.formTableSetUp.list && props.formTableSetUp.list.length > 0){ // if(props.formTableSetUp && props.formTableSetUp.list && props.formTableSetUp.list.length > 0){
// oldFormSetUp.list.forEach((item)=>{ // oldFormSetUp.list.forEach((item)=>{
@ -92,7 +92,7 @@ const handleAvatarSuccess = (response, uploadFile) => {
}; };
const getFormItemInputStyle = (ele: any, sty: number) => { const getFormItemInputStyle = (ele: any, sty: number) => {
if (ele?.inputStyle) { if (ele?.inputStyle) {
console.log("返回栅格宽度4", AnalysisInputCss(ele?.inputStyle, sty)); // console.log("4", AnalysisInputCss(ele?.inputStyle, sty));
return AnalysisInputCss(ele?.inputStyle, sty); return AnalysisInputCss(ele?.inputStyle, sty);
} }
}; };

65
src/components/DesignForm/public/form/form.vue

@ -60,6 +60,8 @@ const props = withDefaults(
versionId?: string; // versionId?: string; //
mastesformjson?: string; // mastesformjson?: string; //
isWeb: boolean; // isWeb: boolean; //
nodeKey?: string;
purview?: any[];
}>(), }>(),
{ {
type: 1, // 123 4 5 type: 1, // 123 4 5
@ -76,7 +78,7 @@ const props = withDefaults(
labelStyle: {}, labelStyle: {},
inputStyle: {}, inputStyle: {},
}, },
aiConfig:[] aiConfig: [],
}; };
}, },
dict: () => { dict: () => {
@ -159,12 +161,18 @@ const model = ref<any>({});
// model // model
const getInitModel = () => { const getInitModel = () => {
if (props.formData.aiConfig?.length > 0) { if (props.formData.aiConfig?.length > 0) {
props.formData.aiConfig?.forEach(item=>{ props.formData.aiConfig?.forEach((item) => {
currentAgent.value.push({name:"test",model:false,uuid:item.library,fields:item.title,trigger:item.trigger,params:{}}) currentAgent.value.push({
}) name: "test",
model: false,
uuid: item.library,
fields: item.title,
trigger: item.trigger,
params: {},
});
});
} }
const obj = {}; const obj = {};
forEachGetFormModel(props.formData.list, obj); forEachGetFormModel(props.formData.list, obj);
// console.log("obj===>",obj) // console.log("obj===>",obj)
@ -495,35 +503,45 @@ watch(
//-----------------------AI setting-------------------------- //-----------------------AI setting--------------------------
//AIform //AIform
const currentAgent=ref<{model:boolean,name:string,uuid:string[],fields:string[],trigger:number,params:{[key: string]: any}}[]>([]) const currentAgent = ref<
const aiassistRef=ref() {
model: boolean;
name: string;
uuid: string[];
fields: string[];
trigger: number;
params: { [key: string]: any };
}[]
>([]);
const aiassistRef = ref();
//AI //AI
provide(constAiEffect, ({ key, value, field }: any) => { provide(constAiEffect, ({ key, value, field }: any) => {
//ai_envents //ai_envents
const ai_events: Array<{ uuids: string[]; params: { [key: string]: any } }> = []; const ai_events: Array<{ uuids: string[]; params: { [key: string]: any } }> = [];
currentAgent.value.forEach(ag=>{ currentAgent.value.forEach((ag) => {
if(ag.fields.includes(key)){ //trigger: 1: 2 3 if (ag.fields.includes(key)) {
//trigger: 1: 2 3
ag.params[field] = value; //keyfieldName ag.params[field] = value; //keyfieldName
switch (ag.trigger) { switch (ag.trigger) {
case 2: case 2:
if (Object.keys(ag.params).length >= ag.fields.length / 2) { if (Object.keys(ag.params).length >= ag.fields.length / 2) {
ai_events.push({uuids:ag.uuid,params:ag.params}) ai_events.push({ uuids: ag.uuid, params: ag.params });
} }
break; break;
case 3: case 3:
if (Object.keys(ag.params).length == ag.fields.length) { if (Object.keys(ag.params).length == ag.fields.length) {
ai_events.push({uuids:ag.uuid,params:ag.params}) ai_events.push({ uuids: ag.uuid, params: ag.params });
} }
break; break;
default: default:
ai_events.push({uuids:ag.uuid,params:ag.params}) ai_events.push({ uuids: ag.uuid, params: ag.params });
} }
} }
}) });
if (ai_events.length > 0) { if (ai_events.length > 0) {
aiassistRef.value.onSendParamToAI(props.formData.form.formName,ai_events) aiassistRef.value.onSendParamToAI(props.formData.form.formName, ai_events);
} }
}) });
//------------------------------------------------------------ //------------------------------------------------------------
// tProp // tProp
@ -2183,8 +2201,17 @@ const webPage = computed({
<slot></slot> <slot></slot>
</el-form> </el-form>
</div> </div>
<div v-else v-loading="loading" class="pcBox" :class="{boxAI:type!=5 && currentAgent.length>0}"> <div
<Aiassist ref="aiassistRef" v-if="type!=5 && currentAgent.length>0" :agent="currentAgent"></Aiassist> v-else
v-loading="loading"
class="pcBox"
:class="{ boxAI: type != 5 && currentAgent.length > 0 }"
>
<Aiassist
ref="aiassistRef"
v-if="type != 5 && currentAgent.length > 0"
:agent="currentAgent"
></Aiassist>
<el-form <el-form
v-bind="formData.form" v-bind="formData.form"
ref="ruleForm" ref="ruleForm"
@ -2201,14 +2228,14 @@ const webPage = computed({
:numrun="numrun" :numrun="numrun"
:data="formData.list" :data="formData.list"
:alldata="formData" :alldata="formData"
:node-key="nodeKey"
:purview="purview"
@optionsValue3Get2="optionsValue3Get2" @optionsValue3Get2="optionsValue3Get2"
/> />
<slot></slot> <slot></slot>
</el-form> </el-form>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.webBox { .webBox {

52
src/components/DesignForm/public/form/formItem.vue

@ -32,7 +32,7 @@ import LowcodeImagePage from "@/components/DesignForm/public/expand/lowcodeImage
import UploadPage from "@/components/DesignForm/public/expand/uploadPage.vue"; import UploadPage from "@/components/DesignForm/public/expand/uploadPage.vue";
import UploadPageList from "@/components/DesignForm/public/expand/uploadPageList.vue"; import UploadPageList from "@/components/DesignForm/public/expand/uploadPageList.vue";
import OrgCitys from "@/components/DesignForm/public/expand/orgCitys.vue"; import OrgCitys from "@/components/DesignForm/public/expand/orgCitys.vue";
import Region from '@/widget/region/region.vue' import Region from "@/widget/region/region.vue";
import DatePickerPage from "@/components/DesignForm/public/expand/datePicker.vue"; import DatePickerPage from "@/components/DesignForm/public/expand/datePicker.vue";
import CascaderPage from "@/components/DesignForm/public/expand/cascader.vue"; import CascaderPage from "@/components/DesignForm/public/expand/cascader.vue";
import AssociatedForms from "@/widget/associatedforms/index.vue"; import AssociatedForms from "@/widget/associatedforms/index.vue";
@ -126,11 +126,15 @@ const updateModel = (val: any) => {
//----------by han2015: support AI event emitting---------------- //----------by han2015: support AI event emitting----------------
//changeEventchangeEventfieldChange //changeEventchangeEventfieldChange
const fieldChangeEnt = inject(constAiEffect, '') as any const fieldChangeEnt = inject(constAiEffect, "") as any;
function onValueChange(_type: string) { function onValueChange(_type: string) {
if (_type == "password") return; if (_type == "password") return;
fieldChangeEnt && fieldChangeEnt &&
fieldChangeEnt({key:props.data.name,value:props.modelValue, field:props.data.item.label}) fieldChangeEnt({
key: props.data.name,
value: props.modelValue,
field: props.data.item.label,
});
} }
//-------------------------------------- //--------------------------------------
@ -217,7 +221,7 @@ const currentComponent = computed(() => {
} }
if (props.data.type === "organization") { if (props.data.type === "organization") {
//return markRaw(OrgCitys); //return markRaw(OrgCitys);
return markRaw(Region) return markRaw(Region);
} }
if (props.data.type === "datePicker") { if (props.data.type === "datePicker") {
props.data.control.valueFormat = "x"; props.data.control.valueFormat = "x";
@ -250,7 +254,7 @@ const currentComponent = computed(() => {
// if (props.data.type === 'timePicker') { // if (props.data.type === 'timePicker') {
// props.data.control.valueFormat="timestamp" // props.data.control.valueFormat="timestamp"
// } // }
console.log("自定义组件", props.data.tye); // console.log("", props.data.tye);
return `el-${props.data.type}`; return `el-${props.data.type}`;
}); });
// //
@ -622,7 +626,8 @@ const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API + "/api/upordown";
@ 功能: 判断此组件是否可见 @ 功能: 判断此组件是否可见
*/ */
const judgeIsShow = (key: string) => { const judgeIsShow = (key: string) => {
// console.log("---->",key) console.log("判断此组件是否可见--nodeKey-->", props.nodeKey);
console.log("判断此组件是否可见--purview-->", props.purview);
if ( if (
props.nodeKey != undefined && props.nodeKey != undefined &&
props.purview != undefined && props.purview != undefined &&
@ -641,7 +646,13 @@ const judgeIsShow = (key: string) => {
if (item.powerAry && item.powerAry.length > 0) { if (item.powerAry && item.powerAry.length > 0) {
item.powerAry.forEach((itm) => { item.powerAry.forEach((itm) => {
if (itm.id == key) { if (itm.id == key) {
// console.log("",itm,itm.id == key,"--------->",itm.isLook) // console.log(
// "",
// itm,
// itm.id == key,
// "--------->",
// itm.isLook
// );
isShow = itm.isLook; isShow = itm.isLook;
} }
}); });
@ -662,6 +673,8 @@ const judgeIsShow = (key: string) => {
@ 功能: 判断是否禁用 @ 功能: 判断是否禁用
*/ */
const judgeIsDisabled = (key: string) => { const judgeIsDisabled = (key: string) => {
// console.log("", key);
if (type.value === 3) { if (type.value === 3) {
return true; // return true; //
} }
@ -671,6 +684,7 @@ const judgeIsDisabled = (key: string) => {
if (type.value === 2 && config.value.editDisabled) { if (type.value === 2 && config.value.editDisabled) {
return true; // return true; //
} }
// console.log("-------props.nodeKey----------->", props.purview);
if ( if (
props.nodeKey != undefined && props.nodeKey != undefined &&
props.purview != undefined && props.purview != undefined &&
@ -688,13 +702,13 @@ const judgeIsDisabled = (key: string) => {
if (item.powerAry && item.powerAry.length > 0) { if (item.powerAry && item.powerAry.length > 0) {
item.powerAry.forEach((itm) => { item.powerAry.forEach((itm) => {
if (itm.id == key) { if (itm.id == key) {
console.log( // console.log(
"判断此组件是否禁用", // "",
itm, // itm,
itm.id == key, // itm.id == key,
"--------->", // "--------->",
itm.isLook // itm.isLook
); // );
isShow = !itm.isEdit; isShow = !itm.isEdit;
} }
}); });
@ -947,11 +961,11 @@ function asfValueChanged(val: any) {
@ 功能: 解析下载图片 @ 功能: 解析下载图片
*/ */
const uploadPic = (val: any) => { const uploadPic = (val: any) => {
console.log("解析下载图片-->", val); // console.log("-->", val);
if (val != "") { if (val != "") {
let urlAry = string2json(val); let urlAry = string2json(val);
// let urlAry = val.toString().split(",") // let urlAry = val.toString().split(",")
console.log("解析下载图片-2->", urlAry); // console.log("-2->", urlAry);
return urlAry; return urlAry;
} else { } else {
return []; return [];
@ -964,11 +978,11 @@ const uploadPic = (val: any) => {
@ 功能: 获取级联选择值 @ 功能: 获取级联选择值
*/ */
const judjeCascader = (val: any[], options: any[]) => { const judjeCascader = (val: any[], options: any[]) => {
console.log("val===========>", val); // console.log("val===========>", val);
if (val == "" || val == undefined || val == null) return ""; if (val == "" || val == undefined || val == null) return "";
if (val && val.length < 0) return ""; if (val && val.length < 0) return "";
let valAry = stringToObj(val); let valAry = stringToObj(val);
console.log("获取级联选择值", stringToObj(val), val.length, options); // console.log("", stringToObj(val), val.length, options);
if (!Array.isArray(valAry)) { if (!Array.isArray(valAry)) {
return diGuiJilian(val, options); return diGuiJilian(val, options);
} }
@ -976,7 +990,7 @@ const judjeCascader = (val: any[], options: any[]) => {
valAry.forEach((item: any) => { valAry.forEach((item: any) => {
// console.log("item", item); // console.log("item", item);
console.log(item + "=============:", item, diGuiJilian(item, options)); // console.log(item + "=============:", item, diGuiJilian(item, options));
if (title == "") { if (title == "") {
title = title + diGuiJilian(item, options); title = title + diGuiJilian(item, options);
} else { } else {

301
src/views/sysworkflow/lowcodepage/index.vue

@ -3,96 +3,98 @@
@ 时间: 2024-07-20 15:31:12 @ 时间: 2024-07-20 15:31:12
@ 备注: 应用设置 @ 备注: 应用设置
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { SearchForm, customerFormCont, customerFormConfig } from "@/api/DesignForm/type"; import { SearchForm, customerFormCont, customerFormConfig } from "@/api/DesignForm/type";
import { customerFormGroupList,editFormGroupState,createApp,gainAppEditPsge } from '@/api/DesignForm/requestapi' import {
customerFormGroupList,
editFormGroupState,
createApp,
gainAppEditPsge,
} from "@/api/DesignForm/requestapi";
import { Search } from '@element-plus/icons-vue' import { Search } from "@element-plus/icons-vue";
// //
import AppCardPage from "@/views/sysworkflow/lowcodepage/appCardPage.vue" import AppCardPage from "@/views/sysworkflow/lowcodepage/appCardPage.vue";
import AppListPage from "@/views/sysworkflow/lowcodepage/appListPage.vue" import AppListPage from "@/views/sysworkflow/lowcodepage/appListPage.vue";
import LowCodeFormPage from "@/views/sysworkflow/lowcodepage/lowCodeFormPage.vue" import LowCodeFormPage from "@/views/sysworkflow/lowcodepage/lowCodeFormPage.vue";
import LowCodeFormGroupPage from "@/views/sysworkflow/lowcodepage/lowCodeFormGroupPage.vue" import LowCodeFormGroupPage from "@/views/sysworkflow/lowcodepage/lowCodeFormGroupPage.vue";
import DesignAPPpage from "@/views/sysworkflow/lowcodepage/appPage/index.vue" // import DesignAPPpage from "@/views/sysworkflow/lowcodepage/appPage/index.vue"; //
const contbody = ref(); //
const contbody = ref() // const carPage = ref();
const carPage = ref() const appListPage = ref();
const appListPage = ref() const appGroup = ref("1");
const appGroup = ref("1") const page = ref<number>(1); //
const page = ref<number>(1) // const pageSize = ref<number>(12000); //
const pageSize = ref<number>(12000) // const pageTotal = ref<number>(0); //
const pageTotal = ref<number>(0) // const groupFormList = ref<any[]>([]); //
const groupFormList = ref<any[]>([]) //
const drawerWith = ref(); // const drawerWith = ref(); //
const appPageShow = ref(false) const appPageShow = ref(false);
const addFormGroupIsShow = ref(false) const addFormGroupIsShow = ref(false);
const formKey = ref<string>("") // const formKey = ref<string>(""); //
const formGroupKey = ref<string>("") // const formGroupKey = ref<string>(""); //
const drawerGroupWith = ref(); // const drawerGroupWith = ref(); //
const groupKey = ref<string>("") // const groupKey = ref<string>(""); //
const squareUrl = ref<string>('https://cube.elemecdn.com/9/c2/f0ee8a3c7c9638a54940382568c9dpng.png') const squareUrl = ref<string>(
"https://cube.elemecdn.com/9/c2/f0ee8a3c7c9638a54940382568c9dpng.png"
);
const searchQuery = reactive({ const searchQuery = reactive({
page: 1, page: 1,
pagesize: 20, pagesize: 20,
searchWork:"" searchWork: "",
}) });
const isClick = ref(1) const isClick = ref(1);
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-21 09:30:27 @ 时间: 2024-03-21 09:30:27
@ 功能: 获取表单分组 @ 功能: 获取表单分组
*/ */
const isUpdate = ref(false) const isUpdate = ref(false);
const gainFormGroup = () => { const gainFormGroup = () => {
let sendInfo = { let sendInfo = {
page: page.value, page: page.value,
pagesize: pageSize.value, pagesize: pageSize.value,
state:1 state: 1,
} };
customerFormGroupList(sendInfo) customerFormGroupList(sendInfo).then((data) => {
.then((data) =>{ pageTotal.value = data.data.total;
pageTotal.value = data.data.total
// pageTotal.value = 400 // pageTotal.value = 400
groupFormList.value = data.data.list groupFormList.value = data.data.list;
console.log("重新排序",groupFormList.value) // console.log("", groupFormList.value);
isUpdate.value = true isUpdate.value = true;
if (data.data.list && data.data.list.length > 0) { if (data.data.list && data.data.list.length > 0) {
let otherGroup = true let otherGroup = true;
data.data.list.forEach((item, index) => { data.data.list.forEach((item, index) => {
if (item.isTrue) { if (item.isTrue) {
appGroup.value = item.idStr.toString() appGroup.value = item.idStr.toString();
otherGroup = false otherGroup = false;
} }
}) });
if (otherGroup) { if (otherGroup) {
let lengNum = data.data.list.length let lengNum = data.data.list.length;
data.data.list.forEach((item, index) => { data.data.list.forEach((item, index) => {
if (lengNum > 1) { if (lengNum > 1) {
if (index == 1) { if (index == 1) {
appGroup.value = item.idStr.toString() appGroup.value = item.idStr.toString();
} }
} else { } else {
if (index == 0) { if (index == 0) {
appGroup.value = item.idStr.toString() appGroup.value = item.idStr.toString();
} }
} }
});
})
} }
} }
nextTick(() => { nextTick(() => {
searchSub() searchSub();
}) });
}) });
};
}
const handleClick = (val: any) => { const handleClick = (val: any) => {
// console.log("",val,appGroup) // console.log("",val,appGroup)
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ -101,18 +103,18 @@ const handleClick = (val:any) => {
*/ */
const viewChannel = (val: number) => { const viewChannel = (val: number) => {
isClick.value = val; isClick.value = val;
} };
onMounted(() => { onMounted(() => {
drawerWith.value = contbody.value?.clientWidth drawerWith.value = contbody.value?.clientWidth;
gainFormGroup() gainFormGroup();
}) });
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-20 16:19:45 @ 时间: 2024-07-20 16:19:45
@ 功能: 获取表单数据 @ 功能: 获取表单数据
*/ */
const handleCurrentChange = (val:any) => {} const handleCurrentChange = (val: any) => {};
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ -121,19 +123,19 @@ const handleCurrentChange = (val:any) => {}
*/ */
const searchSub = () => { const searchSub = () => {
if (isClick.value == 1) { if (isClick.value == 1) {
carPage.value.getFormAppList(searchQuery) carPage.value.getFormAppList(searchQuery);
} else { } else {
appListPage.value.getFormAppList(searchQuery) appListPage.value.getFormAppList(searchQuery);
}
} }
};
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-04-01 14:27:51 @ 时间: 2024-04-01 14:27:51
@ 功能: 获取容器宽度 @ 功能: 获取容器宽度
*/ */
const getRongQiAttr = () => { const getRongQiAttr = () => {
drawerWith.value = contbody.value?.clientWidth drawerWith.value = contbody.value?.clientWidth;
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ -143,45 +145,41 @@ const getRongQiAttr = () => {
const handleCommand = (command: string, groupId: string) => { const handleCommand = (command: string, groupId: string) => {
// ElMessage(`click on item ${command}`) // ElMessage(`click on item ${command}`)
if (command == "addForm") { if (command == "addForm") {
formKey.value = "" formKey.value = "";
formGroupKey.value = groupId formGroupKey.value = groupId;
// addFormIsShow.value = true // addFormIsShow.value = true
drawerWith.value = contbody.value?.clientWidth drawerWith.value = contbody.value?.clientWidth;
addFormIsShow.value = true; addFormIsShow.value = true;
} else if (command == "addFormApp") { } else if (command == "addFormApp") {
drawerWith.value = contbody.value?.clientWidth;
drawerWith.value = contbody.value?.clientWidth
let sendInfo = { let sendInfo = {
id:groupId.toString() id: groupId.toString(),
} };
createApp(sendInfo) createApp(sendInfo)
.then((data) => { .then((data) => {
formKey.value = data.data.uuid formKey.value = data.data.uuid;
groupKey.value = groupId.toString() groupKey.value = groupId.toString();
nextTick(() => { nextTick(() => {
appPageShow.value = true appPageShow.value = true;
}); });
}) })
.finally(() => { .finally(() => {});
})
} else { } else {
groupKey.value = "" groupKey.value = "";
addFormGroupIsShow.value = true addFormGroupIsShow.value = true;
drawerGroupWith.value = 400 drawerGroupWith.value = 400;
}
} }
};
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-21 13:53:29 @ 时间: 2024-03-21 13:53:29
@ 功能: 编辑分组 @ 功能: 编辑分组
*/ */
const editFormGroup = (id: string) => { const editFormGroup = (id: string) => {
groupKey.value = id groupKey.value = id;
addFormGroupIsShow.value = true addFormGroupIsShow.value = true;
drawerGroupWith.value = 400 drawerGroupWith.value = 400;
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-09 09:06:44 @ 时间: 2024-03-09 09:06:44
@ -194,10 +192,9 @@ const refreshPage = (pageType:string) =>{
} else { } else {
addFormGroupIsShow.value = false; addFormGroupIsShow.value = false;
} }
console.log("刷新页面") // console.log("");
gainFormGroup() gainFormGroup();
};
}
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ -205,46 +202,49 @@ const refreshPage = (pageType:string) =>{
@ 功能: 改变分组状态 @ 功能: 改变分组状态
*/ */
const eidtGroupStatus = (id: string, state: number) => { const eidtGroupStatus = (id: string, state: number) => {
ElMessageBox.confirm( ElMessageBox.confirm(
'您确定要删除此分组吗?一经删除!数据将不可恢复!请慎重执行此操作!!!', "您确定要删除此分组吗?一经删除!数据将不可恢复!请慎重执行此操作!!!",
'温馨提示', "温馨提示",
{ {
confirmButtonText: '确定', confirmButtonText: "确定",
cancelButtonText: '取消', cancelButtonText: "取消",
type: 'warning', type: "warning",
} }
) ).then(() => {
.then(() => {
let sendInfo = { let sendInfo = {
id: id.toString(), id: id.toString(),
status: state status: state,
} };
editFormGroupState(sendInfo) editFormGroupState(sendInfo).then((data) => {
.then((data) =>{ ElMessageBox.alert(data.msg, "温馨提示!", {
ElMessageBox.alert(data.msg, '温馨提示!', { confirmButtonText: "确定",
confirmButtonText: '确定',
callback: (action: Action) => { callback: (action: Action) => {
gainFormGroup() gainFormGroup();
} },
}); });
}) });
}) });
};
}
</script> </script>
<template> <template>
<div ref="contbody" class="tab-box"> <div ref="contbody" class="tab-box">
<el-tabs v-model="appGroup" :key="isUpdate" class="demo-tabs" @tab-click="handleClick"> <el-tabs
<el-tab-pane v-for="item in groupFormList" :label="item.title" :name="item.idStr"></el-tab-pane> v-model="appGroup"
:key="isUpdate"
class="demo-tabs"
@tab-click="handleClick"
>
<el-tab-pane
v-for="item in groupFormList"
:label="item.title"
:name="item.idStr"
></el-tab-pane>
</el-tabs> </el-tabs>
<div class="appSubButton"> <div class="appSubButton">
<el-input <el-input
v-model="searchQuery.searchWork" v-model="searchQuery.searchWork"
style="max-width: 150px;margin: 15px 10px 15px 0;" style="max-width: 150px; margin: 15px 10px 15px 0"
placeholder="请输入名称" placeholder="请输入名称"
class="input-with-select" class="input-with-select"
clearable clearable
@ -254,17 +254,37 @@ const eidtGroupStatus = (id: string, state: number) => {
</template> </template>
</el-input> </el-input>
<el-button-group class="butGroup"> <el-button-group class="butGroup">
<el-button class="fa fa-object-group" :color="isClick==1?'#a0cfff':''" @click="viewChannel(1)" /> <el-button
<el-button class="fa fa-table" :color="isClick!=1?'#a0cfff':''" @click="viewChannel(2)" /> class="fa fa-object-group"
:color="isClick == 1 ? '#a0cfff' : ''"
@click="viewChannel(1)"
/>
<el-button
class="fa fa-table"
:color="isClick != 1 ? '#a0cfff' : ''"
@click="viewChannel(2)"
/>
<el-dropdown> <el-dropdown>
<el-button class="fa fa-reorder leftLink" /> <el-button class="fa fa-reorder leftLink" />
<template #dropdown> <template #dropdown>
<el-dropdown-item @click="handleCommand('addFormGroup',appGroup)" >新增分组</el-dropdown-item> <el-dropdown-item @click="handleCommand('addFormGroup', appGroup)"
<el-dropdown-item @click="handleCommand('addForm',appGroup)" style="display:none" >添加表单</el-dropdown-item> >新增分组</el-dropdown-item
<el-dropdown-item @click="handleCommand('addFormApp',appGroup)" >添加应用</el-dropdown-item> >
<el-dropdown-item @click="editFormGroup(appGroup)" divided>编辑</el-dropdown-item> <el-dropdown-item
<el-dropdown-item @click="eidtGroupStatus(appGroup,3)">删除</el-dropdown-item> @click="handleCommand('addForm', appGroup)"
style="display: none"
>添加表单</el-dropdown-item
>
<el-dropdown-item @click="handleCommand('addFormApp', appGroup)"
>添加应用</el-dropdown-item
>
<el-dropdown-item @click="editFormGroup(appGroup)" divided
>编辑</el-dropdown-item
>
<el-dropdown-item @click="eidtGroupStatus(appGroup, 3)"
>删除</el-dropdown-item
>
</template> </template>
</el-dropdown> </el-dropdown>
</el-button-group> </el-button-group>
@ -272,15 +292,46 @@ const eidtGroupStatus = (id: string, state: number) => {
</div> </div>
<div class="app-container"> <div class="app-container">
<AppCardPage ref="carPage" v-if="isClick==1" :app-group="appGroup" :search-query="searchQuery" :drawer-with="drawerWith" @getRongQiAttr="getRongQiAttr" /> <AppCardPage
<AppListPage ref="appListPage" v-else :app-group="appGroup" :search-query="searchQuery" :drawer-with="drawerWith" @getRongQiAttr="getRongQiAttr" /> ref="carPage"
v-if="isClick == 1"
:app-group="appGroup"
:search-query="searchQuery"
:drawer-with="drawerWith"
@getRongQiAttr="getRongQiAttr"
/>
<AppListPage
ref="appListPage"
v-else
:app-group="appGroup"
:search-query="searchQuery"
:drawer-with="drawerWith"
@getRongQiAttr="getRongQiAttr"
/>
</div> </div>
<DesignAPPpage v-model:is-show="appPageShow" :drawer-with="drawerWith" v-model:form-key="formKey" :group-key="groupKey" @refreshPage="refreshPage" /> <DesignAPPpage
v-model:is-show="appPageShow"
:drawer-with="drawerWith"
v-model:form-key="formKey"
:group-key="groupKey"
@refreshPage="refreshPage"
/>
<LowCodeFormPage v-if="addFormIsShow" :drawer-with="drawerWith" v-model:form-key="formKey" :form-group-key="formGroupKey" @refreshPage="refreshPage" /> <LowCodeFormPage
<LowCodeFormGroupPage v-if="addFormGroupIsShow" :drawer-with="drawerGroupWith" :group-key="groupKey" @refreshPage="refreshPage" /> v-if="addFormIsShow"
:drawer-with="drawerWith"
v-model:form-key="formKey"
:form-group-key="formGroupKey"
@refreshPage="refreshPage"
/>
<LowCodeFormGroupPage
v-if="addFormGroupIsShow"
:drawer-with="drawerGroupWith"
:group-key="groupKey"
@refreshPage="refreshPage"
/>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.app-container { .app-container {
height: calc(100% - 125px); height: calc(100% - 125px);
width: calc(100% - 40px); width: calc(100% - 40px);

4
src/views/sysworkflow/lowcodepage/newLowCode/appLayoutEdit/appContainerPage.vue

@ -73,7 +73,7 @@ const gainAppContent = () => {
id: props.pickAppInfo.signCodeStr, id: props.pickAppInfo.signCodeStr,
}; };
gainAppEditPsge(sendInfo).then((data) => { gainAppEditPsge(sendInfo).then((data) => {
console.log("获取app信息---》", data); // console.log("app---", data);
menusTree.value = data.data.menuTree; menusTree.value = data.data.menuTree;
appCont.appKey = data.data.appKey; appCont.appKey = data.data.appKey;
appCont.appName = data.data.appName; appCont.appName = data.data.appName;
@ -108,7 +108,7 @@ const closeAppDraw = () => {
*/ */
const openAppPageForm = (val: appMenuTreeInfo) => { const openAppPageForm = (val: appMenuTreeInfo) => {
checkedMenu.value = val; checkedMenu.value = val;
console.log("操作表单页面", val); // console.log("", val);
}; };
/** /**
@ 作者: 秦东 @ 作者: 秦东

5
src/views/sysworkflow/lowcodepage/pageFlow/appTableFlow.vue

@ -64,6 +64,7 @@ const flowMap = ref<any[]>(); //工作流
const nextStep = ref<number>(0); const nextStep = ref<number>(0);
const currentProgress = ref<number>(1); const currentProgress = ref<number>(1);
const nodeKey = ref<string>(""); const nodeKey = ref<string>("");
const purviewAry = ref<any[]>([]);
// //
const gainFlowChart = reactive<nodeFlow>({ const gainFlowChart = reactive<nodeFlow>({
id: "0", id: "0",
@ -123,6 +124,8 @@ const getTaskFormData = () => {
isFlowTable.value = false; isFlowTable.value = false;
drawbox.value = 800; drawbox.value = 800;
} }
nodeKey.value = data.flowPage.nodeKey;
purviewAry.value = data.tableFormPage.powerAry;
gainFlowChart.id = data.tableFormPage.flowkeystr; gainFlowChart.id = data.tableFormPage.flowkeystr;
console.log("表单数据--->1", data.flowPage.flowList); console.log("表单数据--->1", data.flowPage.flowList);
flowMap.value = data.flowPage.flowList; flowMap.value = data.flowPage.flowList;
@ -640,6 +643,8 @@ function optionsValue3Get3(data: any, fieldName: string) {
:close-app-submit="closeAppSubmit" :close-app-submit="closeAppSubmit"
:change-key-val="changeKeyVal" :change-key-val="changeKeyVal"
:save-draft-page="saveDraftPage" :save-draft-page="saveDraftPage"
:node-key="nodeKey"
:purview="purviewAry"
/> />
</el-main> </el-main>
<el-aside <el-aside

6
src/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue

@ -56,6 +56,7 @@ const flowMap = ref<any[]>(); //工作流
const nextStep = ref<number>(0); const nextStep = ref<number>(0);
const currentProgress = ref<number>(1); const currentProgress = ref<number>(1);
const nodeKey = ref<string>(""); const nodeKey = ref<string>("");
const purviewAry = ref<any[]>([]);
// //
const gainFlowChart = reactive<nodeFlow>({ const gainFlowChart = reactive<nodeFlow>({
id: "0", id: "0",
@ -114,6 +115,9 @@ const getTaskFormData = () => {
} else { } else {
isFlowTable.value = false; isFlowTable.value = false;
} }
nodeKey.value = data.flowPage.nodeKey;
purviewAry.value = data.tableFormPage.powerAry;
gainFlowChart.id = data.tableFormPage.flowkeystr; gainFlowChart.id = data.tableFormPage.flowkeystr;
// console.log("--->1",data.flowPage.flowList) // console.log("--->1",data.flowPage.flowList)
flowMap.value = data.flowPage.flowList; flowMap.value = data.flowPage.flowList;
@ -550,6 +554,8 @@ function optionsValue3Get3(data: any, fieldName: string) {
:close-app-submit="closeAppSubmit" :close-app-submit="closeAppSubmit"
:change-key-val="changeKeyVal" :change-key-val="changeKeyVal"
:save-draft-page="saveDraftPage" :save-draft-page="saveDraftPage"
:node-key="nodeKey"
:purview="purviewAry"
/> />
</el-main> </el-main>
<el-aside <el-aside

73
src/views/sysworkflow/lowcodepage/runApp/regularPage.vue

@ -3,63 +3,80 @@
@ 时间: 2024-05-31 09:20:58 @ 时间: 2024-05-31 09:20:58
@ 备注: 固定App项目 @ 备注: 固定App项目
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { taskflowquery } from '@/api/DesignForm/type' import { taskflowquery } from "@/api/DesignForm/type";
// //
import MyToDoPage from '@/views/sysworkflow/lowcodepage/runApp/regularPage/myToDoPage.vue' import MyToDoPage from "@/views/sysworkflow/lowcodepage/runApp/regularPage/myToDoPage.vue";
import CompletedMattersPage from '@/views/sysworkflow/lowcodepage/runApp/regularPage/completedMattersPage.vue' import CompletedMattersPage from "@/views/sysworkflow/lowcodepage/runApp/regularPage/completedMattersPage.vue";
import SendCopy from '@/views/sysworkflow/lowcodepage/runApp/regularPage/sendCopy.vue' import SendCopy from "@/views/sysworkflow/lowcodepage/runApp/regularPage/sendCopy.vue";
import MyCreate from '@/views/sysworkflow/lowcodepage/runApp/regularPage/myCreate.vue' import MyCreate from "@/views/sysworkflow/lowcodepage/runApp/regularPage/myCreate.vue";
import MyDrafts from '@/views/sysworkflow/lowcodepage/runApp/regularPage/myDrafts.vue' import MyDrafts from "@/views/sysworkflow/lowcodepage/runApp/regularPage/myDrafts.vue";
const props = defineProps({ const props = defineProps({
pickAppMenu: { pickAppMenu: {
type: Object, type: Object,
default() { default() {
return {} return {};
} },
}, },
drawerWith: { drawerWith: {
type: Number, type: Number,
default:0 default: 0,
} },
}); });
const loadingTd = ref(false) const loadingTd = ref(false);
const searckFormRefTd = ref(ElForm); // const searckFormRefTd = ref(ElForm); //
const taskFlowAryTd = ref<any>([]) // const taskFlowAryTd = ref<any>([]); //
// //
const selectInfoTd = reactive<taskflowquery>({ const selectInfoTd = reactive<taskflowquery>({
page: 1, page: 1,
pagesize: 20, pagesize: 20,
class: 2 class: 2,
}) });
const totalstd = ref<number>(0) // const totalstd = ref<number>(0); //
// //
const initData = () => { const initData = () => {
selectInfoTd.page = 1; selectInfoTd.page = 1;
selectInfoTd.pagesize = 15; selectInfoTd.pagesize = 15;
selectInfoTd.title = "" selectInfoTd.title = "";
selectInfoTd.class = 2; selectInfoTd.class = 2;
selectInfoTd.state = 0; selectInfoTd.state = 0;
} };
// //
const resetQueryTd = () => { const resetQueryTd = () => {
searckFormRefTd.value.resetFields(); searckFormRefTd.value.resetFields();
initData(); initData();
} };
</script> </script>
<template> <template>
<el-scrollbar class="scroBox"> <el-scrollbar class="scroBox">
<MyToDoPage v-if="props.pickAppMenu.isMain==1" :pick-app-menu="pickAppMenu" :drawer-with="props.drawerWith" /> <MyToDoPage
<CompletedMattersPage v-if="props.pickAppMenu.isMain==2" :pick-app-menu="pickAppMenu" :drawer-with="props.drawerWith" /> v-if="props.pickAppMenu.isMain == 1"
<SendCopy v-if="props.pickAppMenu.isMain==3" :pick-app-menu="pickAppMenu" :drawer-with="props.drawerWith" /> :pick-app-menu="pickAppMenu"
<MyCreate v-if="props.pickAppMenu.isMain==4" :pick-app-menu="pickAppMenu" :drawer-with="props.drawerWith" /> :drawer-with="props.drawerWith"
<MyDrafts v-if="props.pickAppMenu.isMain==5" :pick-app-menu="pickAppMenu" :drawer-with="props.drawerWith" /> />
<CompletedMattersPage
v-if="props.pickAppMenu.isMain == 2"
:pick-app-menu="pickAppMenu"
:drawer-with="props.drawerWith"
/>
<SendCopy
v-if="props.pickAppMenu.isMain == 3"
:pick-app-menu="pickAppMenu"
:drawer-with="props.drawerWith"
/>
<MyCreate
v-if="props.pickAppMenu.isMain == 4"
:pick-app-menu="pickAppMenu"
:drawer-with="props.drawerWith"
/>
<MyDrafts
v-if="props.pickAppMenu.isMain == 5"
:pick-app-menu="pickAppMenu"
:drawer-with="props.drawerWith"
/>
</el-scrollbar> </el-scrollbar>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped></style>
</style>

134
src/views/sysworkflow/lowcodepage/runApp/regularPage/myToDoPage.vue

@ -3,97 +3,99 @@
@ 时间: 2024-05-31 10:50:09 @ 时间: 2024-05-31 10:50:09
@ 备注: 待我处理 @ 备注: 待我处理
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { gainAppTaskList } from "@/api/DesignForm/requestapi" import { gainAppTaskList } from "@/api/DesignForm/requestapi";
import { taskflowquery } from '@/api/DesignForm/type' import { taskflowquery } from "@/api/DesignForm/type";
import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookFlowInfoApp.vue'
import LookAndOperateLogInfo from "@/views/taskplatform/taskmanagement/lookFlowInfoApp.vue";
const props = defineProps({ const props = defineProps({
pickAppMenu: { pickAppMenu: {
type: Object, type: Object,
default() { default() {
return {} return {};
} },
}, },
drawerWith: { drawerWith: {
type: Number, type: Number,
default:0 default: 0,
} },
}); });
const loadingTd = ref(false) const loadingTd = ref(false);
const searckFormRefTd = ref(ElForm); // const searckFormRefTd = ref(ElForm); //
const taskFlowAryTd = ref<any>([]) // const taskFlowAryTd = ref<any>([]); //
// //
const selectInfoTd = reactive<taskflowquery>({ const selectInfoTd = reactive<taskflowquery>({
page: 1, page: 1,
pagesize: 20, pagesize: 20,
class: 2, class: 2,
id:props.pickAppMenu.appkey id: props.pickAppMenu.appkey,
}) });
const totalstd = ref<number>(0) // const totalstd = ref<number>(0); //
// //
const initData = () => { const initData = () => {
selectInfoTd.page = 1; selectInfoTd.page = 1;
selectInfoTd.pagesize = 15; selectInfoTd.pagesize = 15;
selectInfoTd.title = "" selectInfoTd.title = "";
selectInfoTd.class = 2; selectInfoTd.class = 2;
selectInfoTd.state = 0; selectInfoTd.state = 0;
} };
// //
const resetQueryTd = () => { const resetQueryTd = () => {
searckFormRefTd.value.resetFields(); searckFormRefTd.value.resetFields();
initData(); initData();
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-06-07 09:28:35 @ 时间: 2024-06-07 09:28:35
@ 功能: 加载数据 @ 功能: 加载数据
*/ */
const getToDoList = () => { const getToDoList = () => {
gainAppTaskList(selectInfoTd) gainAppTaskList(selectInfoTd).then((data) => {
.then((data) =>{
// console.log("--->",data) // console.log("--->",data)
totalstd.value = data.data.total totalstd.value = data.data.total;
taskFlowAryTd.value = data.data.list taskFlowAryTd.value = data.data.list;
}) });
} };
onMounted(() => { onMounted(() => {
getToDoList() getToDoList();
}) });
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-06-17 08:13:56 @ 时间: 2024-06-17 08:13:56
@ 功能: 搜索 @ 功能: 搜索
*/ */
const getToDoListTd = () => { const getToDoListTd = () => {
getToDoList() getToDoList();
} };
const flowLogInfo = ref<any>();
const flowLogInfo = ref<any>() const darwOpenOrClose = ref(false);
const darwOpenOrClose = ref(false)
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-06-17 14:46:51 @ 时间: 2024-06-17 14:46:51
@ 功能: 查看表单详情 @ 功能: 查看表单详情
*/ */
const lookFlowInfo = (val: any, types: number) => { const lookFlowInfo = (val: any, types: number) => {
flowLogInfo.value = val console.log("查看表单详情", val);
darwOpenOrClose.value = true flowLogInfo.value = val;
} darwOpenOrClose.value = true;
const searchQuery = () =>{} };
const searchQuery = () => {};
</script> </script>
<template> <template>
<div ref="myappbox" class="app_box"> <div ref="myappbox" class="app_box">
<LookAndOperateLogInfo v-if="darwOpenOrClose" v-model:isshow="darwOpenOrClose" :flow-log-info="flowLogInfo" :drawer-with="props.drawerWith" @getmytodolist="getToDoListTd" /> <LookAndOperateLogInfo
v-if="darwOpenOrClose"
v-model:isshow="darwOpenOrClose"
:flow-log-info="flowLogInfo"
:drawer-with="props.drawerWith"
@getmytodolist="getToDoListTd"
/>
<div class="app-container"> <div class="app-container">
<div class="search"> <div class="search">
<div class="titleBox"> <div class="titleBox">代办事宜</div>
代办事宜
</div>
<el-form ref="searckFormRefTd" :model="selectInfoTd" :inline="true"> <el-form ref="searckFormRefTd" :model="selectInfoTd" :inline="true">
<el-form-item label="任务标题" prop="name"> <el-form-item label="任务标题" prop="name">
<el-input <el-input
@ -104,11 +106,12 @@ const searchQuery = () =>{}
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="getToDoListTd()"><i-ep-search />搜索</el-button> <el-button type="primary" @click="getToDoListTd()"
><i-ep-search />搜索</el-button
>
<el-button @click="resetQueryTd()"><i-ep-refresh />重置</el-button> <el-button @click="resetQueryTd()"><i-ep-refresh />重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<el-card shadow="never"> <el-card shadow="never">
<el-table <el-table
@ -119,22 +122,24 @@ const searchQuery = () =>{}
border border
class="table_box" class="table_box"
> >
<el-table-column fixed label="标题" prop="title" width="500" /> <el-table-column fixed label="标题" prop="title" width="200" />
<el-table-column label="创建人" prop="creater" width="150" align="center"> <el-table-column label="创建人" prop="creater" width="150" align="center">
<template #default="scope"> <template #default="scope">
{{ scope.row.creatorInfo.name }}<el-text type="info">{{ scope.row.creatorInfo.number }}</el-text> {{ scope.row.creatorInfo.name }}<el-text type="info">{{
scope.row.creatorInfo.number
}}</el-text
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="发起日期" prop="startDate" align="center" min-width="200" /> <el-table-column
label="发起日期"
prop="startDate"
align="center"
min-width="200"
/>
<el-table-column label="状态" prop="status" align="center" width="120"> <el-table-column label="状态" prop="status" align="center" width="120">
<template #default="scope"> <template #default="scope">
<el-tag <el-tag v-if="scope.row.status == 1" class="mx-1" effect="plain" round>
v-if="scope.row.status==1"
class="mx-1"
effect="plain"
round
>
草稿 草稿
</el-tag> </el-tag>
<el-tag <el-tag
@ -164,20 +169,19 @@ const searchQuery = () =>{}
> >
归档 归档
</el-tag> </el-tag>
<el-tag <el-tag v-else type="info" class="mx-1" effect="plain" round> 删除 </el-tag>
v-else
type="info"
class="mx-1"
effect="plain"
round
>
删除
</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="当前节点及操作人" prop="currentStep" width="200"> <el-table-column label="当前节点及操作人" prop="currentStep" width="200">
<template #default="scope"> <template #default="scope">
<el-text v-if="scope.row.currentNodeName" type="success">{{ scope.row.currentNodeName }}:</el-text><el-text v-for="(item,index) in scope.row.currentNodeUser" :key="index" type="warning">{{ item.name }}({{ item.number }})</el-text> <el-text v-if="scope.row.currentNodeName" type="success"
>{{ scope.row.currentNodeName }}</el-text
><el-text
v-for="(item, index) in scope.row.currentNodeUser"
:key="index"
type="warning"
>{{ item.name }}({{ item.number }})</el-text
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="100"> <el-table-column fixed="right" align="center" label="操作" width="100">
@ -188,7 +192,12 @@ const searchQuery = () =>{}
content="查看详情" content="查看详情"
placement="top-end" placement="top-end"
> >
<el-button type="primary" size="small" class="fa fa-eye" @click="lookFlowInfo(scope.row,2)" /> <el-button
type="primary"
size="small"
class="fa fa-eye"
@click="lookFlowInfo(scope.row, 2)"
/>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
@ -199,12 +208,11 @@ const searchQuery = () =>{}
v-model:limit="selectInfoTd.pagesize" v-model:limit="selectInfoTd.pagesize"
@pagination="getToDoListTd" @pagination="getToDoListTd"
/> />
</el-card> </el-card>
</div> </div>
</div> </div>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.app_box { .app_box {
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;

211
src/views/taskplatform/taskmanagement/lookFlowInfoApp.vue

@ -3,44 +3,60 @@
@ 时间: 2024-06-17 15:30:36 @ 时间: 2024-06-17 15:30:36
@ 备注: App执行任务 @ 备注: App执行任务
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { submitButton, afreshSubmitButton,editFormCont,draftSubmitButton,editLookFormCont } from "@/utils/workflow/const"; import {
submitButton,
afreshSubmitButton,
editFormCont,
draftSubmitButton,
editLookFormCont,
} from "@/utils/workflow/const";
import { import {
json2string, json2string,
objToStringify, objToStringify,
string2json, string2json,
stringToObj stringToObj,
} from '@/utils/DesignForm/form' } from "@/utils/DesignForm/form";
import { haveCustomerFormVersion,generateFlow,gainTaskFormInfo,gainEditDataLog } from '@/api/taskapi/management'
import RunFlowStepApp from '@/views/taskplatform/taskmanagement/runFlowStepApp.vue' import {
haveCustomerFormVersion,
generateFlow,
gainTaskFormInfo,
gainEditDataLog,
} from "@/api/taskapi/management";
import { judgeSubmitCancel,startRunFlow,afreshRunFlow,onlyPublishFlow,gainEditFormFlowInfo } from '@/api/DesignForm/requestapi' import RunFlowStepApp from "@/views/taskplatform/taskmanagement/runFlowStepApp.vue";
import {
judgeSubmitCancel,
startRunFlow,
afreshRunFlow,
onlyPublishFlow,
gainEditFormFlowInfo,
} from "@/api/DesignForm/requestapi";
import FlowStep from '@/views/taskplatform/taskmanagement/flowStep.vue' import FlowStep from "@/views/taskplatform/taskmanagement/flowStep.vue";
const props = defineProps({ const props = defineProps({
isshow: { isshow: {
type: Boolean, type: Boolean,
default:true default: true,
}, },
drawerWith: { drawerWith: {
type: Number, type: Number,
default:0 default: 0,
}, },
flowLogInfo: { flowLogInfo: {
type: Object, type: Object,
default() { default() {
return {} return {};
} },
}, },
operState: { operState: {
type: Number, type: Number,
default:1 default: 1,
} },
}) });
const flowAry = ref<any[]>(); const flowAry = ref<any[]>();
const emits = defineEmits(["update:isshow", "getmytodolist"]); const emits = defineEmits(["update:isshow", "getmytodolist"]);
const isOpen = computed({ const isOpen = computed({
@ -49,79 +65,80 @@ const isOpen = computed({
emits("update:isshow", val); emits("update:isshow", val);
}, },
}); });
const logistrue = ref(false) const logistrue = ref(false);
const formLoading = ref(false) const formLoading = ref(false);
const loadingData = ref(false) // const loadingData = ref(false); //
const flowLoading = ref(false) // const flowLoading = ref(false); //
const versiontitle = ref<any>("") const versiontitle = ref<any>("");
const flowMap = ref<any>() const flowMap = ref<any>();
const nextStep = ref(0) const nextStep = ref(0);
const nodeKey = ref<string>(''); const nodeKey = ref<string>("");
const purviewAry = ref<any[]>([]);
const currentProgress = ref<number>(1); const currentProgress = ref<number>(1);
const newLogAry = ref<any>("") const newLogAry = ref<any>("");
const oldLogAry = ref<any>("") const oldLogAry = ref<any>("");
const newDataLen = ref<number>(0); const newDataLen = ref<number>(0);
// //
const formState = reactive({ const formState = reactive({
formData: { formData: {
list: [], list: [],
form: {}, form: {},
config: {} config: {},
}, },
dict: {}, dict: {},
formId: 25, formId: 25,
id: 1, id: 1,
loading: true loading: true,
}) });
const formEl = ref<any>() const formEl = ref<any>();
const drawerBeforeClose = () => { const drawerBeforeClose = () => {
// console.log("",false) // console.log("",false)
emits("getmytodolist") emits("getmytodolist");
emits("update:isshow", false); emits("update:isshow", false);
} };
onMounted(() => { onMounted(() => {
versiontitle.value = props.flowLogInfo.title versiontitle.value = props.flowLogInfo.title;
flowMap.value = JSON.parse(props.flowLogInfo.flowcont) flowMap.value = JSON.parse(props.flowLogInfo.flowcont);
// console.log("",props.flowLogInfo) // console.log("",props.flowLogInfo)
gainFormData() gainFormData();
}) });
const pageLog = ref<any[]>([]) const pageLog = ref<any[]>([]);
// //
const gainFormData = () => { const gainFormData = () => {
formLoading.value = true; formLoading.value = true;
// console.log("--->",props.flowLogInfo) console.log("获取表单内容--->", props.flowLogInfo);
nextStep.value = props.flowLogInfo.nextStep nextStep.value = props.flowLogInfo.nextStep;
nodeKey.value = props.flowLogInfo.nodeKey; nodeKey.value = props.flowLogInfo.currentNodeKey;
currentProgress.value = props.flowLogInfo.currentStep purviewAry.value = props.flowLogInfo.powerAry;
currentProgress.value = props.flowLogInfo.currentStep;
// console.log("props.flowLogInfo--5-------->",props.flowLogInfo.mastesform) // console.log("props.flowLogInfo--5-------->",props.flowLogInfo.mastesform)
formState.formData = stringToObj(props.flowLogInfo.mastesform) formState.formData = stringToObj(props.flowLogInfo.mastesform);
gainTaskFormInfo({ id: props.flowLogInfo.mastersKeyStr }) gainTaskFormInfo({ id: props.flowLogInfo.mastersKeyStr })
.then((data: any) => { .then((data: any) => {
if (data.data.logistrue) { if (data.data.logistrue) {
formState.formData.list.push(editLookFormCont) formState.formData.list.push(editLookFormCont);
} }
// console.log("res----------->",data) // console.log("res----------->",data)
formEl.value.setValue(data.data.masterDataInfo) formEl.value.setValue(data.data.masterDataInfo);
newLogAry.value = data.data.newData newLogAry.value = data.data.newData;
oldLogAry.value = data.data.oldData oldLogAry.value = data.data.oldData;
logistrue.value = data.data.logistrue logistrue.value = data.data.logistrue;
newDataLen.value = data.data.newDataLen newDataLen.value = data.data.newDataLen;
formLoading.value = false; formLoading.value = false;
nextTick(() => { nextTick(() => {
// console.log("-1111-->",data.data.tableData) // console.log("-1111-->",data.data.tableData)
formEl.value.setValue(data.data.tableData) formEl.value.setValue(data.data.tableData);
}) });
}) })
.finally(() => { .finally(() => {
formLoading.value = false; formLoading.value = false;
gainEditDataLog({id:props.flowLogInfo.mastersKeyStr}) gainEditDataLog({ id: props.flowLogInfo.mastersKeyStr }).then(({ data }) => {
.then(({data})=>{
// console.log("-1111-->",data) // console.log("-1111-->",data)
pageLog.value = data pageLog.value = data;
});
}); });
})
// haveCustomerFormVersion({id:props.flowLogInfo.version_id.toString()}) // haveCustomerFormVersion({id:props.flowLogInfo.version_id.toString()})
// .then(({ data }) =>{ // .then(({ data }) =>{
@ -142,17 +159,29 @@ const gainFormData = () =>{
// formEl // formEl
// }) // })
} };
</script> </script>
<template> <template>
<el-drawer v-model="isOpen" v-loading="loadingData" element-loading-my-text="Loading..." :title="versiontitle" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="props.drawerWith" class="drawerClass" :before-close="drawerBeforeClose"> <el-drawer
v-model="isOpen"
v-loading="loadingData"
element-loading-my-text="Loading..."
:title="versiontitle"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
:size="props.drawerWith"
class="drawerClass"
:before-close="drawerBeforeClose"
>
<table border="0" class="tableFlowBox"> <table border="0" class="tableFlowBox">
<tr> <tr>
<td valign="top"> <td valign="top">
<div class="drawerFormBox boxLeft"> <div class="drawerFormBox boxLeft">
<ak-form <ak-form
ref="formEl" ref="formEl"
v-loading="formLoading" element-loading-text="Loading..." v-loading="formLoading"
element-loading-text="Loading..."
:form-data="formState.formData" :form-data="formState.formData"
:type="formType" :type="formType"
:dict="formState.dict" :dict="formState.dict"
@ -165,54 +194,82 @@ const gainFormData = () =>{
:anew-submit="anewSubmit" :anew-submit="anewSubmit"
:save-edit-form-info="saveEditFormInfo" :save-edit-form-info="saveEditFormInfo"
:send-draft-submit="sendDraftSubmit" :send-draft-submit="sendDraftSubmit"
:node-key="nodeKey"
:purview="purviewAry"
/> />
<el-divider v-if="pageLog&&pageLog.length > 0" content-position="left">历史2记录</el-divider>
<el-divider v-if="pageLog && pageLog.length > 0" content-position="left"
>历史记录</el-divider
>
<el-timeline> <el-timeline>
<el-timeline-item v-for="(item,index) in pageLog" :key="index" :timestamp="item.time+' 操作人:'+item.creater" placement="top"> <el-timeline-item
v-for="(item, index) in pageLog"
:key="index"
:timestamp="item.time + ' 操作人:' + item.creater"
placement="top"
>
<el-card> <el-card>
<el-descriptions border> <el-descriptions border>
<el-descriptions-item v-for="(mastItem,mastIndex) in item.masterdata" :key="mastIndex" :label="mastIndex"> <el-descriptions-item
v-for="(mastItem, mastIndex) in item.masterdata"
:key="mastIndex"
:label="mastIndex"
>
{{ mastItem }} {{ mastItem }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-tabs v-if="item.sunList" type="border-card" style="margin-top:20px;"> <el-tabs
<el-tab-pane v-for="(sonItem,sonIndex) in item.sunList" :label="sonIndex" :key="sonIndex"> v-if="item.sunList"
<el-descriptions v-for="(sonVal,sonIndex) in sonItem" :key="sonIndex" border> type="border-card"
<el-descriptions-item v-for="(sonCentor,sonKey) in sonVal" :key="sonKey" :label="sonKey"> {{sonCentor}} style="margin-top: 20px"
>
<el-tab-pane
v-for="(sonItem, sonIndex) in item.sunList"
:label="sonIndex"
:key="sonIndex"
>
<el-descriptions
v-for="(sonVal, sonIndex) in sonItem"
:key="sonIndex"
border
>
<el-descriptions-item
v-for="(sonCentor, sonKey) in sonVal"
:key="sonKey"
:label="sonKey"
>
{{ sonCentor }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<table style="margin-top:20px;"> <table style="margin-top: 20px">
<tr> <tr>
<td class="biankuang" width="100">修改说明</td> <td class="biankuang" width="100">修改说明</td>
<td class="biankuang">{{ item.explicate }}</td> <td class="biankuang">{{ item.explicate }}</td>
</tr> </tr>
</table> </table>
</el-card> </el-card>
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
</div> </div>
</td> </td>
<td valign="top" width="350"> <td valign="top" width="350">
<RunFlowStepApp ref="runstep" v-model:flowary="flowAry" :flow-key="props.flowLogInfo.idStr" :current-progress="currentProgress" @updatelist="drawerBeforeClose" /> <RunFlowStepApp
ref="runstep"
v-model:flowary="flowAry"
:flow-key="props.flowLogInfo.idStr"
:current-progress="currentProgress"
@updatelist="drawerBeforeClose"
/>
</td> </td>
</tr> </tr>
</table> </table>
</el-drawer> </el-drawer>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.biankuang { .biankuang {
border: 1px solid #D4D7DE; border: 1px solid #d4d7de;
padding: 10px 10px; padding: 10px 10px;
} }
</style> </style>

Loading…
Cancel
Save