fix 系统监控-go程序实时内存占用,代码生成-setup语法糖支持

This commit is contained in:
yxh 2024-07-19 18:08:40 +08:00
parent f10fa5ce75
commit 38f66c91de
8 changed files with 1418 additions and 1619 deletions

View File

@ -10,6 +10,7 @@ import (
"github.com/shirou/gopsutil/v3/host" "github.com/shirou/gopsutil/v3/host"
"github.com/shirou/gopsutil/v3/load" "github.com/shirou/gopsutil/v3/load"
"github.com/shirou/gopsutil/v3/mem" "github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/process"
"github.com/tiger1103/gfast/v3/api/v1/system" "github.com/tiger1103/gfast/v3/api/v1/system"
"github.com/tiger1103/gfast/v3/library/libUtils" "github.com/tiger1103/gfast/v3/library/libUtils"
"os" "os"
@ -62,12 +63,15 @@ func (c *sysMonitorController) List(ctx context.Context, req *system.MonitorSear
var goFree uint64 = 0 //go剩余的内存数 var goFree uint64 = 0 //go剩余的内存数
var goUsage float64 = 0 //使用率 var goUsage float64 = 0 //使用率
var gomem runtime.MemStats p, err := process.NewProcess(int32(os.Getpid()))
runtime.ReadMemStats(&gomem) if err == nil {
goUsed = gomem.Sys memInfo, err := p.MemoryInfo()
if err == nil {
goUsed = memInfo.RSS
goUsage = gconv.Float64(fmt.Sprintf("%.2f", gconv.Float64(goUsed)/gconv.Float64(memTotal)*100)) goUsage = gconv.Float64(fmt.Sprintf("%.2f", gconv.Float64(goUsed)/gconv.Float64(memTotal)*100))
}
}
sysComputerIp := "" //服务器IP sysComputerIp := "" //服务器IP
ip, err := libUtils.GetLocalIP() ip, err := libUtils.GetLocalIP()
if err == nil { if err == nil {
sysComputerIp = ip sysComputerIp = ip

View File

@ -192,7 +192,7 @@ func (s *sToolsGenTableColumn) InitColumnField(column *entity.ToolsGenTableColum
column.SortOrderList = column.SortOrderEdit column.SortOrderList = column.SortOrderEdit
column.SortOrderDetail = column.SortOrderEdit column.SortOrderDetail = column.SortOrderEdit
column.SortOrderQuery = column.SortOrderEdit column.SortOrderQuery = column.SortOrderEdit
column.ColSpan = 12 column.ColSpan = 1
column.RowSpan = 1 column.RowSpan = 1
column.IsRowStart = false column.IsRowStart = false
column.MinWidth = 150 column.MinWidth = 150

View File

@ -9,5 +9,5 @@ package consts
const ( const (
Logo = `CiAgIF9fX19fX19fX19fXyAgICAgICAgICAgX18gCiAgLyBfX19fLyBfX19fL19fXyBfX19fX18vIC9fCiAvIC8gX18vIC9fICAvIF9fIGAvIF9fXy8gX18vCi8gL18vIC8gX18vIC8gL18vIChfXyAgKSAvXyAgClxfX19fL18vICAgIFxfXyxfL19fX18vXF9fLyAg` Logo = `CiAgIF9fX19fX19fX19fXyAgICAgICAgICAgX18gCiAgLyBfX19fLyBfX19fL19fXyBfX19fX18vIC9fCiAvIC8gX18vIC9fICAvIF9fIGAvIF9fXy8gX18vCi8gL18vIC8gX18vIC8gL18vIChfXyAgKSAvXyAgClxfX19fL18vICAgIFxfXyxfL19fX18vXF9fLyAg`
Version = "3.2.27" Version = "3.2.28"
) )

View File

@ -10,70 +10,109 @@
<template #header> <template #header>
<h4>{{.table.TableComment}}详情</h4> <h4>{{.table.TableComment}}详情</h4>
</template> </template>
<el-form ref="formRef" :model="formData" label-width="100px"> <el-descriptions
{{ $hasRowEnd := true }} class="margin-top"
:column="3"
border
style="margin: 8px;"
>
{{range $index, $column := .table.DetailColumns}} {{range $index, $column := .table.DetailColumns}}
{{if and (eq $column.IsRowStart true) (ne $index 0)}}
{{ $hasRowEnd = true }}
</el-row>
{{end}}
{{if or (eq $column.IsRowStart true) (eq $index 0)}}
{{ $hasRowEnd = false }}
<el-row>
{{end}}
{{if eq $column.HtmlType "input" "textarea" "radio" "checkbox" "select" "selects" "treeSelect" "treeSelects"}} {{if eq $column.HtmlType "input" "textarea" "radio" "checkbox" "select" "selects" "treeSelect" "treeSelects"}}
<el-col :span="{{$column.ColSpan}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
{{if ne $column.LinkTableName ""}} {{if ne $column.LinkTableName ""}}
{{range $ti, $linkedTable := $.table.LinkedTables}} {{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}} {{if eq $column.LinkTableClass $linkedTable.ClassName}}
{{if eq $column.HtmlType "selects" "checkbox" "treeSelects"}} {{if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} formData.linked{{$column.GoField}}?formData.linked{{$column.GoField}}.map((res:any)=>{return res.{{CaseCamelLower $column.LinkLabelName}}}).join(''):'' {{"}}"}}</el-form-item> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
{{"{{"}} formData.linked{{$column.GoField}}?formData.linked{{$column.GoField}}.map((res:any)=>{return res.{{CaseCamelLower $column.LinkLabelName}}}).join(''):'' {{"}}"}}
{{else}} {{else}}
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} formData.linked{{$column.GoField}}?formData.linked{{$column.GoField}}.{{CaseCamelLower $column.LinkLabelName}}:'' {{"}}"}}</el-form-item> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
{{"{{"}} formData.linked{{$column.GoField}}?formData.linked{{$column.GoField}}.{{CaseCamelLower $column.LinkLabelName}}:'' {{"}}"}}
{{end}} {{end}}
{{end}} {{end}}
{{end}} {{end}}
{{else if ne $column.DictType ""}} {{else if ne $column.DictType ""}}
{{if eq $column.HtmlType "checkbox" }} {{if eq $column.HtmlType "checkbox" }}
<el-form-item label="{{$column.ColumnComment}}"> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
<el-tag class="ml-2" type="success" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key"> <el-tag class="ml-2" type="success" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key">
{{"{{"}} proxy.getOptionValue(item, {{$column.HtmlField}}Options,'value','label') {{"}}"}} {{"{{"}} proxy.getOptionValue(item, {{$column.HtmlField}}Options,'value','label') {{"}}"}}
</el-tag> </el-tag>
</el-form-item>
{{else}} {{else}}
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} proxy.getOptionValue({{if eq $column.TsType "boolean"}}formData.{{$column.HtmlField}}?'1':'0'{{else}}formData.{{$column.HtmlField}}{{end}}, {{$column.HtmlField}}Options,'value','label') {{"}}"}}</el-form-item> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
{{"{{"}} proxy.getOptionValue({{if eq $column.TsType "boolean"}}formData.{{$column.HtmlField}}?'1':'0'{{else}}formData.{{$column.HtmlField}}{{end}}, {{$column.HtmlField}}Options,'value','label') {{"}}"}}
{{end}} {{end}}
{{else}} {{else}}
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} formData.{{$column.HtmlField}} {{"}}"}}</el-form-item> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
{{"{{"}} formData.{{$column.HtmlField}} {{"}}"}}
{{end}} {{end}}
</el-col> </el-descriptions-item>
{{else if eq $column.HtmlType "date"}} {{else if eq $column.HtmlType "date"}}
<el-col :span="{{$column.ColSpan}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} proxy.parseTime(formData.{{$column.HtmlField}}, '{y}-{m}-{d}') {{"}}"}}</el-form-item> <template #label>
</el-col> <div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
{{"{{"}} proxy.parseTime(formData.{{$column.HtmlField}}, '{y}-{m}-{d}') {{"}}"}}
</el-descriptions-item>
{{else if eq $column.HtmlType "datetime"}} {{else if eq $column.HtmlType "datetime"}}
<el-col :span="{{$column.ColSpan}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} proxy.parseTime(formData.{{$column.HtmlField}}, '{y}-{m}-{d} {h}:{i}:{s}') {{"}}"}}</el-form-item> <template #label>
</el-col> <div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
{{"{{"}} proxy.parseTime(formData.{{$column.HtmlField}}, '{y}-{m}-{d} {h}:{i}:{s}') {{"}}"}}
</el-descriptions-item>
{{else if eq $column.HtmlType "richtext"}} {{else if eq $column.HtmlType "richtext"}}
<el-col :span="{{$column.ColSpan}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}"> <template #label>
<p v-html="formData.{{$column.HtmlField}}"></p> <div class="cell-item">
</el-form-item> {{$column.ColumnComment}}
</el-col> </div>
</template>
<div v-html="formData.{{$column.HtmlField}}"></div>
</el-descriptions-item>
{{else if eq $column.HtmlType "imagefile"}} {{else if eq $column.HtmlType "imagefile"}}
<el-col :span="{{$column.ColSpan}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}"> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
<el-image <el-image
style="width: 150px; height: 150px" style="width: 150px; height: 150px"
v-if="!proxy.isEmpty(formData.{{$column.HtmlField}})" v-if="!proxy.isEmpty(formData.{{$column.HtmlField}})"
:src="proxy.getUpFileUrl(formData.{{$column.HtmlField}})" :src="proxy.getUpFileUrl(formData.{{$column.HtmlField}})"
fit="contain"></el-image> fit="contain"></el-image>
</el-form-item> </el-descriptions-item>
</el-col>
{{else if eq $column.HtmlType "images"}} {{else if eq $column.HtmlType "images"}}
<el-col :span="{{$column.ColSpan}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}"> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
<div class="pic-block" v-for="(img,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key"> <div class="pic-block" v-for="(img,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key">
<el-image <el-image
style="width: 150px; height: 150px" style="width: 150px; height: 150px"
@ -81,38 +120,45 @@
:src="proxy.getUpFileUrl(img.url)" :src="proxy.getUpFileUrl(img.url)"
fit="contain"></el-image> fit="contain"></el-image>
</div> </div>
</el-form-item> </el-descriptions-item>
</el-col>
{{else if eq $column.HtmlType "file"}} {{else if eq $column.HtmlType "file"}}
<el-col :span="{{$column.ColSpan}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}"> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
<div class="file-block" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key"> <div class="file-block" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key">
<el-link type="primary" :underline="false" <el-link type="primary" :underline="false"
:href="proxy.getUpFileUrl(item.url)" target="_blank">{{"{{"}}item.name{{"}}"}}</el-link> :href="proxy.getUpFileUrl(item.url)" target="_blank">{{"{{"}}item.name{{"}}"}}</el-link>
</div> </div>
</el-form-item> </el-descriptions-item>
</el-col>
{{else if eq $column.HtmlType "files"}} {{else if eq $column.HtmlType "files"}}
<el-col :span="{{$column.ColSpan}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}"> <template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
<div class="file-block" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key"> <div class="file-block" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key">
<el-link type="primary" :underline="false" <el-link type="primary" :underline="false"
:href="proxy.getUpFileUrl(item.url)" target="_blank">{{"{{"}}item.name{{"}}"}}</el-link> :href="proxy.getUpFileUrl(item.url)" target="_blank">{{"{{"}}item.name{{"}}"}}</el-link>
</div> </div>
</el-form-item> </el-descriptions-item>
</el-col>
{{else if eq $column.HtmlType "keyValue"}} {{else if eq $column.HtmlType "keyValue"}}
<el-form-item label="{{$column.ColumnComment}}"> <el-descriptions-item :span="{{$column.ColSpan}}">
<template #label>
<div class="cell-item">
{{$column.ColumnComment}}
</div>
</template>
<el-tag class="ml-2" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key"> <el-tag class="ml-2" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key">
{{"{{"}} item.key {{"}}"}} : {{"{{"}} item.value {{"}}"}} {{"{{"}} item.key {{"}}"}} : {{"{{"}} item.value {{"}}"}}
</el-tag> </el-tag>
</el-form-item> </el-descriptions-item>
{{end}} {{end}}
{{end}} {{end}}
{{if not $hasRowEnd}} </el-descriptions>
</el-row>
{{end}}
</el-form>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
@ -139,7 +185,7 @@
{{end}} {{end}}
{{end}} {{end}}
<script lang="ts"> <script setup lang="ts">
import { reactive, toRefs, defineComponent,ref,unref,getCurrentInstance,computed } from 'vue'; import { reactive, toRefs, defineComponent,ref,unref,getCurrentInstance,computed } from 'vue';
import {ElMessageBox, ElMessage, FormInstance,UploadProps} from 'element-plus'; import {ElMessageBox, ElMessage, FormInstance,UploadProps} from 'element-plus';
{{/*去重处理*/}} {{/*去重处理*/}}
@ -175,25 +221,11 @@
{{.table.ClassName}}TableDataState, {{.table.ClassName}}TableDataState,
{{.table.ClassName}}EditState {{.table.ClassName}}EditState
} from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/model" } from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/model"
export default defineComponent({ defineOptions({ name: "{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail"})
name:"{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail",
{{$hascomponent := false}} {{$hascomponent := false}}
{{if or $imgsImp $tokenImp $fileImp}} {{if or $imgsImp $tokenImp $fileImp}}
{{$hascomponent = true}} {{$hascomponent = true}}
{{end}} {{end}}
{{if $hascomponent}}
components:{
{{if $editImp}}
GfUeditor,
{{end}}
{{if $imgsImp}}
uploadImg,
{{end}}
{{if $fileImp}}
uploadFile,
{{end}}
},
{{end}}
{{$hasProps := false}} {{$hasProps := false}}
{{if eq .table.TplCategory "tree"}} {{if eq .table.TplCategory "tree"}}
{{$hasProps = true}} {{$hasProps = true}}
@ -206,7 +238,7 @@
{{end}} {{end}}
{{end}} {{end}}
{{if $hasProps}} {{if $hasProps}}
props:{ const props = defineProps({
{{range $index, $column := .table.Columns}} {{range $index, $column := .table.Columns}}
{{if ne $column.DictType ""}} {{if ne $column.DictType ""}}
{{$column.HtmlField}}Options:{ {{$column.HtmlField}}Options:{
@ -231,9 +263,9 @@
default:()=>[] default:()=>[]
}, },
{{end}} {{end}}
}, })
{{end}} {{end}}
setup(props,{emit}) {
{{if or $imgsImp $tokenImp $fileImp}} {{if or $imgsImp $tokenImp $fileImp}}
const baseURL:string|undefined|boolean = import.meta.env.VITE_API_URL const baseURL:string|undefined|boolean = import.meta.env.VITE_API_URL
{{end}} {{end}}
@ -289,6 +321,7 @@
{{end}} {{end}}
} }
}); });
const { isShowDialog,formData } = toRefs(state);
// 打开弹窗 // 打开弹窗
const openDialog = (row?: {{.table.ClassName}}InfoData) => { const openDialog = (row?: {{.table.ClassName}}InfoData) => {
resetForm(); resetForm();
@ -325,6 +358,9 @@
const closeDialog = () => { const closeDialog = () => {
state.isShowDialog = false; state.isShowDialog = false;
}; };
defineExpose({
openDialog,
});
// 取消 // 取消
const onCancel = () => { const onCancel = () => {
closeDialog(); closeDialog();
@ -423,50 +459,6 @@
return findV return findV
} }
{{end}} {{end}}
{{$setUpDataR:=true}}
return {
proxy,
openDialog,
closeDialog,
onCancel,
menuRef,
formRef,
{{range $index, $column := .table.Columns}}
{{if ne $column.LinkTableName ""}}
{{if $column.IsCascade}}
{{/*级联处理*/}}
{{else}}
{{/*关联表处理*/}}
get{{$column.LinkTableClass}}Items{{$column.GoField}},
get{{$column.GoField}}Op,
{{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> </script>
<style scoped> <style scoped>

View File

@ -102,7 +102,7 @@
<el-radio <el-radio
v-for="dict in {{$column.HtmlField}}Options" v-for="dict in {{$column.HtmlField}}Options"
:key="dict.key" :key="dict.key"
:label="dict.key" :value="dict.key"
>{{ VueTag "{{" }}dict.value {{VueTag "}}"}}</el-radio> >{{ VueTag "{{" }}dict.value {{VueTag "}}"}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
@ -112,7 +112,7 @@
<el-radio <el-radio
v-for="dict in {{$column.HtmlField}}Options" v-for="dict in {{$column.HtmlField}}Options"
:key="dict.value" :key="dict.value"
:label="dict.value" :value="dict.value"
>{{ VueTag "{{" }}dict.label {{VueTag "}}"}}</el-radio> >{{ VueTag "{{" }}dict.label {{VueTag "}}"}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
@ -150,7 +150,7 @@
<el-checkbox <el-checkbox
v-for="dict in {{$column.HtmlField}}Options" v-for="dict in {{$column.HtmlField}}Options"
:key="dict.key" :key="dict.key"
:label="dict.key" :value="dict.key"
>{{ VueTag "{{" }}dict.value {{VueTag "}}"}}</el-checkbox> >{{ VueTag "{{" }}dict.value {{VueTag "}}"}}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
@ -160,7 +160,7 @@
<el-checkbox <el-checkbox
v-for="dict in {{$column.HtmlField}}Options" v-for="dict in {{$column.HtmlField}}Options"
:key="dict.value" :key="dict.value"
:label="dict.value" :value="dict.value"
>{{ VueTag "{{" }}dict.label {{VueTag "}}"}}</el-checkbox> >{{ VueTag "{{" }}dict.label {{VueTag "}}"}}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
@ -264,8 +264,8 @@
{{end}} {{end}}
{{end}} {{end}}
<script lang="ts"> <script setup lang="ts">
import { reactive, toRefs, defineComponent,ref,unref,getCurrentInstance } from 'vue'; import { reactive, toRefs, ref,unref,getCurrentInstance } from 'vue';
import {ElMessageBox, ElMessage, FormInstance,UploadProps} from 'element-plus'; import {ElMessageBox, ElMessage, FormInstance,UploadProps} from 'element-plus';
{{/*去重处理*/}} {{/*去重处理*/}}
import { import {
@ -299,25 +299,12 @@ import {
{{.table.ClassName}}TableDataState, {{.table.ClassName}}TableDataState,
{{.table.ClassName}}EditState {{.table.ClassName}}EditState
} from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/model" } from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/model"
export default defineComponent({ defineOptions({ name: "{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit"})
name:"{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit", const emit = defineEmits(['{{$businessName}}List'])
{{$hascomponent := false}} {{$hascomponent := false}}
{{if or $imgsImp $tokenImp $fileImp}} {{if or $imgsImp $tokenImp $fileImp}}
{{$hascomponent = true}} {{$hascomponent = true}}
{{end}} {{end}}
{{if $hascomponent}}
components:{
{{if $editImp}}
GfUeditor,
{{end}}
{{if $imgsImp}}
uploadImg,
{{end}}
{{if $fileImp}}
uploadFile,
{{end}}
},
{{end}}
{{$hasProps := false}} {{$hasProps := false}}
{{if eq .table.TplCategory "tree"}} {{if eq .table.TplCategory "tree"}}
{{$hasProps = true}} {{$hasProps = true}}
@ -330,7 +317,7 @@ export default defineComponent({
{{end}} {{end}}
{{end}} {{end}}
{{if $hasProps}} {{if $hasProps}}
props:{ const props = defineProps({
{{range $index, $column := .table.Columns}} {{range $index, $column := .table.Columns}}
{{if ne $column.DictType ""}} {{if ne $column.DictType ""}}
{{$column.HtmlField}}Options:{ {{$column.HtmlField}}Options:{
@ -355,9 +342,9 @@ export default defineComponent({
default:()=>[] default:()=>[]
}, },
{{end}} {{end}}
}, })
{{end}} {{end}}
setup(props,{emit}) {
{{if or $imgsImp $tokenImp $fileImp}} {{if or $imgsImp $tokenImp $fileImp}}
const baseURL:string|undefined|boolean = import.meta.env.VITE_API_URL const baseURL:string|undefined|boolean = import.meta.env.VITE_API_URL
{{end}} {{end}}
@ -406,6 +393,7 @@ export default defineComponent({
{{end}} {{end}}
} }
}); });
const { loading,isShowDialog,formData,rules } = toRefs(state);
// 打开弹窗 // 打开弹窗
const openDialog = (row?: {{.table.ClassName}}InfoData) => { const openDialog = (row?: {{.table.ClassName}}InfoData) => {
resetForm(); resetForm();
@ -474,6 +462,9 @@ export default defineComponent({
const closeDialog = () => { const closeDialog = () => {
state.isShowDialog = false; state.isShowDialog = false;
}; };
defineExpose({
openDialog,
});
// 取消 // 取消
const onCancel = () => { const onCancel = () => {
closeDialog(); closeDialog();
@ -584,46 +575,6 @@ export default defineComponent({
}; };
{{end}} {{end}}
{{end}} {{end}}
{{$setUpDataR:=true}}
return {
proxy,
openDialog,
closeDialog,
onCancel,
onSubmit,
menuRef,
formRef,
{{range $index, $column := .table.Columns}}
{{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}},
{{else if eq $column.HtmlType "keyValue"}}
onAddRow{{$column.GoField}},
onDelRow{{$column.GoField}},
{{end}}
{{end}}
{{if or $imgsImp $tokenImp $fileImp}}
baseURL,
{{end}}
...toRefs(state),
};
}
})
</script> </script>
<style scoped> <style scoped>

View File

@ -410,7 +410,7 @@
</div> </div>
</template> </template>
<script lang="ts"> <script setup lang="ts">
{{$tokenImp := false}} {{$tokenImp := false}}
{{$imgsImp := false}} {{$imgsImp := false}}
@ -468,16 +468,7 @@ import {downLoadXml} from "/@/utils/zipdownload";
{{if .table.ExcelImp}} {{if .table.ExcelImp}}
import loadExcel from "/@/components/loadExcel/index.vue" import loadExcel from "/@/components/loadExcel/index.vue"
{{end}} {{end}}
export default defineComponent({ defineOptions({ name: "{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}List"})
name: "{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}List",
components:{
{{if .table.ExcelImp}}
loadExcel,
{{end}}
{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit,
{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail
},
setup() {
const {proxy} = <any>getCurrentInstance() const {proxy} = <any>getCurrentInstance()
const loading = ref(false) const loading = ref(false)
const queryRef = ref() const queryRef = ref()
@ -548,6 +539,7 @@ export default defineComponent({
}, },
}, },
}); });
const { tableData } = toRefs(state);
// 页面加载时 // 页面加载时
onMounted(() => { onMounted(() => {
initTableData(); initTableData();
@ -642,7 +634,7 @@ export default defineComponent({
const handleAdd = ()=>{ const handleAdd = ()=>{
editRef.value.openDialog() editRef.value.openDialog()
} }
const handleUpdate = (row: {{$.table.ClassName}}TableColumns) => { const handleUpdate = (row: {{$.table.ClassName}}TableColumns|null) => {
if(!row){ if(!row){
row = state.tableData.data.find((item:{{$.table.ClassName}}TableColumns)=>{ row = state.tableData.data.find((item:{{$.table.ClassName}}TableColumns)=>{
return item.{{.table.PkColumn.HtmlField}} ===state.{{.table.PkColumn.HtmlField}}s[0] return item.{{.table.PkColumn.HtmlField}} ===state.{{.table.PkColumn.HtmlField}}s[0]
@ -650,7 +642,7 @@ export default defineComponent({
} }
editRef.value.openDialog(toRaw(row)); editRef.value.openDialog(toRaw(row));
}; };
const handleDelete = (row: {{$.table.ClassName}}TableColumns) => { const handleDelete = (row: {{$.table.ClassName}}TableColumns|null) => {
let msg = '你确定要删除所选数据?'; let msg = '你确定要删除所选数据?';
let {{.table.PkColumn.HtmlField}}:number[] = [] ; let {{.table.PkColumn.HtmlField}}:number[] = [] ;
if(row){ if(row){
@ -690,51 +682,6 @@ export default defineComponent({
loadExcel{{$.table.ClassName}}Ref.value.open() loadExcel{{$.table.ClassName}}Ref.value.open()
} }
{{end}} {{end}}
return {
proxy,
editRef,
detailRef,
showAll,
loading,
single,
multiple,
word,
queryRef,
resetQuery,
{{$businessName}}List,
toggleSearch,
{{range $index, $column := .table.Columns}}
{{if ne $column.DictType ""}}
{{$column.HtmlField}}Format,
{{$column.DictType}},
{{end}}
{{if ne $column.LinkTableName ""}}
{{if $column.IsCascade}}
//级联关联{{$column.LinkTableName}}表选项
{{else}}
//关联表数据选项
{{$column.HtmlField}}Options,
{{end}}
{{end}}
{{end}}
handleSelectionChange,
handleAdd,
handleUpdate,
handleDelete,
{{if eq .table.ShowDetail "true"}}
handleView,
{{end}}
{{if .table.ExcelPort }}
handleExport,
{{end}}
{{if .table.ExcelImp }}
handleImport,
loadExcel{{.table.ClassName}}Ref,
{{end}}
...toRefs(state),
}
}
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.colBlock { .colBlock {

View File

@ -285,7 +285,7 @@
</div> </div>
</template> </template>
<script lang="ts"> <script setup lang="ts">
{{$tokenImp := false}} {{$tokenImp := false}}
{{$imgsImp := false}} {{$imgsImp := false}}
@ -339,13 +339,7 @@ import {
import {{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/edit.vue" import {{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/edit.vue"
import {{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/detail.vue" import {{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/detail.vue"
import _ from 'lodash' import _ from 'lodash'
export default defineComponent({ defineOptions({ name: "{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}List"})
name: "{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}List",
components:{
{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit,
{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail
},
setup() {
const {proxy} = <any>getCurrentInstance() const {proxy} = <any>getCurrentInstance()
const loading = ref(false) const loading = ref(false)
const queryRef = ref() const queryRef = ref()
@ -414,6 +408,7 @@ export default defineComponent({
}, },
}, },
}); });
const { tableData } = toRefs(state);
// 页面加载时 // 页面加载时
onMounted(() => { onMounted(() => {
initTableData(); initTableData();
@ -515,7 +510,7 @@ export default defineComponent({
const handleAdd = ()=>{ const handleAdd = ()=>{
editRef.value.openDialog() editRef.value.openDialog()
} }
const handleUpdate = (row: {{$.table.ClassName}}TableColumns) => { const handleUpdate = (row: {{$.table.ClassName}}TableColumns|null) => {
if(!row){ if(!row){
row = dataList.value.find((item:{{$.table.ClassName}}TableColumns)=>{ row = dataList.value.find((item:{{$.table.ClassName}}TableColumns)=>{
return item.{{.table.PkColumn.HtmlField}} ===state.{{.table.PkColumn.HtmlField}}s[0] return item.{{.table.PkColumn.HtmlField}} ===state.{{.table.PkColumn.HtmlField}}s[0]
@ -523,9 +518,9 @@ export default defineComponent({
} }
editRef.value.openDialog(toRaw(row)); editRef.value.openDialog(toRaw(row));
}; };
const handleDelete = (row: {{$.table.ClassName}}TableColumns) => { const handleDelete = (row: {{$.table.ClassName}}TableColumns|null) => {
let msg = '你确定要删除所选数据?'; let msg = '你确定要删除所选数据?';
let {{.table.PkColumn.HtmlField}}:number[] = [] ; let {{.table.PkColumn.HtmlField}}:{{.table.PkColumn.TsType}}[] = [] ;
if(row){ if(row){
msg = `此操作将永久删除数据,是否继续?` msg = `此操作将永久删除数据,是否继续?`
{{.table.PkColumn.HtmlField}} = [row.{{.table.PkColumn.HtmlField}}] {{.table.PkColumn.HtmlField}} = [row.{{.table.PkColumn.HtmlField}}]
@ -738,52 +733,6 @@ export default defineComponent({
) => { ) => {
console.log('expandedKeys:',expandedKeys) console.log('expandedKeys:',expandedKeys)
} }
return {
proxy,
editRef,
detailRef,
showAll,
loading,
single,
multiple,
word,
queryRef,
resetQuery,
{{$businessName}}List,
toggleSearch,
{{range $index, $column := .table.Columns}}
{{if ne $column.DictType ""}}
{{$column.HtmlField}}Format,
{{$column.DictType}},
{{end}}
{{if ne $column.LinkTableName ""}}
{{if $column.IsCascade}}
//级联关联{{$column.LinkTableName}}表选项
{{else}}
//关联表数据选项
{{$column.HtmlField}}Options,
//关联{{$column.LinkTableName}}表选项获取数据方法
{{end}}
{{end}}
{{end}}
handleSelectionChange,
handleAdd,
handleUpdate,
handleDelete,
{{if eq .table.ShowDetail "true"}}
handleView,
{{end}}
columns,
treeData,
expandedRowKeys,
onRowExpanded,
expandColumnKey,
onExpandedRowsChange,
...toRefs(state),
}
}
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.colBlock { .colBlock {

View File

@ -393,7 +393,7 @@
</div> </div>
</template> </template>
<script lang="ts"> <script setup lang="ts">
{{$tokenImp := false}} {{$tokenImp := false}}
{{$imgsImp := false}} {{$imgsImp := false}}
@ -446,13 +446,7 @@ import {
import {{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/edit.vue" import {{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/edit.vue"
import {{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/detail.vue" import {{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail from "/@/views/{{.modulePath}}/{{$businessName}}/list/component/detail.vue"
import _ from 'lodash' import _ from 'lodash'
export default defineComponent({ defineOptions({ name: "{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}List"})
name: "{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}List",
components:{
{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Edit,
{{.apiVersion|replace "/" "_"|CaseCamel}}{{.modulePath|replace "/" "_"|CaseCamel}}{{.table.ClassName}}Detail
},
setup() {
const {proxy} = <any>getCurrentInstance() const {proxy} = <any>getCurrentInstance()
const loading = ref(false) const loading = ref(false)
const queryRef = ref() const queryRef = ref()
@ -521,6 +515,7 @@ export default defineComponent({
}, },
}, },
}); });
const { tableData } = toRefs(state);
// 页面加载时 // 页面加载时
onMounted(() => { onMounted(() => {
initTableData(); initTableData();
@ -653,45 +648,6 @@ export default defineComponent({
const handleView = (row:{{$.table.ClassName}}TableColumns)=>{ const handleView = (row:{{$.table.ClassName}}TableColumns)=>{
detailRef.value.openDialog(toRaw(row)); detailRef.value.openDialog(toRaw(row));
} }
return {
proxy,
editRef,
detailRef,
showAll,
loading,
single,
multiple,
word,
queryRef,
resetQuery,
{{$businessName}}List,
toggleSearch,
{{range $index, $column := .table.Columns}}
{{if ne $column.DictType ""}}
{{$column.HtmlField}}Format,
{{$column.DictType}},
{{end}}
{{if ne $column.LinkTableName ""}}
{{if $column.IsCascade}}
//级联关联{{$column.LinkTableName}}表选项
{{else}}
//关联表数据选项
{{$column.HtmlField}}Options,
//关联{{$column.LinkTableName}}表选项获取数据方法
{{end}}
{{end}}
{{end}}
handleSelectionChange,
handleAdd,
handleUpdate,
handleDelete,
{{if eq .table.ShowDetail "true"}}
handleView,
{{end}}
...toRefs(state),
}
}
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.colBlock { .colBlock {