From 59ff9baa407775998954f271f7ed2cde8db01a26 Mon Sep 17 00:00:00 2001
From: wangting <wangting@vci-tech.com>
Date: 星期二, 14 一月 2025 17:06:05 +0800
Subject: [PATCH] 查询模板下拉框数据联动,排序列表与创建表单排序字段数据联动
---
Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue | 374 +++++++++++++++++++++++++++++++++++------------------
1 files changed, 248 insertions(+), 126 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue
index 8709445..d59ee86 100644
--- a/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue
@@ -1,12 +1,14 @@
<template>
- <el-container>
+ <el-container v-loading="createdLoading">
<el-aside>
<basic-container>
- <div style="max-height: calc(100vh - 170px);overflow: auto">
- <avue-tree :key="refresh" ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick">
+ <div style="max-height: calc(100vh - 150px);overflow: auto">
+ <avue-tree :key="refresh" ref="tree" :data="treeData" :option="treeOption" node-key="id"
+ @node-click="nodeClick">
<span slot-scope="{ node, data }" class="el-tree-node__label">
- <span style="font-size: 15px">
- <i class="el-icon-s-promotion"></i>
+ <span style="display: flex">
+ <icon-show v-if="data.iconType=='svg'" :name="data.icon"></icon-show>
+ <i v-else :class="data.icon"></i>
{{ (node || {}).label }}
</span>
</span>
@@ -17,83 +19,15 @@
<el-main>
<basic-container>
- <el-form ref="form" :model="form" label-width="85px" style="height: 79vh">
- <span v-if="form.childType !== 0">
- <el-form-item label="妯″潡鍚嶏細">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ユā鍧楀悕"></el-input>
- </el-form-item>
- <el-form-item label="妯″潡鍒悕锛�">
- <el-input v-model="form.alias" placeholder="妯″潡鍒悕鐢ㄦ潵璁板綍鏃ュ織浣跨敤"></el-input>
- </el-form-item>
- <el-form-item label="C/S锛�">
- <el-input v-model="form.pathC" :rows="3" placeholder="璇疯緭鍏/S璺緞" type="textarea"></el-input>
- </el-form-item>
- <el-form-item label="B/S锛�">
- <el-input v-model="form.path" :rows="3" placeholder="璇疯緭鍏/S璺緞" type="textarea"></el-input>
- </el-form-item>
- <el-form-item label=".NET锛�">
- <el-input v-model="form.resourceDotNet" :rows="3" placeholder="璇疯緭鍏�.NET" type="textarea"></el-input>
- </el-form-item>
- <el-form-item label="Mobile锛�">
- <el-input v-model="form.resourceMobile" :rows="3" placeholder="璇疯緭鍏obile" type="textarea"></el-input>
- </el-form-item>
- <el-form-item label="搴忓彿锛�">
- <el-input v-model="form.sort" placeholder="鏁板瓧锛屾弿杩拌妯″潡鍦ㄥ叾鐖舵ā鍧椾笅鐨勬樉绀洪『搴�"></el-input>
- </el-form-item>
- <el-form-item label="绠�鍥撅細">
- <el-input v-model="form.source"></el-input>
- </el-form-item>
- <el-form-item label="鎻忚堪锛�">
- <el-input v-model="form.remark" :rows="3" placeholder="璇疯緭鍏ユ弿杩�" type="textarea"></el-input>
- </el-form-item>
- <el-form-item label="鏄惁鏈夋晥锛�">
- <el-switch
- v-model="form.isValid"
- active-color="#13ce66"
- inactive-color="#ff4949">
- </el-switch>
- <el-link :underline="false" style="margin-left: 20px" type="danger">涓嶇敓鏁堬紙涓嶉�夋嫨锛夋椂锛岃妯″潡鍦ㄥ姛鑳芥ā鍧楁巿鏉冮噷涓嶆樉绀�</el-link>
- </el-form-item>
- </span>
- <span v-if="form.childType === 0">
- <el-form-item label="鍚嶇О锛�">
- <el-input v-model="form.name" :disabled="form.childType === 0" placeholder="璇疯緭鍏ュ悕绉�"></el-input>
- </el-form-item>
- <el-form-item label="鏍囪瘑锛�">
- <el-input v-model="form.code" :disabled="form.childType === 0" placeholder="璇疯緭鍏ユ爣璇�"></el-input>
- </el-form-item>
- <el-form-item label="鍒悕锛�">
- <el-input v-model="form.alias" placeholder="璇疯緭鍏ュ埆鍚�"></el-input>
- </el-form-item>
- <el-form-item label="缂栧彿锛�">
- <el-input v-model="form.sort" :disabled="form.childType === 0" placeholder="璇疯緭鍏ョ紪鍙�"></el-input>
- </el-form-item>
- <el-form-item label="鎻忚堪锛�">
- <el-input v-model="form.remark" :disabled="form.childType === 0" placeholder="璇疯緭鍏ユ弿杩�"></el-input>
- </el-form-item>
- <el-form-item label="鏄惁鏈夋晥锛�">
- <el-switch
- v-model="form.isValid"
- active-color="#13ce66"
- inactive-color="#ff4949">
- </el-switch>
-
- </el-form-item>
- </span>
- </el-form>
- <div v-if="form.childType && form.childType !== 0" class="btnBox">
- <el-button v-if="!addStatus" :disabled="mangeShowBtn ? false : !childTypeBtn" icon="el-icon-plus" plain
+ <div v-if="(form.childType || form.childType === 0) && !addStatus && !editStatus && form.category !== 1"
+ class="btnBox">
+ <el-button :disabled="(mangeShowBtn || form.childType === 0) ? false : !childTypeBtn" icon="el-icon-plus"
+ plain
size="small"
type="primary" @click="addClickHandler">澧炲姞
</el-button>
- <el-button v-if="addStatus" icon="el-icon-check" plain size="small"
- type="success" @click="addSaveClickHandler">淇濆瓨
- </el-button>
- <el-button v-if="!editStatus" :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary"
+ <el-button :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary"
@click="editClickHandler">淇敼
- </el-button>
- <el-button v-if="editStatus" icon="el-icon-check" plain size="small"
- type="success" @click="editSaveClickHandler">淇濆瓨
</el-button>
<el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger"
@click="delClickHandler">鍒犻櫎
@@ -102,11 +36,11 @@
size="small"
type="primary" @click="addMethodsClickHandler">澧炲姞鎿嶄綔绫诲瀷
</el-button>
- <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small"
+ <el-button v-if=" mangeShowBtn" icon="el-icon-circle-close" plain size="small"
type="danger"
@click="addClickHandler">鍒犻櫎闈炵郴缁熸ā鍧�
</el-button>
- <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small"
+ <el-button v-if="mangeShowBtn " icon="el-icon-circle-close" plain size="small"
type="danger"
@click="addClickHandler">鍒犻櫎涓氬姟妯″潡
</el-button>
@@ -119,12 +53,107 @@
<el-button icon="el-icon-upload2" plain size="small" type="primary" @click="sqlClickExportClick">瀵煎嚭sql
</el-button>
</div>
- <div v-if="form.childType === 0" class="btnBox">
- <el-button icon="el-icon-edit" plain size="small" type="primary">淇敼鍒悕
+ <div v-else-if="(form.childType || form.childType === 0) && (addStatus || editStatus)" class="btnBox">
+ <el-button v-if="addStatus" icon="el-icon-check" plain size="small"
+ type="success" @click="addSaveClickHandler">淇濆瓨
</el-button>
- <el-button icon="el-icon-close" plain size="small" type="danger">鍒犻櫎
+ <el-button v-if="editStatus" icon="el-icon-check" plain size="small"
+ type="success" @click="editSaveClickHandler">淇濆瓨
+ </el-button>
+ <el-button icon="el-icon-close" plain size="small"
+ type="danger" @click="addStatus=false;editStatus=false;">鍙栨秷
</el-button>
</div>
+ <div v-if="form.category === 1" class="btnBox">
+ <el-button icon="el-icon-edit" plain size="small" type="primary" @click="updataAliasClickHandler">淇敼鍒悕
+ </el-button>
+ <el-button icon="el-icon-close" plain size="small" type="danger" @click="deleteOperationClickHandler">鍒犻櫎
+ </el-button>
+ </div>
+ <el-form ref="form" :model="form" label-width="100px" style="max-height: calc(100vh - 200px);overflow: auto;">
+ <span v-if="form.category !== 1">
+ <el-form-item class="is-required">
+ <span slot="label">妯″潡鍚嶏細</span>
+ <el-input v-model="form.name" :disabled="!editStatus && !addStatus" placeholder="璇疯緭鍏ユā鍧楀悕"></el-input>
+ </el-form-item>
+ <el-form-item class="is-required">
+ <span slot="label">妯″潡鍒悕锛�</span>
+ <el-input v-model="form.alias" :disabled="!editStatus && !addStatus" placeholder="璇疯緭鍏ユā鍧楀埆鍚�"></el-input>
+ </el-form-item>
+ <el-form-item class="is-required">
+ <span slot="label">搴忓彿锛�</span>
+ <el-input-number v-model="form.sort" :disabled="!editStatus && !addStatus"></el-input-number>
+ <el-link :underline="false" style="margin-left: 20px" type="danger">鏁板瓧锛屾弿杩拌妯″潡鍦ㄥ叾鐖舵ā鍧椾笅鐨勬樉绀洪『搴�</el-link>
+ </el-form-item>
+ <el-form-item v-if="form.functionType === 0" label="C/S锛�">
+ <el-input v-model="form.pathC" :disabled="!editStatus && !addStatus" :rows="2" placeholder="璇疯緭鍏/S璺緞"
+ type="textarea"></el-input>
+ </el-form-item>
+ <el-form-item v-if="form.functionType === 0" label="B/S锛�">
+ <el-input v-model="form.path" :disabled="!editStatus && !addStatus" :rows="2" placeholder="璇疯緭鍏/S璺緞"
+ type="textarea"></el-input>
+ </el-form-item>
+ <el-form-item v-if="form.functionType === 0" label=".NET锛�">
+ <el-input v-model="form.resourceDotNet" :disabled="!editStatus && !addStatus" :rows="2"
+ placeholder="璇疯緭鍏�.NET" type="textarea"></el-input>
+ </el-form-item>
+ <el-form-item label="鍥炬爣锛�">
+ <input-icon v-model="form.source" :disabled="!editStatus && !addStatus" placeholder="璇烽�夋嫨鍥炬爣">
+ </input-icon>
+ </el-form-item>
+ <el-form-item label="鎻忚堪锛�">
+ <el-input v-model="form.remark" :disabled="!editStatus && !addStatus" :rows="3" placeholder="璇疯緭鍏ユ弿杩�"
+ type="textarea"></el-input>
+ </el-form-item>
+ <el-form-item label="鏄惁鑿滃崟锛�">
+ <el-switch
+ v-model="form.functionType"
+ :active-value="0"
+ :disabled="!editStatus && !addStatus"
+ :inactive-value="1"
+ active-color="#13ce66"
+ inactive-color="#ff4949">
+ </el-switch>
+ </el-form-item>
+ <el-form-item label="鏄惁鏈夋晥锛�">
+ <el-switch
+ v-model="form.isValid"
+ :disabled="!editStatus && !addStatus"
+ active-color="#13ce66"
+ inactive-color="#ff4949">
+ </el-switch>
+ <el-link :underline="false" style="margin-left: 20px" type="danger">涓嶇敓鏁堬紙涓嶉�夋嫨锛夋椂锛岃妯″潡鍦ㄥ姛鑳芥ā鍧楁巿鏉冮噷涓嶆樉绀�</el-link>
+ </el-form-item>
+ </span>
+ <span v-if="form.category === 1">
+ <el-form-item label="鍚嶇О锛�" class="is-required">
+ <el-input v-model="form.name" :disabled="form.category === 1" placeholder="璇疯緭鍏ュ悕绉�"></el-input>
+ </el-form-item>
+ <el-form-item label="鏍囪瘑锛�" class="is-required">
+ <el-input v-model="form.code" :disabled="form.category === 1" placeholder="璇疯緭鍏ユ爣璇�"></el-input>
+ </el-form-item>
+ <el-form-item label="鍒悕锛�" class="is-required">
+ <el-input v-model="form.alias" placeholder="璇疯緭鍏ュ埆鍚�"></el-input>
+ </el-form-item>
+ <el-form-item label="鍥炬爣锛�">
+ <input-icon v-model="form.source" placeholder="璇烽�夋嫨鍥炬爣">
+ </input-icon>
+ </el-form-item>
+ <el-form-item label="缂栧彿锛�" class="is-required">
+ <el-input-number v-model="form.sort" :disabled="form.category === 1" :max="63" :min="1"></el-input-number>
+ </el-form-item>
+ <el-form-item label="鎻忚堪锛�">
+ <el-input v-model="form.remark" :disabled="form.category === 1" placeholder="璇疯緭鍏ユ弿杩�"></el-input>
+ </el-form-item>
+ <el-form-item label="鏄惁鏈夋晥锛�">
+ <el-switch
+ v-model="form.isValid"
+ active-color="#13ce66"
+ inactive-color="#ff4949">
+ </el-switch>
+ </el-form-item>
+ </span>
+ </el-form>
</basic-container>
</el-main>
<el-dialog
@@ -133,7 +162,7 @@
append-to-body="true"
class="avue-dialog"
title="鎿嶄綔鍒嗙被"
- width="60%"
+ width="900px"
>
<avue-crud
ref="methodsCrud"
@@ -142,13 +171,15 @@
:table-loading="methodsLoading"
@row-click="rowMethodsClickHandler"
@selection-change="selectMethodsChange">
-
</avue-crud>
<span slot="footer" class="dialog-footer">
- <el-button @click="methodsVisble = false">鍙� 娑�</el-button>
<el-button type="primary" @click="methodsSaveClickHandler">淇� 瀛�</el-button>
+ <el-button @click="methodsVisble = false">鍙� 娑�</el-button>
</span>
</el-dialog>
+ <!--瀵煎叆 -->
+ <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" fileName="files" title="瀵煎叆"
+ @updata="resetFormValue"></upload-file>
</el-container>
</template>
@@ -160,7 +191,10 @@
updateModel,
delModule,
exportFunctionSql,
- addOperationType
+ addOperationType,
+ exportModule,
+ updateAlias,
+ delFuncOperation
} from "@/api/systemModel/mangeModel/api"
import func from "@/util/func";
import basicOption from "@/util/basic-option";
@@ -169,6 +203,10 @@
name: "index",
data() {
return {
+ tipList: [],
+ upFileType: ['xls', 'xlsx'],
+ fileUrl: 'api/hmSysModConfigController/importModule',
+ createdLoading: false,
lastIndex: null,
methodsList: [],
methodsData: [],
@@ -177,13 +215,20 @@
addBtn: false,
menu: false,
height: 500,
- column: [
- {
- label: '鎿嶄綔鍒嗙被',
- prop: 'name',
- sortable: true,
- }
- ]
+ header: false,
+ column: [{
+ label: '鍚嶇О',
+ prop: 'name',
+ width:180,
+ sortable: true,
+ }, {
+ label: '鏍囪瘑',
+ prop: 'code',
+ width:180,
+ }, {
+ label: '鎻忚堪',
+ prop: 'remark'
+ }]
},
methodsLoading: false,
methodsVisble: false,
@@ -192,6 +237,7 @@
addStatus: false,
editStatus: false,
nodeRow: {},
+ currentClickNode: null,
form: {},
treeData: [],
treeOption: {
@@ -199,24 +245,26 @@
menu: false,
addBtn: false,
defaultExpandAll: false,
+ defaultExpandedKeys:['system'],
props: {
- label: 'name',
+ label: 'label',
value: 'id',
children: 'children',
},
lazy: true,
treeLoad: (node, resolve) => {
const params = {
- parentId: node.level === 0 ? "systemManagmentNode" : node.data.id,
+ parentId: node.level === 0 ? "system" : node.data.id,
modeType: node.level === 0 ? "firstNode" : node.data.modeType,
}
getSysModelTreeMenuByPID(params).then(res => {
resolve(res.data.data.map(item => {
return {
...item,
- id: item.id,
- name: item.name,
- leaf: !item.hasChildren
+ label: item.category!=1?item.name:item.alias,
+ leaf: !item.hasChildren,
+ icon: item.source || (node.level === 0?'el-icon-s-home':'el-icon-s-tools'),
+ iconType:item.source?'svg':'iconfont'
}
}))
})
@@ -245,27 +293,30 @@
},
methods: {
// 鏍戣鐐瑰嚮
- nodeClick(row) {
+ nodeClick(row, node) {
console.log(row.childType);
this.form = {...row};
this.nodeRow = {...row};
+ this.currentClickNode = node;
this.addStatus = false;
this.editStatus = false;
},
// 鏂板鎸夐挳
addClickHandler() {
- this.resetFormValue();
+ // this.resetFormValue();
+ this.defalutName.forEach(key => {
+ this.form[key] = null;
+ })
+ this.form.isValid = false;
this.addStatus = true;
this.editStatus = false;
},
// 娓呯┖琛ㄥ崟缁戝畾鍊�
resetFormValue() {
- this.defalutName.forEach(key => {
- this.form[key] = null;
- })
- this.form.isValid = false;
+ this.form = {};
+ this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍�
},
// 鏂板淇濆瓨鎸夐挳
@@ -274,24 +325,28 @@
this.$message.error('妯″潡鍚嶄笉鑳戒负绌�');
return
}
+ if (!this.form.alias) {
+ this.$message.error('鑿滃崟鏍囪瘑涓嶈兘涓虹┖');
+ return
+ }
if (this.form.name.length > 128) {
- this.$message.error('妯″潡鍚嶉暱搴﹁秴杩�128锛�');
+ this.$message.error('妯″潡鍚嶉暱搴︿笉鑳借秴杩�128锛�');
return
}
if (this.form.remark && this.form.remark.length > 255) {
- this.$message.error('鎻忚堪闀垮害瓒呰繃255锛�');
+ this.$message.error('鎻忚堪闀垮害涓嶈兘瓒呰繃255锛�');
return
}
if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) {
- this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘255锛�');
+ this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘瓒呰繃255锛�');
return
}
if (this.form.pathC && this.form.pathC.length > 255) {
- this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘255锛�');
+ this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘瓒呰繃255锛�');
return
}
if (this.form.resourceMobile && this.form.resourceMobile.length > 255) {
- this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘255锛�');
+ this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘瓒呰繃255锛�');
return
}
this.form.parentId = this.form.id;
@@ -299,14 +354,15 @@
if (res.data.code === 200) {
this.$message.success(res.data.msg);
this.addStatus = false;
- this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍�
+ // this.resetFormValue();
+ this.form.childType = null;
+ this.handleRefreshTree('add')
}
})
},
// 淇敼鎸夐挳
editClickHandler() {
- console.log(this.form);
this.editStatus = true;
this.addStatus = false;
},
@@ -315,6 +371,10 @@
editSaveClickHandler() {
if (!this.form.name) {
this.$message.error('妯″潡鍚嶄笉鑳戒负绌�');
+ return
+ }
+ if (!this.form.alias) {
+ this.$message.error('鑿滃崟鏍囪瘑涓嶈兘涓虹┖');
return
}
if (this.form.name.length > 128) {
@@ -342,7 +402,9 @@
if (res.data.code === 200) {
this.$message.success(res.data.msg);
this.editStatus = false;
- this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍�
+ // this.resetFormValue();
+ this.form.childType = null;
+ this.handleRefreshTree('edit')
}
})
},
@@ -355,13 +417,11 @@
type: 'warning'
}).then(() => {
delModule(this.form).then(res => {
- console.log(res);
if (res.data.code === 200) {
this.$message.success(res.data.msg);
- this.resetFormValue();
+ this.handleRefreshTree('del')
this.addStatus = false;
this.editStatus = false;
- this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍�
}
})
}).catch(() => {
@@ -377,8 +437,6 @@
exportFunctionSql({isFunction: true}).then(res => {
func.downloadFileByBlobHandler(res);
this.$message.success('瀵煎嚭鎴愬姛');
- }).catch(err => {
- this.$message.error(err);
});
},
@@ -390,12 +448,14 @@
// 澧炲姞鎿嶄綔绫诲瀷
addMethodsClickHandler() {
this.methodsLoading = true;
- getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => {
- if (res.data.code === 200) {
+ getSysModelTreeMenuByPID({parentId: 'operateNode'}).then(res => {
+ if (res.data.code === 200 && res.data.data.length > 0) {
this.methodsVisble = true;
- const data = res.data.data[0].children;
+ const data = res.data.data;
this.methodsData = data;
this.methodsLoading = false;
+ } else {
+ this.$message.error('鏈壘鍒板彲澧炲姞鐨勬搷浣滅被鍨�');
}
})
},
@@ -413,13 +473,11 @@
}
})
addOperationType(list).then(res => {
- console.log(res)
if (res.data.code === 200) {
this.methodsVisble = false;
this.$message.success(res.data.msg);
- this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍�
- this.resetFormValue();
this.form.childType = null;
+ this.handleRefreshTree('add')
}
})
},
@@ -434,10 +492,73 @@
this.lastIndex = newIndex;
},
() => {
- this.methodsList = [];
+ this.methodsList = [row];
}
);
},
+
+ // 淇敼鍒悕
+ updataAliasClickHandler() {
+ const params = {
+ id: this.form.id,
+ isValid: this.form.isValid,
+ source:this.form.source,
+ alias: this.form.alias
+ }
+ updateAlias(params).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.msg);
+ this.handleRefreshTree('edit')
+ }
+ })
+ },
+
+ // 鍒犻櫎妯″潡涓嬪叧鑱旂殑鎿嶄綔绫诲瀷
+ deleteOperationClickHandler() {
+ const params = {
+ funcId: this.form.funcId,
+ operId: this.form.operId
+ }
+ delFuncOperation(params).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.msg);
+ this.handleRefreshTree('del');
+ }
+ })
+ },
+
+ // 瀵煎嚭
+ exportClickHandler() {
+ this.createdLoading = true;
+ exportModule().then(res => {
+ func.downloadFileByBlobHandler(res);
+ this.createdLoading = false
+ this.$message.success('瀵煎嚭鎴愬姛');
+ })
+ },
+
+ // 瀵煎叆
+ upLoadClickHandler() {
+ this.$refs.upload.visible = true;
+ },
+
+ handleRefreshTree(type) {
+ //type:add\edit\del
+ if (type == "del") {
+ this.$refs.tree.remove(this.currentClickNode);
+ this.currentClickNode = null;
+ this.form = {};
+ } else {
+ if (this.currentClickNode) {
+ let node = this.currentClickNode.parent;
+ node.loaded = false;
+ node.expand();
+ this.$refs.tree.setCurrentNode(this.currentClickNode);
+ } else {
+ this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍�
+ }
+ }
+ }
}
}
</script>
@@ -451,6 +572,7 @@
.btnBox {
display: flex;
- justify-content: center;
+ justify-content: left;
+ margin-bottom: 15px;
}
</style>
--
Gitblit v1.9.3