From f6b61a485501f326debe52d77ea65d87fb34b37f Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期三, 05 三月 2025 17:57:09 +0800
Subject: [PATCH] 完善集成日志查询
---
Source/BladeX-Tool/blade-starter-develop/src/main/resources/templates/element/sub/sub.vue.btl | 358 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 358 insertions(+), 0 deletions(-)
diff --git a/Source/BladeX-Tool/blade-starter-develop/src/main/resources/templates/element/sub/sub.vue.btl b/Source/BladeX-Tool/blade-starter-develop/src/main/resources/templates/element/sub/sub.vue.btl
new file mode 100644
index 0000000..365a93e
--- /dev/null
+++ b/Source/BladeX-Tool/blade-starter-develop/src/main/resources/templates/element/sub/sub.vue.btl
@@ -0,0 +1,358 @@
+<template>
+ <basic-container>
+ <div class="avue-crud">
+ <el-row :hidden="!search" style="padding:5px">
+ <!-- 鏌ヨ妯″潡 -->
+ <el-form :inline="true" :size="option.size" :model="query">
+ <template>
+#for(x in prototypes) {
+ #if(x.isQuery==1){
+ <el-form-item label="瀛楁">
+ <el-input v-model="query.${x.propertyName!}" placeholder="璇疯緭鍏�${x.comment!}"></el-input>
+ </el-form-item>
+ #}
+#}
+ </template>
+ <!-- 鏌ヨ鎸夐挳 -->
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" @click="searchChange">鎼滅储</el-button>
+ <el-button icon="el-icon-delete" @click="searchReset()">娓呯┖</el-button>
+ </el-form-item>
+ </el-form>
+ </el-row>
+ <el-row>
+ <div class="avue-crud__menu">
+ <!-- 澶撮儴宸︿晶鎸夐挳妯″潡 -->
+ <div class="avue-crud__left">
+ <el-button :size="option.size" type="primary" icon="el-icon-plus" @click="handleAdd">鏂板</el-button>
+ <el-button :size="option.size" type="danger" icon="el-icon-delete" @click="handleDelete" plain>鍒犻櫎
+ </el-button>
+ </div>
+ <!-- 澶撮儴鍙充晶鎸夐挳妯″潡 -->
+ <div class="avue-crud__right">
+ <el-button :size="option.size" icon="el-icon-refresh" @click="searchChange" circle></el-button>
+ <el-button :size="option.size" icon="el-icon-search" @click="searchHide" circle></el-button>
+ </div>
+ </div>
+ </el-row>
+ <el-row>
+ <!-- 鍒楄〃妯″潡 -->
+ <el-table ref="table" v-loading="loading" :size="option.size" @selection-change="selectionChange" :data="data"
+ style="width: 100%"
+ :border="option.border">
+ <el-table-column type="selection" v-if="option.selection" width="55" align="center"></el-table-column>
+ <el-table-column type="expand" v-if="option.expand" align="center"></el-table-column>
+ <el-table-column v-if="option.index" label="\#" type="index" width="50" align="center">
+ </el-table-column>
+ <template v-for="(item,index) in option.column">
+ <!-- table瀛楁 -->
+ <el-table-column v-if="item.hide!==true"
+ :prop="item.prop"
+ :label="item.label"
+ :width="item.width"
+ :key="index">
+ </el-table-column>
+ </template>
+ <!-- 鎿嶄綔鏍忔ā鍧� -->
+ <el-table-column prop="menu" label="鎿嶄綔" :width="180" align="center">
+ <template slot-scope="{row}">
+ <el-button :size="option.size" type="text" icon="el-icon-view" @click="handleView(row)">鏌ョ湅</el-button>
+ <el-button :size="option.size" type="text" icon="el-icon-edit" @click="handleEdit(row)">缂栬緫</el-button>
+ <el-button :size="option.size" type="text" icon="el-icon-delete" @click="rowDel(row)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-row>
+ <el-row>
+ <!-- 鍒嗛〉妯″潡 -->
+ <el-pagination
+ align="right" background
+ @size-change="sizeChange"
+ @current-change="currentChange"
+ :current-page="page.currentPage"
+ :page-sizes="[10, 20, 30, 40, 50, 100]"
+ :page-size="page.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="page.total">
+ </el-pagination>
+ </el-row>
+ <!-- 琛ㄥ崟妯″潡 -->
+ <el-dialog :title="title" :visible.sync="box" width="50%" :before-close="beforeClose" append-to-body>
+ <el-form :disabled="view" :size="option.size" ref="form" :model="form" label-width="80px">
+ <!-- 琛ㄥ崟瀛楁 -->
+#for(x in prototypes) {
+ #if(x.isForm!=0){
+ #if(x.componentType=="input"){
+ <el-form-item label="${x.comment!}" prop="${x.propertyName!}">
+ <el-input v-model="form.${x.propertyName!}" placeholder="璇疯緭鍏�${x.comment!}"/>
+ </el-form-item>
+ #}else if(x.componentType=="textarea"){
+ <el-form-item label="${x.comment!}" prop="${x.propertyName!}">
+ <el-input type="textarea" :rows="5" v-model="form.${x.propertyName!}" placeholder="璇疯緭鍏�${x.comment!}"/>
+ </el-form-item>
+ #}else if(x.componentType=="select"){
+ <el-form-item label="${x.comment!}" prop="${x.propertyName!}">
+ <el-select v-model="form.${x.propertyName!}" clearable placeholder="璇烽�夋嫨${x.comment!}">
+ <el-option
+ v-for="item in ${x.propertyName!}Data"
+ :key="item.dictKey"
+ :label="item.dictValue"
+ :value="item.dictKey">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ #}else if(x.componentType=="tree"){
+ <el-form-item label="${x.comment!}" prop="${x.propertyName!}">
+ <el-select v-model="form.${x.propertyName!}" clearable placeholder="璇烽�夋嫨${x.comment!}">
+ <el-option
+ v-for="item in ${x.propertyName!}Data"
+ :key="item.dictKey"
+ :label="item.dictValue"
+ :value="item.dictKey">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ #}else if(x.componentType=="radio"){
+ <el-form-item label="${x.comment!}" prop="${x.propertyName!}">
+ <el-radio-group v-model="form.${x.propertyName!}">
+ <el-radio v-for="(item,index) in ${x.propertyName!}Data" :key="index" :label="item.dictKey">
+ {{item.dictValue}}
+ </el-radio>
+ </el-radio-group>
+ </el-form-item>
+ #}else if(x.componentType=="checkbox"){
+ <el-form-item label="${x.comment!}" prop="${x.propertyName!}">
+ <el-checkbox-group v-model="form.${x.propertyName!}">
+ <el-checkbox v-for="(item,index) in ${x.propertyName!}Data" :label="item.dictValue" :key="index">{{item.dictValue}}</el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+ #}else if(x.componentType=="switch"){
+ <el-form-item label="${x.comment!}" prop="${x.propertyName!}">
+ <el-switch v-model="form.${x.propertyName!}" </el-switch>
+ </el-form-item>
+ #}else if(x.componentType=="date"){
+ <el-form-item label="${x.comment!}" prop="${x.propertyName!}">
+ <el-date-picker v-model="form.${x.propertyName!}" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="璇烽�夋嫨${x.comment!}"></el-date-picker>
+ </el-form-item>
+ #}
+ #}
+#}
+ </el-form>
+ <!-- 琛ㄥ崟鎸夐挳 -->
+ <span v-if="!view" slot="footer" class="dialog-footer">
+ <el-button type="primary" icon="el-icon-circle-check" :size="option.size" @click="handleSubmit">鎻� 浜�</el-button>
+ <el-button icon="el-icon-circle-close" :size="option.size" @click="box = false">鍙� 娑�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+ </basic-container>
+</template>
+
+<script>
+ import {getList, getDetail, add, update, remove} from "@/api/${serviceCode!}/${modelCode!}";
+ import option from "@/const/${serviceCode!}/${modelCode!}";
+ import {mapGetters} from "vuex";
+ import {getDictionary} from '@/api/system/dict'
+
+export default {
+ props: {
+ mainId: {
+ type: String
+ },
+ },
+ data() {
+ return {
+ // 寮规鏍囬
+ title: '',
+ // 鏄惁灞曠ず寮规
+ box: false,
+ // 鏄惁鏄剧ず鏌ヨ
+ search: true,
+ // 鍔犺浇涓�
+ loading: true,
+ // 鏄惁涓烘煡鐪嬫ā寮�
+ view: false,
+ // 鏌ヨ淇℃伅
+ query: {},
+ // 鍒嗛〉淇℃伅
+ page: {
+ currentPage: 1,
+ pageSize: 10,
+ total: 40
+ },
+ // 琛ㄥ崟鏁版嵁
+ form: {},
+ // 閫夋嫨琛�
+ selectionList: [],
+ // 琛ㄥ崟閰嶇疆
+ option: option,
+ // 琛ㄥ崟鍒楄〃
+ data: [],
+#for(x in prototypes) {
+ #if(isNotEmpty(x.dictCode)){
+ // ${x.comment!}瀛楀吀鏁版嵁
+ ${x.propertyName!}Data: [],
+ #}
+#}
+ }
+ },
+ mounted() {
+ this.init();
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ },
+ computed: {
+ ...mapGetters(["permission"]),
+ ids() {
+ let ids = [];
+ this.selectionList.forEach(ele => {
+ ids.push(ele.id);
+ });
+ return ids.join(",");
+ }
+ },
+ watch: {
+ 'mainId'() {
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ }
+ },
+ methods: {
+ init() {
+#for(x in prototypes) {
+ #if(isNotEmpty(x.dictCode)){
+ getDictionary({code: '${x.dictCode!}'}).then(res => {
+ this.${x.propertyName!}Data = res.data.data;
+ });
+ #}
+#}
+ },
+ searchHide() {
+ this.search = !this.search;
+ },
+ searchChange() {
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ },
+ searchReset() {
+ this.query = {};
+ this.page.currentPage = 1;
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ },
+ handleSubmit() {
+ this.form.${subFkIdHump!} = this.mainId;
+ if (!this.form.id) {
+ add(this.form).then(() => {
+ this.box = false;
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ this.$message({
+ type: "success",
+ message: "鎿嶄綔鎴愬姛!"
+ });
+ });
+ } else {
+ update(this.form).then(() => {
+ this.box = false;
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ this.$message({
+ type: "success",
+ message: "鎿嶄綔鎴愬姛!"
+ });
+ })
+ }
+ },
+ handleAdd() {
+ this.title = '鏂板'
+ this.form = {}
+ this.box = true
+ },
+ handleEdit(row) {
+ this.title = '缂栬緫'
+ this.box = true
+ getDetail(row.id).then(res => {
+ this.form = res.data.data;
+ });
+ },
+ handleView(row) {
+ this.title = '鏌ョ湅'
+ this.view = true;
+ this.box = true;
+ getDetail(row.id).then(res => {
+ this.form = res.data.data;
+ });
+ },
+ handleDelete() {
+ if (this.selectionList.length === 0) {
+ this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ return;
+ }
+ this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(this.ids);
+ })
+ .then(() => {
+ this.selectionClear();
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ this.$message({
+ type: "success",
+ message: "鎿嶄綔鎴愬姛!"
+ });
+ });
+ },
+ rowDel(row) {
+ this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(row.id);
+ })
+ .then(() => {
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ this.$message({
+ type: "success",
+ message: "鎿嶄綔鎴愬姛!"
+ });
+ });
+ },
+ beforeClose(done) {
+ done()
+ this.form = {};
+ this.view = false;
+ },
+ selectionChange(list) {
+ this.selectionList = list;
+ },
+ selectionClear() {
+ this.selectionList = [];
+ this.$refs.table.clearSelection();
+ },
+ currentChange(currentPage) {
+ this.page.currentPage = currentPage;
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ },
+ sizeChange(pageSize) {
+ this.page.pageSize = pageSize;
+ this.onLoad(this.page, {${subFkIdHump!}: this.mainId});
+ },
+ onLoad(page, params = {}) {
+ this.loading = true;
+ getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+ const data = res.data.data;
+ this.page.total = data.total;
+ this.data = data.records;
+ this.loading = false;
+ this.selectionClear();
+ });
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+.el-pagination {
+ margin-top: 20px;
+}
+</style>
--
Gitblit v1.10.0