Browse Source

流程修改

qin_v7
hreenshan112 1 year ago
parent
commit
57eaf3a4fe
  1. BIN
      src/assets/favicon.ico
  2. 349
      src/components/DesignForm/app/cardPage.vue
  3. 4980
      src/components/DesignForm/formControlPropertiNew.vue
  4. 212
      src/components/DesignForm/public/form/childTable.vue
  5. 561
      src/components/DesignForm/tableListPage/formPageCont.vue
  6. 1265
      src/components/DesignForm/tableListPage/index.vue
  7. 593
      src/views/sysworkflow/lowcodepage/appCardPage.vue
  8. 397
      src/views/sysworkflow/lowcodepage/index.vue
  9. 248
      src/views/taskplatform/taskmanagement/lookFlowInfoApp.vue
  10. 196
      vite.config.ts.timestamp-1731975545563-47f159282f4b9.mjs

BIN
src/assets/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

349
src/components/DesignForm/app/cardPage.vue

@ -3,75 +3,75 @@
@ 时间: 2024-07-17 15:35:39 @ 时间: 2024-07-17 15:35:39
@ 备注: 卡片视图 @ 备注: 卡片视图
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import type { ComponentSize } from 'element-plus' import type { ComponentSize } from "element-plus";
import { gainFormPageListCont } from '@/api/DesignForm/requestapi' import { gainFormPageListCont } from "@/api/DesignForm/requestapi";
import FormPageCont from '@/components/DesignForm/tableListPage/formPageCont.vue' import FormPageCont from "@/components/DesignForm/tableListPage/formPageCont.vue";
const props = defineProps({ const props = defineProps({
searchSend:{ searchSend: {
type:Object, type: Object,
default(){ default() {
return {} return {};
}
}, },
viewSetup:{
type:Object,
default(){
return {}
}
}, },
columnsFilter:{ viewSetup: {
type:Object, type: Object,
default(){ default() {
return {} return {};
} },
},
columnsFilter: {
type: Object,
default() {
return {};
},
},
drawerWith: {
type: Number,
default: 0,
}, },
drawerWith:{
type:Number,
default:0
}
}); });
const size = ref<ComponentSize>('default') const size = ref<ComponentSize>("default");
const lineRanks = ref(1) const lineRanks = ref(1);
const imgBox = computed(() => { const imgBox = computed(() => {
let cssStyle:any = {} let cssStyle: any = {};
if(props.viewSetup.form.imgWidth != 0){ if (props.viewSetup.form.imgWidth != 0) {
cssStyle['width'] = props.viewSetup.form.imgWidth + "px"; cssStyle["width"] = props.viewSetup.form.imgWidth + "px";
}else{ } else {
cssStyle['width'] = "50px"; cssStyle["width"] = "50px";
} }
if(props.viewSetup.form.imgHeight != 0){ if (props.viewSetup.form.imgHeight != 0) {
cssStyle['height'] = props.viewSetup.form.imgHeight + "px"; cssStyle["height"] = props.viewSetup.form.imgHeight + "px";
}else{ } else {
cssStyle['height'] = "50px"; cssStyle["height"] = "50px";
} }
return cssStyle return cssStyle;
}) });
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-18 14:26:46 @ 时间: 2024-07-18 14:26:46
@ 功能: 图像设定Css @ 功能: 图像设定Css
*/ */
const imgStyle = computed(() => { const imgStyle = computed(() => {
let cssStyle:any = {} let cssStyle: any = {};
cssStyle['border'] = "1px solid #ccc"; cssStyle["border"] = "1px solid #ccc";
cssStyle['border-radius'] = props.viewSetup.form.imgBorderRadius + "px"; cssStyle["border-radius"] = props.viewSetup.form.imgBorderRadius + "px";
cssStyle['padding'] = props.viewSetup.form.imgPadding + "px"; cssStyle["padding"] = props.viewSetup.form.imgPadding + "px";
if(props.viewSetup.form.imgWidth != 0){ if (props.viewSetup.form.imgWidth != 0) {
cssStyle['width'] = props.viewSetup.form.imgWidth + "px"; cssStyle["width"] = props.viewSetup.form.imgWidth + "px";
}else{ } else {
cssStyle['width'] = "50px"; cssStyle["width"] = "50px";
} }
if(props.viewSetup.form.imgHeight != 0){ if (props.viewSetup.form.imgHeight != 0) {
cssStyle['height'] = props.viewSetup.form.imgHeight + "px"; cssStyle["height"] = props.viewSetup.form.imgHeight + "px";
}else{ } else {
cssStyle['height'] = "50px"; cssStyle["height"] = "50px";
} }
// console.log("",cssStyle) // console.log("",cssStyle)
return cssStyle return cssStyle;
}) });
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ -79,161 +79,168 @@ const imgStyle = computed(() => {
@ 功能: 内容设定css @ 功能: 内容设定css
*/ */
const cardInfoBox = computed(() => { const cardInfoBox = computed(() => {
let cssStyle:any = {} let cssStyle: any = {};
cssStyle['width'] = (Math.round(24/props.viewSetup.form.ranks) - props.viewSetup.form.imgWidth) + "px"; cssStyle["width"] =
return cssStyle Math.round(24 / props.viewSetup.form.ranks) - props.viewSetup.form.imgWidth + "px";
}) return cssStyle;
onMounted(()=>{ });
lineRanks.value = Math.round(24/props.viewSetup.form.ranks) onMounted(() => {
nextTick(()=>{ lineRanks.value = Math.round(24 / props.viewSetup.form.ranks);
getCardList(props.searchSend) nextTick(() => {
}) getCardList(props.searchSend);
}) });
});
// const url = ref() // const url = ref()
// const srcList = ref([]) // const srcList = ref([])
const handleSizeChange = (val: number) => { const handleSizeChange = (val: number) => {
// console.log(`${val} items per page`)\ // console.log(`${val} items per page`)\
props.searchSend.page = 1 props.searchSend.page = 1;
props.searchSend.pagesize = val props.searchSend.pagesize = val;
// console.log(props.searchSend.pagesize) // console.log(props.searchSend.pagesize)
getCardList(props.searchSend) getCardList(props.searchSend);
} };
const handleCurrentChange = (val: number) => { const handleCurrentChange = (val: number) => {
// console.log(`current page: ${val}`) // console.log(`current page: ${val}`)
props.searchSend.page = val props.searchSend.page = val;
getCardList(props.searchSend) getCardList(props.searchSend);
} };
const url = const url = "https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg";
'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg' const srcList = (url: string) => {
const srcList = (url:string) =>{ return [url];
return [url]
return [ return [
'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg', "https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg",
'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg', "https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg",
'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg', "https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg",
'https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg', "https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg",
'https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg', "https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg",
'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg', "https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg",
'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg', "https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg",
] ];
} };
const cardDataList = ref([]) // const cardDataList = ref([]); //
const totalNum = ref(0) const totalNum = ref(0);
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-19 09:32:11 @ 时间: 2024-07-19 09:32:11
@ 功能: 获取数据 @ 功能: 获取数据
*/ */
const getCardList = (val:any) => { const getCardList = (val: any) => {
val.viewClass = { val.viewClass = {
class:"card" class: "card",
} };
gainFormPageListCont(val) gainFormPageListCont(val).then(({ data }) => {
.then(({data})=>{ totalNum.value = data.total;
totalNum.value = data.total
// console.log("--",data) // console.log("--",data)
cardDataList.value = data.list cardDataList.value = data.list;
}) });
} };
defineExpose({ defineExpose({
getCardList getCardList,
}) });
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-19 10:03:53 @ 时间: 2024-07-19 10:03:53
@ 功能: 获取图片显示 @ 功能: 获取图片显示
*/ */
const imgSrcPath = (val:any) => { const imgSrcPath = (val: any) => {
// console.log("", val[props.viewSetup.form.imgWork]) // console.log("", val[props.viewSetup.form.imgWork])
if(val[props.viewSetup.form.imgWork]){ if (val[props.viewSetup.form.imgWork]) {
return val[props.viewSetup.form.imgWork] return val[props.viewSetup.form.imgWork];
} }
return "" return "";
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-19 10:03:53 @ 时间: 2024-07-19 10:03:53
@ 功能: 获取图片数组显示 @ 功能: 获取图片数组显示
*/ */
const imgSrcAry = (val:any) => { const imgSrcAry = (val: any) => {
if(val[props.viewSetup.form.imgWork]){ if (val[props.viewSetup.form.imgWork]) {
if (val[props.viewSetup.form.imgWork] != ""){ if (val[props.viewSetup.form.imgWork] != "") {
return [val[props.viewSetup.form.imgWork]] return [val[props.viewSetup.form.imgWork]];
}else{ } else {
return [] return [];
} }
} }
return [] return [];
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-19 10:24:33 @ 时间: 2024-07-19 10:24:33
@ 功能: 获取内容 @ 功能: 获取内容
*/ */
const cardInfo = (val:any,cla:string) => { const cardInfo = (val: any, cla: string) => {
if(cla=="title"){ if (cla == "title") {
if(props.viewSetup.form.title){ if (props.viewSetup.form.title) {
var titleAry = []; var titleAry = [];
if(props.viewSetup.form.title.length > 0){ if (props.viewSetup.form.title.length > 0) {
props.viewSetup.form.title.forEach((item,index)=>{ props.viewSetup.form.title.forEach((item, index) => {
// console.log("--"+index+"-->",val[item]) // console.log("--"+index+"-->",val[item])
if(val[item]){ if (val[item]) {
titleAry.push(val[item]) titleAry.push(val[item]);
} }
}) });
} }
if(titleAry.length>0){ if (titleAry.length > 0) {
return titleAry.join() return titleAry.join();
}else{ } else {
let firstWord = "" let firstWord = "";
let powerAry = ["id","creater_time","edit_time","masters_key","states","flow_id"]; let powerAry = [
"id",
"creater_time",
"edit_time",
"masters_key",
"states",
"flow_id",
];
for (let key in val) { for (let key in val) {
if (val.hasOwnProperty(key)) { if (val.hasOwnProperty(key)) {
if(!powerAry.includes(key)){ if (!powerAry.includes(key)) {
if(val[key] != '' && val[key] != null){ if (val[key] != "" && val[key] != null) {
firstWord = val[key] firstWord = val[key];
} }
} }
} }
} }
return firstWord return firstWord;
} }
} }
if(val[props.viewSetup.form.titleWork]){ if (val[props.viewSetup.form.titleWork]) {
return val[props.viewSetup.form.titleWork] return val[props.viewSetup.form.titleWork];
} }
}else if(cla=="content"){ } else if (cla == "content") {
if(val[props.viewSetup.form.describe]){ if (val[props.viewSetup.form.describe]) {
return val[props.viewSetup.form.describe] return val[props.viewSetup.form.describe];
} }
} }
return "" return "";
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-04-03 13:24:06 @ 时间: 2024-04-03 13:24:06
@ 功能: 查看详细内容 @ 功能: 查看详细内容
*/ */
const tablePageClass = ref(1) const tablePageClass = ref(1);
const lookPageInfoIsShow = ref(false) const lookPageInfoIsShow = ref(false);
const pageInfoCont = ref<any>() const pageInfoCont = ref<any>();
const lookPageInfo = (val:any) => { const lookPageInfo = (val: any) => {
tablePageClass.value = 4; tablePageClass.value = 4;
pageInfoCont.value = val pageInfoCont.value = val;
lookPageInfoIsShow.value = true; lookPageInfoIsShow.value = true;
} };
</script> </script>
<template> <template>
<div> <div>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col
<el-col v-for="item in cardDataList" :key="item.id" :span="lineRanks" class="cardBox"> v-for="item in cardDataList"
:key="item.id"
:span="lineRanks"
class="cardBox"
>
<el-card @click="lookPageInfo(item)"> <el-card @click="lookPageInfo(item)">
<div class="cardContBox"> <div class="cardContBox">
<el-image <el-image
@ -246,17 +253,22 @@ const lookPageInfo = (val:any) => {
:initial-index="4" :initial-index="4"
fit="cover" fit="cover"
/> />
<div class="cardInfo" :style="'width: calc(100% - '+props.viewSetup.form.imgWidth+'px); height:'+props.viewSetup.form.imgHeight+'px; overflow: hidden;' "> <div
<div class="title">{{ cardInfo(item,"title") }}</div> class="cardInfo"
<div class="content">{{ cardInfo(item,"content") }}</div> :style="
'width: calc(100% - ' +
props.viewSetup.form.imgWidth +
'px); height:' +
props.viewSetup.form.imgHeight +
'px; overflow: hidden;'
"
>
<div class="title">{{ cardInfo(item, "title") }}</div>
<div class="content">{{ cardInfo(item, "content") }}</div>
</div> </div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
<div class="pageBox"> <div class="pageBox">
<el-pagination <el-pagination
@ -272,11 +284,17 @@ const lookPageInfo = (val:any) => {
class="page" class="page"
/> />
</div> </div>
<FormPageCont v-model:is-show="lookPageInfoIsShow" :drawer-with="props.drawerWith" :page-info="pageInfoCont" :table-page-class="tablePageClass" :oper-state="operState" @getPageData="getPageData" /> <FormPageCont
v-model:is-show="lookPageInfoIsShow"
:drawer-with="props.drawerWith"
:page-info="pageInfoCont"
:table-page-class="tablePageClass"
:oper-state="operState"
@getPageData="getPageData"
/>
</div> </div>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.demo-image__error .image-slot { .demo-image__error .image-slot {
font-size: 30px; font-size: 30px;
} }
@ -287,37 +305,36 @@ const lookPageInfo = (val:any) => {
width: 100%; width: 100%;
height: 200px; height: 200px;
} }
.cardBox{ .cardBox {
padding: 10px 0 5px 0; padding: 10px 0 5px 0;
:deep .el-card__body{ :deep .el-card__body {
padding:10px; padding: 10px;
} }
.title{ .title {
font-size:14px; font-size: 14px;
font-weight:bold; font-weight: bold;
display: -webkit-box; display: -webkit-box;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.content{ .content {
color: #909399; color: #909399;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.cardContBox{ .cardContBox {
display: flex; display: flex;
width: 100%; width: 100%;
justify-content: flex-start; justify-content: flex-start;
} }
.cardInfo{ .cardInfo {
padding-left: 5px; padding-left: 5px;
} }
} }
.pageBox{ .pageBox {
display:flex; display: flex;
justify-content: center; justify-content: center;
width: 100%; width: 100%;
text-align: center; text-align: center;

4980
src/components/DesignForm/formControlPropertiNew.vue

File diff suppressed because it is too large

212
src/components/DesignForm/public/form/childTable.vue

@ -3,104 +3,103 @@
@ 时间: 2023-07-14 08:51:25 @ 时间: 2023-07-14 08:51:25
@ 备注: 表单子表 @ 备注: 表单子表
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import FormItem from './formItem.vue' import FormItem from "./formItem.vue";
import { inject, computed } from 'vue' import { inject, computed } from "vue";
import Tooltips from '@/components/DesignForm/tooltip.vue' import Tooltips from "@/components/DesignForm/tooltip.vue";
import {constFormProps } from '@/api/DesignForm/utils' import { constFormProps } from "@/api/DesignForm/utils";
import { jsonParseStringify } from '@/utils/DesignForm' import { jsonParseStringify } from "@/utils/DesignForm";
import LowcodeImagePage from '@/components/DesignForm/public/expand/lowcodeImage.vue' import LowcodeImagePage from "@/components/DesignForm/public/expand/lowcodeImage.vue";
import AssociatedForms from '@/widget/associatedforms/index.vue' import AssociatedForms from "@/widget/associatedforms/index.vue";
import UploadPageList from '@/components/DesignForm/public/expand/uploadPageList.vue' import UploadPageList from "@/components/DesignForm/public/expand/uploadPageList.vue";
import LokOrgCentent from '@/widget/org/cont.vue'
import { SCOPE } from 'element-plus'
import LokOrgCentent from "@/widget/org/cont.vue";
import { SCOPE } from "element-plus";
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
data: any data: any;
}>(), }>(),
{ {
data: () => { data: () => {
return {} return {};
} },
} }
) );
const formProps = inject(constFormProps, {}) as any const formProps = inject(constFormProps, {}) as any;
const tableDataNew = computed(() => { const tableDataNew = computed(() => {
// console.log("-----1---->",props.data.name) // console.log("-----1---->",props.data.name)
// console.log("-----2---->",formProps.value.model[props.data.name]) // console.log("-----2---->",formProps.value.model[props.data.name])
// console.log("-----3---->",formProps.value.model) // console.log("-----3---->",formProps.value.model)
// console.log("-----4---->",formProps.value) // console.log("-----4---->",formProps.value)
return formProps.value.model[props.data.name] return formProps.value.model[props.data.name];
}) });
const type = computed(() => { const type = computed(() => {
return formProps.value.type return formProps.value.type;
}) });
// true // true
const editDisabled = computed(() => { const editDisabled = computed(() => {
return formProps.value.type === 2 && props.data.config?.editDisabled return formProps.value.type === 2 && props.data.config?.editDisabled;
}) });
const addColumn = () => { const addColumn = () => {
// console.log("--------->",tableDataNew.value) // console.log("--------->",tableDataNew.value)
const temp: any = {} const temp: any = {};
if (props.data.list) { if (props.data.list) {
props.data.list.forEach((item: any) => { props.data.list.forEach((item: any) => {
if (item.name) { if (item.name) {
temp[item.name] = item.control.modelValue temp[item.name] = item.control.modelValue;
} }
}) });
tableDataNew.value.push(jsonParseStringify(temp)) tableDataNew.value.push(jsonParseStringify(temp));
} }
} };
const getText = (text: any,val:any,name:any) => { const getText = (text: any, val: any, name: any) => {
console.log("text===>",text) console.log("text===>", text);
console.log("name===>",name) console.log("name===>", name);
console.log("val===>",val) console.log("val===>", val);
if (typeof text === 'string') { if (typeof text === "string") {
return text return text;
} else { } else {
return text && text.toString() return text && text.toString();
} }
} };
const delColumn = (index: number) => { const delColumn = (index: number) => {
tableDataNew.value.splice(index, 1) tableDataNew.value.splice(index, 1);
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-08-02 13:22:14 @ 时间: 2024-08-02 13:22:14
@ 功能: 时间戳转换对象 @ 功能: 时间戳转换对象
*/ */
const timeToAry = (timestamp:number) => { const timeToAry = (timestamp: number) => {
const date = new Date(timestamp); const date = new Date(timestamp);
const year = date.getFullYear(); const year = date.getFullYear();
const month = ('0' + (date.getMonth() + 1)).slice(-2); const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ('0' + date.getDate()).slice(-2); const day = ("0" + date.getDate()).slice(-2);
const hours = ('0' + date.getHours()).slice(-2); const hours = ("0" + date.getHours()).slice(-2);
const minutes = ('0' + date.getMinutes()).slice(-2); const minutes = ("0" + date.getMinutes()).slice(-2);
const seconds = ('0' + date.getSeconds()).slice(-2); const seconds = ("0" + date.getSeconds()).slice(-2);
return { return {
year:year, year: year,
month:month, month: month,
day:day, day: day,
hours:hours, hours: hours,
minutes:minutes, minutes: minutes,
seconds seconds,
} };
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-08-02 13:02:49 @ 时间: 2024-08-02 13:02:49
@ 功能: 将时间戳转换成字符串 @ 功能: 将时间戳转换成字符串
*/ */
const timeToString = (timeVal:any,types:int) => { const timeToString = (timeVal: any, types: int) => {
let timeStr = "" let timeStr = "";
if(Array.isArray(timeVal)){ if (Array.isArray(timeVal)) {
if(timeVal.length >= 2){ if (timeVal.length >= 2) {
let startTime = timeToAry(timeVal[0]) let startTime = timeToAry(timeVal[0]);
let endTime = timeToAry(timeVal[1]) let endTime = timeToAry(timeVal[1]);
switch(types){ switch (types) {
case "year": // case "year": //
timeStr = `${startTime.year}${endTime.year}`; timeStr = `${startTime.year}${endTime.year}`;
break; break;
@ -111,8 +110,8 @@ const timeToString = (timeVal:any,types:int) => {
timeStr = `${startTime.year}-${startTime.month}-${startTime.day} ${startTime.hours}:${startTime.minutes}:${startTime.seconds}${endTime.year}-${endTime.month}-${endTime.day} ${endTime.hours}:${endTime.minutes}:${endTime.seconds}`; timeStr = `${startTime.year}-${startTime.month}-${startTime.day} ${startTime.hours}:${startTime.minutes}:${startTime.seconds}${endTime.year}-${endTime.month}-${endTime.day} ${endTime.hours}:${endTime.minutes}:${endTime.seconds}`;
break; break;
case "week": // case "week": //
let startWeek = getYearWeek(startTime) let startWeek = getYearWeek(startTime);
let endWeek = getYearWeek(endTime) let endWeek = getYearWeek(endTime);
timeStr = `${startWeek}${endWeek}`; timeStr = `${startWeek}${endWeek}`;
break; break;
case "timeCalss": // case "timeCalss": //
@ -131,9 +130,9 @@ const timeToString = (timeVal:any,types:int) => {
timeStr = `${startTime.year}-${startTime.month}-${startTime.day}${endTime.year}-${endTime.month}-${endTime.day}`; timeStr = `${startTime.year}-${startTime.month}-${startTime.day}${endTime.year}-${endTime.month}-${endTime.day}`;
break; break;
} }
}else if(timeVal.length == 1){ } else if (timeVal.length == 1) {
let {year,month,day,hours,minutes,seconds} = timeToAry(timeVal[0]) let { year, month, day, hours, minutes, seconds } = timeToAry(timeVal[0]);
switch(types){ switch (types) {
case "year": // case "year": //
timeStr = `${year}`; timeStr = `${year}`;
break; break;
@ -144,21 +143,21 @@ const timeToString = (timeVal:any,types:int) => {
timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
break; break;
case "week": // case "week": //
timeStr = getYearWeek(timeVal) timeStr = getYearWeek(timeVal);
break; break;
case "timeCalss": // case "timeCalss": //
timeStr = `${hours}:${minutes}:${seconds}`; timeStr = `${hours}:${minutes}:${seconds}`;
break; break;
default: default:
timeStr = `${year}-${month}-${day}` timeStr = `${year}-${month}-${day}`;
break; break;
} }
}else{ } else {
timeStr = "未知时间" timeStr = "未知时间";
} }
}else{ } else {
let {year,month,day,hours,minutes,seconds} = timeToAry(timeVal) let { year, month, day, hours, minutes, seconds } = timeToAry(timeVal);
switch(types){ switch (types) {
case "year": // case "year": //
timeStr = `${year}`; timeStr = `${year}`;
break; break;
@ -169,37 +168,32 @@ const timeToString = (timeVal:any,types:int) => {
timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
break; break;
case "week": // case "week": //
timeStr = getYearWeek(timeVal) timeStr = getYearWeek(timeVal);
break; break;
case "timeCalss": // case "timeCalss": //
timeStr = `${hours}:${minutes}:${seconds}`; timeStr = `${hours}:${minutes}:${seconds}`;
break; break;
default: default:
timeStr = `${year}-${month}-${day}` timeStr = `${year}-${month}-${day}`;
break; break;
} }
} }
return timeStr return timeStr;
} };
let associatedFormsIndexTablekey = 0 let associatedFormsIndexTablekey = 0;
const emits = defineEmits<{ const emits = defineEmits<{
(e: 'asfValueChanged', val: any): void (e: "asfValueChanged", val: any): void;
}>() }>();
function asfValueChanged(val:any){ function asfValueChanged(val: any) {
//console.log("childTable-asfValueChanged",val) //console.log("childTable-asfValueChanged",val)
emits("asfValueChanged",val) emits("asfValueChanged", val);
} }
</script> </script>
<template> <template>
<div class="form-table form-table-add"> <div class="form-table form-table-add">
<el-table <el-table v-bind="data.control" :class="[data.className]" :data="tableDataNew">
v-bind="data.control"
:class="[data.className]"
:data="tableDataNew"
>
<el-table-column <el-table-column
v-for="(item, index) in data.list" v-for="(item, index) in data.list"
:key="index" :key="index"
@ -208,27 +202,37 @@ function asfValueChanged(val:any){
:width="item.item.span" :width="item.item.span"
> >
<template #default="scope"> <template #default="scope">
<span v-if="item.type === 'index'">{{ scope.$index + 1 }}</span> <span v-if="item.type === 'index'">{{ scope.$index + 1 }}</span>
<div v-if="type === 4 || editDisabled"> <div v-if="type === 4 || editDisabled">
<LokOrgCentent v-if="item.type == 'orgCentent'" :orgid="scope.row[item.name].toString()" /> <LokOrgCentent
<div v-else-if="item.type=='lowcodeImage'"> v-if="item.type == 'orgCentent'"
<LowcodeImagePage :data="item" :orgid="scope.row[item.name].toString()"
v-model="scope.row[item.name]" /> />
</div> <div v-else-if="item.type == 'lowcodeImage'">
<div v-else-if="item.type=='upload'" > <LowcodeImagePage :data="item" v-model="scope.row[item.name]" />
<UploadPageList :data="item" :img-list="scope.row[item.name]" :control="item.control" />
</div> </div>
<div v-else-if="item.type=='datePicker'" v-html="timeToString(scope.row[item.name],item.control.type)"> <div v-else-if="item.type == 'upload'">
<UploadPageList
:data="item"
:img-list="scope.row[item.name]"
:control="item.control"
/>
</div> </div>
<div v-else-if="item.type=='associatedForms'"> <div
<AssociatedForms :data="item" v-else-if="item.type == 'datePicker'"
v-model="scope.row[item.name]" :tablekey="associatedFormsIndexTablekey" :row-index="scope.$index"/> v-html="timeToString(scope.row[item.name], item.control.type)"
></div>
<div v-else-if="item.type == 'associatedForms'">
<AssociatedForms
:data="item"
v-model="scope.row[item.name]"
:tablekey="associatedFormsIndexTablekey"
:row-index="scope.$index"
/>
</div> </div>
<div v-else>{{ getText(scope.row[item.name],scope.row,item.name) }}</div> <div v-else>{{ getText(scope.row[item.name], scope.row, item.name) }}</div>
</div> </div>
<div v-else> <div v-else>
<form-item <form-item
v-model="scope.row[item.name]" v-model="scope.row[item.name]"
:tProp="`${data.name}.${scope.$index}.${item.name}`" :tProp="`${data.name}.${scope.$index}.${item.name}`"
@ -249,7 +253,9 @@ function asfValueChanged(val:any){
v-if="[1, 2].includes(type as number) && data.config.delBtnText && !editDisabled" v-if="[1, 2].includes(type as number) && data.config.delBtnText && !editDisabled"
> >
<template #default="scope"> <template #default="scope">
<el-button link type="primary" @click="delColumn(scope.$index)">{{ data.config.delBtnText }}</el-button> <el-button link type="primary" @click="delColumn(scope.$index)">{{
data.config.delBtnText
}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -261,6 +267,4 @@ function asfValueChanged(val:any){
</div> </div>
</div> </div>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped></style>
</style>

561
src/components/DesignForm/tableListPage/formPageCont.vue

@ -3,144 +3,156 @@
@ 时间: 2024-04-03 13:39:16 @ 时间: 2024-04-03 13:39:16
@ 备注: 列表内容展示 @ 备注: 列表内容展示
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { submitButton, afreshSubmitButton,editFormCont,draftSubmitButton,editLookFormCont } from "@/utils/workflow/const";
import { json2string,objToStringify,string2json,stringToObj } from '@/utils/DesignForm/form'
import { gainTaskFormInfo,generateFlow,gainEditDataLog,draftsInitiateApproval,afreshRunWorkflow } from '@/api/taskapi/management'
import { Close } from '@element-plus/icons-vue'
import { judgeSubmitCancel,startRunFlow } from '@/api/DesignForm/requestapi'
import { submitButtonEs } from '@/api/DesignForm/tableButton'
import { import {
constFormBtnEvent, submitButton,
constFormProps afreshSubmitButton,
} from '@/api/DesignForm/utils' editFormCont,
draftSubmitButton,
import RunFlowStep from '@/views/taskplatform/taskmanagement/runFlowStep.vue' editLookFormCont,
} from "@/utils/workflow/const";
import {
json2string,
objToStringify,
string2json,
stringToObj,
} from "@/utils/DesignForm/form";
import {
gainTaskFormInfo,
generateFlow,
gainEditDataLog,
draftsInitiateApproval,
afreshRunWorkflow,
} from "@/api/taskapi/management";
import { Close } from "@element-plus/icons-vue";
import { judgeSubmitCancel, startRunFlow } from "@/api/DesignForm/requestapi";
import { submitButtonEs } from "@/api/DesignForm/tableButton";
import { constFormBtnEvent, constFormProps } from "@/api/DesignForm/utils";
import RunFlowStep from "@/views/taskplatform/taskmanagement/runFlowStep.vue";
const props = defineProps({ const props = defineProps({
isShow:{ isShow: {
type:Boolean, type: Boolean,
default:false, default: false,
}, },
drawerWith:{ drawerWith: {
type:Number, type: Number,
default:0 default: 0,
}, },
tablePageClass:{ tablePageClass: {
type:Number, type: Number,
default:1 default: 1,
},
operState: {
type: Number,
default: 1,
},
pageInfo: {
type: Object,
default() {
return {};
}, },
operState:{
type:Number,
default:1
}, },
pageInfo:{
type:Object,
default(){
return {}
}
}
}); });
const formEl = ref<any>(); const formEl = ref<any>();
const emits = defineEmits(["update:isShow","getPageData"]); const emits = defineEmits(["update:isShow", "getPageData"]);
const formLoading = ref(false); const formLoading = ref(false);
const flowAry = ref<any[]>(); // const flowAry = ref<any[]>(); //
const currentProgress = ref<number>(1); // const currentProgress = ref<number>(1); //
const runstep = ref(null) const runstep = ref(null);
//ID //ID
const openOfClose = computed({ const openOfClose = computed({
get() { get() {
return props.isShow return props.isShow;
}, },
set(val: boolean) { set(val: boolean) {
emits('update:isShow', val) emits("update:isShow", val);
} },
}); });
const formProps = inject(constFormProps, {}) as any const formProps = inject(constFormProps, {}) as any;
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-04-03 14:09:24 @ 时间: 2024-04-03 14:09:24
@ 功能: 监听状态变化处理数据 @ 功能: 监听状态变化处理数据
*/ */
watch(()=>props.isShow,(val:bool)=>{ watch(
() => props.isShow,
if(val){ (val: bool) => {
if (val) {
formLoading.value = true; formLoading.value = true;
getCustomrrFormInfo(); getCustomrrFormInfo();
} }
}) }
);
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-04-03 14:25:15 @ 时间: 2024-04-03 14:25:15
@ 功能: 关闭抽屉 @ 功能: 关闭抽屉
*/ */
const closeDrawer = () => { const closeDrawer = () => {
emits('update:isShow', false) emits("update:isShow", false);
} };
// //
const formState = reactive({ const formState = reactive({
formData: { formData: {
list: [], list: [],
form: {}, form: {},
config: {} config: {},
}, },
dict: {}, dict: {},
formId: props.pageInfo.id, formId: props.pageInfo.id,
id: 1, id: 1,
loading: true loading: true,
}) });
const pageLog = ref<any[]>([]) const pageLog = ref<any[]>([]);
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-04-03 14:33:15 @ 时间: 2024-04-03 14:33:15
@ 功能: 获取自定义表单内容 @ 功能: 获取自定义表单内容
*/ */
const getCustomrrFormInfo = () => { const getCustomrrFormInfo = () => {
gainTaskFormInfo({id:props.pageInfo.masters_key}) gainTaskFormInfo({ id: props.pageInfo.masters_key })
.then(({data})=>{ .then(({ data }) => {
// console.log("",data,data.structure) console.log("获取自定义表单内容", data, data.structure);
formState.formData = stringToObj(data.structure.mastesform) formState.formData = stringToObj(data.structure.mastesform);
// console.log("--->",formState) // console.log("--->",formState)
formState.dict = string2json(data.structure.dict) formState.dict = string2json(data.structure.dict);
// formState.formData.list.push(editLookFormCont) // formState.formData.list.push(editLookFormCont)
if(props.tablePageClass != 4){ if (props.tablePageClass != 4) {
judgeSubmitCancel({"name":data.structure.mastesformjson}) judgeSubmitCancel({ name: data.structure.mastesformjson }).then((data: any) => {
.then((data:any) =>{ if (data.code == 0) {
if(data.code == 0){ if (data.data == 3 || data.data == 4) {
if (data.data == 3 || data.data == 4){
// formState.formData.list.push(submitButtonEs) // formState.formData.list.push(submitButtonEs)
if(props.operState == 2){ if (props.operState == 2) {
formState.formData.list.push(afreshSubmitButton) formState.formData.list.push(afreshSubmitButton);
}else if(props.operState == 3){ } else if (props.operState == 3) {
formState.formData.list.push(editFormCont) formState.formData.list.push(editFormCont);
}else if(props.operState == 4){ } else if (props.operState == 4) {
formState.formData.list.push(draftSubmitButton) formState.formData.list.push(draftSubmitButton);
}else if(props.operState == 5){ } else if (props.operState == 5) {
formState.formData.list.push(submitButtonEs) formState.formData.list.push(submitButtonEs);
} }
} }
} }
}) });
} }
nextTick(() => {
nextTick(()=>{ // console.log("-1111-->", formEl.value, data.tableData);
// console.log("-1111-->",data.tableData) formEl.value.setValue(data.tableData);
formEl.value.setValue(data.tableData) });
})
}) })
.finally(()=>{ .finally(() => {
formLoading.value = false; formLoading.value = false;
//alert(props.pageInfo.masters_key) //alert(props.pageInfo.masters_key)
gainEditDataLog({id:props.pageInfo.masters_key}) gainEditDataLog({ id: props.pageInfo.masters_key }).then(({ data }) => {
.then(({data})=>{
// console.log("-1111-->",data) // console.log("-1111-->",data)
pageLog.value = data pageLog.value = data;
}); });
}) });
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-04-07 10:55:34 @ 时间: 2024-04-07 10:55:34
@ -148,97 +160,94 @@ const getCustomrrFormInfo = () => {
*/ */
const afterSubmit = (type: string) => { const afterSubmit = (type: string) => {
// console.log("") // console.log("")
if (type === 'success') { if (type === "success") {
// router.go(-1) // router.go(-1)
// console.log("") // console.log("")
emits("getPageData"); emits("getPageData");
closeDrawer(); closeDrawer();
} }
} };
const closeAppSubmit = () => { const closeAppSubmit = () => {
closeDrawer() closeDrawer();
} };
// //
const drawerBeforeClose = () => { const drawerBeforeClose = () => {
// console.log("",false) // console.log("",false)
// emits("getmytodolist") // emits("getmytodolist")
// emits("update:isshow", false); // emits("update:isshow", false);
} };
// //
const sendDraftSubmit = (type: string,val?:any) => { const sendDraftSubmit = (type: string, val?: any) => {
// console.log("",type,val) // console.log("",type,val)
// emits("getmytodolist") // emits("getmytodolist")
if (type === 'success') { if (type === "success") {
if(props.pageInfo.flowIsOpen == 1){ if (props.pageInfo.flowIsOpen == 1) {
let sendInfo ={ let sendInfo = {
id:val.data.runFlowId, id: val.data.runFlowId,
flowList:flowAry.value, flowList: flowAry.value,
state:3 state: 3,
} };
// console.log("稿--1-<",sendInfo) // console.log("稿--1-<",sendInfo)
draftsInitiateApproval(sendInfo) draftsInitiateApproval(sendInfo).then((data: any) => {
.then((data:any) =>{
// console.log("稿---<",sendInfo,data) // console.log("稿---<",sendInfo,data)
if(data.code == 0){ if (data.code == 0) {
ElMessage.success(data.msg || '提交成功!') ElMessage.success(data.msg || "提交成功!");
if(runstep.value){ if (runstep.value) {
runstep.value.gainRunFlowTask() runstep.value.gainRunFlowTask();
} }
emits("getPageData"); emits("getPageData");
closeDrawer() closeDrawer();
} }
}) });
} }
} }
} };
//稿() //稿()
const saveEditFormInfo = (type: string,val?:any) => { const saveEditFormInfo = (type: string, val?: any) => {
// console.log("稿--1-<",type,val) // console.log("稿--1-<",type,val)
if(type == "success"){ if (type == "success") {
runstep.value.gainRunFlowTask() runstep.value.gainRunFlowTask();
emits("getPageData"); emits("getPageData");
closeDrawer() closeDrawer();
} }
} };
// //
const anewSubmit = (type: string,val?:any) => { const anewSubmit = (type: string, val?: any) => {
// console.log("-11--<",type,val) // console.log("-11--<",type,val)
if(type == "success"){ if (type == "success") {
afreshRunWorkflow({id:val.data.runFlowId}) afreshRunWorkflow({ id: val.data.runFlowId })
.then((data:any) => { .then((data: any) => {
// console.log("---<",data,runstep.value) // console.log("---<",data,runstep.value)
runstep.value.gainRunFlowTask() runstep.value.gainRunFlowTask();
}) })
.finally(() => { .finally(() => {
emits("getPageData"); emits("getPageData");
closeDrawer() closeDrawer();
}) });
} }
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-04-11 11:35:24 @ 时间: 2024-04-11 11:35:24
@ 功能: 申请修改 @ 功能: 申请修改
*/ */
// //
const submitEdit = (type: string,val?:any) => { const submitEdit = (type: string, val?: any) => {
// console("----->",type,val) // console("----->",type,val)
if(type == "success"){ if (type == "success") {
runstep.value.gainRunFlowTask() runstep.value.gainRunFlowTask();
emits("getPageData"); emits("getPageData");
closeDrawer() closeDrawer();
} }
} };
const jsuanKuandu = () => { const jsuanKuandu = () => {
if(props.pageInfo.flowIsOpen==1){ if (props.pageInfo.flowIsOpen == 1) {
return 900 + 350 return 900 + 350;
}else{ } else {
return 900 return 900;
} }
};
}
</script> </script>
<template> <template>
<el-drawer <el-drawer
@ -250,14 +259,13 @@ const jsuanKuandu = () => {
:close-on-press-escape="false" :close-on-press-escape="false"
:destroy-on-close="true" :destroy-on-close="true"
> >
<div v-if="props.pageInfo.flowIsOpen==1" class="common-layout"> <div v-if="props.pageInfo.flowIsOpen == 1" class="common-layout">
<el-container> <el-container>
<el-main> <el-main>
<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="props.tablePageClass" :type="props.tablePageClass"
:dict="formState.dict" :dict="formState.dict"
@ -267,33 +275,57 @@ const jsuanKuandu = () => {
:before-submit="beforeSubmit" :before-submit="beforeSubmit"
:close-app-submit="closeDrawer" :close-app-submit="closeDrawer"
:change-key-val="changeKeyVal" :change-key-val="changeKeyVal"
:anew-submit = "anewSubmit" :anew-submit="anewSubmit"
:save-edit-form-info="saveEditFormInfo" :save-edit-form-info="saveEditFormInfo"
:send-draft-submit= "sendDraftSubmit" :send-draft-submit="sendDraftSubmit"
:after-submit="afterSubmit" :after-submit="afterSubmit"
:submit-edit="submitEdit" :submit-edit="submitEdit"
/> />
<el-divider v-if="pageLog&&pageLog.length > 0" content-position="left">历史记录</el-divider> <el-divider v-if="pageLog && pageLog.length > 0" content-position="left"
>历史记录</el-divider
>
<el-timeline style="width: 100%"> <el-timeline style="width: 100%">
<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="mastItem.label" :label="mastItem.label"> <el-descriptions-item
{{mastItem.label}} v-for="(mastItem, mastIndex) in item.masterdata"
:key="mastItem.label"
:label="mastItem.label"
>
{{ mastItem.label }}
</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 v-if="item.sunList" type="border-card" style="margin-top: 20px">
<el-tab-pane v-for="(sonItem,sonIndex) in item.sunList" :label="sonIndex" :key="sonIndex"> <el-tab-pane
<el-descriptions v-for="(sonVal,sonIndex) in sonItem" :key="sonIndex" border> v-for="(sonItem, sonIndex) in item.sunList"
<el-descriptions-item v-for="(sonCentor,sonKey) in sonVal" :key="sonKey" :label="sonKey"> {{sonCentor}} :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>
@ -308,11 +340,15 @@ const jsuanKuandu = () => {
</div> </div>
</el-header> </el-header>
<el-scrollbar class="scorllbarBox"> <el-scrollbar class="scorllbarBox">
<RunFlowStep
<RunFlowStep ref="runstep" v-model:flowary="flowAry" :flow-key="props.pageInfo.runFlowId" :current-progress="currentProgress" @updatelist="drawerBeforeClose" /> ref="runstep"
v-model:flowary="flowAry"
:flow-key="props.pageInfo.runFlowId"
:current-progress="currentProgress"
@updatelist="drawerBeforeClose"
/>
</el-scrollbar> </el-scrollbar>
</el-aside> </el-aside>
</el-container> </el-container>
</div> </div>
<div v-else class="common-layout"> <div v-else class="common-layout">
@ -321,7 +357,8 @@ const jsuanKuandu = () => {
</el-header> </el-header>
<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="props.tablePageClass" :type="props.tablePageClass"
:dict="formState.dict" :dict="formState.dict"
@ -331,44 +368,74 @@ const jsuanKuandu = () => {
:before-submit="beforeSubmit" :before-submit="beforeSubmit"
:close-app-submit="closeDrawer" :close-app-submit="closeDrawer"
:change-key-val="changeKeyVal" :change-key-val="changeKeyVal"
:anew-submit = "anewSubmit" :anew-submit="anewSubmit"
:after-submit="afterSubmit" :after-submit="afterSubmit"
:save-edit-form-info="saveEditFormInfo" :save-edit-form-info="saveEditFormInfo"
:send-draft-submit= "sendDraftSubmit" :send-draft-submit="sendDraftSubmit"
:submit-edit="submitEdit" :submit-edit="submitEdit"
/> />
<el-divider v-if="pageLog&&pageLog.length > 0" content-position="left">历史记录</el-divider> <el-divider v-if="pageLog && pageLog.length > 0" content-position="left"
>历史记录</el-divider
>
<el-timeline style="width: 100%"> <el-timeline style="width: 100%">
<el-timeline-item v-for="(item,index) in pageLog" :key="index" :timestamp="item.time+' 操作人:'+item.creater" placement="top"> <el-timeline-item
<el-card > v-for="(item, index) in pageLog"
:key="index"
:timestamp="item.time + ' 操作人:' + item.creater"
placement="top"
>
<el-card>
<el-tabs> <el-tabs>
<el-tab-pane label="主要信息"> <el-tab-pane label="主要信息">
<el-descriptions border :column="1"> <el-descriptions border :column="1">
<el-descriptions-item v-for="(mastItem,mastIndex) in item.masterdata" :key="mastIndex" label-align="right" width="150px" > <el-descriptions-item
v-for="(mastItem, mastIndex) in item.masterdata"
:key="mastIndex"
label-align="right"
width="150px"
>
<template #label> <template #label>
<div style="width: 100px;"> <div style="width: 100px">
{{mastItem.label}} {{ mastItem.label }}
</div> </div>
</template> </template>
<div v-if="mastItem.types == 'lowcodeImage'">
<div v-if="mastItem.types=='lowcodeImage'"> <el-image
<el-image style="width: 100px; height: 100px" :src="mastItem.value" fit="cover" /> style="width: 100px; height: 100px"
:src="mastItem.value"
fit="cover"
/>
</div> </div>
<div v-if="mastItem.types=='lowcodeCarsusel'"> <div v-if="mastItem.types == 'lowcodeCarsusel'">
<el-carousel :interval="5000" type="card" height="200px"> <el-carousel :interval="5000" type="card" height="200px">
<el-carousel-item v-for="item in mastItem.value" :key="item.imgId"> <el-carousel-item
<el-image style="width: 100%; height: 100%" :src="item.imgUrl" fit="fill" /> v-for="item in mastItem.value"
:key="item.imgId"
>
<el-image
style="width: 100%; height: 100%"
:src="item.imgUrl"
fit="fill"
/>
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
</div> </div>
<div v-else-if="mastItem.types=='signaturemap'"> <div v-else-if="mastItem.types == 'signaturemap'">
<el-image style="width: 200px; height: 150px" :src="mastItem.value" fit="cover" /> <el-image
style="width: 200px; height: 150px"
:src="mastItem.value"
fit="cover"
/>
</div> </div>
<div v-else-if="mastItem.types=='colorPicker'"> <div v-else-if="mastItem.types == 'colorPicker'">
<div :style="'width: 30px; height: 30px; background-color: '+mastItem.value" ></div> <div
:style="
'width: 30px; height: 30px; background-color: ' + mastItem.value
"
></div>
</div> </div>
<div v-else-if="mastItem.types=='switch'"> <div v-else-if="mastItem.types == 'switch'">
<el-switch <el-switch
v-model="mastItem.value" v-model="mastItem.value"
class="ml-2" class="ml-2"
@ -377,37 +444,41 @@ const jsuanKuandu = () => {
disabled disabled
/> />
</div> </div>
<div v-else-if="mastItem.types=='rate'"> <div v-else-if="mastItem.types == 'rate'">
<el-rate v-model="mastItem.value" disabled /> <el-rate v-model="mastItem.value" disabled />
</div> </div>
<div v-else-if="mastItem.types=='slider'" style="max-width: 300px;"> <div v-else-if="mastItem.types == 'slider'" style="max-width: 300px">
<el-slider v-model="mastItem.value" disabled /> <el-slider v-model="mastItem.value" disabled />
</div> </div>
<div v-else-if="mastItem.types=='videoUpAndPlay'"> <div v-else-if="mastItem.types == 'videoUpAndPlay'">
<el-carousel :interval="5000" arrow="always" height="250px"> <el-carousel :interval="5000" arrow="always" height="250px">
<el-carousel-item v-for="item in mastItem.value" :key="item.id"> <el-carousel-item v-for="item in mastItem.value" :key="item.id">
<video <video
:src="item.url" :src="item.url"
style="width: 100%; height: 250px" style="width: 100%; height: 250px"
controls controls
> ></video>
</video>
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
</div> </div>
<div v-else-if="mastItem.types=='upload'"> <div v-else-if="mastItem.types == 'upload'">
<div v-if="mastItem.auxiliary=='picture-card'"> <div v-if="mastItem.auxiliary == 'picture-card'">
<el-image style="width: 100px; height: 100px" :src="mastItem.value" fit="cover" /> <el-image
style="width: 100px; height: 100px"
:src="mastItem.value"
fit="cover"
/>
</div> </div>
<div v-else-if="mastItem.auxiliary=='picture'"> <div v-else-if="mastItem.auxiliary == 'picture'">
<el-image style="width: 100px; height: 100px" :src="mastItem.value" fit="cover" /> <el-image
style="width: 100px; height: 100px"
:src="mastItem.value"
fit="cover"
/>
</div> </div>
<div v-else v-html="mastItem.value"></div> <div v-else v-html="mastItem.value"></div>
</div> </div>
<div v-else-if="mastItem.types=='baidumap'"> <div v-else-if="mastItem.types == 'baidumap'">
<BaiduMapLook :address="mastItem.value" /> <BaiduMapLook :address="mastItem.value" />
</div> </div>
<div v-else v-html="mastItem.value"></div> <div v-else v-html="mastItem.value"></div>
@ -415,72 +486,102 @@ const jsuanKuandu = () => {
</el-descriptions> </el-descriptions>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<el-tabs v-if="item.sunData" type="border-card" style="margin-top:20px;"> <el-tabs v-if="item.sunData" type="border-card" style="margin-top: 20px">
<el-tab-pane v-for="(sonItem,sonIndex) in item.sunData" :label="sonIndex" :key="sonIndex"> <el-tab-pane
v-for="(sonItem, sonIndex) in item.sunData"
<el-descriptions v-for="(sonVal,sonIndex) in sonItem" :key="sonIndex" border> :label="sonIndex"
<el-descriptions-item v-for="(sonCentor,sonKey) in sonVal" :key="sonKey" width="150px" > :key="sonIndex"
>
<el-descriptions
v-for="(sonVal, sonIndex) in sonItem"
:key="sonIndex"
border
>
<el-descriptions-item
v-for="(sonCentor, sonKey) in sonVal"
:key="sonKey"
width="150px"
>
<template #label> <template #label>
<div style="width: 100px;"> <div style="width: 100px">
{{sonCentor.label}} {{ sonCentor.label }}
</div> </div>
</template> </template>
<div v-if="sonCentor.types=='lowcodeImage'"> <div v-if="sonCentor.types == 'lowcodeImage'">
<el-image style="width: 100px; height: 100px" :src="sonCentor.value" fit="cover" /> <el-image
style="width: 100px; height: 100px"
:src="sonCentor.value"
fit="cover"
/>
</div> </div>
<div v-if="sonCentor.types=='lowcodeCarsusel'"> <div v-if="sonCentor.types == 'lowcodeCarsusel'">
<el-carousel :interval="5000" type="card" height="200px"> <el-carousel :interval="5000" type="card" height="200px">
<el-carousel-item v-for="item in sonCentor.value" :key="item.imgId"> <el-carousel-item
<el-image style="width: 100%; height: 100%" :src="item.imgUrl" fit="fill" /> v-for="item in sonCentor.value"
:key="item.imgId"
>
<el-image
style="width: 100%; height: 100%"
:src="item.imgUrl"
fit="fill"
/>
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
</div> </div>
<div v-else-if="sonCentor.types=='signaturemap'"> <div v-else-if="sonCentor.types == 'signaturemap'">
<el-image style="width: 200px; height: 150px" :src="sonCentor.value" fit="cover" /> <el-image
style="width: 200px; height: 150px"
:src="sonCentor.value"
fit="cover"
/>
</div> </div>
<div v-else-if="sonCentor.types=='colorPicker'"> <div v-else-if="sonCentor.types == 'colorPicker'">
<div :style="'width: 30px; height: 30px; background-color: '+sonCentor.value" ></div> <div
:style="
'width: 30px; height: 30px; background-color: ' +
sonCentor.value
"
></div>
</div> </div>
<div v-else-if="sonCentor.types=='rate'"> <div v-else-if="sonCentor.types == 'rate'">
<el-rate v-model="sonCentor.value" disabled /> <el-rate v-model="sonCentor.value" disabled />
</div> </div>
<div v-else-if="sonCentor.types=='slider'" style="max-width: 300px;"> <div v-else-if="sonCentor.types == 'slider'" style="max-width: 300px">
<el-slider v-model="sonCentor.value" disabled /> <el-slider v-model="sonCentor.value" disabled />
</div> </div>
<div v-else-if="sonCentor.types=='videoUpAndPlay'"> <div v-else-if="sonCentor.types == 'videoUpAndPlay'">
<el-carousel :interval="5000" arrow="always" height="250px"> <el-carousel :interval="5000" arrow="always" height="250px">
<el-carousel-item v-for="item in sonCentor.value" :key="item.id"> <el-carousel-item v-for="item in sonCentor.value" :key="item.id">
<video <video
:src="item.url" :src="item.url"
style="width: 100%; height: 250px" style="width: 100%; height: 250px"
controls controls
> ></video>
</video>
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
</div> </div>
<div v-else-if="sonCentor.types=='upload'"> <div v-else-if="sonCentor.types == 'upload'">
<div v-if="sonCentor.auxiliary=='picture-card'"> <div v-if="sonCentor.auxiliary == 'picture-card'">
<el-image style="width: 100px; height: 100px" :src="sonCentor.value" fit="cover" /> <el-image
style="width: 100px; height: 100px"
:src="sonCentor.value"
fit="cover"
/>
</div> </div>
<div v-else-if="sonCentor.auxiliary=='picture'"> <div v-else-if="sonCentor.auxiliary == 'picture'">
<el-image style="width: 100px; height: 100px" :src="sonCentor.value" fit="cover" /> <el-image
style="width: 100px; height: 100px"
:src="sonCentor.value"
fit="cover"
/>
</div> </div>
<div v-else v-html="sonCentor.value"></div> <div v-else v-html="sonCentor.value"></div>
</div> </div>
<div v-else-if="sonCentor.types=='baidumap'"> <div v-else-if="sonCentor.types == 'baidumap'">
<BaiduMapLook :address="sonCentor.value" /> <BaiduMapLook :address="sonCentor.value" />
</div> </div>
<div v-else v-html="sonCentor.value"></div> <div v-else v-html="sonCentor.value"></div>
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-tab-pane> </el-tab-pane>
@ -491,40 +592,38 @@ const jsuanKuandu = () => {
</div> </div>
</el-drawer> </el-drawer>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.common-layout{ .common-layout {
height: 100vh; height: 100vh;
padding: 0 15px; padding: 0 15px;
.el-main{ .el-main {
height: 100vh; height: 100vh;
padding:0; padding: 0;
} }
.flowBox{ .flowBox {
height: 100vh; height: 100vh;
border-left: 1px solid #ccc; border-left: 1px solid #ccc;
.scorllbarBox{ .scorllbarBox {
height: calc(100vh - 35px) height: calc(100vh - 35px);
} }
.workFlowHead{ .workFlowHead {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
} }
.el-header{ .el-header {
padding:0 10px; padding: 0 10px;
line-height:30px; line-height: 30px;
text-align:right; text-align: right;
font-size:20px; font-size: 20px;
i{ i {
cursor:pointer; cursor: pointer;
} }
} }
} }
.biankuang{ .biankuang {
border: 1px solid #D4D7DE; border: 1px solid #d4d7de;
padding:10px 10px; padding: 10px 10px;
} }
</style> </style>

1265
src/components/DesignForm/tableListPage/index.vue

File diff suppressed because it is too large

593
src/views/sysworkflow/lowcodepage/appCardPage.vue

@ -3,153 +3,166 @@
@ 时间: 2024-07-22 08:53:50 @ 时间: 2024-07-22 08:53:50
@ 备注: 自定义应用卡片视图 @ 备注: 自定义应用卡片视图
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { json2string,objToStringify,string2json,stringToObj } from '@/utils/DesignForm/form' import {
json2string,
objToStringify,
string2json,
stringToObj,
} from "@/utils/DesignForm/form";
import { customerFormCont } from "@/api/DesignForm/type"; import { customerFormCont } from "@/api/DesignForm/type";
import { getCustomerFormList,editProductionFormStatus,appJwtPower,getFieldRecord } from '@/api/DesignForm/requestapi' import {
getCustomerFormList,
editProductionFormStatus,
appJwtPower,
getFieldRecord,
} from "@/api/DesignForm/requestapi";
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-22 11:30:11 @ 时间: 2024-07-22 11:30:11
@ 功能: 引入组件 @ 功能: 引入组件
*/ */
import AppContainer from '@/views/sysworkflow/lowcodepage/newLowCode/appLayout/appContainer.vue' import AppContainer from "@/views/sysworkflow/lowcodepage/newLowCode/appLayout/appContainer.vue";
import AppContainerPage from '@/views/sysworkflow/lowcodepage/newLowCode/appLayoutEdit/appContainerPage.vue' // import AppContainerPage from "@/views/sysworkflow/lowcodepage/newLowCode/appLayoutEdit/appContainerPage.vue"; //
import LowCodeFormPage from "@/views/sysworkflow/lowcodepage/lowCodeFormPage.vue" import LowCodeFormPage from "@/views/sysworkflow/lowcodepage/lowCodeFormPage.vue";
import TableFlow from '@/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue' import TableFlow from "@/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue";
const props = defineProps({ const props = defineProps({
searchQuery:{ searchQuery: {
type:Object, type: Object,
default(){ default() {
return {} return {};
}
}, },
appGroup:{
type:String,
default:""
}, },
drawerWith:{ appGroup: {
type:Number, type: String,
default:true default: "",
} },
drawerWith: {
type: Number,
default: true,
},
}); });
const emits = defineEmits(["getRongQiAttr"]); const emits = defineEmits(["getRongQiAttr"]);
const openTaskDrawer = ref(false) // const openTaskDrawer = ref(false); //
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-22 09:09:29 @ 时间: 2024-07-22 09:09:29
@ 功能: 总记录数 @ 功能: 总记录数
*/ */
const pageTotal = ref(0) const pageTotal = ref(0);
const contList = ref<customerFormCont[]>() // const contList = ref<customerFormCont[]>(); //
const loadingApp = ref(false) const loadingApp = ref(false);
const runIsOpen = ref(false) const runIsOpen = ref(false);
const pickAppInfo = ref<customerFormCont>() // const pickAppInfo = ref<customerFormCont>(); //
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-21 10:54:23 @ 时间: 2024-03-21 10:54:23
@ 功能: 获取表单列表 @ 功能: 获取表单列表
*/ */
const getFormAppList = (val:any) => { const getFormAppList = (val: any) => {
loadingApp.value = true loadingApp.value = true;
let sendInfo = { let sendInfo = {
page:val.page, page: val.page,
pagesize:val.pagesize, pagesize: val.pagesize,
keywords:val.searchWork, keywords: val.searchWork,
groupId:props.appGroup groupId: props.appGroup,
} };
getCustomerFormList(sendInfo) getCustomerFormList(sendInfo)
.then(({ data }) => { .then(({ data }) => {
// console.log("-->",data); // console.log("-->",data);
pageTotal.value = data.total pageTotal.value = data.total;
contList.value = data.list contList.value = data.list;
}) })
.finally(() => { .finally(() => {
loadingApp.value = false loadingApp.value = false;
}) });
} };
onMounted(() => { onMounted(() => {
nextTick(() => { nextTick(() => {
getFormAppList(props.searchQuery); getFormAppList(props.searchQuery);
}) });
}) });
watch(()=>props.appGroup,()=>{ watch(
() => props.appGroup,
() => {
getFormAppList(props.searchQuery); getFormAppList(props.searchQuery);
})
const srcList = (val:string) =>{
if(val){
return [val]
}else{
return ["https://docu.hxgk.group/images/2024_04/482167d1bf2b75a5717bcf68e18235f7.png"]
} }
} );
const srcList = (val: string) => {
if (val) {
return [val];
} else {
return [
"https://docu.hxgk.group/images/2024_04/482167d1bf2b75a5717bcf68e18235f7.png",
];
}
};
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-22 09:57:45 @ 时间: 2024-07-22 09:57:45
@ 功能: 编辑应用 @ 功能: 编辑应用
*/ */
const editIsOpen = ref(false) const editIsOpen = ref(false);
const appKey = ref<string>("") const appKey = ref<string>("");
const editForm = (val:any) => { const editForm = (val: any) => {
emits("getRongQiAttr") emits("getRongQiAttr");
pickAppInfo.value = val pickAppInfo.value = val;
editIsOpen.value = true; editIsOpen.value = true;
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-22 09:58:19 @ 时间: 2024-07-22 09:58:19
@ 功能: 编辑应用状态 @ 功能: 编辑应用状态
*/ */
const eidtStatus = (val:any) => { const eidtStatus = (val: any) => {
emits("getRongQiAttr") emits("getRongQiAttr");
ElMessageBox.confirm( ElMessageBox.confirm("请问是否真的删除?删除后数据将无法找回!", "温馨提示!", {
'请问是否真的删除?删除后数据将无法找回!', confirmButtonText: "删除",
'温馨提示!', cancelButtonText: "取消",
{ type: "warning",
confirmButtonText: '删除',
cancelButtonText: '取消',
type: 'warning',
draggable: true, draggable: true,
} })
)
.then(() => { .then(() => {
editProductionFormStatus({id:[val.id.toString()],status:3,is_delete:false}) editProductionFormStatus({
.then(({data})=>{ id: [val.id.toString()],
status: 3,
is_delete: false,
}).then(({ data }) => {
getFormAppList(props.searchQuery); getFormAppList(props.searchQuery);
}) });
}) })
.catch(() => { .catch(() => {
getFormAppList(props.searchQuery); getFormAppList(props.searchQuery);
}) });
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-22 10:01:17 @ 时间: 2024-07-22 10:01:17
@ 功能: 打开应用 @ 功能: 打开应用
*/ */
const openApp = (val:any) => { const openApp = (val: any) => {
emits("getRongQiAttr") emits("getRongQiAttr");
pickAppInfo.value = val pickAppInfo.value = val;
appJwtPower({id:val.signCodeStr,types:1}) appJwtPower({ id: val.signCodeStr, types: 1 }).then(({ data }) => {
.then(({data})=>{
// console.log("------>data:",data) // console.log("------>data:",data)
if(data){ if (data) {
runIsOpen.value = true runIsOpen.value = true;
}else{ } else {
ElMessage({ ElMessage({
message: '对不起!您不可使用此App!请联系管理员进行授权!', message: "对不起!您不可使用此App!请联系管理员进行授权!",
type: 'error', type: "error",
plain: true, plain: true,
}) });
} }
}) });
} };
defineExpose({ defineExpose({
getFormAppList getFormAppList,
}) });
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-23 15:27:51 @ 时间: 2024-07-23 15:27:51
@ -160,227 +173,223 @@ const state = reactive({
// tableProps: {}, // // tableProps: {}, //
columns: [], columns: [],
config: {}, config: {},
controlBtn:[], controlBtn: [],
operateBtn:[] operateBtn: [],
}, },
searchData: [], searchData: [],
loading: false, loading: false,
attrObj: {}, attrObj: {},
config: { config: {
pageSize:10, pageSize: 10,
searchIsShow:true, searchIsShow: true,
searchFormIsShow:true, searchFormIsShow: true,
openPageMode:"drawer" openPageMode: "drawer",
}, },
tagList: {}, tagList: {},
formId: props.formKey || '', formId: props.formKey || "",
formList: [], // formList: [], //
name: '', name: "",
treeData: {}, // treeData: {}, //
previewVisible: false, previewVisible: false,
tabsName: 'second', tabsName: "second",
formFieldList: [], // formFieldList: [], //
formApi:{ formApi: {
type:"1", type: "1",
addApiUrl:"", addApiUrl: "",
editApiUrl:"", editApiUrl: "",
delApiUrl:"", delApiUrl: "",
lookApiUrl:"" lookApiUrl: "",
}, },
dict: {}, dict: {},
refreshTable: true, refreshTable: true,
view:{ view: {
list:{ list: {
status:true, status: true,
isClick:false, isClick: false,
form:{ form: {
sortWord:"", sortWord: "",
sortClass:1, sortClass: 1,
title:[] title: [],
}
}, },
date:{
status:false,
isClick:false,
form:{
startTime:"",
endTime:"",
dayType:1,
title:[]
}
}
,
time:{
status:false,
isClick:false,
form:{
sortWord:"",
sort:1,
title:[]
}
}
,
gantt:{
status:false,
isClick:false,
form:{
startTime:"",
endTime:"",
dayType:2,
sortWord:"",
sort:1,
title:[]
}
}
,
map:{
status:false,
isClick:false,
form:{
mapWord:"",
sortWord:"",
sort:1,
title:[]
}
}, },
card:{ date: {
status:false, status: false,
isClick:false, isClick: false,
form:{ form: {
sort:1, startTime: "",
sortWord:"", endTime: "",
imgWork:"", dayType: 1,
imgWidth:50, title: [],
imgHeight:50, },
imgBorderRadius:5, },
imgPadding:2, time: {
titleWork:"", status: false,
describe:"", isClick: false,
ranks:3, form: {
title:[] sortWord: "",
} sort: 1,
} title: [],
} },
}) },
const lookPageIsShow = ref(false) gantt: {
const versionTitle = ref<string>("") // status: false,
const versionId = ref<string>("") // isClick: false,
const formId = ref<string>("") form: {
const addFormIsShow = ref(false) startTime: "",
endTime: "",
dayType: 2,
sortWord: "",
sort: 1,
title: [],
},
},
map: {
status: false,
isClick: false,
form: {
mapWord: "",
sortWord: "",
sort: 1,
title: [],
},
},
card: {
status: false,
isClick: false,
form: {
sort: 1,
sortWord: "",
imgWork: "",
imgWidth: 50,
imgHeight: 50,
imgBorderRadius: 5,
imgPadding: 2,
titleWork: "",
describe: "",
ranks: 3,
title: [],
},
},
},
});
const lookPageIsShow = ref(false);
const versionTitle = ref<string>(""); //
const versionId = ref<string>(""); //
const formId = ref<string>("");
const addFormIsShow = ref(false);
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-04-01 14:32:18 @ 时间: 2024-04-01 14:32:18
@ 功能: 查看表单列表 @ 功能: 查看表单列表
*/ */
const lookFormList = (val:any) => { const lookFormList = (val: any) => {
emits('getRongQiAttr') emits("getRongQiAttr");
// console.log("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", val) // console.log("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", val)
versionId.value = val.versionId;
versionTitle.value = val.name;
versionId.value = val.versionId if (val.listjson != "" && val.listjson != null) {
versionTitle.value = val.name lookPageIsShow.value = true;
state.formId = val.idStr;
if(val.listjson != "" && val.listjson != null){ let stateData = string2json(val.listjson);
lookPageIsShow.value = true
state.formId = val.idStr
let stateData = string2json(val.listjson)
// console.log(val.listjson) // console.log(val.listjson)
// console.log("---->",stateData) // console.log("---->",stateData)
//let holeControlAndConfigStateData = string2json(data.data.appForm.mastesformjson) //let holeControlAndConfigStateData = string2json(data.data.appForm.mastesformjson)
if(stateData.tableData.columns&&stateData.tableData.columns.length>0){ if (stateData.tableData.columns && stateData.tableData.columns.length > 0) {
for(let i = 0;i<stateData.tableData.columns.length;i++){ for (let i = 0; i < stateData.tableData.columns.length; i++) {
if(stateData.tableData.columns[i].config!=undefined && stateData.tableData.columns[i].control!=undefined){ if (
stateData.tableData.columns[i].config != undefined &&
stateData.tableData.columns[i].control != undefined
) {
// console.log(stateData.tableData.columns[i]) // console.log(stateData.tableData.columns[i])
let paramx:string = ""+stateData.tableData.columns[i].control.optionsValue3Field let paramx: string =
"" + stateData.tableData.columns[i].control.optionsValue3Field;
/* /*
在这里请求后台获取字段 在这里请求后台获取字段
*/ */
console.log("addCardPage---298",paramx) console.log("addCardPage---298", paramx);
if(paramx && paramx != "" && paramx != null && paramx != "undefined"){ if (paramx && paramx != "" && paramx != null && paramx != "undefined") {
getFieldRecord(paramx).then(({ data }) => { getFieldRecord(paramx).then(({ data }) => {
stateData.tableData.columns[i].options = data stateData.tableData.columns[i].options = data;
if(stateData.searchData.length>0){ if (stateData.searchData.length > 0) {
for(let j = 0;j<stateData.searchData.length;j++){ for (let j = 0; j < stateData.searchData.length; j++) {
// console.log(stateData.searchData[j]) // console.log(stateData.searchData[j])
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){ if (stateData.searchData[j].id == stateData.tableData.columns[i].id) {
stateData.searchData[j].options = data stateData.searchData[j].options = data;
} }
} }
} }
}) });
} }
} }
} }
} }
state.tableData = stateData.tableData state.tableData = stateData.tableData;
state.searchData = stateData.searchData state.searchData = stateData.searchData;
state.loading = stateData.loading state.loading = stateData.loading;
state.attrObj = stateData.attrObj state.attrObj = stateData.attrObj;
state.config = stateData.config state.config = stateData.config;
state.tagList = stateData.tagList state.tagList = stateData.tagList;
state.formList = stateData.formList state.formList = stateData.formList;
state.name = stateData.name state.name = stateData.name;
state.treeData = stateData.treeData state.treeData = stateData.treeData;
state.previewVisible = stateData.previewVisible state.previewVisible = stateData.previewVisible;
state.formFieldList = stateData.formFieldList state.formFieldList = stateData.formFieldList;
state.formApi = stateData.formApi state.formApi = stateData.formApi;
state.dict = stateData.dict state.dict = stateData.dict;
state.refreshTable = stateData.refreshTable state.refreshTable = stateData.refreshTable;
}else{ } else {
openTaskDrawer.value = true openTaskDrawer.value = true;
} }
};
}
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-21 10:57:11 @ 时间: 2024-03-21 10:57:11
@ 功能: 编辑表单 @ 功能: 编辑表单
*/ */
const editFormApp = (val:any) => { const editFormApp = (val: any) => {
emits('getRongQiAttr') emits("getRongQiAttr");
formId.value = val.id.toString() formId.value = val.id.toString();
addFormIsShow.value= true addFormIsShow.value = true;
// console.log("",val.id,"-",formId.value,"-",addFormIsShow.value) // console.log("",val.id,"-",formId.value,"-",addFormIsShow.value)
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-09 09:06:44 @ 时间: 2024-03-09 09:06:44
@ 功能: 刷新页面 @ 功能: 刷新页面
*/ */
const refreshPage = (pageType:string) =>{ const refreshPage = (pageType: string) => {
addFormIsShow.value = false; addFormIsShow.value = false;
getFormAppList(props.searchQuery); getFormAppList(props.searchQuery);
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-08-09 11:28:39 @ 时间: 2024-08-09 11:28:39
@ 功能: 翻页 @ 功能: 翻页
*/ */
const handleCurrentChange = (val:any) =>{ const handleCurrentChange = (val: any) => {
// console.log("",val) // console.log("",val)
props.searchQuery.page = val props.searchQuery.page = val;
getFormAppList(props.searchQuery); getFormAppList(props.searchQuery);
} };
</script> </script>
<template> <template>
<div> <div>
<div v-loading="loadingApp" class="content1 flex flex-wrap gap-4"> <div v-loading="loadingApp" class="content1 flex flex-wrap gap-4">
<el-card v-for="item in contList" :key="item.id" class="cardBox"> <el-card v-for="item in contList" :key="item.id" class="cardBox">
<template #header> <template #header>
<el-dropdown v-if="item.classify==3"> <el-dropdown v-if="item.classify == 3">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<el-icon><MoreFilled /></el-icon> <el-icon><MoreFilled /></el-icon>
</span> </span>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item @click="editForm(item)" >编辑</el-dropdown-item> <el-dropdown-item @click="editForm(item)">编辑</el-dropdown-item>
<el-dropdown-item @click="eidtStatus(item)" divided>删除</el-dropdown-item> <el-dropdown-item @click="eidtStatus(item)" divided
>删除</el-dropdown-item
>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
@ -390,53 +399,85 @@ const handleCurrentChange = (val:any) =>{
</span> </span>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item @click="editFormApp(item)" >编辑</el-dropdown-item> <el-dropdown-item @click="editFormApp(item)">编辑</el-dropdown-item>
<el-dropdown-item @click="eidtStatus(item)" divided>删除</el-dropdown-item> <el-dropdown-item @click="eidtStatus(item)" divided
>删除</el-dropdown-item
>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
</template> </template>
<div v-if="item.classify==3" class="cardContBox" @click="openApp(item)"> <div v-if="item.classify == 3" class="cardContBox" @click="openApp(item)">
<el-image <el-image
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src="item.icon?item.icon:'https://docu.hxgk.group/images/2024_04/482167d1bf2b75a5717bcf68e18235f7.png'" :src="
item.icon
? item.icon
: 'https://docu.hxgk.group/images/2024_04/482167d1bf2b75a5717bcf68e18235f7.png'
"
:zoom-rate="1.2" :zoom-rate="1.2"
:max-scale="7" :max-scale="7"
:min-scale="0.2" :min-scale="0.2"
:initial-index="4" :initial-index="4"
fit="cover" fit="cover"
/> />
<div class="cardInfo" :style="'width: calc(100% - 100px); height: 100px; overflow: hidden;' "> <div
<div class="title">{{item.name}}</div> class="cardInfo"
<div class="content">{{item.describe}}</div> :style="'width: calc(100% - 100px); height: 100px; overflow: hidden;'"
>
<div class="title">{{ item.name }}</div>
<div class="content">{{ item.describe }}</div>
</div> </div>
</div> </div>
<div v-else class="cardContBox" @click="lookFormList(item)"> <div v-else class="cardContBox" @click="lookFormList(item)">
<el-image <el-image
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src="item.icon?item.icon:'https://docu.hxgk.group/images/2024_04/482167d1bf2b75a5717bcf68e18235f7.png'" :src="
item.icon
? item.icon
: 'https://docu.hxgk.group/images/2024_04/482167d1bf2b75a5717bcf68e18235f7.png'
"
:zoom-rate="1.2" :zoom-rate="1.2"
:max-scale="7" :max-scale="7"
:min-scale="0.2" :min-scale="0.2"
:initial-index="4" :initial-index="4"
fit="cover" fit="cover"
/> />
<div class="cardInfo" :style="'width: calc(100% - 100px); height: 100px; overflow: hidden;' "> <div
<div class="title">{{item.name}}</div> class="cardInfo"
<div class="content">{{item.describe}}</div> :style="'width: calc(100% - 100px); height: 100px; overflow: hidden;'"
>
<div class="title">{{ item.name }}</div>
<div class="content">{{ item.describe }}</div>
</div> </div>
</div> </div>
</el-card> </el-card>
</div> </div>
<div class="pagination-box"> <div class="pagination-box">
<el-pagination background v-if="pageTotal > 0" v-model:current-page="props.searchQuery.page" <el-pagination
background
v-if="pageTotal > 0"
v-model:current-page="props.searchQuery.page"
v-model:page-size="props.searchQuery.pagesize" v-model:page-size="props.searchQuery.pagesize"
:total="pageTotal" @current-change="handleCurrentChange" /> :total="pageTotal"
@current-change="handleCurrentChange"
/>
</div> </div>
<AppContainer v-model:run-is-open="runIsOpen" :pick-app-info="pickAppInfo" :drawer-with="props.drawerWith" :search-query="props.searchQuery" @refreshPage="getFormAppList" /> <AppContainer
<AppContainerPage v-model:edit-is-open="editIsOpen" :pick-app-info="pickAppInfo" :drawer-with="props.drawerWith" :search-query="props.searchQuery" :group-key="props.appGroup" @refreshPage="getFormAppList" /> v-model:run-is-open="runIsOpen"
:pick-app-info="pickAppInfo"
:drawer-with="props.drawerWith"
:search-query="props.searchQuery"
@refreshPage="getFormAppList"
/>
<AppContainerPage
v-model:edit-is-open="editIsOpen"
:pick-app-info="pickAppInfo"
:drawer-with="props.drawerWith"
:search-query="props.searchQuery"
:group-key="props.appGroup"
@refreshPage="getFormAppList"
/>
<el-drawer <el-drawer
v-model="lookPageIsShow" v-model="lookPageIsShow"
@ -453,18 +494,27 @@ const handleCurrentChange = (val:any) =>{
:versionid="versionId" :versionid="versionId"
:viewPage="state.view" :viewPage="state.view"
:versiontitle="versionTitle" :versiontitle="versionTitle"
v-model:look-page-is-show="lookPageIsShow" v-model:look-page-is-show="lookPageIsShow"
/> />
</el-drawer> </el-drawer>
<LowCodeFormPage v-if="addFormIsShow" :drawer-with="props.drawerWith" v-model:form-key="formId" @refreshPage="refreshPage" /> <LowCodeFormPage
v-if="addFormIsShow"
:drawer-with="props.drawerWith"
v-model:form-key="formId"
@refreshPage="refreshPage"
/>
<TableFlow v-model:isopen="openTaskDrawer" :versionid="versionId" :versiontitle="versionTitle" :drawerwith="props.drawerWith" @searchquery="getFormAppList" /> <TableFlow
v-model:isopen="openTaskDrawer"
:versionid="versionId"
:versiontitle="versionTitle"
:drawerwith="props.drawerWith"
@searchquery="getFormAppList"
/>
</div> </div>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.pagination-box{ .pagination-box {
display: flex; display: flex;
justify-content: center; justify-content: center;
margin-top: 15px; margin-top: 15px;
@ -483,44 +533,43 @@ const handleCurrentChange = (val:any) =>{
background-color: #eeeeee; background-color: #eeeeee;
} }
.content1 {
.content1{ padding: 1rem 1rem 0 1rem;
padding:1rem 1rem 0 1rem; ::v-deep .el-card__body {
::v-deep .el-card__body{ padding: 5px 10px 10px 10px;
padding:5px 10px 10px 10px;
} }
::v-deep .el-card__header{ ::v-deep .el-card__header {
border-bottom: 0; border-bottom: 0;
padding: 0; padding: 0;
height: 10px; height: 10px;
display:flex; display: flex;
justify-content: right; justify-content: right;
} }
.el-dropdown-link{ .el-dropdown-link {
margin-top: 4px; margin-top: 4px;
margin-right: 10px; margin-right: 10px;
cursor: pointer; cursor: pointer;
} }
} }
.cardBox{ .cardBox {
width:306px; width: 306px;
.cardContBox{ .cardContBox {
display: flex; display: flex;
width: 100%; width: 100%;
justify-content: flex-start; justify-content: flex-start;
cursor: pointer; cursor: pointer;
} }
.cardInfo{ .cardInfo {
padding-left: 5px; padding-left: 5px;
} }
.title{ .title {
font-size:14px; font-size: 14px;
font-weight:bold; font-weight: bold;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.content{ .content {
color: #909399; color: #909399;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;

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

@ -3,201 +3,198 @@
@ 时间: 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)
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-22 08:50:03 @ 时间: 2024-07-22 08:50:03
@ 功能: 改变视图展示模式 @ 功能: 改变视图展示模式
*/ */
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) => {};
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-07-22 10:08:33 @ 时间: 2024-07-22 10:08:33
@ 功能: 搜索 @ 功能: 搜索
*/ */
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;
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-09 09:06:32 @ 时间: 2024-03-09 09:06:32
@ 功能: 选择添加项目 @ 功能: 选择添加项目
*/ */
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 {
}) groupKey.value = "";
addFormGroupIsShow.value = true;
}else{ drawerGroupWith.value = 400;
groupKey.value = ""
addFormGroupIsShow.value = true
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
@ 功能: 刷新页面 @ 功能: 刷新页面
*/ */
const refreshPage = (pageType:string) =>{ const refreshPage = (pageType: string) => {
if(pageType == "formPage"){ if (pageType == "formPage") {
addFormIsShow.value = false; addFormIsShow.value = false;
}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,24 +292,55 @@ 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);
overflow: hidden; overflow: hidden;
overflow-y: auto; overflow-y: auto;
padding-bottom:10px; padding-bottom: 10px;
} }
.tab-box{ .tab-box {
margin: 20px; margin: 20px;
height: 63px; height: 63px;
background: #fff; background: #fff;
@ -297,41 +348,41 @@ const eidtGroupStatus = (id: string, state: number) => {
padding: 0 20px; padding: 0 20px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.appSubButton{ .appSubButton {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.butGroup{ .butGroup {
margin-top: 15px; margin-top: 15px;
} }
.leftLink{ .leftLink {
border-left : 1px solid #ccc; border-left: 1px solid #ccc;
} }
} }
::v-deep(.el-tabs){ ::v-deep(.el-tabs) {
height: 63px; height: 63px;
width: calc(100% - 300px); width: calc(100% - 300px);
} }
::v-deep(.el-tabs__nav){ ::v-deep(.el-tabs__nav) {
height: 63px; height: 63px;
font-size: 16px; font-size: 16px;
} }
::v-deep(.el-tabs__item){ ::v-deep(.el-tabs__item) {
margin-top: 15px; margin-top: 15px;
font-size: 16px; font-size: 16px;
} }
::v-deep(.el-tabs__nav-prev){ ::v-deep(.el-tabs__nav-prev) {
line-height:0px; line-height: 0px;
margin-top:30px; margin-top: 30px;
} }
::v-deep(.el-tabs__nav-next){ ::v-deep(.el-tabs__nav-next) {
line-height:0px; line-height: 0px;
margin-top:30px; margin-top: 30px;
} }
} }
.el-dropdown-link{ .el-dropdown-link {
font-size:30px; font-size: 30px;
margin-top: 20px; margin-top: 20px;
margin-left: 10px; margin-left: 10px;
} }

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

@ -3,125 +3,140 @@
@ 时间: 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:{ },
type:Number, operState: {
default:1 type: Number,
} 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({
get: () => props.isshow, get: () => props.isshow,
set: (val) => { set: (val) => {
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 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.nodeKey;
currentProgress.value = props.flowLogInfo.currentStep 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 +157,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"
@ -162,57 +189,82 @@ const gainFormData = () =>{
:before-submit="beforeSubmit" :before-submit="beforeSubmit"
:close-app-submit="closeAppSubmit" :close-app-submit="closeAppSubmit"
:change-key-val="changeKeyVal" :change-key-val="changeKeyVal"
:anew-submit = "anewSubmit" :anew-submit="anewSubmit"
:save-edit-form-info="saveEditFormInfo" :save-edit-form-info="saveEditFormInfo"
:send-draft-submit= "sendDraftSubmit" :send-draft-submit="sendDraftSubmit"
/> />
<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"
>历史2记录</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
{{mastItem}} v-for="(mastItem, mastIndex) in item.masterdata"
:key="mastIndex"
:label="mastIndex"
>
{{ 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>

196
vite.config.ts.timestamp-1731975545563-47f159282f4b9.mjs

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save