11 changed files with 681 additions and 185 deletions
@ -0,0 +1,404 @@ |
|||||
|
<!-- |
||||
|
@ 作者: 秦东 |
||||
|
@ 时间: 2025-02-19 14:16:18 |
||||
|
@ 备注: 接收低代码表单 |
||||
|
--> |
||||
|
<script lang="ts" setup> |
||||
|
import { useRoute, useRouter, LocationQuery } from "vue-router"; |
||||
|
import { |
||||
|
json2string, |
||||
|
objToStringify, |
||||
|
string2json, |
||||
|
stringToObj, |
||||
|
} from "@/utils/DesignForm/form"; |
||||
|
import { |
||||
|
judgeSubmitCancel, |
||||
|
gainAppPageInfo, |
||||
|
getFieldRecord, |
||||
|
} from "@/api/DesignForm/requestapi"; |
||||
|
import request from "@/utils/request"; |
||||
|
import { Edit, Picture as IconPicture } from "@element-plus/icons-vue"; |
||||
|
import { appPageDataInit, appWorkFlow } from "@/api/date/type"; |
||||
|
import { |
||||
|
notAsA_BasisForJudgment, |
||||
|
asAnApprovalActionControl, |
||||
|
fixedValueControl, |
||||
|
timeControl, |
||||
|
timeEquation, |
||||
|
submitButton, |
||||
|
afreshSubmitButton, |
||||
|
} from "@/utils/workflow/const"; |
||||
|
const route = useRoute(); |
||||
|
const queryData = ref(""); |
||||
|
const activePage = ref(0); //默认选择的页面 |
||||
|
const appInitData = ref<appPageDataInit>(""); |
||||
|
//app表单 |
||||
|
const stateForm = reactive<any>({ |
||||
|
type: 1, // 1新增;2修改;3查看(表单模式) ;4查看; 5设计 |
||||
|
formData: { |
||||
|
list: [], |
||||
|
form: {}, |
||||
|
config: {}, |
||||
|
powerstr: {}, |
||||
|
}, |
||||
|
dict: {}, |
||||
|
formId: "1", |
||||
|
id: 0, |
||||
|
formId: 0, |
||||
|
versionId: 0, |
||||
|
loading: true, |
||||
|
}); |
||||
|
//表单列表 |
||||
|
const stateList = reactive({ |
||||
|
tableData: { |
||||
|
// tableProps: {}, //表格所有参数 |
||||
|
columns: [], |
||||
|
config: {}, |
||||
|
controlBtn: [], |
||||
|
operateBtn: [], |
||||
|
}, |
||||
|
searchData: [], |
||||
|
loading: false, |
||||
|
attrObj: {}, |
||||
|
config: { |
||||
|
pageSize: 10, |
||||
|
searchIsShow: true, |
||||
|
searchFormIsShow: true, |
||||
|
openPageMode: "drawer", |
||||
|
}, |
||||
|
tagList: {}, |
||||
|
formId: queryData.value.app_id || "", |
||||
|
formList: [], // 所有可选表单数据源 |
||||
|
name: "", |
||||
|
treeData: {}, // 左侧树相关 |
||||
|
previewVisible: false, |
||||
|
tabsName: "second", |
||||
|
formFieldList: [], // 表单数据源所有可选字段 |
||||
|
formApi: { |
||||
|
type: "1", |
||||
|
addApiUrl: "", |
||||
|
editApiUrl: "", |
||||
|
delApiUrl: "", |
||||
|
lookApiUrl: "", |
||||
|
}, |
||||
|
dict: {}, |
||||
|
refreshTable: true, |
||||
|
view: { |
||||
|
list: { |
||||
|
status: true, |
||||
|
isClick: false, |
||||
|
form: { |
||||
|
sortWord: "", |
||||
|
sortClass: 1, |
||||
|
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: { |
||||
|
status: false, |
||||
|
isClick: false, |
||||
|
form: { |
||||
|
sort: 1, |
||||
|
sortWord: "", |
||||
|
imgWork: "", |
||||
|
imgWidth: 50, |
||||
|
imgHeight: 50, |
||||
|
imgBorderRadius: 5, |
||||
|
imgPadding: 2, |
||||
|
titleWork: "", |
||||
|
describe: "", |
||||
|
ranks: 3, |
||||
|
title: [], |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}); |
||||
|
const appFormTitle = ref(""); |
||||
|
const versionTitle = ref<string>(""); //表单名称 |
||||
|
const versionId = ref<string>(""); //表单版本号 |
||||
|
const appFlowInfo = ref<appWorkFlow>(""); //流程 |
||||
|
const isFlow = ref(2); |
||||
|
const mastesformjson = ref(""); // |
||||
|
|
||||
|
const pickAppMenu = reactive({ |
||||
|
type: 2, |
||||
|
id: "", |
||||
|
}); |
||||
|
/** |
||||
|
@ 作者: 秦东 |
||||
|
@ 时间: 2024-06-03 09:00:10 |
||||
|
@ 功能: 初始化数据 |
||||
|
*/ |
||||
|
const initLoadData = () => { |
||||
|
// console.log("initLoadData",props.pickAppMenu.type,props.pickAppMenu.type != 1) |
||||
|
pickAppMenu.id = queryData.value.table_id; |
||||
|
gainAppPageInfo({ id: queryData.value.table_id }).then((data) => { |
||||
|
// console.log("获取初始化表单数据bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",data) |
||||
|
appInitData.value = data.data; |
||||
|
// console.log("获取初始化表单数据---!",appInitData.value) |
||||
|
mastesformjson.value = data.data.appForm.mastesformjson; |
||||
|
isFlow.value = data.data.appForm.flowIsOpen; |
||||
|
if (data.data.page && data.data.pageList && data.data.appFlow) { |
||||
|
activePage.value = 1; |
||||
|
} else if (data.data.page && !data.data.pageList && data.data.appFlow) { |
||||
|
activePage.value = 2; |
||||
|
} else if (!data.data.page && !data.data.pageList && data.data.appFlow) { |
||||
|
activePage.value = 3; |
||||
|
} else if (!data.data.page && data.data.pageList && data.data.appFlow) { |
||||
|
activePage.value = 1; |
||||
|
} else if (data.data.page && !data.data.pageList && !data.data.appFlow) { |
||||
|
activePage.value = 2; |
||||
|
} else { |
||||
|
activePage.value = 1; |
||||
|
} |
||||
|
versionId.value = data.data.appForm.id.toString(); |
||||
|
versionTitle.value = data.data.appForm.name; |
||||
|
if (data.data.pageList) { |
||||
|
let stateData = string2json(data.data.appForm.listjson); |
||||
|
console.log("接邂逅的数", stateData); |
||||
|
let holeControlAndConfigStateData = string2json(data.data.appForm.mastesformjson); |
||||
|
if (stateData.tableData.columns && stateData.tableData.columns.length > 0) { |
||||
|
for (let i = 0; i < stateData.tableData.columns.length; i++) { |
||||
|
for (let u = 0; u < holeControlAndConfigStateData.list.length; u++) { |
||||
|
if ( |
||||
|
stateData.tableData.columns[i].id == |
||||
|
holeControlAndConfigStateData.list[u].name |
||||
|
) { |
||||
|
stateData.tableData.columns[i].control = |
||||
|
holeControlAndConfigStateData.list[u].control; |
||||
|
stateData.tableData.columns[i].config = |
||||
|
holeControlAndConfigStateData.list[u].config; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if ( |
||||
|
stateData.tableData.columns[i].config != undefined && |
||||
|
stateData.tableData.columns[i].control != undefined |
||||
|
) { |
||||
|
// console.log(stateData.tableData.columns[i]) |
||||
|
let paramx: string = |
||||
|
"" + stateData.tableData.columns[i].control.optionsValue3Field; |
||||
|
/* |
||||
|
在这里请求后台获取字段 |
||||
|
*/ |
||||
|
//console.log("runAppForm-----214",paramx) |
||||
|
if (paramx && paramx != "" && paramx != null && paramx != "undefined") { |
||||
|
getFieldRecord(paramx).then(({ data }) => { |
||||
|
stateData.tableData.columns[i].options = data; |
||||
|
if (stateData.searchData.length > 0) { |
||||
|
for (let j = 0; j < stateData.searchData.length; j++) { |
||||
|
// console.log(stateData.searchData[j]) |
||||
|
if (stateData.searchData[j].id == stateData.tableData.columns[i].id) { |
||||
|
stateData.searchData[j].options = data; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
if (stateData.searchData && stateData.searchData.length > 0) { |
||||
|
for (let j = 0; j < stateData.searchData.length; j++) { |
||||
|
// console.log(stateData.searchData[j]) |
||||
|
if (stateData.searchData[j].id == stateData.tableData.columns[i].id) { |
||||
|
// console.log(stateData.tableData.columns[i]) |
||||
|
stateData.searchData[j].control = |
||||
|
stateData.tableData.columns[i].control; |
||||
|
stateData.searchData[j].config = stateData.tableData.columns[i].config; |
||||
|
// console.log(stateData.searchData[j]) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
stateList.tableData = stateData.tableData; |
||||
|
stateList.searchData = stateData.searchData; |
||||
|
if (stateList.searchData == null) { |
||||
|
stateList.searchData = new Array(); |
||||
|
} |
||||
|
stateList.loading = stateData.loading; |
||||
|
stateList.attrObj = stateData.attrObj; |
||||
|
stateList.config = stateData.config; |
||||
|
stateList.tagList = stateData.tagList; |
||||
|
stateList.formList = stateData.formList; |
||||
|
stateList.name = stateData.name; |
||||
|
stateList.treeData = stateData.treeData; |
||||
|
stateList.previewVisible = stateData.previewVisible; |
||||
|
stateList.formFieldList = stateData.formFieldList; |
||||
|
stateList.formApi = stateData.formApi; |
||||
|
stateList.dict = stateData.dict; |
||||
|
stateList.refreshTable = stateData.refreshTable; |
||||
|
if (stateData.view) { |
||||
|
stateList.view = stateData.view; |
||||
|
} |
||||
|
} |
||||
|
if (data.data.page) { |
||||
|
// console.log("data.data.mastesform", data.data) |
||||
|
stateForm.id = data.data.appForm.version.toString(); |
||||
|
stateForm.formId = data.data.appForm.cfid.toString(); |
||||
|
stateForm.versionId = data.data.appForm.id.toString(); |
||||
|
stateForm.formData = stringToObj(data.data.appForm.mastesform); |
||||
|
stateForm.dict = string2json(data.data.appForm.dict); |
||||
|
stateForm.formData.powerstr = string2json(data.data.appForm.powerstr); |
||||
|
// console.log("data.data.mastesform", stateForm.formData) |
||||
|
|
||||
|
judgeSubmitCancel({ name: data.data.appForm.mastesformjson }).then( |
||||
|
(datajud: any) => { |
||||
|
if (datajud.code == 0) { |
||||
|
if (datajud.data == 3 || datajud.data == 4) { |
||||
|
stateForm.formData.list.push(submitButton); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
); |
||||
|
} |
||||
|
if (data.data.appFlow) { |
||||
|
appFlowInfo.value = data.data.workFlow; |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
//liwenxuan 二维码表格组织人员名称显示 start |
||||
|
|
||||
|
interface Tree { |
||||
|
id?: string; |
||||
|
label: string; |
||||
|
disabled?: boolean; |
||||
|
children?: Tree[]; |
||||
|
parentId?: string; |
||||
|
[key: string]: any; |
||||
|
} |
||||
|
const orgAndManTree = ref<Tree[]>(); |
||||
|
function getAssociatedFormsOrgAndManTree() { |
||||
|
return request({ |
||||
|
url: "/javasys/lowCode/transfer/getOrgAndManTree", |
||||
|
method: "post", |
||||
|
}); |
||||
|
} |
||||
|
getAssociatedFormsOrgAndManTree().then(({ data }) => { |
||||
|
let resData = ref(data.children); |
||||
|
orgAndManTree.value = [ |
||||
|
{ |
||||
|
id: data.id, |
||||
|
//label: data.label, |
||||
|
label: "组织机构", |
||||
|
children: [...resData.value], |
||||
|
}, |
||||
|
]; |
||||
|
}); |
||||
|
//liwenxuan 二维码表格组织人员名称显示 end |
||||
|
|
||||
|
function optionsValue3Get3(data: any, fieldName: string) { |
||||
|
console.log("runAppForm", "optionsValue3Get3"); |
||||
|
for (let i = 0; i < stateForm.formData.list.length; i++) { |
||||
|
if (stateForm.formData.list[i].name == fieldName) { |
||||
|
stateForm.formData.list[i].options = []; |
||||
|
for (let j = 0; j < data.length; j++) { |
||||
|
stateForm.formData.list[i].options.push(data[j]); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
onMounted(() => { |
||||
|
const query: LocationQuery = route.query; |
||||
|
queryData.value = query; |
||||
|
nextTick(() => { |
||||
|
initLoadData(); |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
<template> |
||||
|
<div class="myAppBox"> |
||||
|
<el-scrollbar class="scroBox"> |
||||
|
<el-card style="width: 100%" shadow="always"> |
||||
|
<AppPageList |
||||
|
v-if="appInitData.pageList" |
||||
|
:data="stateList.tableData" |
||||
|
:search-data="stateList.searchData" |
||||
|
:config="stateList.config" |
||||
|
:form-id="appInitData.appForm.cfid.toString()" |
||||
|
:versionid="appInitData.versionId" |
||||
|
:versiontitle="versionTitle" |
||||
|
:sign-code="appInitData.signCode" |
||||
|
:pickAppMenu="pickAppMenu" |
||||
|
:viewPage="stateList.view" |
||||
|
:form-basic-config="stateForm.formData.form" |
||||
|
:fields-detail-list="stateForm.formData.list" |
||||
|
:org-and-man-tree="orgAndManTree" |
||||
|
/> |
||||
|
<ak-form |
||||
|
v-else |
||||
|
ref="formEl" |
||||
|
:number="queryData.table_id" |
||||
|
:isWorkFlow="isFlow" |
||||
|
:form-data="stateForm.formData" |
||||
|
:type="pickAppMenu" |
||||
|
:mastesformjson="mastesformjson" |
||||
|
:flowkey="appInitData.flowkey" |
||||
|
:groupid="appInitData.groupid" |
||||
|
:sign-code="appInitData.signCode" |
||||
|
:version-id="appInitData.versionId" |
||||
|
add-url="addData" |
||||
|
@optionsValue3Get3="optionsValue3Get3" |
||||
|
/> |
||||
|
</el-card> |
||||
|
</el-scrollbar> |
||||
|
</div> |
||||
|
</template> |
||||
|
<style lang="scss" scoped> |
||||
|
.myAppBox { |
||||
|
display: flex; |
||||
|
width: 100%; |
||||
|
padding: 10px 20px 0 20px; |
||||
|
:deep .el-card__body { |
||||
|
padding: 20px 0px 10px 0; |
||||
|
} |
||||
|
} |
||||
|
.scroBox { |
||||
|
padding: 10 10px; |
||||
|
height: calc(100vh - 180px); |
||||
|
.tispMsg { |
||||
|
margin: 0 auto 15px auto; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue