修改formCreate

This commit is contained in:
limengnan 2025-05-20 11:03:25 +08:00
parent 974c306ba3
commit 3dfbe37f9f
18 changed files with 156760 additions and 44 deletions

View File

@ -64,7 +64,15 @@ public class ModuleController {
// 获取模块详情 // 获取模块详情
@GetMapping("/{id}") @GetMapping("/{id}")
public ResponseResult getById(@PathVariable String id) { public ResponseResult getById(@PathVariable String id) {
return ResponseResult.successData(moduleService.getById(id)); Map<String, Object> moduleMap=null;
try {
LambdaQueryWrapper<Module> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Module::getId, id);
moduleMap = moduleService.getMap(wrapper);
} catch (Exception e) {
e.printStackTrace();
}
return ResponseResult.successData(moduleMap);
} }
// 新增根据pid判断是否有子节点 // 新增根据pid判断是否有子节点

View File

@ -62,11 +62,13 @@ public class Module implements Serializable {
/** /**
* 样式数据 * 样式数据
*/ */
@TableField(value = "canvas_style_data", jdbcType = JdbcType.VARCHAR)
private String canvasStyleData; private String canvasStyleData;
/** /**
* 组件数据 * 组件数据
*/ */
@TableField(value = "component_data", jdbcType = JdbcType.VARCHAR)
private String componentData; private String componentData;
/** /**

View File

@ -32,6 +32,7 @@ const onDatasetUpdate = () => {
res.quotaList.pop() res.quotaList.pop()
view.value.xAxis.push(...res.dimensionList, ...res.quotaList) view.value.xAxis.push(...res.dimensionList, ...res.quotaList)
const viewTarget = view.value const viewTarget = view.value
debugger
useEmitt().emitter.emit('calcData-' + viewTarget.id, viewTarget) useEmitt().emitter.emit('calcData-' + viewTarget.id, viewTarget)
snapshotStore.recordSnapshotCache('calc', view.value.id) snapshotStore.recordSnapshotCache('calc', view.value.id)
}) })

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -168,7 +168,7 @@ export default {
all: '全部', all: '全部',
successful_go_to: '导出成功前往', successful_go_to: '导出成功前往',
failed_go_to: '导出失败前往', failed_go_to: '导出失败前往',
data_set: '数据集', data_set: '数据集1',
view: '图表', view: '图表',
organization: '所属组织', organization: '所属组织',
download: '下载', download: '下载',
@ -858,7 +858,7 @@ export default {
menu: '菜单权限', menu: '菜单权限',
panel: '仪表板', panel: '仪表板',
screen: '数据大屏', screen: '数据大屏',
dataset: '数据集', dataset: '数据集2',
datasource: '数据源', datasource: '数据源',
all_types: '全部类型', all_types: '全部类型',
empty_desc: '请选择用户/角色以及资源类型', empty_desc: '请选择用户/角色以及资源类型',
@ -2011,7 +2011,7 @@ export default {
time_all: '日期-年月日时分秒', time_all: '日期-年月日时分秒',
dataset_sync: ' ( 数据同步中... )', dataset_sync: ' ( 数据同步中... )',
sheet_warn: '有多个 Sheet 默认抽取第一个', sheet_warn: '有多个 Sheet 默认抽取第一个',
datalist: '数据集', datalist: '数据集3',
name: '数据集名称', name: '数据集名称',
add_group: '添加分组', add_group: '添加分组',
add_scene: '添加场景', add_scene: '添加场景',
@ -2150,7 +2150,7 @@ export default {
next_exec_time: '下次执行时间', next_exec_time: '下次执行时间',
last_exec_status: '上次执行结果', last_exec_status: '上次执行结果',
task_status: '任务状态', task_status: '任务状态',
dataset: '数据集', dataset: '数据集4',
search_by_name: '根据名称搜索', search_by_name: '根据名称搜索',
underway: '等待执行', underway: '等待执行',
stopped: '执行结束', stopped: '执行结束',
@ -2879,7 +2879,7 @@ export default {
cancel: '取消', cancel: '取消',
select_ds_group_folder: '请选择数据集分组所属文件夹', select_ds_group_folder: '请选择数据集分组所属文件夹',
app_no_datasource_tips: '存在未配置的数据源', app_no_datasource_tips: '存在未配置的数据源',
dataset: '数据集', dataset: '数据集5',
delete: '删除', delete: '删除',
delete_success: '删除成功', delete_success: '删除成功',
save_success: '保存成功', save_success: '保存成功',
@ -3496,7 +3496,7 @@ export default {
big_data_screen: '数据大屏', big_data_screen: '数据大屏',
big_screen: '大屏', big_screen: '大屏',
dashboard: '仪表板', dashboard: '仪表板',
data_set: '数据集', data_set: '数据集6',
data_source: '数据源', data_source: '数据源',
recently_used: '最近使用', recently_used: '最近使用',
my_collection: '我的收藏', my_collection: '我的收藏',
@ -4347,7 +4347,7 @@ export default {
relation: { relation: {
no_permission: '没有查看权限', no_permission: '没有查看权限',
datasource: '数据源', datasource: '数据源',
dataset: '数据集', dataset: '数据集7',
dashboard: '仪表板', dashboard: '仪表板',
dataV: '数据大屏', dataV: '数据大屏',
analysis: '血缘分析', analysis: '血缘分析',

View File

@ -3,6 +3,8 @@ import '@/style/index.less'
import 'normalize.css/normalize.css' import 'normalize.css/normalize.css'
import '@antv/s2/dist/style.min.css' import '@antv/s2/dist/style.min.css'
import App from './App.vue' import App from './App.vue'
import FcDesigner from '@/fcDesignerPro/index.es.js'
import ElementPlus from 'element-plus'; import ElementPlus from 'element-plus';
import 'element-plus/theme-chalk/index.css'; import 'element-plus/theme-chalk/index.css';
import { setupI18n } from '@/plugins/vue-i18n' import { setupI18n } from '@/plugins/vue-i18n'
@ -12,7 +14,7 @@ import { setupElementPlus, setupElementPlusIcons } from '@/plugins/element-plus'
// 注册数据大屏组件 // 注册数据大屏组件
import { setupCustomComponent } from '@/custom-component' import { setupCustomComponent } from '@/custom-component'
import { installDirective } from '@/directive' import { installDirective } from '@/directive'
import FcDesigner from '@form-create/designer'; // import FcDesigner from '@form-create/designer';
import '@/utils/DateUtil' import '@/utils/DateUtil'
import '@/permission' import '@/permission'
import WebSocketPlugin from '../../websocket' import WebSocketPlugin from '../../websocket'

View File

@ -10,7 +10,7 @@ import { pathValid } from '@/store/modules/permission'
import { useCache } from '@/hooks/web/useCache' import { useCache } from '@/hooks/web/useCache'
import { useAppStoreWithOut } from '@/store/modules/app' import { useAppStoreWithOut } from '@/store/modules/app'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import router from '@/router'
const appStore = useAppStoreWithOut() const appStore = useAppStoreWithOut()
const { wsCache } = useCache() const { wsCache } = useCache()
export interface InnerInteractive { export interface InnerInteractive {
@ -75,8 +75,14 @@ export const interactiveStore = defineStore('interactive', {
if (!resParam) { if (!resParam) {
const route = useRoute() const route = useRoute()
const appId:any = ref('') const appId:any = ref('')
if (route.query.id) { if (route && route.query.id) {
appId.value = route.query.id appId.value = route.query.id
}else{
if(router.currentRoute.value.query.id){
appId.value = router.currentRoute.value.query.id
}else if(router.currentRoute.value.query.appId){
appId.value = router.currentRoute.value.query.appId
}
} }
const method = apiMap[flag] const method = apiMap[flag]
param.appId = appId.value param.appId = appId.value

View File

@ -125,11 +125,11 @@ function moreClic(event:any ,data:any){ // 更多操作
function editClic(data:any){ function editClic(data:any){
console.log(data) console.log(data)
if(data.type == '03'){ if(data.type == '03'){
window.open('/#/dvsCanvas?dvId=' +data.id+'&appId='+projectInfo.value.id , '_blank'); window.open('/#/dvsCanvas?dvId=' + data.id+'&appId=' + projectInfo.value.id, '_blank');
}else if(data.type == '0301'){ }else if(data.type == '0301'){
window.open('/#/dashboard?resourceId=' + data.id+'&appId='+projectInfo.value.id, '_blank'); window.open('/#/dashboard?resourceId=' + data.id + '&appId='+projectInfo.value.id, '_blank');
}else if(data.type == '09'){ }else if(data.type == '09'){
window.open('/#/formcreatedesigner?moduleId=' +data.id, '_blank'); window.open('/#/formcreatedesigner?moduleId=' +data.id + '&appId='+projectInfo.value.id, '_blank');
} }
// window.open('/#/dvCanvas?dvId=' + "1097641013486424064", '_blank'); // window.open('/#/dvCanvas?dvId=' + "1097641013486424064", '_blank');
} }

View File

@ -296,7 +296,6 @@ const saveDataset = () => {
} }
request.apiConfiguration = '' request.apiConfiguration = ''
request.appId = appId.value request.appId = appId.value
debugger
checkRepeat(request).then(res => { checkRepeat(request).then(res => {
let method = request.id === '' ? save : update let method = request.id === '' ? save : update
if (!request.type.startsWith('API')) { if (!request.type.startsWith('API')) {

View File

@ -3,6 +3,7 @@
v-model="formData" v-model="formData"
v-model:api="fapi" v-model:api="fapi"
:rule="rule" :rule="rule"
:field="field"
:option="option" :option="option"
@submit="onSubmit" @submit="onSubmit"
></form-create> ></form-create>
@ -26,6 +27,152 @@ watch(() => props.moduleInfo, val => { // 初始化数据
moduleInfo.value = val moduleInfo.value = val
getInit() getInit()
}) })
const field = ref([{
label: '商品表',
children: [
{
label: '商品ID',
item: 'input',
field: 'goods_id',
update: {
disabled: true
}
},
{
label: '商品名称',
field: 'goods_name',
item: 'input',
},
{
label: '商品分类',
field: 'goods_cate',
rule: {
"type": "select",
"field": "Fyvqm1ef5b5ud9c",
"title": "选择器",
"info": "",
"effect": {
"fetch": ""
},
"$required": false,
"options": [
{
"label": "电子产品",
"value": "电子产品"
},
{
"label": "日用百货",
"value": "日用百货"
},
{
"label": "时尚女装",
"value": "时尚女装"
},
{
"label": "潮牌男装",
"value": "潮牌男装"
}
],
"_fc_id": "id_Flmkm1ef5b5udac",
"name": "ref_Fzvkm1ef5b5udbc",
"display": true,
"hidden": false,
"_fc_drag_tag": "select"
}
},
{
label: '商品上架时间',
field: 'goods_update_time',
rule: [
{
"type": "datePicker",
"field": "Fip1m14iqwv9ccc",
"title": "日期",
"info": "",
"$required": false,
"props": {
"type": "datetime"
},
"_fc_id": "id_Fg4gm14iqwv9cdc",
"name": "ref_Fba2m14iqwv9cec",
"display": true,
"hidden": false,
"_fc_drag_tag": "datePicker"
}
]
},
]
}, {
label: '用户表',
children: [
{
label: '用户ID',
field: 'user_id',
item: 'input',
update: {
disabled: true
}
},
{
label: '手机号',
field: 'phone',
rule: {
"type": "input",
"field": "Fif4m1efbeddguc",
"title": "手机号",
"info": "",
"$required": false,
"_fc_id": "id_F3a9m1efbedegvc",
"name": "ref_Festm1efbedegwc",
"display": true,
"hidden": false,
"_fc_drag_tag": "input",
"validate": [
{
"transform": "[[FORM-CREATE-PREFIX-function anonymous(val\n) {\nthis.type = Array.isArray(val) ? 'array' : (typeof val); return val;\n}-FORM-CREATE-SUFFIX]]",
"mode": "pattern",
"trigger": "blur",
"pattern": "^(?:(?:\\+|00)86)?1[3-9]\\d{9}$",
"message": "请输入正确的手机号"
}
]
},
},
{
label: '用户名称',
field: 'username',
item: 'input',
},
{
label: '用户备注',
field: 'user_mark',
item: 'textarea',
},
{
label: '用户头像',
field: 'avatar',
rule: {
"type": "upload",
"field": "F0gfm1ef9o5mffc",
"title": "用户头像",
"info": "",
"$required": false,
"props": {
"action": "/",
"onSuccess": "[[FORM-CREATE-PREFIX-function anonymous(res,file\n) {\nfile.url = res.data.url;\n}-FORM-CREATE-SUFFIX]]"
},
"_fc_id": "id_Fsokm1ef9o5mfgc",
"name": "ref_Fv5hm1ef9o5mfhc",
"display": true,
"hidden": false,
"_fc_drag_tag": "upload"
}
},
]
}])
const option :any = ref({}); const option :any = ref({});
const rule :any = ref([]); const rule :any = ref([]);
const fapi = ref(null); const fapi = ref(null);

View File

@ -3,31 +3,37 @@
<div style="display: flex;justify-content: flex-end;padding: 10px;"> <div style="display: flex;justify-content: flex-end;padding: 10px;">
<el-button type="primary" @click="exportData">保存</el-button> <el-button type="primary" @click="exportData">保存</el-button>
</div> </div>
<!-- <el-button @click="exportData">显示</el-button> --> <FcDesigner ref="designerRef" style="width: 100vw;height:calc(100vh - 60px) " :field="field"
<FcDesigner ref="designerRef" style="width: 100vw;height:calc(100vh - 60px) " /> :appId="appId" :config="config"
/>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, reactive, ref, toRefs, watch, nextTick } from 'vue'; import { onMounted, ref } from 'vue';
import { ElMessage,ElMessageBox } from 'element-plus-secondary' import { ElMessage } from 'element-plus-secondary'
import formCreate from "@form-create/element-ui"; import formCreate from "@form-create/element-ui";
import { useRoute, useRouter } from 'vue-router' import { useRoute } from 'vue-router'
import { moduleById,moduleUpdate } from '@/api/application/module' import { moduleById,moduleUpdate } from '@/api/application/module'
const route = useRoute() const route = useRoute()
const appId:any = ref(route.query.appId)
if(route.query.appId == null){
appId.value = '00'
}
const designerRef:any = ref(); const designerRef:any = ref();
const field:any = [{}]
const config:any = {
fieldReadonly: false,
showSaveBtn: true,
// varList: [],
// fieldList: []
}
const exportData = () => { const exportData = () => {
if (!designerRef.value) return; if (!designerRef.value) return;
// //
const rules = JSON.stringify(designerRef.value.getRule()) ; const rules = JSON.stringify(designerRef.value.getRule()) ;
const options = JSON.stringify(designerRef.value.getOption()); const options = JSON.stringify(designerRef.value.getOption());
let data = { let data = {
id:route.query.moduleId, id:route.query.moduleId,
canvasStyleData:rules, canvasStyleData:rules,
@ -43,28 +49,21 @@ const exportData = () => {
}).catch(() => { }).catch(() => {
}) })
// console.log(rule,option)
// option.value = formCreate.parseJson(options)
// rule.value = formCreate.parseJson(rules)
// dialogVisible.value = true
}; };
onMounted(() => { onMounted(() => {
console.log(route.query.moduleId)
if(route.query.moduleId == null){ if(route.query.moduleId == null){
return return
} }
appId.value = route.query.moduleId
route.query.moduleId
moduleById(route.query.moduleId).then(res => { moduleById(route.query.moduleId).then(res => {
if(res.code ==0){ if(res.code ==0){
if(res.data.data.canvas_style_data != null && res.data.data.canvas_style_data != ""){ if(res.data.data.canvas_style_data != null && res.data.data.canvas_style_data != ""){
designerRef.value.setOption(formCreate.parseJson(res.data.data.component_data)) designerRef.value.setOption(formCreate.parseJson(res.data.data.component_data))
designerRef.value.setRule( formCreate.parseJson(res.data.data.canvas_style_data)) designerRef.value.setRule( formCreate.parseJson(res.data.data.canvas_style_data))
} }
} }
console.log(res.data.data)
}) })
}); });
</script> </script>
@ -73,10 +72,10 @@ onMounted(() => {
</style> </style>
<style> <style>
._fc-m-tools-l{ /* ._fc-m-tools-l{
/* display: none; */ display: none;
} }
._fc-m-tools-r{ ._fc-m-tools-r{
/* display: none; */ display: none;
} } */
</style> </style>