优化代码生成

This commit is contained in:
不做码农 2023-05-31 18:55:48 +08:00
parent 3f66fc9e60
commit 538dde51a8
6 changed files with 122 additions and 101 deletions

View File

@ -70,7 +70,8 @@ $end
{ {
var response = _${replaceDto.ModelTypeName}Service.GetFirst(x => x.${replaceDto.PKName} == ${replaceDto.PKName}); var response = _${replaceDto.ModelTypeName}Service.GetFirst(x => x.${replaceDto.PKName} == ${replaceDto.PKName});
return SUCCESS(response); var info = response.Adapt<${replaceDto.ModelTypeName}>();
return SUCCESS(info);
} }
$if(replaceDto.ShowBtnAdd) $if(replaceDto.ShowBtnAdd)

View File

@ -1,6 +1,7 @@
using System; using System;
using SqlSugar; using SqlSugar;
using Infrastructure.Attribute; using Infrastructure.Attribute;
using Infrastructure.Extensions;
using ${options.BaseNamespace}Model; using ${options.BaseNamespace}Model;
using ${options.DtosNamespace}; using ${options.DtosNamespace};
using ${options.ModelsNamespace}.${options.SubNamespace}; using ${options.ModelsNamespace}.${options.SubNamespace};

View File

@ -120,9 +120,7 @@ $if(column.HtmlType == "customInput" && column.IsPk == false)
$elseif(column.HtmlType == "imageUpload") $elseif(column.HtmlType == "imageUpload")
<el-table-column prop="${columnName}" label="${labelName}" align="center"> <el-table-column prop="${columnName}" label="${labelName}" align="center">
<template #default="scope"> <template #default="scope">
<el-image preview-teleported :hide-on-click-modal="true" lazy class="table-td-thumb" fit="contain" :src="scope.row.${columnName}" :preview-src-list="[scope.row.${columnName}]"> <ImagePreview :src="scope.row.${columnName}"></ImagePreview>
<div><el-icon :size="15"><document /></el-icon></div>
</el-image>
</template> </template>
</el-table-column> </el-table-column>
$elseif(column.HtmlType == "checkbox" || column.HtmlType == "select" || column.HtmlType == "radio") $elseif(column.HtmlType == "checkbox" || column.HtmlType == "select" || column.HtmlType == "radio")

View File

@ -179,18 +179,7 @@ $if(column.HtmlType == "customInput" && column.IsPk == false)
$elseif(column.HtmlType == "imageUpload") $elseif(column.HtmlType == "imageUpload")
<el-table-column prop="${columnName}" label="${labelName}" align="center" v-if="columns.showColumn('${columnName}')"> <el-table-column prop="${columnName}" label="${labelName}" align="center" v-if="columns.showColumn('${columnName}')">
<template #default="scope"> <template #default="scope">
<el-image <ImagePreview :src="scope.row.${columnName}"></ImagePreview>
preview-teleported
:hide-on-click-modal="true"
lazy
class="table-td-thumb"
fit="contain"
:src="scope.row.${columnName}"
:preview-src-list="[scope.row.${columnName}]">
<div>
<el-icon :size="15"><document /></el-icon>
</div>
</el-image>
</template> </template>
</el-table-column> </el-table-column>
$elseif(column.HtmlType == "checkbox" || column.HtmlType.Contains("select") || column.HtmlType == "radio") $elseif(column.HtmlType == "checkbox" || column.HtmlType.Contains("select") || column.HtmlType == "radio")

View File

