diff --git a/FcDesigner文档说明.docx b/FcDesigner文档说明.docx
new file mode 100644
index 0000000..78fe670
Binary files /dev/null and b/FcDesigner文档说明.docx differ
diff --git a/examples/App.vue b/examples/App.vue
index 24fdc91..c0403ef 100644
--- a/examples/App.vue
+++ b/examples/App.vue
@@ -721,62 +721,62 @@ export default {
}
}
});
- this.$refs.designer.setRule(formCreate.parseJson("[{\"type\":\"html\",\"native\":true,\"attrs\":{\"innerHTML\":\"\"},\"style\":{\"height\":\"100px\",\"width\":\"100%\",\"display\":\"flex\",\"justifyContent\":\"center\",\"alignItems\":\"center\"},\"children\":[\"
\\n👈🏻 点击左侧边栏 按钮查看更多功能示例\\n
\"],\"_fc_id\":\"id_F85km1usjbq4egc\",\"name\":\"ref_F2n0m1usjbq4ehc\",\"_fc_drag_tag\":\"html\",\"display\":true,\"hidden\":false},{\"type\":\"html\",\"native\":true,\"attrs\":{\"innerHTML\":\"\"},\"style\":{\"display\":\"block\",\"width\":\"100%\"},\"children\":[\"\\n
FormCreate 设计器高级版演示站
\\n
全面实现多端表单设计,为企业提供低代码表单解决方案
\\n
\\n
\"],\"_fc_id\":\"id_Fr6ym35jirw4acc\",\"name\":\"ref_Fcfnm35jirw4adc\",\"_fc_drag_tag\":\"html\",\"display\":true,\"hidden\":false}]"))
+ // this.$refs.designer.setRule(formCreate.parseJson("[{\"type\":\"html\",\"native\":true,\"attrs\":{\"innerHTML\":\"\"},\"style\":{\"height\":\"100px\",\"width\":\"100%\",\"display\":\"flex\",\"justifyContent\":\"center\",\"alignItems\":\"center\"},\"children\":[\"\\n👈🏻 点击左侧边栏 按钮查看更多功能示例\\n
\"],\"_fc_id\":\"id_F85km1usjbq4egc\",\"name\":\"ref_F2n0m1usjbq4ehc\",\"_fc_drag_tag\":\"html\",\"display\":true,\"hidden\":false},{\"type\":\"html\",\"native\":true,\"attrs\":{\"innerHTML\":\"\"},\"style\":{\"display\":\"block\",\"width\":\"100%\"},\"children\":[\"\\n
FormCreate 设计器高级版演示站
\\n
全面实现多端表单设计,为企业提供低代码表单解决方案
\\n
\\n
\"],\"_fc_id\":\"id_Fr6ym35jirw4acc\",\"name\":\"ref_Fcfnm35jirw4adc\",\"_fc_drag_tag\":\"html\",\"display\":true,\"hidden\":false}]"))
}
- this.$refs.designer.setGlobalEvent({
- "event_Feq4lui56zxbabc": {
- "label": "自定义",
- "deletable": false,
- "handle": "[[FORM-CREATE-PREFIX-function handle($inject){aaa;}-FORM-CREATE-SUFFIX]]"
- },
- "event_Feq4lui56zxbab2c": {
- "label": "自定义2",
- "handle": function ($inject) {
- console.log($inject);
- }
- }
- });
- this.$refs.designer.setGlobalVariable({
- "var_Fppdlz6gytmzb1c": {
- "label": "token",
- "deletable": false,
- "handle": function (get, api) {
- return get('$cookie.token') || 'default Token'
- }
- }
- })
- this.$refs.designer.setGlobalClass({
- "cls_Fzmulzw3u0oib0c": {
- "label": "fff",
- "deletable": false,
- "style": {
- "color": "red"
- }
- }
- })
- this.$refs.designer.setGlobalData({
- "data_Fk6dlui4k0xuabc": {
- "label": "自定义数据",
- "type": "static",
- "data": [
- 1,
- 2,
- 3,
- 4
- ]
- },
- "data_Fs1elui4kttlacc": {
- "action": "http://192.168.1.4:8081/",
- "deletable": false,
- "method": "GET",
- "headers": {},
- "data": {},
- "parse": "[[FORM-CREATE-PREFIX-function parse(res){return res.data;}-FORM-CREATE-SUFFIX]]",
- "onError": "[[FORM-CREATE-PREFIX-function onError(e){}-FORM-CREATE-SUFFIX]]",
- "label": "自定义接口数据",
- "type": "fetch"
- }
- })
+ // this.$refs.designer.setGlobalEvent({
+ // "event_Feq4lui56zxbabc": {
+ // "label": "自定义",
+ // "deletable": false,
+ // "handle": "[[FORM-CREATE-PREFIX-function handle($inject){aaa;}-FORM-CREATE-SUFFIX]]"
+ // },
+ // "event_Feq4lui56zxbab2c": {
+ // "label": "自定义2",
+ // "handle": function ($inject) {
+ // console.log($inject);
+ // }
+ // }
+ // });
+ // this.$refs.designer.setGlobalVariable({
+ // "var_Fppdlz6gytmzb1c": {
+ // "label": "token",
+ // "deletable": false,
+ // "handle": function (get, api) {
+ // return get('$cookie.token') || 'default Token'
+ // }
+ // }
+ // })
+ // this.$refs.designer.setGlobalClass({
+ // "cls_Fzmulzw3u0oib0c": {
+ // "label": "fff",
+ // "deletable": false,
+ // "style": {
+ // "color": "red"
+ // }
+ // }
+ // })
+ // this.$refs.designer.setGlobalData({
+ // "data_Fk6dlui4k0xuabc": {
+ // "label": "自定义数据",
+ // "type": "static",
+ // "data": [
+ // 1,
+ // 2,
+ // 3,
+ // 4
+ // ]
+ // },
+ // "data_Fs1elui4kttlacc": {
+ // "action": "http://192.168.1.4:8081/",
+ // "deletable": false,
+ // "method": "GET",
+ // "headers": {},
+ // "data": {},
+ // "parse": "[[FORM-CREATE-PREFIX-function parse(res){return res.data;}-FORM-CREATE-SUFFIX]]",
+ // "onError": "[[FORM-CREATE-PREFIX-function onError(e){}-FORM-CREATE-SUFFIX]]",
+ // "label": "自定义接口数据",
+ // "type": "fetch"
+ // }
+ // })
}
};
diff --git a/src/components/FcDesigner.vue b/src/components/FcDesigner.vue
index 05d7765..48d96b1 100644
--- a/src/components/FcDesigner.vue
+++ b/src/components/FcDesigner.vue
@@ -202,7 +202,7 @@
-
!node.children?.length
- },
- fieldData:[]
-
+
}
},
emits: ['active', 'create', 'copy', 'delete', 'drag', 'inputData', 'inputPageData', 'save', 'clear', 'switchForm', 'copyRule', 'pasteRule', 'sortUp', 'sortDown', 'changeDevice', 'previewSubmit', 'previewReset'],
@@ -1027,6 +1016,20 @@ export default defineComponent({
idx: -1,
list: []
},
+ modelValue: '',
+ selectedNodeName: '',
+ datasetData: [],
+ datasetInfo:{},
+ dsSelectProps: {
+ label: 'name',
+ children: 'children',
+ value: 'id',
+ isLeaf: node => !node.children?.length
+ },
+ fieldData:[],
+ datasetId: '', // 数据集id
+
+
pageData: [],
gridLine: false,
hiddenLeft: false,
@@ -1068,7 +1071,9 @@ export default defineComponent({
rule: [],
api: {},
}),
- formOptions: {},
+ formOptions: {
+ datasetInfo:{}
+ },
oldOptionsKeys: [],
form: {
rule: tidyRuleConfig(form, formRule.value, {t}),
@@ -1339,6 +1344,59 @@ export default defineComponent({
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
const methods = {
+ dsClick(id) {
+ methods.onDatasetChange(id)
+ data.datasetData.forEach(element => {
+ if(element.table_id == id){
+ data.datasetInfo = element
+ // data.inputForm.datasetInfo = element
+ data.formOptions.datasetInfo = element
+ }
+ });
+ },
+ onDatasetChange(id){
+ let appUrl = data.appUrl
+ if( data.appUrl == null){
+ appUrl = "http://192.168.1.38:8100"
+ }
+ data.fieldData = []
+ axios.get( appUrl + '/datasetData/getFieldsByTableId', {
+ params: {
+ id: id
+ }
+ }).then(response => {
+ console.log(response)
+ response.data.data.forEach(element => {
+ element.label = element.name
+ element.item = 'input',
+ element.fieldtype = element.type,
+ element.maxlength = element.size,
+ element.field = element.origin_name
+ element.update = {
+ disabled: false
+ }
+ data.fieldData.push(element)
+ })
+ }).catch(error => {
+ console.error(' 请求出错:', error);
+ });
+ },
+ getInit(){
+ let appUrl = data.appUrl
+ if( data.appUrl == null){
+ appUrl = "http://192.168.1.38:8100"
+ }
+ axios.get( appUrl+ '/datasetData/getTablesByAppId', {
+ params: {
+ appid: '1907238244651679745'
+ }
+ }).then(response => {
+ data.datasetData = response.data.data
+ }).catch(error => {
+ console.error(' 请求出错:', error);
+ });
+ },
+
setDevice(device) {
data.device = device;
vm.emit('changeDevice', device);
@@ -2076,6 +2134,7 @@ export default defineComponent({
return data.dragForm.api.all().map(rule => rule.field).filter(id => !!id);
},
getTitle(rule) {
+ debugger
return (rule?.__fc__?.refRule?.__$title?.value || rule.title || '').trim() || (rule.props && rule.props.label) || t('com.' + (rule._menu && rule._menu.name) + '.name') || (rule._menu && rule._menu.label) || rule.type
},
baseChange(field, value, _, fapi) {
@@ -2399,8 +2458,10 @@ export default defineComponent({
data.baseForm.value = {
field: rule.field,
title: rule.title || '',
+ fieldtype: rule.fieldtype || '',
info: rule.info,
ignore: rule.ignore || false,
+ attributeId: rule.attributeId || false,
_control: rule._control,
...formData
};
@@ -2437,6 +2498,10 @@ export default defineComponent({
if (menu.field) {
update.field = menu.field;
}
+ if (menu.fieldtype) {
+ update.fieldtype = menu.fieldtype;
+ }
+
if (menu.rule) {
methods.dragMenu({
rule: menu.rule,
@@ -2719,7 +2784,7 @@ export default defineComponent({
}
return !(globalDenyDrag && checkDragCondition(globalDenyDrag));
},
- dragAdd(children, evt, slot) {
+ dragAdd(children, evt, slot) { // 添加节点
delete evt.item._fc_allow_drag;
const newIndex = evt.newIndex;
const menu = evt.item._underlying_vm_ || evt.item.__rule__;
@@ -3488,93 +3553,6 @@ export default defineComponent({
},
onPopoverHide() {
},
- getInit(){
- axios.get('http://192.168.1.38:8100/datasetData/getTablesByAppId', {
- headers: {
- 'X-De-Token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsIm9pZCI6MX0.i8pMPviPZoQyjXML3dLfLek4XML2acUf-x0K90u9KoY'
- },
- params: {
- appid: '1907238244651679745'
- }
- }).then(response => {
- this.datasetData = response.data.data
- console.log(this.datasetData);
- }).catch(error => {
- console.error(' 请求出错:', error);
- });
- },
-
- dsClick(id) {
- this.onDatasetChange(id)
- this.datasetData.forEach(element => {
- if(element.id == id){
- this.datasetInfo = element
- }
- });
- console.log(data);
- // if (data.leaf) {
- // if (this.modelValue !== data.id) {
- //
- // }
- // //选中赋值
- // // _modelValue.value = data.id
- // this.modelValue = data.id
- // this.selectedNodeName = data.name
- // // //关闭弹窗
- // // datasetSelectorPopover.value?.hide()
- // this.$refs.datasetSelectorPopover.hide()
- // }
- },
- onDatasetChange(id){
- this.fieldData = []
- axios.post('http://192.168.1.38:8100/chart/listByDQ/'+ id +'/00', {
- type: "table-info",
- }, {
- headers: {
- 'X-De-Token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsIm9pZCI6MX0.i8pMPviPZoQyjXML3dLfLek4XML2acUf-x0K90u9KoY'
- }
- }).then(response => {
- if(response.data.data.dimensionList.length>0){
- this.fieldData.push({
- label:'维度',
- children:[]
- })
- let dimensionList = response.data.data.dimensionList
- dimensionList.forEach(element => {
- element.label = element.name
- element.item = 'input',
- element.field = element.originName
- element.update = {
- disabled: true
- }
- this.fieldData[0].children.push(element)
- });
- }
- if(response.data.data.quotaList.length>0){
- this.fieldData.push({
- label:'指标',
- children:[]
- })
- let quotaList = response.data.data.quotaList
- quotaList.forEach(element => {
- element.label = element.name
- element.item = 'input',
- element.field = element.originName
- element.update = {
- disabled: true
- }
- this.fieldData[1].children.push(element)
- });
- }
- }).catch(error => {
- console.error(' 请求出错:', error);
- });
-
- }
-
-
-
-
},
});
diff --git a/src/config/base/field.js b/src/config/base/field.js
index d86323e..bc6ab55 100644
--- a/src/config/base/field.js
+++ b/src/config/base/field.js
@@ -3,6 +3,22 @@ import {localeOptions} from '../../utils';
export default function field({t}) {
return [
{
+ type: 'ConfigItem',
+ col: {show: true},
+ style: 'margin-bottom: 10px',
+ name: 'attributeId',
+ props: {
+ label: t('form.attributeId'),
+ warning: t('warning.attributeId'),
+ },
+ children: [{
+ type: 'switch',
+ field: 'attributeId',
+ value: false,
+ wrap: {show: false},
+ col: {show: false},
+ }]
+ }, {
type: 'FieldInput',
field: 'field',
value: '',
@@ -14,6 +30,11 @@ export default function field({t}) {
value: '',
title: t('form.title'),
}, {
+ type: 'Input',
+ field: 'fieldtype',
+ value: '',
+ title: t('form.fieldtype'),
+ },{
type: 'LanguageInput',
field: 'info',
value: '',
diff --git a/src/config/base/form.js b/src/config/base/form.js
index 28259e7..f74be9d 100644
--- a/src/config/base/form.js
+++ b/src/config/base/form.js
@@ -33,6 +33,11 @@ export default function form({t}) {
{value: 'right', label: 'right'},
{value: 'top', label: 'top'},
])
+ }, {
+ type: 'input',
+ field: '>tableName',
+ value: '',
+ title: t('form.tableName'),
}, {
type: 'radio',
field: 'size',
diff --git a/src/locale/zh-cn.js b/src/locale/zh-cn.js
index 0cba3b4..e55a957 100644
--- a/src/locale/zh-cn.js
+++ b/src/locale/zh-cn.js
@@ -3,12 +3,15 @@ const ZhCn = {
form: {
field: '字段 ID',
title: '字段名称',
+ attributeId: '是否主键',
+ fieldtype: '字段类型',
info: '提示信息',
ignore: '忽略字段',
native: '是否显示标题',
control: '组件联动',
labelShow: '是否显示',
labelPosition: '标签的位置',
+ tableName: '自定义名称',
labelStyle: '标签的样式',
labelSuffix: '标签的后缀',
formItem: '配置表单项',
diff --git a/方法集合.docx b/方法集合.docx
new file mode 100644
index 0000000..cf5b58d
Binary files /dev/null and b/方法集合.docx differ