Compare commits
2 Commits
456e3b0a4d
...
db8b313c96
| Author | SHA1 | Date |
|---|---|---|
|
|
db8b313c96 | |
|
|
07b6bb9a2f |
|
|
@ -1,14 +1,16 @@
|
||||||
import { defHttp } from '@/utils/http/axios';
|
import { defHttp } from '@/utils/http/axios';
|
||||||
|
import { parseMinWidth } from 'element-plus/es/components/table/src/util';
|
||||||
import { DemoOptionsItem, selectParams, AccountListGetResultModel, AccountParams,NoOptionsParam } from './model/index';
|
import { DemoOptionsItem, selectParams, AccountListGetResultModel, AccountParams,NoOptionsParam } from './model/index';
|
||||||
|
|
||||||
enum Api {
|
enum Api {
|
||||||
FORMSTYPES_LIST = '/api/SysDataItemDetail/Load',
|
FORMSTYPES_LIST = '/api/SysDataItemDetail/Load', //字典
|
||||||
FORMS_LIST = '/api/FormScheme/LoadFormPage',
|
FORMS_LIST = '/api/FormScheme/LoadFormPage', //查询表单列表
|
||||||
DATABASE_LIST = '/api/CodeTable/LoadCodeTablePage',
|
DATABASE_LIST = '/api/CodeTable/LoadCodeTablePage', //数据对象选择表
|
||||||
OUTKEY_LIST = '/api/CodeTable/GetForms',
|
OUTKEY_LIST = '/api/CodeTable/GetForms', //获取数据表
|
||||||
GETBASE_LIST = '/api/FormScheme/GetForm',
|
GETBASE_LIST = '/api/FormScheme/GetForm', //获取列表详情
|
||||||
ADDFORM_DATA = '/api/FormScheme/AddForm',
|
ADDFORM_DATA = '/api/FormScheme/AddForm', //新增表单设计
|
||||||
EDITFORM_DATA = '/api/FormScheme/UpdateForm?id='
|
EDITFORM_DATA = '/api/FormScheme/UpdateForm?id=', //编辑表单设计
|
||||||
|
ADDSql_DATA = '/api/FormScheme/GetDataColName?dbCode=', // 添加编辑SQL
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -35,4 +37,8 @@ export const addFormDesignData = (params: NoOptionsParam) =>
|
||||||
export const editFormDesignData = (params: NoOptionsParam) =>
|
export const editFormDesignData = (params: NoOptionsParam) =>
|
||||||
defHttp.post<AccountListGetResultModel>({ url: Api.EDITFORM_DATA+params.info.id, params });
|
defHttp.post<AccountListGetResultModel>({ url: Api.EDITFORM_DATA+params.info.id, params });
|
||||||
|
|
||||||
|
export const addFormSqlData = (params: NoOptionsParam) =>
|
||||||
|
defHttp.post<AccountListGetResultModel>({ url: Api.ADDSql_DATA+params.dbCode+"&sql="+params.sql, params });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -135,18 +135,9 @@
|
||||||
console.log('adddata',data)
|
console.log('adddata',data)
|
||||||
if(data.table){
|
if(data.table){
|
||||||
data.table.forEach(item =>{
|
data.table.forEach(item =>{
|
||||||
arr.push({
|
arr.push(item)
|
||||||
id: item.id,
|
|
||||||
name: item.name,
|
|
||||||
field: item.field,
|
|
||||||
comment: item.comment,
|
|
||||||
relationField: item.relationField,
|
|
||||||
relationName: item.relationName,
|
|
||||||
type: item.type
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isAddVisible.value){ //新增
|
if(isAddVisible.value){ //新增
|
||||||
let schems
|
let schems
|
||||||
if(saveFormDatas.value.scheme.scheme){
|
if(saveFormDatas.value.scheme.scheme){
|
||||||
|
|
@ -185,7 +176,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function submitClick(){
|
function submitClick(){
|
||||||
console.log('123333211',saveFormDatas)
|
|
||||||
isSubmitClick.value = true
|
isSubmitClick.value = true
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -198,6 +188,7 @@
|
||||||
info: saveFormDatas.value.info,
|
info: saveFormDatas.value.info,
|
||||||
scheme: saveFormDatas.value.scheme
|
scheme: saveFormDatas.value.scheme
|
||||||
}
|
}
|
||||||
|
console.log('param',param)
|
||||||
if(isAddVisible.value){
|
if(isAddVisible.value){
|
||||||
addFormDesignData( param ).then((res: AreaRespVO[]) =>{
|
addFormDesignData( param ).then((res: AreaRespVO[]) =>{
|
||||||
console.log('addsuccess',res)
|
console.log('addsuccess',res)
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ export const viewsColumns: BasicColumn[] = [
|
||||||
enable = false
|
enable = false
|
||||||
}
|
}
|
||||||
const color = enable ? '#67c23a' : '#e6a23c';
|
const color = enable ? '#67c23a' : '#e6a23c';
|
||||||
const text = enable ? '主表' : '子表';
|
const text = enable ? '主' : '子';
|
||||||
return h(Tag, { color: color }, () => text);
|
return h(Tag, { color: color }, () => text);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -317,5 +317,18 @@ export const formSqlSchema: FormSchema[] = [
|
||||||
placeholder: '请输入',
|
placeholder: '请输入',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'sql',
|
||||||
|
component: 'InputTextArea',
|
||||||
|
label: 'SQL',
|
||||||
|
colProps: {
|
||||||
|
span: 24,
|
||||||
|
},
|
||||||
|
defaultValue: '',
|
||||||
|
required: true,
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '@param 与主表关联参数值,比如 where id = @param;',
|
||||||
|
},
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -146,14 +146,14 @@
|
||||||
<BasicTable @register="registerViewsTable">
|
<BasicTable @register="registerViewsTable">
|
||||||
<template v-slot:bodyCell="{ column, record, index }">
|
<template v-slot:bodyCell="{ column, record, index }">
|
||||||
<template v-if="column.key === 'relationFieldConnect'">
|
<template v-if="column.key === 'relationFieldConnect'">
|
||||||
<div v-if="record.type == 'chlid'">
|
<div v-if="record.type !== 'main'">
|
||||||
<a-select
|
<a-select
|
||||||
ref="select"
|
ref="select"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
size="small"
|
size="small"
|
||||||
v-model:value="record.field"
|
v-model:value="record.field"
|
||||||
:options="record.outColumnKey"
|
:options="record.columns"
|
||||||
:field-names="{ label: 'dbColumnName', value: 'dbColumnName' }"
|
:field-names="{ label: 'label', value: 'value' }"
|
||||||
></a-select>
|
></a-select>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -185,14 +185,14 @@
|
||||||
|
|
||||||
<DataObject @register="registerModal" @backrows="handleBackRows" />
|
<DataObject @register="registerModal" @backrows="handleBackRows" />
|
||||||
|
|
||||||
<sqlModal @register="registerSqlModal"></sqlModal>
|
<sqlModal @register="registerSqlModal" @backrows="handleSqlBackDatas"></sqlModal>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref,defineProps,watch } from 'vue';
|
import { ref,defineProps,watch } from 'vue';
|
||||||
import { PlusOutlined } from '@ant-design/icons-vue';
|
import { PlusOutlined } from '@ant-design/icons-vue';
|
||||||
import { message } from 'ant-design-vue';
|
import { message } from 'ant-design-vue';
|
||||||
import { getFormsTypeList,getOutKeyList } from '@/api/formdesign/index'
|
import { getOutKeyList } from '@/api/formdesign/index'
|
||||||
|
|
||||||
import { BasicForm, useForm } from '/@/components/Form';
|
import { BasicForm, useForm } from '/@/components/Form';
|
||||||
import { formSchema , columns,connectColumns,viewsColumns } from './index.data';
|
import { formSchema , columns,connectColumns,viewsColumns } from './index.data';
|
||||||
|
|
@ -222,6 +222,7 @@
|
||||||
watch(()=>props.formScheme,(newValue,oldValue)=>{
|
watch(()=>props.formScheme,(newValue,oldValue)=>{
|
||||||
if(newValue){
|
if(newValue){
|
||||||
if(newValue.scheme.scheme){
|
if(newValue.scheme.scheme){
|
||||||
|
console.log('newValue',newValue)
|
||||||
let schemObj = JSON.parse(newValue.scheme.scheme)
|
let schemObj = JSON.parse(newValue.scheme.scheme)
|
||||||
let obj = {
|
let obj = {
|
||||||
name: newValue.info.name,
|
name: newValue.info.name,
|
||||||
|
|
@ -234,16 +235,22 @@
|
||||||
console.log('schemObj',schemObj)
|
console.log('schemObj',schemObj)
|
||||||
setFieldsValue(obj)
|
setFieldsValue(obj)
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
handleTableData(schemObj.db)
|
if(newValue.info.formType == 1){
|
||||||
if(schemObj.rdb){
|
setTableDataViews(schemObj.db)
|
||||||
handleConnectTableData(schemObj.rdb)
|
}else{
|
||||||
|
handleTableData(schemObj.db)
|
||||||
|
if(schemObj.rdb){
|
||||||
|
handleConnectTableData(schemObj.rdb)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},100)
|
},100)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},{immediate:true,deep:true})
|
},{immediate:true,deep:true})
|
||||||
watch(()=>props.isNextSteps,(newValue,oldValue)=>{
|
watch(()=>props.isNextSteps,(newValue,oldValue)=>{
|
||||||
if(newValue){
|
if(newValue){
|
||||||
|
validate()
|
||||||
let formArr = getFieldsValue()
|
let formArr = getFieldsValue()
|
||||||
|
|
||||||
if(!formArr.name || !formArr.category || !formArr.DbCode){
|
if(!formArr.name || !formArr.category || !formArr.DbCode){
|
||||||
|
|
@ -252,7 +259,34 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if(formArr.formType==1){
|
if(formArr.formType==1){
|
||||||
emit('formDataNoBack');
|
let tableArr = getDataSourceViews()
|
||||||
|
let obj = {
|
||||||
|
form: formArr,
|
||||||
|
table: tableArr
|
||||||
|
}
|
||||||
|
let tabArr = []
|
||||||
|
if(tableArr && tableArr.length > 0){
|
||||||
|
if(tableArr.length == 1){
|
||||||
|
emit('formDataBack', obj);
|
||||||
|
}else{
|
||||||
|
tableArr.forEach(item =>{
|
||||||
|
if( item.type != 'main'){
|
||||||
|
tabArr.push(item.field)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
emit('formDataNoBack');
|
||||||
|
message.error("请添加数据库表",2)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(tabArr.includes(undefined)){
|
||||||
|
emit('formDataNoBack');
|
||||||
|
message.error("请完善数据库表信息",2)
|
||||||
|
}else{
|
||||||
|
emit('formDataBack', obj);
|
||||||
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
let tableArr = getDataSourceMain()
|
let tableArr = getDataSourceMain()
|
||||||
let connectTab = getDataSourceConnect()
|
let connectTab = getDataSourceConnect()
|
||||||
|
|
@ -339,7 +373,7 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const [registerViewsTable, { setTableData:setTableDataViews, getDataSource:getDataSourceViews }] = useTable({
|
const [registerViewsTable, { reload:reloadViews,setTableData:setTableDataViews, getDataSource:getDataSourceViews }] = useTable({
|
||||||
title: '',
|
title: '',
|
||||||
rowKey: 'id',
|
rowKey: 'id',
|
||||||
columns: viewsColumns,
|
columns: viewsColumns,
|
||||||
|
|
@ -423,17 +457,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
function handleAddSqlData() {
|
|
||||||
const anyformobj = ref<any>(myDataBaseFormRef.value.getFieldsValue());
|
|
||||||
|
|
||||||
if(anyformobj.value.DbCode){
|
|
||||||
openSqleModal(true, {});
|
|
||||||
}else{
|
|
||||||
message.warning("请选择数据库")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function handleDelete(record: Recordable) {
|
function handleDelete(record: Recordable) {
|
||||||
let arr = getDataSourceMain()
|
let arr = getDataSourceMain()
|
||||||
|
|
@ -635,9 +658,46 @@
|
||||||
setTableDataConnect(arr)
|
setTableDataConnect(arr)
|
||||||
reloadConnect()
|
reloadConnect()
|
||||||
}
|
}
|
||||||
|
function handleAddSqlData() {
|
||||||
|
const anyformobj = ref<any>(myDataBaseFormRef.value.getFieldsValue());
|
||||||
|
let viesObj = getDataSourceViews() || []
|
||||||
|
if(anyformobj.value.DbCode){
|
||||||
|
openSqleModal(true, {DbCode:anyformobj.value.DbCode,length:viesObj.length});
|
||||||
|
}else{
|
||||||
|
message.warning("请选择数据库")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleSqlBackDatas(ModuleId = '') {
|
||||||
|
console.log('ModuleId',ModuleId)
|
||||||
|
let viesObj = getDataSourceViews() || []
|
||||||
|
console.log('viesObj',viesObj)
|
||||||
|
viesObj.push(ModuleId)
|
||||||
|
viesObj.forEach((item,index) =>{
|
||||||
|
item.index = index
|
||||||
|
if(index==0){
|
||||||
|
item.type = 'main'
|
||||||
|
}else{
|
||||||
|
item.type = 'chlid'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
setTableDataViews(viesObj)
|
||||||
|
reloadViews()
|
||||||
|
}
|
||||||
|
function handleViewsDelete(record: Recordable) {
|
||||||
|
let arr = getDataSourceViews()
|
||||||
|
let newArr = []
|
||||||
|
arr.forEach(item =>{
|
||||||
|
if(item.index !== record.index){
|
||||||
|
newArr.push(item)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
setTableDataViews(newArr)
|
||||||
|
reloadViews()
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="less">
|
<style lang="less">
|
||||||
.l-rblock{
|
.l-rblock{
|
||||||
|
|
|
||||||
|
|
@ -27,29 +27,76 @@
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { BasicModal, useModalInner } from '/@/components/Modal';
|
import { ref,defineProps,watch } from 'vue';
|
||||||
import { BasicForm, useForm } from '/@/components/Form';
|
import { BasicModal, useModalInner } from '/@/components/Modal';
|
||||||
import { formSqlSchema } from './index.data';
|
import { BasicForm, useForm } from '/@/components/Form';
|
||||||
|
import { formSqlSchema } from './index.data';
|
||||||
const emit = defineEmits(['backrows']);
|
import { message } from 'ant-design-vue';
|
||||||
|
import { addFormSqlData } from '@/api/formdesign/index'
|
||||||
const [registerModal, { closeModal, setModalProps }] = useModalInner((data: any) => {
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
const [registerForm, { getFieldsValue, setFieldsValue, resetFields, validate }] = useForm({
|
|
||||||
labelWidth: 100,
|
|
||||||
schemas: formSqlSchema,
|
|
||||||
showActionButtonGroup: false,
|
|
||||||
baseColProps: { lg: 24, md: 24 },
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
function modalSuReClick(){
|
|
||||||
|
|
||||||
// emit('backrows', rows);
|
const emit = defineEmits(['backrows']);
|
||||||
closeModal()
|
const receiveParam = ref()
|
||||||
}
|
|
||||||
|
const [registerModal, { closeModal, setModalProps }] = useModalInner((data: any) => {
|
||||||
|
console.log('dddd',data)
|
||||||
|
receiveParam.value = data
|
||||||
|
console.log('receiveParam',receiveParam)
|
||||||
|
setFieldsValue()
|
||||||
|
})
|
||||||
|
|
||||||
|
const [registerForm, { getFieldsValue, setFieldsValue, resetFields, validate }] = useForm({
|
||||||
|
labelWidth: 100,
|
||||||
|
schemas: formSqlSchema,
|
||||||
|
showActionButtonGroup: false,
|
||||||
|
baseColProps: { lg: 24, md: 24 },
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function modalSuReClick(){
|
||||||
|
let objData = getFieldsValue()
|
||||||
|
let param = {
|
||||||
|
dbCode: receiveParam.value.DbCode,
|
||||||
|
sql: objData.sql
|
||||||
|
}
|
||||||
|
validate()
|
||||||
|
if(objData.name && objData.sql){
|
||||||
|
addFormSqlData(param).then((res: AreaRespVO[]) => {
|
||||||
|
let arr = []
|
||||||
|
res.forEach(item =>{
|
||||||
|
arr.push({
|
||||||
|
label: item,
|
||||||
|
value: item
|
||||||
|
})
|
||||||
|
})
|
||||||
|
let backObj = {
|
||||||
|
name: objData.name,
|
||||||
|
sql: objData.sql,
|
||||||
|
columns:arr,
|
||||||
|
basetable: ''
|
||||||
|
}
|
||||||
|
if(receiveParam.value.length>0){
|
||||||
|
if(objData.sql.includes('where')){
|
||||||
|
backObj.basetable = objData.sql.split('from ')[1].split(' where')[1]
|
||||||
|
}else{
|
||||||
|
message.warning("请在语句中设置关联参数")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
backObj.basetable = objData.sql.split('from ')[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
emit('backrows', backObj)
|
||||||
|
closeModal()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// emit('backrows', rows);
|
||||||
|
// closeModal()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue