|
@@ -7,6 +7,7 @@
|
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
|
<el-table :data="list" style="width: 100%" stripe border fit>
|
|
|
+ <el-table-column align="center" prop="name_zh" label="表名中文" />
|
|
|
<el-table-column align="center" prop="name" label="表名" />
|
|
|
<el-table-column align="center" prop="remark" label="备注" />
|
|
|
<el-table-column align="center" label="操作">
|
|
@@ -43,6 +44,9 @@
|
|
|
</el-row>
|
|
|
</el-affix>
|
|
|
<el-form ref="form" :model="form" label-position="left" label-width="120px">
|
|
|
+ <el-form-item label="表名中文" prop="name_zh" :required="true">
|
|
|
+ <el-input v-model="form.name_zh"></el-input>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="表名" prop="name" :required="true">
|
|
|
<el-input v-model="form.name"></el-input>
|
|
|
</el-form-item>
|
|
@@ -111,6 +115,11 @@ export default defineComponent({
|
|
|
if (valid) {
|
|
|
let res;
|
|
|
const data = _.cloneDeep(this.form);
|
|
|
+ const v = this.toVali(data);
|
|
|
+ if (!v.result) {
|
|
|
+ this.$message.error(v.message);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
if (!_.get(data, 'id')) res = await this.create(data);
|
|
|
else res = await this.update(data);
|
|
|
if (res) {
|
|
@@ -126,7 +135,18 @@ export default defineComponent({
|
|
|
|
|
|
async toExport(id) {
|
|
|
const res = await this.exportData({ ids: [id] });
|
|
|
- console.log(JSON.parse(res));
|
|
|
+ if (!_.isObject(res)) {
|
|
|
+ this.$message.error('获取的数据格式错误,无法导出');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ for (const key in res) {
|
|
|
+ let title = `${key}.js`;
|
|
|
+ let blob = new Blob([res[key]]);
|
|
|
+ let a = document.createElement('a');
|
|
|
+ a.href = window.URL.createObjectURL(blob);
|
|
|
+ a.download = title;
|
|
|
+ a.click();
|
|
|
+ }
|
|
|
},
|
|
|
toAdd() {
|
|
|
this.view = 'form';
|
|
@@ -140,6 +160,33 @@ export default defineComponent({
|
|
|
resetForm() {
|
|
|
this.$refs.form.resetFields();
|
|
|
},
|
|
|
+ toVali(data) {
|
|
|
+ const result = { result: true };
|
|
|
+ if (!data) {
|
|
|
+ result.message = '验证函数未收到需要验证的数据!';
|
|
|
+ result.result = false;
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ const { columns } = data;
|
|
|
+ const reg = new RegExp(
|
|
|
+ /[(\ )(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/)(\<)(\>)(\?)(\)]+/
|
|
|
+ );
|
|
|
+ if (!_.isArray(columns)) {
|
|
|
+ result.message = '表字段的数据格式错误!';
|
|
|
+ result.result = false;
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ for (const column of columns) {
|
|
|
+ const { title } = column;
|
|
|
+ console.log(title, reg.test(title));
|
|
|
+ if (reg.test(title)) {
|
|
|
+ result.message = `字段中不能包含非 '_' 以外的特殊符号.${title}验证失败`;
|
|
|
+ result.result = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ },
|
|
|
},
|
|
|
watch: {
|
|
|
project: {
|