You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
5.0 KiB
JavaScript
186 lines
5.0 KiB
JavaScript
import {
|
|
addFormVariables, addFunction, addVariables
|
|
} from './script.js';
|
|
|
|
import {
|
|
addCode
|
|
} from './template.js';
|
|
import { getInputCode } from './input.js';
|
|
|
|
const elementEnum = {
|
|
'input': getInputCode
|
|
};
|
|
const getFormField = (tier, formData, elementData) => {
|
|
let res = `pageForm`;
|
|
if (tier && tier.length > 0) {
|
|
tier.forEach((item, index) => {
|
|
res += `['${item}']`;
|
|
});
|
|
}
|
|
// if (formData !== '') {
|
|
// res += `['${formData}']`;
|
|
// }
|
|
if (elementData !== '') {
|
|
res += `['${elementData}']`;
|
|
}
|
|
return res;
|
|
};
|
|
|
|
const getTableCode = (data) => {
|
|
let isForm = data.isForm || false;
|
|
let tier = data.tier || [];
|
|
let tableData = data.elementData || {};
|
|
let prefix = tableData.options.key || ('table_' + tableData.options.uuid);
|
|
let formData = data.formData || {};
|
|
if (isForm) {
|
|
addCode(`<el-form-item label="${tableData.options.name || ''}" :required="${tableData.options.required}">`);
|
|
} else {
|
|
|
|
}
|
|
if (tableData.options.isOperate) {
|
|
addCode(`<div style="margin-bottom: 12px;" >
|
|
<el-button :icon="Plus" type="primary" @click="${prefix}Add">新增</el-button>
|
|
<el-button :icon="Edit" type="success" :disabled="${prefix}SelectionList.length !== 1" @click="${prefix}Update()">编辑
|
|
</el-button>
|
|
<el-button :icon="Delete" type="danger" :disabled="!(${prefix}SelectionList.length >= 1)" @click="${prefix}Del()">删除
|
|
</el-button>
|
|
</div>`);
|
|
}
|
|
addVariables(tableData.options.dataKey, []);
|
|
addVariables(`${prefix}SelectionList`, []);
|
|
addFunction(`const ${prefix}SelectionChange = (e)=>{
|
|
${prefix}SelectionList.value = e;
|
|
}`);
|
|
addFunction(`
|
|
const ${prefix}Update = (scope) =>{
|
|
if(!scope){
|
|
${prefix}OperationForm.value = ${prefix}SelectionList.value[0];
|
|
}else{
|
|
${prefix}OperationForm.value = scope.row;
|
|
}
|
|
${prefix}OperationFormVisible.value = true;
|
|
}
|
|
`);
|
|
addFunction(`
|
|
const ${prefix}Add = ()=>{
|
|
${prefix}OperationForm.value = {}
|
|
${prefix}OperationFormVisible.value = true;
|
|
}
|
|
`);
|
|
addFunction(`
|
|
|
|
const ${prefix}Del = () => {
|
|
ElMessageBox.confirm(
|
|
'确定删除这些数据吗?',
|
|
'Warning',
|
|
{
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
beforeClose: async (action, instance, done) => {
|
|
try {
|
|
let localData = pageData.value;
|
|
let formData = { ${tableData.options.delField}: ${prefix}SelectionList.value.map(v => v[${tableData.options.delField}]) }
|
|
${tableData.options.deleteFunction}
|
|
done();
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
}
|
|
)
|
|
.then(async () => {
|
|
ElMessage({
|
|
type: 'success',
|
|
message: '删除完成'
|
|
});
|
|
})
|
|
.catch(() => {
|
|
ElMessage({
|
|
type: 'info',
|
|
message: '取消删除'
|
|
});
|
|
});
|
|
};
|
|
`);
|
|
addCode(`
|
|
<el-table :data="formData['${tableData.options.dataKey}']"
|
|
style="width: 100%"
|
|
@selection-change="${prefix}SelectionChange">
|
|
<el-table-column type="selection" width="55" />
|
|
${tableData.options.thTdMap.map(i => {
|
|
return `<el-table-column prop="${i.key}" label="${i.name}" />`;
|
|
}).join('\n')}
|
|
<el-table-column label="操作">
|
|
<template #default="scope">
|
|
<el-button
|
|
link
|
|
type="primary"
|
|
size="small"
|
|
@click.prevent="${prefix}Update(scope)"
|
|
>
|
|
修改
|
|
</el-button>
|
|
<el-button
|
|
link
|
|
type="primary"
|
|
size="small"
|
|
@click.prevent="${prefix}Del(scope)"
|
|
>
|
|
删除
|
|
</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
`);
|
|
if (isForm) {
|
|
addCode(`</el-form-item>`);
|
|
} else {
|
|
|
|
}
|
|
if (true) {
|
|
addVariables(`${prefix}OperationFormVisible`, false);
|
|
addVariables(`${prefix}OperationTitle`, '');
|
|
addFormVariables([], `${prefix}OperationForm`, {});
|
|
addCode(`
|
|
<el-dialog v-model="${prefix}OperationFormVisible" :title="${prefix}OperationTitle" width="500">
|
|
<el-form :model="${prefix}OperationForm" label-width="120px">`);
|
|
|
|
tableData.options.thTdMap.filter(e => e.isUpdate).map(e => {
|
|
const noFun = () => {
|
|
};
|
|
(elementEnum[e.type] || noFun)({
|
|
isForm: true,
|
|
formData: { options: { key: `${prefix}OperationForm` } },
|
|
elementData: { options: e },
|
|
tier: [`${prefix}OperationForm`]
|
|
});
|
|
});
|
|
addCode(`
|
|
</el-form>
|
|
<template #footer>
|
|
<div class="dialog-footer">
|
|
<el-button @click="${prefix}OperationFormVisible = false;${prefix}OperationForm={}">关闭</el-button>
|
|
<el-button type="primary" @click="${prefix}AddSubmit">
|
|
提交
|
|
</el-button>
|
|
</div>
|
|
</template>
|
|
</el-dialog>
|
|
`);
|
|
addFunction(`
|
|
const ${prefix}AddSubmit = async ()=>{
|
|
let formData = ${prefix}OperationForm.value
|
|
let localData = pageData.value
|
|
${tableData.options.updateFunction}
|
|
${prefix}OperationFormVisible.value = false
|
|
}
|
|
`);
|
|
}
|
|
|
|
};
|
|
|
|
export {
|
|
getTableCode
|
|
};
|