fix 修复代码生成添加修改过滤,字典重复报错
This commit is contained in:
parent
e185c2ca64
commit
c235475dca
@ -663,6 +663,16 @@ func (s *sToolsGenTable) GenData(ctx context.Context, tableId int64) (data g.Map
|
||||
return
|
||||
}
|
||||
|
||||
vueAddKey := "vueAdd"
|
||||
vueAddValue := ""
|
||||
var tmpVueAddModel string
|
||||
if tmpVueAddModel, err = view.Parse(ctx, "vue/add-vue.template", tplData); err == nil {
|
||||
vueAddValue = tmpVueAddModel
|
||||
vueAddValue, err = s.trimBreak(vueAddValue)
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
||||
vueEditKey := "vueEdit"
|
||||
vueEditValue := ""
|
||||
var tmpVueEditModel string
|
||||
@ -699,6 +709,7 @@ func (s *sToolsGenTable) GenData(ctx context.Context, tableId int64) (data g.Map
|
||||
tsApiKey: tsApiValue,
|
||||
tsModelKey: tsModelValue,
|
||||
vueKey: vueValue,
|
||||
vueAddKey: vueAddValue,
|
||||
vueEditKey: vueEditValue,
|
||||
vueDetailKey: vueDetailValue,
|
||||
}
|
||||
@ -735,6 +746,7 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
|
||||
allColumnExs := make([]*model.ToolsGenTableColumnEx, len(columns))
|
||||
|
||||
var (
|
||||
insertColumns []*model.ToolsGenTableColumnEx
|
||||
editColumns []*model.ToolsGenTableColumnEx
|
||||
listColumns []*model.ToolsGenTableColumnEx
|
||||
detailColumns []*model.ToolsGenTableColumnEx
|
||||
@ -751,6 +763,12 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
|
||||
allColumnExs[i] = columnEx
|
||||
tableEx.IsPkInsertable = tableEx.IsPkInsertable || column.IsPk && !column.IsIncrement
|
||||
tableEx.IsPkListable = tableEx.IsPkListable || column.IsPk && column.IsList
|
||||
if column.IsInsert && !service.ToolsGenTableColumn().IsNotEdit(columnName) && !column.IsPk {
|
||||
insertColumns = append(insertColumns, columnEx)
|
||||
columnEx.IsInsert = true
|
||||
} else {
|
||||
columnEx.IsInsert = false
|
||||
}
|
||||
if column.IsEdit && !service.ToolsGenTableColumn().IsNotEdit(columnName) && !column.IsPk {
|
||||
editColumns = append(editColumns, columnEx)
|
||||
columnEx.IsEdit = true
|
||||
@ -843,7 +861,9 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
sort.Slice(insertColumns, func(i, j int) bool {
|
||||
return insertColumns[i].SortOrderEdit < insertColumns[j].SortOrderEdit
|
||||
})
|
||||
sort.Slice(editColumns, func(i, j int) bool {
|
||||
return editColumns[i].SortOrderEdit < editColumns[j].SortOrderEdit
|
||||
})
|
||||
@ -858,6 +878,7 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
|
||||
})
|
||||
|
||||
tableEx.Columns = allColumnExs
|
||||
tableEx.InsertColumns = insertColumns
|
||||
tableEx.EditColumns = editColumns
|
||||
tableEx.DetailColumns = detailColumns
|
||||
tableEx.ListColumns = listColumns
|
||||
@ -1047,6 +1068,10 @@ func (s *sToolsGenTable) GenCode(ctx context.Context, ids []int) (err error) {
|
||||
path := strings.Join([]string{frontDir, "/src/views/" + pluginName, extendData.ModuleName, "/", businessName + "/list/component/detail", ".vue"}, "")
|
||||
err = s.createFile(path, code, extendData.Overwrite)
|
||||
liberr.ErrIsNil(ctx, err)
|
||||
case "vueAdd":
|
||||
path := strings.Join([]string{frontDir, "/src/views/" + pluginName, extendData.ModuleName, "/", businessName + "/list/component/add", ".vue"}, "")
|
||||
err = s.createFile(path, code, extendData.Overwrite)
|
||||
liberr.ErrIsNil(ctx, err)
|
||||
case "vueEdit":
|
||||
path := strings.Join([]string{frontDir, "/src/views/" + pluginName, extendData.ModuleName, "/", businessName + "/list/component/edit", ".vue"}, "")
|
||||
err = s.createFile(path, code, extendData.Overwrite)
|
||||
|
@ -45,7 +45,8 @@ type ToolsGenTableEx struct {
|
||||
HasUpdatedBy bool // 是否有updated_by字段
|
||||
HasConversion bool // service中是否有转换函数
|
||||
Columns []*ToolsGenTableColumnEx // 表列信息
|
||||
EditColumns []*ToolsGenTableColumnEx // 新增、编辑界面列信息,主键单独判断不在此列
|
||||
InsertColumns []*ToolsGenTableColumnEx // 新增界面列信息,主键单独判断不在此列
|
||||
EditColumns []*ToolsGenTableColumnEx // 编辑界面列信息,主键单独判断不在此列
|
||||
ListColumns []*ToolsGenTableColumnEx // 列表界面列信息
|
||||
DetailColumns []*ToolsGenTableColumnEx // 详情界面列信息
|
||||
QueryColumns []*ToolsGenTableColumnEx // 查询表单列信息
|
||||
|
@ -25,6 +25,11 @@ package {{.table.ModuleName }}
|
||||
{{$hasGtime = true}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{range $index,$column :=.table.InsertColumns}}
|
||||
{{if eq $column.GoType "Time"}}
|
||||
{{$hasGtime = true}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
import (
|
||||
{{if $hasArr}}
|
||||
"github.com/gogf/gf/v2/container/garray"
|
||||
@ -67,7 +72,7 @@ type {{.table.ClassName}}AddReq struct {
|
||||
{{if .table.IsPkInsertable}}
|
||||
{{.table.PkColumn.GoField}} {{.table.PkColumn.GoType}} `p:"{{.table.PkColumn.HtmlField}}" v:"required#主键ID不能为空"`
|
||||
{{end}}
|
||||
{{range $index, $column := .table.EditColumns}}
|
||||
{{range $index, $column := .table.InsertColumns}}
|
||||
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else if eq $column.HtmlType "checkbox"}}garray.StrArray{{else}}{{$column.GoType}}{{end}} `p:"{{$column.HtmlField}}" {{if $column.IsRequired}}v:"required#{{$column.ColumnComment}}不能为空"{{end}}`
|
||||
{{end}}
|
||||
{{if .table.HasCreatedBy}}
|
||||
|
@ -202,7 +202,7 @@ func (s *s{{.table.ClassName}})GetBy{{$pkGoField}}(ctx context.Context, {{$.tabl
|
||||
////
|
||||
func (s *s{{.table.ClassName}})Add(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}AddReq) (err error){
|
||||
err = g.Try(ctx, func(ctx context.Context) {
|
||||
{{range $index, $column := .table.EditColumns}}
|
||||
{{range $index, $column := .table.InsertColumns}}
|
||||
{{if eq $column.HtmlType "checkbox"}}
|
||||
{{$column.HtmlField}} := ""
|
||||
req.{{$column.GoField}}.FilterEmpty()
|
||||
@ -220,7 +220,7 @@ func (s *s{{.table.ClassName}})Add(ctx context.Context, req *{{.table.ModuleName
|
||||
{{if .table.IsPkInsertable}}
|
||||
{{.table.PkColumn.GoField}}:req.{{.table.PkColumn.GoField}},
|
||||
{{end}}
|
||||
{{range $index, $column := .table.EditColumns}}
|
||||
{{range $index, $column := .table.InsertColumns}}
|
||||
{{if eq $column.HtmlType "checkbox"}}
|
||||
{{$column.GoField}}:{{$column.HtmlField}},
|
||||
{{else}}
|
||||
|
493
resource/template/vm/vue/add-vue.template
Normal file
493
resource/template/vm/vue/add-vue.template
Normal file
@ -0,0 +1,493 @@
|
||||
<template>
|
||||
{{$lens := .table.Columns|len}}
|
||||
{{$businessName := .table.BusinessName | CaseCamelLower}}
|
||||
{{$treeParentCode := .table.TreeParentCode}}
|
||||
{{$treeCode := .table.TreeCode}}
|
||||
{{$treeName := .table.TreeName}}
|
||||
<div class="{{.table.ModuleName}}-{{.table.BusinessName|CaseCamelLower}}-add">
|
||||
<!-- 添加或修改{{.table.FunctionName}}对话框 -->
|
||||
<el-dialog v-model="isShowDialog" width="769px" :close-on-click-modal="false" :destroy-on-close="true">
|
||||
<template #header>
|
||||
<div v-drag="['.{{.table.ModuleName}}-{{.table.BusinessName|CaseCamelLower}}-add .el-dialog', '.{{.table.ModuleName}}-{{.table.BusinessName|CaseCamelLower}}-add .el-dialog__header']">添加{{.table.FunctionName}}</div>
|
||||
</template>
|
||||
<el-form ref="formRef" :model="formData" :rules="rules" label-width="90px">
|
||||
{{if .table.IsPkInsertable}}
|
||||
<el-form-item label="{{.table.PkColumn.ColumnComment}}" prop="{{.table.PkColumn.HtmlField}}">
|
||||
<el-input v-model="formData.{{.table.PkColumn.HtmlField}}" placeholder="请输入{{.table.PkColumn.ColumnComment}}" v-bind:disabled="this.currentOp === 'edit'" />
|
||||
</el-form-item>
|
||||
{{end}}
|
||||
{{range $index, $column := .table.InsertColumns}}
|
||||
{{if and (ne $treeParentCode "") (eq $column.HtmlField $treeParentCode)}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-cascader
|
||||
v-model="formData.{{$column.HtmlField}}"
|
||||
placeholder="请选择"
|
||||
:options="{{$businessName}}Options"
|
||||
filterable
|
||||
clearable
|
||||
:props="{ label: '{{$treeName}}',value: '{{$treeCode}}',checkStrictly: true,emitPath: false }"
|
||||
/>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "input"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-input v-model="formData.{{$column.HtmlField}}" placeholder="请输入{{$column.ColumnComment}}" {{if $column.IsPk}}v-bind:disabled="this.currentOp === 'edit'" {{end}}/>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "select" }}
|
||||
{{if ne $column.LinkTableName ""}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-select v-model="formData.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" {{if $column.IsPk}}v-bind:disabled="this.currentOp === 'edit'" {{end}} {{if $column.IsCascadeParent}}@change="form{{$column.ColumnName | CaseCamel}}Changed"{{end}} {{if not $column.IsCascade}}@click.native="get{{$column.LinkTableClass}}{{if $column.IsCascade}}Form{{end}}Items{{$column.GoField}}"{{end}}>
|
||||
<el-option
|
||||
{{if $column.IsCascade}}
|
||||
v-for="item in {{$column.HtmlField}}FormOptions"
|
||||
{{else}}
|
||||
v-for="item in {{$column.HtmlField}}Options"
|
||||
{{end}}
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
{{else if ne $column.DictType ""}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-select v-model="formData.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" {{if $column.IsPk}}v-bind:disabled="this.currentOp === 'edit'" {{end}}>
|
||||
<el-option
|
||||
v-for="dict in {{$column.HtmlField}}Options"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
{{if eq $column.GoType "Integer"}}
|
||||
:value="parseInt(dict.value)"
|
||||
{{else}}
|
||||
:value="dict.value"
|
||||
{{end}}
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
{{else}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-select v-model="formData.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" {{if $column.IsPk}}v-bind:disabled="this.currentOp === 'edit'" {{end}}>
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
{{end}}
|
||||
{{else if eq $column.HtmlType "radio" }} {{/* else if eq $column.HtmlType "select" */}}
|
||||
{{if ne $column.DictType ""}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-radio-group v-model="formData.{{$column.HtmlField}}">
|
||||
<el-radio
|
||||
v-for="dict in {{$column.HtmlField}}Options"
|
||||
:key="dict.value"
|
||||
:label="dict.value"
|
||||
>{{ VueTag "{{" }}dict.label {{VueTag "}}"}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
{{else}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-radio-group v-model="formData.{{$column.HtmlField}}">
|
||||
<el-radio>请选择字典生成</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
{{end}}
|
||||
{{else if eq $column.HtmlType "date"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-date-picker clearable style="width: 200px"
|
||||
v-model="formData.{{$column.HtmlField}}"
|
||||
type="date"
|
||||
placeholder="选择{{$column.ColumnComment}}">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "datetime"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-date-picker clearable style="width: 200px"
|
||||
v-model="formData.{{$column.HtmlField}}"
|
||||
type="datetime"
|
||||
placeholder="选择{{$column.ColumnComment}}">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "textarea"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-input v-model="formData.{{$column.HtmlField}}" type="textarea" placeholder="请输入{{$column.ColumnComment}}" />
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "checkbox" }}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-checkbox-group v-model="formData.{{$column.HtmlField}}">
|
||||
<el-checkbox
|
||||
v-for="dict in {{$column.HtmlField}}Options"
|
||||
:key="dict.value"
|
||||
:label="dict.value"
|
||||
>{{ VueTag "{{" }}dict.label {{VueTag "}}"}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "richtext"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}">
|
||||
<gf-ueditor editorId="ue{{$.table.ClassName}}{{$column.GoField}}" v-model="formData.{{$column.HtmlField}}" @setEditContent="set{{$column.GoField}}EditContent"></gf-ueditor>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "imagefile"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
|
||||
<el-upload
|
||||
v-loading="upLoading{{$column.GoField}}"
|
||||
:action="baseURL+'{{$.apiVersion}}/system/upload/singleImg'"
|
||||
:before-upload="beforeAvatarUpload{{$column.GoField}}"
|
||||
:data="setUpData()"
|
||||
:on-success="handleAvatarSuccess{{$column.GoField}}"
|
||||
:show-file-list="false"
|
||||
class="avatar-uploader"
|
||||
name="file"
|
||||
>
|
||||
<img v-if="!proxy.isEmpty(imageUrl{{$column.GoField}})" :src="imageUrl{{$column.GoField}}" class="avatar">
|
||||
<el-icon v-else class="avatar-uploader-icon"><ele-Plus /></el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "images"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}" >
|
||||
<upload-img :action="baseURL+'{{$.apiVersion}}/system/upload/singleImg'" v-model="formData.{{$column.HtmlField}}" @uploadData="setUpImgList{{$column.GoField}}" :limit="10"></upload-img>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "file"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}" >
|
||||
<upload-file :action="baseURL+'{{$.apiVersion}}/system/upload/singleFile'" v-model="formData.{{$column.HtmlField}}" @upFileData="setUpFileList{{$column.GoField}}" :limit="1"></upload-file>
|
||||
</el-form-item>
|
||||
{{else if eq $column.HtmlType "files"}}
|
||||
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}" >
|
||||
<upload-file :action="baseURL+'{{$.apiVersion}}/system/upload/singleFile'" v-model="formData.{{$column.HtmlField}}" @upFileData="setUpFileList{{$column.GoField}}" :limit="10"></upload-file>
|
||||
</el-form-item>
|
||||
{{end}} {{/* $column.HtmlType */}}
|
||||
{{end}} {{/* range */}}
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="onSubmit">确 定</el-button>
|
||||
<el-button @click="onCancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
{{$tokenImp := false}}
|
||||
{{$imgsImp := false}}
|
||||
{{$editImp := false }}
|
||||
{{$fileImp := false}}
|
||||
{{$getUserList:=false}}
|
||||
|
||||
{{range $index,$column:=.table.Columns}}
|
||||
{{if eq $column.HtmlType "richtext"}}
|
||||
{{$editImp = true}}
|
||||
{{else if eq $column.HtmlType "imagefile"}}
|
||||
{{$tokenImp = true}}
|
||||
{{else if eq $column.HtmlType "images"}}
|
||||
{{$imgsImp = true}}
|
||||
{{else if eq $column.HtmlType "file" "files"}}
|
||||
{{$fileImp = true}}
|
||||
{{end}}
|
||||
{{if eq $column.HtmlField "createdBy" "updatedBy"}}
|
||||
{{$getUserList = true}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
||||
{{$plugin:=""}}
|
||||
{{if ContainsI $.table.PackageName "plugins"}}
|
||||
{{$plugin = "plugins/"}}
|
||||
{{end}}
|
||||
<script lang="ts">
|
||||
import { reactive, toRefs, defineComponent,ref,unref,getCurrentInstance } from 'vue';
|
||||
import {ElMessageBox, ElMessage, FormInstance,UploadProps} from 'element-plus';
|
||||
{{/*去重处理*/}}
|
||||
{{$hasImports:=newArray}}
|
||||
import {
|
||||
list{{.table.ClassName}},
|
||||
get{{.table.ClassName}},
|
||||
del{{.table.ClassName}},
|
||||
add{{.table.ClassName}},
|
||||
update{{.table.ClassName}},
|
||||
{{range $index,$column:= .table.Columns}}
|
||||
{{if and $column.IsStatus $column.IsList}}
|
||||
change{{$.table.ClassName}}{{$column.GoField}},
|
||||
{{end}}
|
||||
{{if ne $column.LinkTableName ""}}
|
||||
{{if not (inArray $hasImports (concat "list" $column.LinkTableClass))}}
|
||||
{{$hasImports = append $hasImports (concat "list" $column.LinkTableClass)}}
|
||||
list{{$column.LinkTableClass}},
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{if $getUserList}}
|
||||
getUserList,
|
||||
{{end}}
|
||||
} from "/@/api/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}";
|
||||
|
||||
{{if $editImp}}
|
||||
import GfUeditor from "/@/components/ueditor/index.vue"
|
||||
{{end}}
|
||||
{{if $tokenImp}}
|
||||
import {getToken} from "/@/utils/gfast"
|
||||
{{end}}
|
||||
{{if $imgsImp}}
|
||||
import uploadImg from "/@/components/uploadImg/index.vue"
|
||||
{{end}}
|
||||
{{if $fileImp}}
|
||||
import uploadFile from "/@/components/uploadFile/index.vue"
|
||||
{{end}}
|
||||
import {
|
||||
{{.table.ClassName}}TableColumns,
|
||||
{{.table.ClassName}}InfoData,
|
||||
{{.table.ClassName}}TableDataState,
|
||||
{{.table.ClassName}}EditState,
|
||||
{{range $ti, $linkedTable := .table.LinkedTables}}
|
||||
Linked{{$.table.ClassName}}{{$linkedTable.ClassName}},
|
||||
{{end}}
|
||||
} from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/model"
|
||||
export default defineComponent({
|
||||
name:"{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit",
|
||||
components:{
|
||||
{{if $editImp}}
|
||||
GfUeditor,
|
||||
{{end}}
|
||||
{{if $imgsImp}}
|
||||
uploadImg,
|
||||
{{end}}
|
||||
{{if $fileImp}}
|
||||
uploadFile,
|
||||
{{end}}
|
||||
},
|
||||
props:{
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.DictType ""}}
|
||||
{{$column.HtmlField}}Options:{
|
||||
type:Array,
|
||||
default:()=>[]
|
||||
},
|
||||
{{else if ne $column.LinkTableName ""}}
|
||||
{{if $column.IsCascade}}
|
||||
{{/*级联处理*/}}
|
||||
{{end}}
|
||||
{{/*关联表处理*/}}
|
||||
{{$column.HtmlField}}Options:{
|
||||
type:Array,
|
||||
default:()=>[]
|
||||
},
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{if eq .table.TplCategory "tree"}}
|
||||
// {{.table.FunctionName}}树选项
|
||||
{{$businessName}}Options :{
|
||||
type:Array,
|
||||
default:()=>[]
|
||||
},
|
||||
{{end}}
|
||||
},
|
||||
setup(props,{emit}) {
|
||||
{{if or $imgsImp $tokenImp $fileImp}}
|
||||
const baseURL:string|undefined|boolean = import.meta.env.VITE_API_URL
|
||||
{{end}}
|
||||
const {proxy} = <any>getCurrentInstance()
|
||||
const formRef = ref<HTMLElement | null>(null);
|
||||
const menuRef = ref();
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if eq $column.HtmlType "imagefile"}}
|
||||
//图片上传地址
|
||||
const imageUrl{{$column.GoField}} = ref('')
|
||||
//上传加载
|
||||
const upLoading{{$column.GoField}} = ref(false)
|
||||
{{end}}
|
||||
{{end}}
|
||||
const state = reactive<{{.table.ClassName}}EditState>({
|
||||
loading:false,
|
||||
isShowDialog: false,
|
||||
formData: {
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if eq $column.HtmlType "radio"}}
|
||||
{{$column.HtmlField}}: false ,
|
||||
{{else if eq $column.HtmlType "images" "file" "files" "checkbox"}}
|
||||
{{$column.HtmlField}}: [] ,
|
||||
{{else}}
|
||||
{{$column.HtmlField}}: undefined,
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{range $ti, $linkedTable := .table.LinkedTables}}
|
||||
linked{{$.table.ClassName}}{{$linkedTable.ClassName}}: {
|
||||
{{range $ci, $linkedColumn := $linkedTable.RefColumns.Values}}
|
||||
{{$linkedColumn.HtmlField}}:{{if eq $linkedColumn.HtmlType "images" "file" "files"}}[]{{else}}undefined{{end}}, // {{$linkedColumn.ColumnComment}}
|
||||
{{end}}
|
||||
},
|
||||
{{end}}
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if $column.IsRequired}}
|
||||
{{$column.HtmlField}} : [
|
||||
{ required: true, message: "{{$column.ColumnComment}}不能为空", trigger: "blur" }
|
||||
]{{if ne $lens $index}},{{end}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
}
|
||||
});
|
||||
// 打开弹窗
|
||||
const openDialog = () => {
|
||||
resetForm();
|
||||
state.isShowDialog = true;
|
||||
};
|
||||
// 关闭弹窗
|
||||
const closeDialog = () => {
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
// 取消
|
||||
const onCancel = () => {
|
||||
closeDialog();
|
||||
};
|
||||
// 提交
|
||||
const onSubmit = () => {
|
||||
const formWrap = unref(formRef) as any;
|
||||
if (!formWrap) return;
|
||||
formWrap.validate((valid: boolean) => {
|
||||
if (valid) {
|
||||
state.loading = true;
|
||||
//添加
|
||||
add{{.table.ClassName}}(state.formData).then(()=>{
|
||||
ElMessage.success('添加成功');
|
||||
closeDialog(); // 关闭弹窗
|
||||
emit('{{$businessName}}List')
|
||||
}).finally(()=>{
|
||||
state.loading = false;
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
const resetForm = ()=>{
|
||||
state.formData = {
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if eq $column.HtmlType "radio"}}
|
||||
{{$column.HtmlField}}: false ,
|
||||
{{else if eq $column.HtmlType "images" "file" "files" "checkbox"}}
|
||||
{{$column.HtmlField}}: [] ,
|
||||
{{else}}
|
||||
{{$column.HtmlField}}: undefined,
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{range $ti, $linkedTable := .table.LinkedTables}}
|
||||
linked{{$.table.ClassName}}{{$linkedTable.ClassName}}: {
|
||||
{{range $ci, $linkedColumn := $linkedTable.RefColumns.Values}}
|
||||
{{$linkedColumn.HtmlField}}:{{if eq $linkedColumn.HtmlType "images" "file" "files"}}[]{{else}}undefined{{end}}, // {{$linkedColumn.ColumnComment}}
|
||||
{{end}}
|
||||
},
|
||||
{{end}}
|
||||
}
|
||||
};
|
||||
{{$setUpData:=true}}
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.LinkTableName ""}}
|
||||
//关联{{$column.LinkTableName}}表选项
|
||||
const get{{$column.LinkTableClass}}Items{{$column.GoField}} = () => {
|
||||
emit("get{{$column.LinkTableClass}}Items{{$column.GoField}}")
|
||||
}
|
||||
{{else if eq $column.HtmlType "richtext"}}
|
||||
//富文本编辑器{{$column.ColumnComment}}
|
||||
const set{{$column.GoField}}EditContent = (data:string) => {
|
||||
state.formData.{{$column.HtmlField}} = data
|
||||
}
|
||||
{{else if eq $column.HtmlType "imagefile"}}
|
||||
//单图上传{{$column.ColumnComment}}
|
||||
const handleAvatarSuccess{{$column.GoField}}:UploadProps['onSuccess'] = (res, file) => {
|
||||
if (res.code === 0) {
|
||||
imageUrl{{$column.GoField}}.value = URL.createObjectURL(file.raw!)
|
||||
state.formData.{{$column.HtmlField}} = res.data.path
|
||||
} else {
|
||||
ElMessage.error(res.msg)
|
||||
}
|
||||
upLoading{{$column.GoField}}.value = false
|
||||
}
|
||||
const beforeAvatarUpload{{$column.GoField}} = () => {
|
||||
upLoading{{$column.GoField}}.value = true
|
||||
return true
|
||||
}
|
||||
{{if $setUpData}}
|
||||
const setUpData = () => {
|
||||
return { token: getToken() }
|
||||
}
|
||||
{{$setUpData = false}}
|
||||
{{end}}
|
||||
{{else if eq $column.HtmlType "images"}}
|
||||
const setUpImgList{{$column.GoField}} = (data:any)=>{
|
||||
state.formData.{{$column.HtmlField}} = data
|
||||
}
|
||||
{{else if eq $column.HtmlType "file" "files"}}
|
||||
const setUpFileList{{$column.GoField}} = (data:any)=>{
|
||||
state.formData.{{$column.HtmlField}} = data
|
||||
}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{$setUpDataR:=true}}
|
||||
return {
|
||||
proxy,
|
||||
openDialog,
|
||||
closeDialog,
|
||||
onCancel,
|
||||
onSubmit,
|
||||
menuRef,
|
||||
formRef,
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.LinkTableName ""}}
|
||||
{{if $column.IsCascade}}
|
||||
{{/*级联处理*/}}
|
||||
{{else}}
|
||||
{{/*关联表处理*/}}
|
||||
get{{$column.LinkTableClass}}Items{{$column.GoField}},
|
||||
{{end}}
|
||||
{{else if eq $column.HtmlType "richtext"}}
|
||||
//富文本编辑器{{$column.ColumnComment}}
|
||||
set{{$column.GoField}}EditContent,
|
||||
{{else if eq $column.HtmlType "imagefile"}}
|
||||
//图片上传地址
|
||||
imageUrl{{$column.GoField}},
|
||||
//上传加载
|
||||
upLoading{{$column.GoField}},
|
||||
handleAvatarSuccess{{$column.GoField}},
|
||||
beforeAvatarUpload{{$column.GoField}},
|
||||
{{if $setUpDataR}}
|
||||
setUpData,
|
||||
{{$setUpDataR = false}}
|
||||
{{end}}
|
||||
{{else if eq $column.HtmlType "images"}}
|
||||
setUpImgList{{$column.GoField}},
|
||||
{{else if eq $column.HtmlType "file" "files"}}
|
||||
setUpFileList{{$column.GoField}},
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{if or $imgsImp $tokenImp $fileImp}}
|
||||
baseURL,
|
||||
{{end}}
|
||||
...toRefs(state),
|
||||
};
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
{{if $tokenImp}}
|
||||
.{{.table.ModuleName}}-{{.table.BusinessName|CaseCamelLower}}-add :deep(.avatar-uploader .avatar) {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
.{{.table.ModuleName}}-{{.table.BusinessName|CaseCamelLower}}-add :deep(.avatar-uploader .el-upload) {
|
||||
border: 1px dashed var(--el-border-color);
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: var(--el-transition-duration-fast);
|
||||
}
|
||||
|
||||
.{{.table.ModuleName}}-{{.table.BusinessName|CaseCamelLower}}-add :deep(.avatar-uploader .el-upload:hover) {
|
||||
border-color: var(--el-color-primary);
|
||||
}
|
||||
|
||||
.{{.table.ModuleName}}-{{.table.BusinessName|CaseCamelLower}}-add :deep(.el-icon.avatar-uploader-icon) {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
text-align: center;
|
||||
}
|
||||
{{end}}
|
||||
</style>
|
@ -308,6 +308,23 @@
|
||||
@pagination="{{$businessName}}List"
|
||||
/>
|
||||
</el-card>
|
||||
<{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add
|
||||
ref="addRef"
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.DictType ""}}
|
||||
:{{$column.HtmlField}}Options="{{$column.DictType}}"
|
||||
{{else if ne $column.LinkTableName ""}}
|
||||
{{if $column.IsCascade}}
|
||||
{{/*级联处理*/}}
|
||||
{{else}}
|
||||
{{/*关联表处理*/}}
|
||||
:{{$column.HtmlField}}Options="{{$column.HtmlField}}Options"
|
||||
@get{{$column.LinkTableClass}}Items{{$column.GoField}}="get{{$column.LinkTableClass}}Items{{$column.GoField}}"
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
@{{$businessName}}List="{{$businessName}}List"
|
||||
></{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add>
|
||||
<{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit
|
||||
ref="editRef"
|
||||
{{range $index, $column := .table.Columns}}
|
||||
@ -401,11 +418,13 @@ import {
|
||||
Linked{{$.table.ClassName}}{{$linkedTable.ClassName}},
|
||||
{{end}}
|
||||
} from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/model"
|
||||
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/add.vue"
|
||||
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/edit.vue"
|
||||
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/detail.vue"
|
||||
export default defineComponent({
|
||||
name: "{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}List",
|
||||
components:{
|
||||
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add,
|
||||
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit,
|
||||
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail
|
||||
},
|
||||
@ -413,6 +432,7 @@ export default defineComponent({
|
||||
const {proxy} = <any>getCurrentInstance()
|
||||
const loading = ref(false)
|
||||
const queryRef = ref()
|
||||
const addRef = ref();
|
||||
const editRef = ref();
|
||||
const detailRef = ref();
|
||||
// 是否显示所有搜索选项
|
||||
@ -430,17 +450,19 @@ export default defineComponent({
|
||||
}
|
||||
})
|
||||
// 字典选项数据
|
||||
const {
|
||||
{{$dictArr:=newArray}}
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.DictType ""}}
|
||||
{{$column.DictType}},
|
||||
{{if and (ne $column.DictType "") (ne (inArray $dictArr $column.DictType) true)}}
|
||||
{{$dictArr = append $dictArr $column.DictType}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
const {
|
||||
{{range $index, $column := $dictArr}}
|
||||
{{$column}},
|
||||
{{end}}
|
||||
} = proxy.useDict(
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.DictType ""}}
|
||||
'{{$column.DictType}}',
|
||||
{{end}}
|
||||
{{range $index, $column := $dictArr}}
|
||||
'{{$column}}',
|
||||
{{end}}
|
||||
)
|
||||
{{range $index, $column := .table.Columns}}
|
||||
@ -591,7 +613,7 @@ export default defineComponent({
|
||||
multiple.value = !selection.length
|
||||
}
|
||||
const handleAdd = ()=>{
|
||||
editRef.value.openDialog()
|
||||
addRef.value.openDialog()
|
||||
}
|
||||
const handleUpdate = (row: {{$.table.ClassName}}TableColumns) => {
|
||||
if(!row){
|
||||
@ -632,6 +654,7 @@ export default defineComponent({
|
||||
}
|
||||
return {
|
||||
proxy,
|
||||
addRef,
|
||||
editRef,
|
||||
detailRef,
|
||||
showAll,
|
||||
|
@ -312,6 +312,24 @@
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
<{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add
|
||||
ref="addRef"
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.DictType ""}}
|
||||
:{{$column.HtmlField}}Options="{{$column.DictType}}"
|
||||
{{else if ne $column.LinkTableName ""}}
|
||||
{{if $column.IsCascade}}
|
||||
{{/*级联处理*/}}
|
||||
{{else}}
|
||||
{{/*关联表处理*/}}
|
||||
:{{$column.HtmlField}}Options="{{$column.HtmlField}}Options"
|
||||
@get{{$column.LinkTableClass}}Items{{$column.GoField}}="get{{$column.LinkTableClass}}Items{{$column.GoField}}"
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
:{{$businessName}}Options="tableData.data"
|
||||
@{{$businessName}}List="{{$businessName}}List"
|
||||
></{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add>
|
||||
<{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit
|
||||
ref="editRef"
|
||||
{{range $index, $column := .table.Columns}}
|
||||
@ -407,12 +425,14 @@ import {
|
||||
Linked{{$.table.ClassName}}{{$linkedTable.ClassName}},
|
||||
{{end}}
|
||||
} from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/model"
|
||||
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/add.vue"
|
||||
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/edit.vue"
|
||||
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/detail.vue"
|
||||
import _ from 'lodash'
|
||||
export default defineComponent({
|
||||
name: "{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}List",
|
||||
components:{
|
||||
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add,
|
||||
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit,
|
||||
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail
|
||||
},
|
||||
@ -420,6 +440,7 @@ export default defineComponent({
|
||||
const {proxy} = <any>getCurrentInstance()
|
||||
const loading = ref(false)
|
||||
const queryRef = ref()
|
||||
const addRef = ref();
|
||||
const editRef = ref();
|
||||
const detailRef = ref();
|
||||
// 是否显示所有搜索选项
|
||||
@ -437,17 +458,19 @@ export default defineComponent({
|
||||
}
|
||||
})
|
||||
// 字典选项数据
|
||||
const {
|
||||
{{$dictArr:=newArray}}
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.DictType ""}}
|
||||
{{$column.DictType}},
|
||||
{{if and (ne $column.DictType "") (ne (inArray $dictArr $column.DictType) true)}}
|
||||
{{$dictArr = append $dictArr $column.DictType}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
const {
|
||||
{{range $index, $column := $dictArr}}
|
||||
{{$column}},
|
||||
{{end}}
|
||||
} = proxy.useDict(
|
||||
{{range $index, $column := .table.Columns}}
|
||||
{{if ne $column.DictType ""}}
|
||||
'{{$column.DictType}}',
|
||||
{{end}}
|
||||
{{range $index, $column := $dictArr}}
|
||||
'{{$column}}',
|
||||
{{end}}
|
||||
)
|
||||
{{range $index, $column := .table.Columns}}
|
||||
@ -604,7 +627,7 @@ export default defineComponent({
|
||||
multiple.value = !selection.length
|
||||
}
|
||||
const handleAdd = ()=>{
|
||||
editRef.value.openDialog()
|
||||
addRef.value.openDialog()
|
||||
}
|
||||
const handleUpdate = (row: {{$.table.ClassName}}TableColumns) => {
|
||||
if(!row){
|
||||
@ -645,6 +668,7 @@ export default defineComponent({
|
||||
}
|
||||
return {
|
||||
proxy,
|
||||
addRef,
|
||||
editRef,
|
||||
detailRef,
|
||||
showAll,
|
||||
|
Loading…
x
Reference in New Issue
Block a user