@ -4,8 +4,14 @@
<el-col> <el-col>
<el-form :inline="true" @submit.native.prevent> <el-form :inline="true" @submit.native.prevent>
<el-form-item> <el-form-item>
<el-input v-model="queryParams.queryText" placeholder="请输入计划任务名称" clearable prefix-icon="el-icon-search" @keyup.enter.native="handleQuery" <el-input
@clear="handleQuery" /> v-model="queryParams.queryText"
placeholder="请输入计划任务名称"
clearable
prefix-icon="el-icon-search"
@keyup.enter.native="handleQuery"
@clear="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
@ -25,10 +31,13 @@
<el-button v-hasPermi="['monitor:job:delete']" plain type="danger" icon="el-icon-remove" size="mini" @click="handleDelete(null)" :disabled="single">删除</el-button> <el-button v-hasPermi="['monitor:job:delete']" plain type="danger" icon="el-icon-remove" size="mini" @click="handleDelete(null)" :disabled="single">删除</el-button>
</el-col>--> </el-col>-->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['monitor:job:export']">导出</el-button> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['monitor:job:export']"
>导出</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button plain v-hasPermi="['monitor:job:query']" type="info" icon="el-icon-s-operation" size="mini" @click="handleJobLog()">日志 <el-button plain v-hasPermi="['monitor:job:query']" type="info" icon="el-icon-s-operation" size="mini" @click="handleJobLog()"
>日志
</el-button> </el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="searchToggle" @queryTable="handleQuery"></right-toolbar> <right-toolbar :showSearch.sync="searchToggle" @queryTable="handleQuery"></right-toolbar>
@ -45,29 +54,77 @@
<el-table-column prop="cron" align="center" label="运行表达式" :show-overflow-tooltip="true" /> <el-table-column prop="cron" align="center" label="运行表达式" :show-overflow-tooltip="true" />
<el-table-column sortable prop="isStart" align="center" label="任务状态" width="100"> <el-table-column sortable prop="isStart" align="center" label="任务状态" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag size="mini" :type="scope.row.isStart ? 'success' : 'danger'">{{ scope.row.isStart ? "运行中":"已停止" }}</el-tag> <el-tag size="mini" :type="scope.row.isStart ? 'success' : 'danger'">{{ scope.row.isStart ? '运行中' : '已停止' }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="lastRunTime" align="center" label="最后运行时间" :show-overflow-tooltip="true" /> <el-table-column prop="lastRunTime" align="center" label="最后运行时间" :show-overflow-tooltip="true" />
<el-table-column prop="remark" align="center" label="备注" :show-overflow-tooltip="true" /> <el-table-column prop="remark" align="center" label="备注" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" width="230" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="230" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="mini" icon="el-icon-view" v-hasPermi="['monitor:job:query']" <el-button
@click="handleJobLog(scope.row.id, scope.row.name)"> type="text"
size="mini"
icon="el-icon-view"
v-hasPermi="['monitor:job:query']"
@click="handleJobLog(scope.row.id, scope.row.name)"
>
日志 日志
<!-- <router-link :to="{path: 'job/log', query: {jobId: scope.row.id}}">日志</router-link> --> <!-- <router-link :to="{path: 'job/log', query: {jobId: scope.row.id}}">日志</router-link> -->
</el-button> </el-button>
<el-button type="text" v-if="scope.row.isStart" v-hasPermi="['monitor:job:run']" size="mini" icon="el-icon-remove" title="运行" <el-button
@click="handleRun(scope.row)">运行</el-button> type="text"
<el-button type="text" v-if="scope.row.isStart" v-hasPermi="['monitor:job:stop']" size="mini" icon="el-icon-video-pause" style="color:red" v-if="scope.row.isStart"
title="停止" @click="handleStop(scope.row)">停止</el-button> v-hasPermi="['monitor:job:run']"
size="mini"
icon="el-icon-remove"
title="运行"
@click="handleRun(scope.row)"
>运行</el-button
>
<el-button
type="text"
v-if="scope.row.isStart"
v-hasPermi="['monitor:job:stop']"
size="mini"
icon="el-icon-video-pause"
style="color: red"
title="停止"
@click="handleStop(scope.row)"
>停止</el-button
>
<el-button type="text" v-if="!scope.row.isStart" v-hasPermi="['monitor:job:start']" size="mini" icon="el-icon-video-play" title="启动" <el-button
@click="handleStart(scope.row)">启动</el-button> type="text"
<el-button type="text" v-if="!scope.row.isStart" v-hasPermi="['monitor:job:edit']" size="mini" icon="el-icon-edit" style="color:gray" v-if="!scope.row.isStart"
title="编辑" @click="handleUpdate(scope.row)">编辑</el-button> v-hasPermi="['monitor:job:start']"
<el-button type="text" v-if="!scope.row.isStart" v-hasPermi="['monitor:job:delete']" size="mini" icon="el-icon-delete" style="color:red" size="mini"
title="删除" @click="handleDelete(scope.row)">删除</el-button> icon="el-icon-video-play"
title="启动"
@click="handleStart(scope.row)"
>启动</el-button
>
<el-button
type="text"
v-if="!scope.row.isStart"
v-hasPermi="['monitor:job:edit']"
size="mini"
icon="el-icon-edit"
style="color: gray"
title="编辑"
@click="handleUpdate(scope.row)"
>编辑</el-button
>
<el-button
type="text"
v-if="!scope.row.isStart"
v-hasPermi="['monitor:job:delete']"
size="mini"
icon="el-icon-delete"
style="color: red"
title="删除"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -79,7 +136,7 @@
<el-row> <el-row>
<el-col :lg="24" v-if="this.form.id"> <el-col :lg="24" v-if="this.form.id">
<el-form-item label="任务ID"> <el-form-item label="任务ID">
<div>{{form.id}}</div> <div>{{ form.id }}</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
@ -89,7 +146,7 @@
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="触发器类型" prop="triggerType"> <el-form-item label="触发器类型" prop="triggerType">
<el-select v-model="form.triggerType" placeholder="请选择触发器类型" style="width:100%"> <el-select v-model="form.triggerType" placeholder="请选择触发器类型" style="width: 100%">
<el-option v-for="item in triggerTypeOptions" :key="item.value" :label="item.label" :value="parseInt(item.value)" /> <el-option v-for="item in triggerTypeOptions" :key="item.value" :label="item.label" :value="parseInt(item.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -164,12 +221,12 @@
</el-tooltip> </el-tooltip>
开始日期 开始日期
</span> </span>
<el-date-picker v-model="form.beginTime" style="width:100%" type="date" :picker-options="pickerOptions" placeholder="选择开始日期" /> <el-date-picker v-model="form.beginTime" style="width: 100%" type="date" :picker-options="pickerOptions" placeholder="选择开始日期" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="结束日期" prop="endTime"> <el-form-item label="结束日期" prop="endTime">
<el-date-picker v-model="form.endTime" style="width:100%" type="date" placeholder="选择结束日期" /> <el-date-picker v-model="form.endTime" style="width: 100%" type="date" placeholder="选择结束日期" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="24"> <el-col :lg="24">
@ -191,14 +248,14 @@
</el-dialog> </el-dialog>
<el-dialog title="Cron表达式生成器" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar"> <el-dialog title="Cron表达式生成器" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar">
<crontab @hide="openCron=false" @fill="crontabFill" :expression="expression"></crontab> <crontab @hide="openCron = false" @fill="crontabFill" :expression="expression"></crontab>
</el-dialog> </el-dialog>
<el-drawer :title="logTitle" :visible.sync="drawer"> <el-drawer :title="logTitle" :visible.sync="drawer">
<el-timeline> <el-timeline>
<el-timeline-item :timestamp="item.createTime" placement="top" v-for="(item, i) in jobLogList" :key="i"> <el-timeline-item :timestamp="item.createTime" placement="top" v-for="(item, i) in jobLogList" :key="i">
<h4>{{item.jobMessage}}</h4> <h4>{{ item.jobMessage }}</h4>
<p>{{item.exception}}</p> <p>{{ item.exception }}</p>
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
<el-empty v-if="jobLogList.length <= 0"></el-empty> <el-empty v-if="jobLogList.length <= 0"></el-empty>
@ -207,17 +264,7 @@
</template> </template>
<script> <script>
import { import { queryTasks, getTasks, createTasks, updateTasks, deleteTasks, startTasks, stopTasks, runTasks, exportTasks } from '@/api/monitor/job'
queryTasks,
getTasks,
createTasks,
updateTasks,
deleteTasks,
startTasks,
stopTasks,
runTasks,
exportTasks
} from '@/api/monitor/job'
import { listJobLog } from '@/api/monitor/jobLog' import { listJobLog } from '@/api/monitor/jobLog'
import Crontab from '@/components/Crontab' import Crontab from '@/components/Crontab'
@ -300,8 +347,8 @@ export default {
queryText: undefined, queryText: undefined,
PageNum: 1, PageNum: 1,
pageSize: 10, pageSize: 10,
sort: 'createTime', sort: '',
sortType: 'desc' sortType: '',
}, },
// //
dataTasks: [], dataTasks: [],
@ -311,7 +358,7 @@ export default {
// //
isStartOptions: [ isStartOptions: [
{ dictLabel: '运行中', dictValue: '1' }, { dictLabel: '运行中', dictValue: '1' },
{ dictLabel: '已停止', dictValue: '0', listClass: 'danger' } { dictLabel: '已停止', dictValue: '0', listClass: 'danger' },
], ],
// //
jobGroupOptions: [], jobGroupOptions: [],
@ -319,33 +366,21 @@ export default {
triggerTypeOptions: [ triggerTypeOptions: [
{ {
label: '[普通]', label: '[普通]',
value: 0 value: 0,
}, },
{ {
label: '[表达式]', label: '[表达式]',
value: 1 value: 1,
} },
], ],
// //
rules: { rules: {
name: [ name: [{ required: true, message: '任务名称不能为空', trigger: 'blur' }],
{ required: true, message: '任务名称不能为空', trigger: 'blur' } jobGroup: [{ required: true, message: '任务分组不能为空', trigger: 'blur' }],
], assemblyName: [{ required: true, message: '程序集名称不能为空', trigger: 'blur' }],
jobGroup: [ className: [{ required: true, message: '任务类名不能为空', trigger: 'blur' }],
{ required: true, message: '任务分组不能为空', trigger: 'blur' } triggerType: [{ required: true, message: '请选择触发器类型', trigger: 'blur' }],
], apiUrl: [{ required: true, message: '请输入apiUrl地址', trigger: 'blur' }],
assemblyName: [
{ required: true, message: '程序集名称不能为空', trigger: 'blur' }
],
className: [
{ required: true, message: '任务类名不能为空', trigger: 'blur' }
],
triggerType: [
{ required: true, message: '请选择触发器类型', trigger: 'blur' }
],
apiUrl: [
{ required: true, message: '请输入apiUrl地址', trigger: 'blur' }
],
cron: [{ validator: cronValidate, trigger: 'blur' }], cron: [{ validator: cronValidate, trigger: 'blur' }],
beginTime: [{ validator: beginTimeValidate, trigger: 'blur' }], beginTime: [{ validator: beginTimeValidate, trigger: 'blur' }],
endTime: [{ validator: endTimeValidate, trigger: 'blur' }], endTime: [{ validator: endTimeValidate, trigger: 'blur' }],
@ -353,16 +388,16 @@ export default {
{ {
validator: intervalSecondValidate, validator: intervalSecondValidate,
type: 'number', type: 'number',
trigger: 'blur' trigger: 'blur',
} },
] ],
}, },
// //
pickerOptions: { pickerOptions: {
disabledDate(time) { disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7 return time.getTime() < Date.now() - 8.64e7
} },
} },
} }
}, },
created() { created() {
@ -380,8 +415,8 @@ export default {
} }
}, },
deep: true, deep: true,
immediate: true immediate: true,
} },
}, },
methods: { methods: {
/** 查询计划任务列表 */ /** 查询计划任务列表 */
@ -464,15 +499,11 @@ export default {
handleDelete(row) { handleDelete(row) {
const jobInfo = row const jobInfo = row
this.$confirm( this.$confirm('是否确认删除名称为"' + jobInfo.name + '"的计划任务?', '警告', {
'是否确认删除名称为"' + jobInfo.name + '"的计划任务?',
'警告',
{
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning',
} })
)
.then(() => { .then(() => {
deleteTasks(jobInfo.id).then((response) => { deleteTasks(jobInfo.id).then((response) => {
if (response.code === 200) { if (response.code === 200) {
@ -481,7 +512,7 @@ export default {
} }
}) })
}) })
.catch(function() {}) .catch(function () {})
}, },
/* 立即执行一次 */ /* 立即执行一次 */
handleRun(row) { handleRun(row) {
@ -490,7 +521,7 @@ export default {
this.$confirm('确认要立即执行一次"' + jobInfo.name + '"任务吗?', '警告', { this.$confirm('确认要立即执行一次"' + jobInfo.name + '"任务吗?', '警告', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning',
}).then((res) => { }).then((res) => {
runTasks(jobInfo.id).then((res) => { runTasks(jobInfo.id).then((res) => {
if (res.code === 200) { if (res.code === 200) {
@ -501,7 +532,7 @@ export default {
}) })
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function() { submitForm: function () {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
if (valid) { if (valid) {
if (this.form.id !== undefined) { if (this.form.id !== undefined) {
@ -544,15 +575,13 @@ export default {
endTime: undefined, endTime: undefined,
intervalSecond: 1, intervalSecond: 1,
cron: undefined, cron: undefined,
taskType: 1 taskType: 1,
} }
this.resetForm('form') this.resetForm('form')
}, },
// Id // Id
handleIndexCalc(index) { handleIndexCalc(index) {
return ( return (this.queryParams.PageNum - 1) * this.queryParams.pageSize + index + 1
(this.queryParams.PageNum - 1) * this.queryParams.pageSize + index + 1
)
}, },
// //
cancel() { cancel() {
@ -564,7 +593,7 @@ export default {
this.$confirm('是否确认导出所有任务?', '警告', { this.$confirm('是否确认导出所有任务?', '警告', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning',
}) })
.then(() => { .then(() => {
return exportTasks() return exportTasks()
@ -572,7 +601,7 @@ export default {
.then((response) => { .then((response) => {
this.download(response.data.path) this.download(response.data.path)
}) })
} },
} },
} }
</script> </script>

View File

@ -0,0 +1,3 @@
<template>
<div>请升级至vue3</div>
</template>