|
@@ -24,7 +24,29 @@
|
|
|
</div>
|
|
|
<el-dialog title="" :visible.sync="show" width="1200px">
|
|
|
<div class="main-wrap">
|
|
|
- <div class="header"></div>
|
|
|
+ <div class="header">
|
|
|
+ <el-select
|
|
|
+ v-model="tableName"
|
|
|
+ placeholder="请选择同步表格"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ @change="tableChange"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in tableList"
|
|
|
+ :key="item.tableName"
|
|
|
+ :label="item.tableComment"
|
|
|
+ :value="item.tableName + '.' + item.tableComment"
|
|
|
+ >
|
|
|
+ <span class="discribe" style="float: left">{{
|
|
|
+ item.tableComment
|
|
|
+ }}</span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 13px">{{
|
|
|
+ item.tableName
|
|
|
+ }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
<div class="list-wrap">
|
|
|
<div class="left-wrap">
|
|
|
<el-descriptions title="表单字段信息" :column="1">
|
|
@@ -55,8 +77,8 @@
|
|
|
</el-form> -->
|
|
|
<el-descriptions title="同步表格字段" :column="1" :colon="false">
|
|
|
<el-descriptions-item
|
|
|
- v-for="item in formItemsList"
|
|
|
- :key="item.model"
|
|
|
+ v-for="(item, index) in listData"
|
|
|
+ :key="index"
|
|
|
>
|
|
|
<div class="item-wrap">
|
|
|
<div class="switch-wrap">
|
|
@@ -69,12 +91,17 @@
|
|
|
>
|
|
|
</el-switch>
|
|
|
</div>
|
|
|
- <el-select clearable filterable @change="() => {}">
|
|
|
+ <el-select
|
|
|
+ v-model="item.fieldName"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ @change="() => {}"
|
|
|
+ >
|
|
|
<el-option
|
|
|
- v-for="item in []"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
+ v-for="field in tableItemList"
|
|
|
+ :key="field.fieldName"
|
|
|
+ :label="field.fieldDescription"
|
|
|
+ :value="field.fieldName"
|
|
|
>
|
|
|
</el-option>
|
|
|
</el-select>
|
|
@@ -90,10 +117,10 @@
|
|
|
</el-form> -->
|
|
|
<el-descriptions title="默认值" :column="1" :colon="false">
|
|
|
<el-descriptions-item
|
|
|
- v-for="item in formItemsList"
|
|
|
- :key="item.model"
|
|
|
+ v-for="(item, index) in listData"
|
|
|
+ :key="index"
|
|
|
>
|
|
|
- <el-input> </el-input>
|
|
|
+ <el-input v-model="item.defaultValue"> </el-input>
|
|
|
</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
</div>
|
|
@@ -102,7 +129,7 @@
|
|
|
<template #footer>
|
|
|
<span>
|
|
|
<el-button @click="show = false">取消</el-button>
|
|
|
- <el-button type="primary" @click="() => {}">确认</el-button>
|
|
|
+ <el-button type="primary" @click="confirmHandler">确认</el-button>
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
@@ -120,6 +147,13 @@ import {
|
|
|
import { getActive } from "@packages/bpmn-utils/BpmnDesignerUtils";
|
|
|
import { getForm } from "@/api/dragform/form";
|
|
|
import { getFormItems } from "@packages/bo-utils/getFormItems";
|
|
|
+import {
|
|
|
+ getFormName,
|
|
|
+ getListName,
|
|
|
+ dragTablePreview,
|
|
|
+} from "@/api/dragform/form.js";
|
|
|
+import { getDicts } from "@/api/system/dict/data";
|
|
|
+import { mapState } from "vuex";
|
|
|
|
|
|
export default {
|
|
|
name: "ElementAfterNode",
|
|
@@ -127,7 +161,11 @@ export default {
|
|
|
return {
|
|
|
afterNodeValue: "",
|
|
|
show: false,
|
|
|
+ tableName: "",
|
|
|
formItemsList: [],
|
|
|
+ tableList: [], //表格列表
|
|
|
+ tableItemList: [], //表格字段列表
|
|
|
+ listData: [],
|
|
|
};
|
|
|
},
|
|
|
|
|
@@ -137,7 +175,98 @@ export default {
|
|
|
this.initFormData();
|
|
|
});
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ ...mapState({
|
|
|
+ databaseName: (state) => state.user.dataSource.databaseName,
|
|
|
+ databaseType: (state) => state.user.dataSource.databaseType,
|
|
|
+ username: (state) => state.user.dataSource.username,
|
|
|
+ tenantId: (state) => state.user.tenant.tenantId,
|
|
|
+ }),
|
|
|
+ },
|
|
|
methods: {
|
|
|
+ // 同步表格变换回调
|
|
|
+ async tableChange(val) {
|
|
|
+ console.log(val);
|
|
|
+ if (!val) {
|
|
|
+ this.tableItemList = [];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let tableName = val.split(".")[0];
|
|
|
+ let tableComment = val.split(".")[1];
|
|
|
+ let data = {
|
|
|
+ databaseName: this.databaseName,
|
|
|
+ databaseType: this.databaseType,
|
|
|
+ tableName: tableName,
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ let res = await getListName(data);
|
|
|
+ this.tableItemList = res.map((item) => {
|
|
|
+ let { fieldName, fieldDescription } = item;
|
|
|
+ return {
|
|
|
+ fieldName,
|
|
|
+ tableName,
|
|
|
+ tableComment,
|
|
|
+ fieldDescription,
|
|
|
+ };
|
|
|
+ });
|
|
|
+ this.initListData(this.tableItemList); //初始化列表数据
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ this.$message.error("网络异常,请稍后再试");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 初始化列表数据
|
|
|
+ initListData(tableItemList) {
|
|
|
+ let tableItemListLength = tableItemList.length;
|
|
|
+ let formItemsListLength = this.formItemsList.length;
|
|
|
+ let len =
|
|
|
+ tableItemListLength >= formItemsListLength
|
|
|
+ ? tableItemListLength
|
|
|
+ : formItemsListLength;
|
|
|
+ this.listData = Array.from(new Array(len), () => {
|
|
|
+ return {
|
|
|
+ fieldName: "",
|
|
|
+ isRelated: false,
|
|
|
+ defaultValue: "",
|
|
|
+ };
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 确认回调
|
|
|
+ confirmHandler() {
|
|
|
+ console.log(this.listData);
|
|
|
+ let temp = this.filterListData(this.listData);
|
|
|
+ console.log("temp", temp);
|
|
|
+ },
|
|
|
+ // 过滤数据返回有效数据
|
|
|
+ filterListData(data) {
|
|
|
+ let formItemsListLength = this.formItemsList.length;
|
|
|
+ let res = data.filter((item, index) => {
|
|
|
+ if (index < formItemsListLength) {
|
|
|
+ return item.fieldName && (item.isRelated || item.defaultValue);
|
|
|
+ } else {
|
|
|
+ return item.fieldName && item.defaultValue;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return res;
|
|
|
+ },
|
|
|
+ // 获取所有表格
|
|
|
+ async getAllTable() {
|
|
|
+ let data = {
|
|
|
+ databaseName: this.databaseName,
|
|
|
+ databaseType: this.databaseType,
|
|
|
+ };
|
|
|
+ let res = await getFormName(data);
|
|
|
+
|
|
|
+ const baseTable = await this.getDicts("base_table");
|
|
|
+
|
|
|
+ this.tableList = res.data.filter((item) => {
|
|
|
+ return !baseTable.data.some(
|
|
|
+ (value) =>
|
|
|
+ value.dictValue.toLowerCase() == item.tableName.toLowerCase()
|
|
|
+ );
|
|
|
+ });
|
|
|
+ console.log(this.tableList);
|
|
|
+ },
|
|
|
initFormData() {
|
|
|
this.afterNodeValue = getAfterNdoe(getActive()) || "";
|
|
|
},
|
|
@@ -151,16 +280,18 @@ export default {
|
|
|
this.$message.warning(`请在'常规信息'中绑定表单`);
|
|
|
return;
|
|
|
}
|
|
|
+ //获取表单数据
|
|
|
try {
|
|
|
let res = await getForm(fId);
|
|
|
if (res.code == 200) {
|
|
|
this.formItemsList = getFormItems(res.data.dfVueTemplate);
|
|
|
- console.log(res);
|
|
|
+ this.getAllTable(); //获取所有表格数据
|
|
|
} else {
|
|
|
this.$message.error("网络异常请稍后再试");
|
|
|
}
|
|
|
} catch (e) {
|
|
|
- this.$message.error(e.message);
|
|
|
+ console.log(e);
|
|
|
+ this.$message.error("网络异常请稍后再试");
|
|
|
}
|
|
|
this.show = true;
|
|
|
},
|