From 37b4d052d345be1d3b5671dbd965fa26f06b808f Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期二, 11 二月 2025 14:32:17 +0800
Subject: [PATCH] 首页页面迁移、首页样式修改
---
src/views/index.vue | 1841 ++++++++++++++-------------------
src/components/index/scroll-paging.vue | 110 ++
src/layout/components/AppMain.vue | 1
src/layout/components/TagsView/index.vue | 3
src/components/Table/value-table.vue | 1237 ++++++++++++++++++++++
5 files changed, 2,113 insertions(+), 1,079 deletions(-)
diff --git a/src/components/Table/value-table.vue b/src/components/Table/value-table.vue
new file mode 100644
index 0000000..a5a57ef
--- /dev/null
+++ b/src/components/Table/value-table.vue
@@ -0,0 +1,1237 @@
+<style scoped>
+ .value-table {
+ width: 100%;
+ height: 100%;
+ overflow-y: auto;
+ }
+
+ .table {
+ width: 100%;
+ height: calc(100% - 42px);
+ }
+
+ .page {
+ width: 100%;
+ height: 30px;
+ text-align: right;
+ margin-top: 10px;
+ }
+
+ .down-left {
+ width: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .down-right {
+ width: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .body {
+ overflow-x: hidden;
+ }
+
+ .handleBtn {
+ border: none;
+ padding: 0;
+ color: #409EFF;
+ background: transparent;
+ }
+
+ .handleBtn:hover {
+ background: transparent;
+ }
+
+ .handleBtn.is-disabled {
+ color: #C0C4CC;
+ }
+ .red{
+ color: red !important;
+ }
+ >>>.el-loading-parent--relative {
+ z-index: 1 !important;
+ }
+ >>> .el-table__body-wrapper::-webkit-scrollbar {
+ height: 14px; /* 璁剧疆婊氬姩鏉″搴� */
+ }
+</style>
+<style>
+ /* .value-table .highlight-warning-row-border td {
+ border-top: 2px solid #ffcd29;
+ border-bottom: 2px solid #ffcd29;
+ } */
+
+ .value-table .highlight-warning-row-border td:first-child {
+ border-left: 4px solid #ffcd29;
+ }
+
+ .value-table .highlight-warning-row-border td:last-child {
+ border-right: 4px solid #ffcd29;
+ }
+
+ /* .value-table .highlight-danger-row-border td {
+ border-top: 2px solid red;
+ border-bottom: 2px solid red;
+ } */
+
+ .value-table .highlight-danger-row-border td:first-child {
+ border-left: 4px solid #f56c6c;
+ }
+
+ .value-table .highlight-danger-row-border td:last-child {
+ border-right: 4px solid #f56c6c;
+ }
+
+ .value-table .el-upload {
+ width: 100%;
+ }
+
+ .value-table .el-upload-dragger {
+ width: 100%;
+ }
+
+ .value-table .handleBtn.is-disabled .el-upload:focus {
+ color: #C0C4CC !important;
+ }
+
+ .value-table .avatar-uploader .el-upload {
+ height: 80px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .el-table__empty-text{
+ text-align: left;
+ width: 100%;
+ display: inline-block;
+ margin-left: 200px;
+ }
+
+</style>
+
+<template>
+ <div class="value-table">
+ <div :style="data.isPage!=undefined&&data.isPage!=true?'height:100%':''" class="table">
+ <el-table :key="specialKey" ref="eltable" v-loading="loading" :current-row-key="data.currentId" :data="tableData" :highlight-current-row="data.highlight===undefined||data.highlight"
+ :row-class-name="tableRowClassName" :row-key="record=>record[rowKey]" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0" :span-method="spanMethod"
+ :summary-method="getSummaries" border
+ height="100%" style="width: 100%;" tooltip-effect="dark"
+ @select="select" @selection-change="selectChange"
+ @sort-change="sortChange" @row-click="rowClick">
+ <el-table-column v-if="data.showSelect" :key="Math.random()" :width="selectionWidth" type="selection">
+ </el-table-column>
+ <el-table-column v-if="data.isIndex" :key="Math.random()" :width="selectionWidth" align="center" label="搴忓彿" type="index">
+ </el-table-column>
+ <el-table-column v-for="(a, ai) in tableHead" v-if="!data.headNoShow||(data.headNoShow&&data.headNoShow.length==0)||(data.headNoShow&&data.headNoShow.length>0&&!data.headNoShow.find(d=>d==a.label))" :key="ai+'bbbbb'" :isColumnWidth="isColumnWidth" :isShowZero="isShowZero"
+ :label="a.value" :min-width="columnMinWidth" :prop="a.label" :sortable="a.sort === 'custom' ? 'custom' : false" show-overflow-tooltip>
+ <template slot-scope="scope">
+ <div v-if="showType(a.label, data.tagField) != null">
+ <template v-if="typeof(scope.row[a.label]) == 'object'">
+ <template v-for="(param, i) in scope.row[a.label]">
+ <el-tag v-for="(b, bi) in data.tagField[a.label].select" v-if="b.value == param" :key="bi+'cccc'"
+ :type="b.type" size="medium" style="margin-right: 5px;">{{b.label}}</el-tag>
+ </template>
+ </template>
+ <template v-else>
+ <el-tag v-for="(b, bi) in data.tagField[a.label].select" v-show="b.value == scope.row[a.label]" :key="bi+'ddddd'"
+ :type="b.type" size="medium">{{b.label}}</el-tag>
+ </template>
+ </div>
+ <!-- 鍙搷浣滆杩涜鐐瑰嚮浜嬩欢 -->
+ <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;"
+ @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span>
+ <img v-else-if="showUpload(a.label)&&scope.row[a.label]" :src="javaApi+'/img/'+scope.row[a.label]"
+ alt="" style="width: 40px;height: 40px;margin-top: 10px;">
+ <span v-else :class="{red:getRedColor(a.label,scope.row)}" >{{scope.row[a.label]}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column v-if="data.do.length > 0" :width="getWidth()" align="center" fixed="right" label="鎿嶄綔">
+ <template slot-scope="scope">
+ <el-button v-for="(a, ai) in data.do" :key="ai
+ +'qqqq'" :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false"
+ :type="a.type" class="handleBtn"
+ @click="main(scope.row, a)">
+ <span v-if="a.type!='upload'">{{a.font}}</span>
+ <el-upload v-else ref='upload'
+ :accept='a.uploadConfig.accept' :action="javaApi+a.uploadConfig.url+'?id='+ (a.uploadConfig.uploadIdFun ? a.uploadConfig.uploadIdFun(scope.row) : scope.row.id)"
+ :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" :headers="token" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false"
+ name="file" style="background: transparent;">
+ <span>{{a.font}}</span>
+ </el-upload>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <div v-if="data.isPage==undefined||data.isPage" class="page">
+ <el-pagination :current-page="page.current" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]"
+ :total="total" layout="total, sizes, prev, pager, next, jumper" @size-change="sizeChange"
+ @current-change="currentChange">
+ </el-pagination>
+ </div>
+ <el-dialog :close-on-click-modal="false" :visible.sync="upDia"
+ :width="data.row==1?'500px':540+data.row * 200 + 'px'"
+ append-to-body title="缂栬緫">
+ <div class="body" style="max-height: 600px;overflow-y: auto;padding: 5px 10px 5px 0;">
+ <div v-if="data.row > 1">
+ <div v-for="(a, ai) in upHead" :key="ai+'ffff'" style="line-height: 50px;">
+ <el-col :offset="1" :span="6/data.row" style="text-align: right;">
+ <span v-if="showUpReq(a.label)" class="required-span">* </span>{{a.value}}锛�
+ </el-col>
+ <el-col :span="16/data.row">
+ <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :disabled="isDisabled(a.label)" :placeholder="`璇疯緭鍏�${a.value}`"
+ clearable
+ size="small"></el-input>
+ <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :allow-create="data.selectField[a.label].allowCreate"
+ :default-first-option="data.selectField[a.label].defaultFirstOption"
+ :disabled="isDisabled(a.label)"
+ :multiple="data.selectField[a.label].choose" clearable filterable
+ size="small" style="width: 100%;">
+ <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'eeeee'" :label="b.label"
+ :value="b.value">
+ </el-option>
+ </el-select>
+ <el-upload v-if="showUpload(a.label)" ref='upload'
+ :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false"
+ :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader"
+ name="file"
+ style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
+ <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
+ style="width: 80px;height: 80px;border-radius: 6px;">
+ <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+ </el-upload>
+ <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`璇烽�夋嫨${a.value}`"
+ :props="data.cascaderField.props" :show-all-levels="false" :value="upData[a.label]"
+ clearable filterable size="small"
+ style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
+ </el-col>
+ </div>
+ </div>
+ <div v-else>
+ <el-row v-for="(a, ai) in upHead" :key="ai+'ggggg'" style="line-height: 50px;">
+ <el-col :span="6" style="text-align: right;">
+ <span v-if="showUpReq(a.label)" class="required-span">* </span>{{a.value}}锛�
+ </el-col>
+ <el-col :offset="1" :span="16">
+ <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :disabled="isDisabled(a.label)" :placeholder="`璇疯緭鍏�${a.value}`"
+ clearable
+ size="small"></el-input>
+ <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :disabled="isDisabled(a.label)"
+ :multiple="data.selectField[a.label].choose" clearable filterable
+ size="small" style="width: 100%;">
+ <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'fffff'" :label="b.label"
+ :value="b.value"></el-option>
+ </el-select>
+ <el-upload v-if="showUpload(a.label)" ref='upload' :accept='data.addUploadConfig.accept'
+ :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError"
+ :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" name="file"
+ style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
+ <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
+ style="width: 80px;height: 80px;border-radius: 6px;">
+ <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+ </el-upload>
+ <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`璇烽�夋嫨${a.value}`"
+ :props="data.cascaderField.props" :show-all-levels="false" :value="upData[a.label]" clearable
+ filterable size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="upDia = false">鍙� 娑�</el-button>
+ <el-button :loading="upLoad" type="primary" @click="saveUpData">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog :close-on-click-modal="false" :visible.sync="addDia"
+ :width="data.row==1?'500px':540+data.row * 200 + 'px'"
+ append-to-body title="鏂板">
+ <div v-if="addDia" class="body" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;">
+ <div v-if="data.row > 1">
+ <div v-for="(a, ai) in upHead" :key="ai+'yyyyy'" style="line-height: 50px;">
+ <el-col :offset="1" :span="6/data.row" style="text-align: right;"><span v-if="showAddReq(a.label)"
+ class="required-span">*
+ </span>{{a.value}}锛�</el-col>
+ <el-col :span="16/data.row">
+ <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :placeholder="`璇疯緭鍏�${a.value}`" clearable
+ size="small"></el-input>
+ <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :multiple="data.selectField[a.label].choose"
+ :placeholder="`璇烽�夋嫨${a.value}`"
+ clearable filterable size="small" style="width: 100%;">
+ <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'hhhh'" :label="b.label"
+ :value="b.value"></el-option>
+ </el-select>
+ <el-upload v-if="showUpload(a.label)" ref='upload'
+ :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false"
+ :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader"
+ name="file"
+ style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
+ <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
+ style="width: 80px;height: 80px;border-radius: 6px;">
+ <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+ </el-upload>
+ <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`璇烽�夋嫨${a.value}`"
+ :props="data.cascaderField.props" :show-all-levels="false" clearable filterable
+ size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
+ </el-col>
+ </div>
+ </div>
+ <div v-else>
+ <el-row v-for="(a, ai) in upHead" :key="ai+'jjjjj'" style="line-height: 50px;">
+ <el-col :span="6" style="text-align: right;"><span v-if="showAddReq(a.label)" class="required-span">*
+ </span>{{a.value}}锛�</el-col>
+ <el-col :offset="1" :span="16">
+ <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :placeholder="`璇疯緭鍏�${a.value}`" clearable
+ size="small"></el-input>
+ <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :multiple="data.selectField[a.label].choose"
+ :placeholder="`璇烽�夋嫨${a.value}`"
+ clearable size="small" style="width: 100%;">
+ <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'mmmmmm'" :label="b.label"
+ :value="b.value"></el-option>
+ </el-select>
+ <el-upload v-if="showUpload(a.label)" ref='upload'
+ :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false"
+ :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader"
+ name="file"
+ style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
+ <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
+ style="width: 80px;height: 80px;border-radius: 6px;">
+ <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+ </el-upload>
+ <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`璇烽�夋嫨${a.value}`"
+ :props="data.cascaderField.props" :show-all-levels="false" clearable filterable
+ size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="addDia = false">鍙� 娑�</el-button>
+ <el-button :loading="addLoad" type="primary" @click="saveAddData">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog :visible.sync="downDia" title="瀵煎嚭" width="400px">
+ <div style="display: flex;width: 100%;height: 100px;">
+ <div class="down-left" @click="downFile(true)">
+ <el-button>鏈〉瀵煎嚭</el-button>
+ </div>
+ <div class="down-right" @click="downFile(false)">
+ <el-button>鍏ㄩ儴瀵煎嚭</el-button>
+ </div>
+ </div>
+ </el-dialog>
+ <el-dialog :visible.sync="uploadDia" title="鏁版嵁瀵煎叆" width="500px">
+ <div style="margin: 0 auto;">
+ <el-upload ref="upload" :accept="data.accept===undefined?'.csv':data.accept" :action="javaApi + inputUrl" :auto-upload="false" :data="{param: data.uploadStr}" :file-list="fileList"
+ :headers="token" :limit="1" :on-change="beforeUpload" :on-error="onError" :on-success="onSuccess"
+ drag name="file">
+ <i class="el-icon-upload"></i>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ </el-upload>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="uploadDia = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitUpload()">涓� 浼�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+ export default {
+ props: {
+ selectionWidth: {
+ type: String,
+ default: () => '65'
+ },
+ columnMinWidth: {
+ type: String,
+ default: () => '155'
+ },
+ isColumnWidth: {
+ type: Boolean,
+ default: () => false
+ },
+ isShowZero: {
+ type: Boolean,
+ default: () => false
+ },
+ tableRowClassName: {
+ type: Function
+ },
+ rowKey: {
+ type: String,
+ default: ()=>{
+ return 'id'
+ }
+ },
+ url: {
+ type: String,
+ default: () => null
+ },
+ upUrl: {
+ type: String,
+ default: () => null
+ },
+ delUrl: {
+ type: String,
+ default: () => null
+ },
+ downUrl: {
+ type: String,
+ default: () => null
+ },
+ inputUrl: {
+ type: String,
+ default: () => null
+ },
+ componentData: {
+ type: Object,
+ default: () => {
+ return {
+ entity: {
+ orderBy: {
+ field: 'id',
+ order: 'asc'
+ }
+ },
+ isIndex: false,
+ showSelect: false,
+ select: true,
+ row: 1,
+ do: [{
+ id: 'update',
+ font: '缂栬緫',
+ type: 'text',
+ method: 'doDiy'
+ }, {
+ id: 'delete',
+ font: '鍒犻櫎',
+ type: 'text',
+ method: 'doDiy'
+ }],
+ doDiy: true,
+ tagField: [{
+ label: 'state',
+ select: [{
+ value: '1',
+ type: 'success',
+ label: '鍚敤'
+ }, {
+ value: '0',
+ type: 'danger',
+ label: '鍋滅敤'
+ }]
+ }]
+ }
+ }
+ }
+ },
+ data() {
+ return {
+ data: {
+ entity: {
+ orderBy: {
+ field: 'id',
+ order: 'asc'
+ }
+ },
+ isIndex: false,
+ showSelect: false,
+ select: true,
+ row: 1,
+ isPage: true, //
+ do: [{
+ font: '鍒犻櫎',
+ type: 'text'
+ }],
+ type: [],
+ uploadStr: "",
+ currentId: '', //褰撳墠楂樹寒鐨処D
+ },
+ tableHead: [],
+ tableData: [],
+ multipleSelection: [],
+ user: {},
+ page: {
+ current: 1,
+ size: 20,
+ },
+ total: 0,
+ loading: false,
+ upDia: false,
+ upData: {},
+ upHead: [],
+ upLoad: false,
+ addDia: false,
+ addUrl: null,
+ addLoad: false,
+ dataCopy: {},
+ downDia: false,
+ uploadDia: false,
+ token: null,
+ fileList: [],
+ init: true,
+ spanList: [
+ // {
+ // arr:[],
+ // position:0
+ // }
+ ],
+ specialSpanList: [
+ // {
+ // arr:[],
+ // position:0
+ // }
+ ],
+ param: {},
+ specialKey:'table-'
+ }
+ },
+ beforeUpdate() {
+ this.$nextTick(() => {
+ this.$refs.eltable.doLayout()
+ })
+ },
+ mounted() {
+ this.data = this.componentData
+ this.dataCopy = this.HaveJson(this.componentData)
+ if (this.data.init === undefined || this.data.init === true) {
+ this.selectList()
+ }
+ this.token = {
+ 'token': sessionStorage.getItem('token')
+ }
+ this.specialKey = this.specialKey+Math.random()*100;
+ },
+ methods: {
+ rowspan(spanArr, position, spanName) {
+ this.tableData.forEach((item, index) => {
+ if (index === 0) {
+ spanArr.push(1);
+ position = 0;
+ } else {
+ if (
+ this.tableData[index][spanName] ===
+ this.tableData[index - 1][spanName]
+ ) {
+ spanArr[position] += 1;
+ spanArr.push(0);
+ } else {
+ spanArr.push(1);
+ position = index;
+ }
+ }
+ });
+ },
+ spanMethod({
+ row,
+ column,
+ rowIndex,
+ columnIndex
+ }) {
+ // 涓�鑸殑鍚堝苟琛�
+ if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > 0) {
+ let i = null;
+ let obj = this.data.spanConfig.rows.find((item, index) => {
+ i = index;
+ return item.index == columnIndex
+ })
+ if (obj) {
+ const _row = this.spanList[i].arr[rowIndex];
+ const _col = _row > 0 ? 1 : 0;
+ return {
+ rowspan: _row,
+ colspan: _col,
+ };
+ }
+ }
+ // 鐗规畩鐨勫悎骞惰
+ if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special.main &&
+ this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) {
+ let i = null;
+ let obj = this.data.spanConfig.special.rows.find((item, index) => {
+ i = index;
+ return item.index == columnIndex
+ })
+ if (obj) {
+ const _row = this.specialSpanList[i].arr[rowIndex];
+ const _col = _row > 0 ? 1 : 0;
+ return {
+ rowspan: _row,
+ colspan: _col,
+ };
+ }
+ }
+ },
+ selectChange(val) {
+ if (this.data.select) {
+ this.multipleSelection = val;
+ } else {
+ this.multipleSelection = val[val.length - 1];
+ }
+ if (this.data.selectMethod != undefined) {
+ if (this.$parent.$el.className.indexOf('el-') == 0) {
+ this.$parent.$parent[this.data.selectMethod](val)
+ } else {
+ this.$parent[this.data.selectMethod](val)
+ }
+ }
+ },
+ select(val, row) {
+ if (!this.data.select) {
+ this.$refs['eltable'].clearSelection()
+ this.$refs['eltable'].toggleRowSelection(row, true)
+ }
+ },
+ rowClick(row, column, event) {
+ if (this.data.select) {
+ this.$refs['eltable'].toggleRowSelection(row)
+ } else {
+ this.$refs['eltable'].clearSelection()
+ this.$refs['eltable'].toggleRowSelection(row, true)
+ }
+ },
+ sizeChange(val) {
+ this.page.size = val
+ this.selectList('page')
+ },
+ currentChange(val) {
+ this.page.current = val
+ this.selectList('page')
+ },
+ // 璋冨彇琛ㄦ牸鏌ヨ鎺ュ彛
+ selectList(val) {
+ // console.log('val---', val)
+ // console.log('this.page---', this.page)
+ this.loading = true
+ if(val===undefined){
+ this.page.current = 1;
+ }
+ if (val === 'lastPage') {
+ this.page.current = this.page.current - 1 // 渚嬪鍒犻櫎鏈〉鏈�鍚庝竴鏉℃暟鎹紝灏嗗綋鍓嶉〉闈㈠畾涓轰笂涓�椤碉紝闄ょ涓�椤靛
+ }
+ // 涓嶈鍒嗛〉灏卞叏鏌�
+ if (this.data.isPage != undefined && this.data.isPage != true) {
+ this.page = {
+ current: -1,
+ size: -1,
+ }
+ }
+ this.$axios.post(this.url, {
+ page: this.page,
+ entity: this.data.entity
+ }, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ if (res.code === 201) {
+ this.loading = false
+ return
+ }
+ this.total = res.data.body.total
+ this.tableHead = res.data.head
+ this.tableData = res.data.body.records
+ if (this.data.needSort !== undefined) {
+ // 鏍规嵁鐖剁粍浠朵紶鍥炴潵鐨刵eedSort鏁扮粍锛屽垽鏂摢浜涘瓧娈甸渶瑕佹帓搴忓姛鑳�
+ for (var i = 0; i < this.data.needSort.length; i++) {
+ this.tableHead.forEach(item => {
+ if (item.label === this.data.needSort[i]) {
+ item.sort = 'custom'
+ }
+ })
+ }
+ }
+ if (this.isShowZero) {
+ // 宸ユ椂绠$悊-宸ユ椂缁熻娌℃湁鏃堕棿鐨勫氨灞曠ず0
+ this.tableData.map(item => {
+ Object.keys(item).forEach(val => {
+ if (item[val] === null && (val.includes('Hours') || val === 'total')) {
+ item[val] = 0
+ }
+ })
+ })
+ }
+ if (this.tableData.length === 0 && this.page.current > 1) {
+ this.selectList('lastPage')
+ }
+ // if (this.isColumnWidth) {
+ // this.tableHead.forEach(item => {
+ // if(!item.width){
+ // if (item.value.length === 4) {
+ // item.width = 120
+ // } else if (item.value.length === 3){
+ // item.width = item.label.includes('Hours') ? 50 : 100
+ // } else if (item.value.length === 5){
+ // item.width = 130
+ // } else if (item.value.length === 7){
+ // item.width = 160
+ // } else if (item.value.length === 6){
+ // item.width = 150
+ // } else if (item.value.length === 2){
+ // item.width = item.label.includes('Hours') ? 52 : 86
+ // } else {
+ // item.width = item.label.includes('Hours') ? 46 : 86
+ // }
+ // }
+ // })
+ // }
+
+ // console.log(JSON.stringify(this.tableHead)+"---------"+JSON.stringify(this.tableData))
+ for (var a in this.data.selectField) {
+ if (this.data.selectField[a].choose == true) {
+ this.tableData.map(b => {
+ try {
+ b[a] = JSON.parse(b[a])
+ } catch (e) {}
+ })
+ }
+ }
+ // 涓�鑸殑鍚堝苟琛�
+ if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length >
+ 0) {
+ this.spanList = [];
+ this.data.spanConfig.rows.forEach((item, index) => {
+ this.spanList.push({
+ arr: [],
+ position: 0
+ })
+ this.rowspan(this.spanList[index].arr, this.spanList[index].position, item.name);
+ })
+ }
+ // 鐗规畩鐨勫悎骞惰
+ if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special
+ .main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) {
+ this.specialSpanList = []
+ this.data.spanConfig.special.rows.forEach((item, index) => {
+ this.specialSpanList.push({
+ arr: [],
+ position: 0
+ })
+ this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data
+ .spanConfig.special.main);
+ })
+ }
+ this.loading = false
+ }).catch(e => {
+ console.log('璇峰埛鏂伴〉闈㈠啀灏濊瘯---', e)
+ this.loading = false
+ this.$message.error('璇峰埛鏂伴〉闈㈠啀灏濊瘯')
+ })
+ },
+ sortChange(ob) {
+ this.data.entity.orderBy = {}
+ this.data.entity.orderBy.field = ob.prop
+ if (ob.order == 'ascending') {
+ this.data.entity.orderBy.order = 'asc'
+ } else if (ob.order == 'descending') {
+ this.data.entity.orderBy.order = 'desc'
+ } else {
+ if (this.componentData.entity.orderBy != undefined) {
+ this.data.entity.orderBy = this.HaveJson(this.dataCopy.entity.orderBy)
+ }
+ }
+ this.selectList()
+ },
+ // 灞曠ずtag
+ showType(val, ob) {
+ var str = ob[val]
+ return str == undefined ? null : ob[val].select
+ },
+ // 灞曠ず鎿嶄綔鏍�
+ showLink(val, ob) {
+ var str = ob[val]
+ return str == undefined ? null : ob[val].method
+ },
+ showAddReq(label) {
+ if (this.data.requiredAdd == undefined) {
+ return
+ }
+ for (var i = 0; i < this.data.requiredAdd.length; i++) {
+ if (label == this.data.requiredAdd[i]) {
+ return true
+ }
+ }
+ return false
+ },
+ showUpReq(label) {
+ if (this.data.requiredUp == undefined) {
+ return
+ }
+ for (var i = 0; i < this.data.requiredUp.length; i++) {
+ if (label == this.data.requiredUp[i]) {
+ return true
+ }
+ }
+ return false
+ },
+ showUpload(label) {
+ if (this.data.addUpload && this.data.addUpload.find(m => m == label)) {
+ return true;
+ } else {
+ return false;
+ }
+ },
+ showCascader(label) {
+ if (this.data.cascaderField && this.data.cascaderField[label]) {
+ return true;
+ } else {
+ return false;
+ }
+ },
+ handleTree(arr, value) {
+ let label = ''
+ for (let i = 0; i < arr.length; i++) {
+ if (arr[i].id == value) {
+ label = arr[i].name
+ return label
+ } else if (arr[i].children) {
+ label = this.handleTree(arr[i].children, value)
+ }
+ }
+ return label
+ },
+ main(row, val) {
+ if (val.method == undefined) return
+ else if (val.method == 'doDiy') {
+ if (val.id == 'update') { // 缂栬緫鎿嶄綔
+ this.upDia = true,
+ this.upData = this.HaveJson(row)
+ this.upHead = this.HaveJson(this.tableHead)
+ this.upHead.forEach((item, index) => {
+ if (this.data.cascaderField && this.data.cascaderField[item.label]) {
+ if (this.upData[item.label]) {
+ this.upData[item.label] = JSON.parse(this.upData[item.label])
+ } else {
+ this.upData[item.label] = []
+ }
+ }
+ })
+ this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime')
+ delete this.upData.orderBy
+ delete this.upData.createTime
+ delete this.upData.updateTime
+ delete this.upData.createUser
+ delete this.upData.updateUser
+ val.field.forEach(a => {
+ if (this.upData[a] === undefined) {
+ this.upHead.push({
+ value: a.split('=')[0],
+ label: a.split('=')[1]
+ })
+ } else {
+ delete this.upData[a]
+ for (var i = 0; i < this.upHead.length; i++) {
+ if (this.upHead[i].label == a) {
+ this.upHead.splice(i, 1);
+ i--
+ break
+ }
+ }
+ }
+ })
+ } else if (val.id == 'delete') { // 鍒犻櫎鎿嶄綔
+ if (this.delUrl == null) {
+ this.$message.error('璇风粰鍒犻櫎璇锋眰鍦板潃')
+ return
+ }
+ this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ }).then(() => {
+ this.$axios.post(this.delUrl, {
+ id: row.id
+ }).then(res => {
+ if (res.code === 201) {
+ return
+ }
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.selectList('page')
+ this.$emit('delete')
+ }).catch(e => {
+ this.$message.error('鍒犻櫎澶辫触')
+ })
+ }).catch(() => {})
+ }
+ } else if (val.id === 'parent') {
+ delete row.orderBy
+ this.$parent.$parent[val.method](row)
+ } else {
+ delete row.orderBy
+ this.$parent[val.method](row)
+ }
+ },
+ saveUpData() {
+ if (this.upUrl == null) {
+ this.$message.error('璇风粰淇敼璇锋眰鍦板潃')
+ return
+ }
+ for (var i = 0; i < this.data.requiredUp.length; i++) {
+ // 蹇呭~鏍¢獙
+ if (this.upData[this.data.requiredUp[i]] === null || this.upData[this.data.requiredUp[i]] === '') {
+ var list = this.upHead.filter(a => {
+ if (a.label == this.data.requiredUp[i]) return a
+ })
+ if (list[0].value == undefined) continue
+ this.$message.error(list[0].value + '鏄繀濉」')
+ return
+ }
+ }
+ for (var a in this.data.selectField) {
+ if (this.data.selectField[a].choose == true) {
+ this.upData[a] = JSON.stringify(this.upData[a])
+ }
+ }
+ for (var i = 0; i < this.upHead.length; i++) {
+ if(this.upHead[i].label == 'password'){
+ if(this.upData[this.upHead[i].label]){
+ const reg2 =/^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?])[a-zA-Z\d~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?]*$/;
+ if (!reg2.test(this.upData[this.upHead[i].label])) {
+ this.$message.error('瀵嗙爜蹇呴』鍖呮嫭鏁板瓧銆佸ぇ灏忓啓瀛楁瘝浠ュ強鐗规畩瀛楃')
+ return
+ }
+ }
+ }
+ if (this.data.cascaderField && this.data.cascaderField[this.upHead[i].label]) {
+ if (this.upData[this.upHead[i].label]) {
+ this.upData[this.upHead[i].label] = JSON.stringify(this.upData[this.upHead[i].label])
+ } else {
+ this.upData[this.upHead[i].label] = ''
+ }
+ }
+ }
+ this.upLoad = true
+ this.$axios.post(this.upUrl, this.upData, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ if (res.code === 201) {
+ this.upLoad = false
+ return
+ }
+ this.$message.success('淇敼鎴愬姛')
+ this.upDia = false
+ this.selectList('page')
+ this.$refs.eltable.doLayout();
+ this.upLoad = false
+ }).catch(e => {
+ this.$message.error('淇敼澶辫触')
+ this.upDia = false
+ this.upLoad = false
+ })
+ },
+ // 鎵撳紑鏂板寮规鍥炶皟
+ openAddDia(addUrl, param) {
+ this.addDia = true
+ this.addUrl = addUrl
+ this.param = param
+ this.upData = {}
+ this.tableHead.forEach((k, v) => {
+ if (k.label != 'orderBy' && k.label != 'createTime' && k.label != 'updateTime' && k.label != 'createUser' && k.label != 'updateUser')
+ this.upData[k.label] = null
+ })
+ this.upData = this.HaveJson(this.upData)
+ this.upHead = this.HaveJson(this.tableHead)
+ this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime')
+ var val = this.data.do.filter(a => a.id == 'update')[0]
+ if (val == undefined) {
+ val = {
+ field: []
+ }
+ }
+ val.field.forEach(a => {
+ if (JSON.stringify(this.upData[a]) === undefined) {
+ this.upHead.push({
+ value: a.split('=')[0],
+ label: a.split('=')[1]
+ })
+ } else {
+ delete this.upData[a]
+ for (var i = 0; i < this.upHead.length; i++) {
+ if (this.upHead[i].label == a) {
+ this.upHead.splice(i, 1);
+ i--
+ break
+ }
+ }
+ }
+ })
+ },
+ // 鏂板鍥炶皟
+ saveAddData() {
+ if (this.addUrl == null) {
+ this.$message.error('璇风粰娣诲姞璇锋眰鍦板潃')
+ return
+ }
+ for (var i = 0; i < this.data.requiredAdd.length; i++) {
+ if (this.upData[this.data.requiredAdd[i]] === null || this.upData[this.data.requiredAdd[i]] === '') {
+ var list = this.upHead.filter(a => {
+ if (a.label == this.data.requiredAdd[i]) return a
+ })
+ if (list[0].value == undefined) continue
+ this.$message.error(list[0].value + '鏄繀濉」')
+ return
+ }
+ }
+ this.addLoad = true
+ for (var a in this.data.selectField) {
+ if (this.data.selectField[a].choose == true) {
+ this.upData[a] = JSON.stringify(this.upData[a])
+ }
+ }
+ this.upHead.forEach((item, index) => {
+ if (this.data.cascaderField && this.data.cascaderField[item.label]) {
+ if (this.upData[item.label]) {
+ this.upData[item.label] = JSON.stringify(this.upData[item.label])
+ } else {
+ this.upData[item.label] = ''
+ }
+ }
+ })
+ if (this.param !== undefined && this.param !== null) {
+ for (let i in this.param) {
+ this.upData[i] = this.param[i]
+ }
+ }
+ this.$axios.post(this.addUrl, this.upData, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ if (res.code === 201) {
+ this.addLoad = false
+ return
+ }
+ this.$message.success('娣诲姞鎴愬姛')
+ this.addDia = false
+ this.selectList('page')
+ this.addLoad = false
+ }).catch(e => {
+ this.addDia = false
+ this.addLoad = false
+ })
+ },
+ openDownDia() {
+ this.downDia = true
+ },
+ downFile(type) {
+ if (this.downUrl == null) {
+ this.$message.error('璇风粰瀵煎嚭璇锋眰鍦板潃')
+ return
+ }
+ var page = this.HaveJson(this.page)
+ if (!type) {
+ page.current = 0
+ page.size = this.total
+ }
+ this.loading = true
+ this.$axios.post(this.downUrl, {
+ page: page,
+ entity: this.data.entity
+ }, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ if (res.code === 201) {
+ this.loading = false
+ return
+ }
+ this.downDia = false
+ this.loading = false
+ this.$message.success('瀵煎嚭鎴愬姛')
+ let eleLink = document.createElement('a')
+ eleLink.style.display = 'none'
+ eleLink.download = res.data
+ eleLink.href = this.javaApi + '/outPath/' + res.data
+ document.body.appendChild(eleLink)
+ eleLink.click()
+ document.body.removeChild(eleLink)
+ }).catch(e => {
+ console.log(e);
+ this.loading = false
+ this.$message.error('璇峰埛鏂伴〉闈㈠啀灏濊瘯')
+ })
+ },
+ openUpload() {
+ if (this.inputUrl == null) {
+ this.$message.error('璇风粰瀵煎叆璇锋眰鍦板潃')
+ return
+ }
+ this.uploadDia = true
+ },
+ beforeUpload(file, fileList) {
+ console.log(file.raw.type);
+ if (file.raw.type != (this.data.inputType===undefined?'text/csv':this.data.inputType)) {
+ this.$message.error('涓婁紶鏂囦欢鏍煎紡涓嶆纭�');
+ this.$refs.upload.clearFiles()
+ return false;
+ }
+ },
+ submitUpload() {
+ if (this.$refs.upload.uploadFiles.length == 0) {
+ this.$message.error('鏈�夋嫨鏂囦欢')
+ return
+ }
+ this.uploading = true
+ this.$refs.upload.submit();
+ },
+ onSuccess(response, file, fileList) {
+ this.$refs.upload.clearFiles()
+ this.uploadDia = false
+ this.uploading = false
+ if (response.code == 201) {
+ this.$message.error(response.message)
+ return
+ }
+ this.$message.success('涓婁紶鎴愬姛')
+ this.selectList()
+ },
+ onError(err, file, fileList) {
+ this.$message.error('涓婁紶澶辫触')
+ this.$refs.upload.clearFiles()
+ this.uploading = false
+ },
+ // 鎿嶄綔鎸夐挳缃伆鍒ゆ柇
+ isDisabled(label) {
+ if (this.data.disabledUp == undefined) {
+ return
+ }
+ for (var i = 0; i < this.data.disabledUp.length; i++) {
+ if (label == this.data.disabledUp[i]) {
+ return true
+ }
+ }
+ return false
+ },
+ getSummaries(param) {
+ const {
+ columns,
+ data
+ } = param;
+ const sums = [];
+ columns.forEach((column, index) => {
+ if (index === 0) {
+ sums[index] = '鍚堣';
+ return;
+ }
+ const values = data.map(item => Number(item[column.property]));
+ if (this.data.countFleid == undefined) {
+ sums[index] = ''
+ return
+ }
+ if (this.data.countFleid.filter(str => {
+ return str === column.property
+ }).length > 0) {
+ sums[index] = values.reduce((prev, curr) => {
+ const value = Number(curr);
+ if (!isNaN(value)) {
+ return prev + curr;
+ } else {
+ return prev;
+ }
+ }, 0);
+ sums[index] += '';
+ } else {
+ sums[index] = '';
+ }
+ });
+ return sums;
+ },
+ handleLinkEvent(row, val) {
+ if (val.method == 'doDiy') {
+ this.main(row, val)
+ } else {
+ this.$parent[val.method](row)
+ }
+ },
+ getWidth() {
+ let count = 0
+ this.data.do.forEach(a => {
+ count += a.font.length
+ })
+ return count * 15 + 60 + 'px'
+ },
+ handleSuccessUp(response, label) {
+ if (typeof label === 'string') {
+ if (response.code == 200) {
+ this.upData[label] = response.data.url;
+ }
+ } else {
+ if (response.code == 200) {
+ this.$message.success('涓婁紶鎴愬姛')
+ this.selectList()
+ }
+ }
+ },
+ handleCascader(e, label) {
+ this.upData[label] = e;
+ },
+ // 鎵归噺鍒犻櫎
+ batchDelete() {
+ if (this.multipleSelection && this.multipleSelection.length > 0) {
+ this.$confirm('鏄惁鍒犻櫎閫変腑鐨勬暟鎹�?', "璀﹀憡", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ }).then(() => {
+ this.$axios.post(this.delUrl, {
+ ids: JSON.stringify(this.multipleSelection.map(item => item.id))
+ }).then(res => {
+ if (res.code === 201) {
+ return
+ }
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.selectList('page')
+ }).catch(e => {
+ this.$message.error('鍒犻櫎澶辫触')
+ })
+ }).catch(() => {})
+ } else {
+ this.$message.error('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁')
+ }
+ },
+ // 鏃ュ伐鏃剁鐞嗚緟鍔╁伐鏃�--鎵归噺瀹℃牳鍜屾壒鍑�
+ batchCheck(e) {
+ if (this.multipleSelection && this.multipleSelection.length > 0) {
+ const list = JSON.parse(JSON.stringify(this.multipleSelection))
+ const state = e === 0 ? '涓嶆壒鍑�' : '宸叉壒鍑�'
+ let auxiliaryWorkingHoursDays = []
+ list.forEach(item => {
+ delete item.orderBy
+ item.state = state
+ auxiliaryWorkingHoursDays.push(item)
+ })
+ this.$axios.post(this.$api.auxiliaryWorkingHoursDay.approve, {auxiliaryWorkingHoursDays: auxiliaryWorkingHoursDays
+ },{
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }
+ ).then(res => {
+ if (res.code === 201) {
+ return
+ }
+ this.$parent.submitBatchCheckDialog()
+ this.$message.success('鎿嶄綔鎴愬姛')
+ })
+ } else {
+ this.$message.error('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�')
+ }
+ },
+ getRedColor(label,row){
+ if(this.data.cellSpecialStyle&&this.data.cellSpecialStyle.redColorByKey&&label.includes(this.data.cellSpecialStyle.redColorByKey)&&row[(label.replace(this.data.cellSpecialStyle.redColorByKey, ""))]){
+ return true
+ }else{
+ return false
+ }
+ }
+ }
+ }
+</script>
diff --git a/src/components/index/scroll-paging.vue b/src/components/index/scroll-paging.vue
new file mode 100644
index 0000000..9b460cc
--- /dev/null
+++ b/src/components/index/scroll-paging.vue
@@ -0,0 +1,110 @@
+<template>
+ <div class="scroll-pagination" ref="content" @scroll="onScroll">
+ <slot></slot>
+ <el-button
+ v-if="!finishLoding&&isLoding"
+ type="text"
+ style="display: flex; margin: 0 auto; color: #909399"
+ ><i class="el-icon-loading" style="font-size:20px"></i
+ ></el-button>
+ <el-button
+ type="text"
+ v-show="finishLoding"
+ style="display: flex; margin: 0 auto; color: #909399"
+ >宸茬粡娌℃湁鏇村鍟</el-button
+ >
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'ScrollPagination',
+ props: {
+ finishLoding: {
+ type:Boolean,
+ default:false
+ },
+ list:{
+ type:Array,
+ default:()=>[]
+ }
+ },
+ watch: {
+ list:{
+ deep:true,
+ handler(){
+ this.isLoding = false
+ console.log(this.isLoding)
+ }
+ }
+ },
+ data() {
+ return {
+ isLoding: false,
+ }
+ },
+ created(){
+ // 闃叉姈
+ this.onScroll = this.debounce(this.scrollFn,500);
+ // 鑺傛祦
+ // this.onScroll = this.throttle(this.scrollFn,1000);
+ },
+ mounted(){
+ },
+ methods: {
+ onScroll(){},
+ scrollFn() {
+ let content = this.$refs.content
+ // console.log(22222,content.scrollTop + content.clientHeight+1,content.scrollHeight)
+ if (content.scrollTop + content.clientHeight+2 >= content.scrollHeight) {
+ // console.log(1111,this.finishLoding)
+ if(!this.finishLoding){
+ this.loadMore()
+ }else{
+ this.isLoding = false
+ }
+ }
+ },
+ loadMore(){
+ console.log('婊氬姩浜�',this.isLoding)
+ if (this.isLoding) return
+ this.isLoding = true
+ setTimeout(() => {
+ this.$emit('load')
+ }, 500)
+ },
+ debounce(func, delay) {
+ let timer = null;
+ return function () {
+ if (timer) {
+ clearTimeout(timer);
+ timer = null;
+ }
+ timer = setTimeout(() => {
+ func(...arguments);
+ }, delay);
+ };
+ },
+ throttle(func, delay) {
+ let time = null;
+ return function () {
+ let args = Array.from(arguments);
+ if (time === null) {
+ time = setTimeout(() => {
+ func(...args);
+ clearTimeout(time);
+ time = null;
+ }, delay);
+ }
+ };
+ }
+ }
+}
+</script>
+
+<style scoped>
+.scroll-pagination {
+ height: 100%;
+ overflow-y: auto;
+}
+</style>
diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
index 66b33bf..d39aaa6 100644
--- a/src/layout/components/AppMain.vue
+++ b/src/layout/components/AppMain.vue
@@ -45,6 +45,7 @@
<style lang="scss" scoped>
.app-main {
/* 50= navbar 50 */
+ top: 90px;
min-height: calc(100vh - 50px);
width: 100%;
position: relative;
diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
index ad77fce..73d03a4 100644
--- a/src/layout/components/TagsView/index.vue
+++ b/src/layout/components/TagsView/index.vue
@@ -246,6 +246,9 @@
.tags-view-container {
height: 44px;
width: 100%;
+ position: fixed; /* 灏嗗ご閮ㄥ浐瀹� */
+ top: 50px; /* 鍦ㄩ《閮ㄥ浐瀹� */
+ z-index: 1000; /* 纭繚澶撮儴鍦ㄥ叾浠栧唴瀹逛箣涓� */
background: #fff;
border-bottom: 1px solid #d8dce5;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
diff --git a/src/views/index.vue b/src/views/index.vue
index 92a6482..88ee360 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -1,1108 +1,791 @@
<template>
- <div class="app-container home">
- <el-row :gutter="20">
- <el-col :sm="24" :lg="24">
- <blockquote class="text-warning" style="font-size: 14px">
- 闃块噷浜戞湇鍔″櫒鎶樻墸鍖�<el-link href="http://aly.ruoyi.vip" type="primary" target="_blank">鈽涒槢鐐规垜杩涘叆鈽氣槡</el-link> 鑵捐浜戞湇鍔″櫒绉掓潃鍖�<el-link href="http://txy.ruoyi.vip" type="primary" target="_blank">鈽涒槢鐐规垜杩涘叆鈽氣槡</el-link>
- </blockquote>
- <hr />
+ <div class="index">
+ <el-row :gutter="25">
+ <el-col :lg="14" :md="14" :sm="24" :xl="14" :xs="24">
+ <div class="left-1">
+ <div class="say">
+ <div style="display: flex;align-items: center;flex-wrap: wrap;">
+ <div class="say-1">{{user.name}} 鎮ㄥソ锛佺鎮ㄥ紑蹇冩瘡涓�澶�</div>
+ <div class="say-2">褰撳墠鏃堕棿锛� {{now}}</div>
+ </div>
+ </div>
+ </div>
+ <div v-loading="workLoading" class="left-2 card" style="overflow: hidden;">
+ <div v-for="(item,index) in workDay" :key="index" class="left-2-item">
+ <div class="left-item-title">
+ <span style="font-size: 18px;">{{ item }}</span>
+ <span style="font-size: 14px;color: #999999;">{{ weekdays[index] }}</span>
+ </div>
+ <div class="left-item-body">
+ <div v-for="(m,i) in workList[index]" :key="i" :class="{color0:m.type==0,color1:m.type==1,color2:m.type==2}" class="body-item">
+ <div>
+ <span style="font-size: 12px;margin-bottom: 17px;">{{ m.text }}</span>
+ <div style="display: flex">
+ <span class="body-item-name">{{ m.name }}</span>
+ <span v-if="m.insState == 0" class="body-item-insState" style="background-color: #909399;font-size: 12px;">寰呮楠�</span>
+ <span v-if="m.insState == 1" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">妫�楠屼腑</span>
+ <span v-if="m.insState == 2" class="body-item-insState" style="background-color: #67C23A;font-size: 12px;">宸叉楠�</span>
+ <span v-if="m.insState == 3" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">寰呭鏍�</span>
+ <span v-if="m.insState == 4" class="body-item-insState" style="background-color: #F56C6C;font-size: 9px;">澶嶆牳鏈�氳繃</span>
+ <span v-if="m.insState == 5" class="body-item-insState" style="background-color: #67C23A;font-size: 10px;">澶嶆牳閫氳繃</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </el-col>
+ <el-col :lg="10" :md="10" :sm="24" :xl="10" :xs="24">
+ <div class="right-1 card">
+ <div class="right-1-item">
+ <div class="img">
+ <img alt="" src="@/assets/index_image/index-0.svg">
+ </div>
+ <div class="mun">
+ <p style="font-size: 20px;">{{getNumberFourTypes.totalNumberOfMessages}}</p>
+ <p style="font-size: 14px;margin-bottom: 10px;">鎴戠殑寰呭姙</p>
+ </div>
+ </div>
+ <div class="right-1-item">
+ <div class="img">
+ <img alt="" src="@/assets/index_image/index-1.svg">
+ </div>
+ <div class="mun">
+ <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfReadMessages }}</p>
+ <p style="font-size: 14px;margin-bottom: 10px;">宸插姙浜嬪疁</p>
+ </div>
+ </div>
+ <div class="right-1-item">
+ <div class="img">
+ <img alt="" src="@/assets/index_image/index-2.svg">
+ </div>
+ <div class="mun">
+ <p style="font-size: 20px;">{{ getNumberFourTypes.remainingToDo }}</p>
+ <p style="font-size: 14px;margin-bottom: 10px;">鍓╀綑寰呭姙</p>
+ </div>
+ </div>
+ <div class="right-1-item">
+ <div class="img">
+ <img alt="" src="@/assets/index_image/index-3.svg">
+ </div>
+ <div class="mun">
+ <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfMessagesInThePastSevenDays }}</p>
+ <p style="font-size: 14px;margin-bottom: 10px;">杩戞湡浜嬪疁</p>
+ </div>
+ </div>
+ </div>
+ <div class="right-2 card">
+ <div class="right-2-title">
+ <span style="color: #333333;font-size: 16px;">鎴戠殑鏃ョ▼</span>
+ <span style="cursor: pointer;font-size: 12px;
+color: #3A7BFA;" @click="dialogVisible=true">娣诲姞鎴戠殑鏃ョ▼</span>
+ </div>
+ <div class="right-2-body">
+ <div class="calendar" style="width: 49%;">
+ <div class="control">
+ <el-button class="prevm" icon="el-icon-arrow-left" @click="prevMonth(calendarValue)"></el-button>
+ <span>{{ calendarValue.getFullYear()+'骞�'+(calendarValue.getMonth() + 1)+'鏈�' }}</span>
+ <el-button class="nextm" icon="el-icon-arrow-right" @click="nextMonth(calendarValue)"></el-button>
+ </div>
+ <el-calendar v-model="calendarValue">
+ <template
+ slot="dateCell"
+ slot-scope="{date, data}">
+ <span>
+ {{ data.day.split('-').slice(2)+'' }}
+ </span>
+ <!-- <el-badge v-if="data.isSelected" is-dot class="item">
+ </el-badge> -->
+ </template>
+ </el-calendar>
+ </div>
+ <div v-loading="scheduleLoading" class="right-2-list" style="width: 49%;height: 286px;">
+ <div v-for="(m,i) in listScheduleByMe" :key="i" class="list2-item">
+ <span>{{ m.scheduleTimes }}</span>
+ <el-tooltip :content="m.text" effect="dark" placement="top" style="margin-left: 10px;">
+ <p class="ellipsis-multiline" >{{ m.text }}</p>
+ </el-tooltip>
+ </div>
+ <span v-if="listScheduleByMe.length==0" style="color:rgb(144, 147, 153);font-size: 14px;text-align: center;margin: 120px 0;display: inline-block;width: 100%;">鏆傛棤鏁版嵁</span>
+ </div>
+ </div>
+ </div>
+ <div class="right-3 card" style="overflow: hidden;">
+ <div class="right-3-tab">
+ <!-- <div :class="{active:currentIndex==4}" class="tab-item" style="cursor: pointer;" @click="currentIndex=4">棰勮鎻愰啋</div>-->
+ <div :class="{active:currentIndex==5}" class="tab-item" style="cursor: pointer;" @click="currentIndexChange">CNAS閫氱煡閫氬憡</div>
+ </div>
+ <div v-loading="listLoading" class="right-3-list">
+ <scroll-pagination v-if="list.length>0||listLoading" :finishLoding="finishLoding" :list="list" @load="getList">
+ <div v-for="(m,i) in list" :key="i" class="list3-item">
+ <div class="list3-item-title">
+ <!-- <img alt="" src="../../../static/img/index-tip.svg">-->
+ <p style="color: #FF7756">{{ m.theme }}</p>
+ </div>
+ <div class="list3-item-info">
+ <p class="ellipsis-multiline" style="width: 73%;-webkit-line-clamp: 1;cursor: pointer;" @click="goNoticeDetail(m)">
+ <!-- 缂栧彿<span style="color:#3A7BFA;"> SB20240101-001 </span>鐨勮澶囧皢浜�2023-09-09 11:11:11杩囨湡 -->
+ {{ m.content }}
+ </p>
+ <p>{{ m.createTime }}</p>
+ </div>
+ </div>
+ </scroll-pagination>
+ <div v-if="list.length<1&&!listLoading" style="color:#909399;font-size:14px;text-align: center;margin-top:80px" >鏆傛棤鏁版嵁</div>
+ </div>
+ </div>
</el-col>
</el-row>
- <el-row :gutter="20">
- <el-col :sm="24" :lg="12" style="padding-left: 20px">
- <h2>鑻ヤ緷鍚庡彴绠$悊妗嗘灦</h2>
- <p>
- 涓�鐩存兂鍋氫竴娆惧悗鍙扮鐞嗙郴缁燂紝鐪嬩簡寰堝浼樼鐨勫紑婧愰」鐩絾鏄彂鐜版病鏈夊悎閫傝嚜宸辩殑銆備簬鏄埄鐢ㄧ┖闂蹭紤鎭椂闂村紑濮嬭嚜宸卞啓涓�濂楀悗鍙扮郴缁熴�傚姝ゆ湁浜嗚嫢渚濈鐞嗙郴缁燂紝濂瑰彲浠ョ敤浜庢墍鏈夌殑Web搴旂敤绋嬪簭锛屽缃戠珯绠$悊鍚庡彴锛岀綉绔欎細鍛樹腑蹇冿紝CMS锛孋RM锛孫A绛夌瓑锛屽綋鐒讹紝鎮ㄤ篃鍙互瀵瑰ス杩涜娣卞害瀹氬埗锛屼互鍋氬嚭鏇村己绯荤粺銆傛墍鏈夊墠绔悗鍙颁唬鐮佸皝瑁呰繃鍚庡崄鍒嗙簿绠�鏄撲笂鎵嬶紝鍑洪敊姒傜巼浣庛�傚悓鏃舵敮鎸佺Щ鍔ㄥ鎴风璁块棶銆傜郴缁熶細闄嗙画鏇存柊涓�浜涘疄鐢ㄥ姛鑳姐��
- </p>
- <p>
- <b>褰撳墠鐗堟湰:</b> <span>v{{ version }}</span>
- </p>
- <p>
- <el-tag type="danger">¥鍏嶈垂寮�婧�</el-tag>
- </p>
- <p>
- <el-button
- type="primary"
- size="mini"
- icon="el-icon-cloudy"
- plain
- @click="goTarget('https://gitee.com/y_project/RuoYi-Vue')"
- >璁块棶鐮佷簯</el-button
- >
- <el-button
- size="mini"
- icon="el-icon-s-home"
- plain
- @click="goTarget('http://ruoyi.vip')"
- >璁块棶涓婚〉</el-button
- >
- </p>
- </el-col>
-
- <el-col :sm="24" :lg="12" style="padding-left: 50px">
+ <el-dialog :visible.sync="dialogVisible" title="鏃ョ▼娣诲姞" width="400px">
+ <div class="body" style="max-height: 60vh;">
<el-row>
- <el-col :span="12">
- <h2>鎶�鏈�夊瀷</h2>
+ <el-col :span="22" class="search_thing">
+ <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>鏃堕棿锛�</div>
+ <div class="search_input">
+ <el-date-picker
+ v-model="query.time"
+ format="yyyy-MM-dd HH:mm:ss"
+ placeholder="閫夋嫨鏃ユ湡鏃堕棿"
+ size="small"
+ style="width: 100%;" type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
+ </el-date-picker>
+ </div>
+ </el-col>
+ <el-col :span="22" class="search_thing">
+ <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>鍐呭锛�</div>
+ <div class="search_input">
+ <el-input v-model="query.text" :rows="2"
+ placeholder="璇疯緭鍏ュ唴瀹�" size="small" type="textarea"></el-input>
+ </div>
</el-col>
</el-row>
- <el-row>
- <el-col :span="6">
- <h4>鍚庣鎶�鏈�</h4>
- <ul>
- <li>SpringBoot</li>
- <li>Spring Security</li>
- <li>JWT</li>
- <li>MyBatis</li>
- <li>Druid</li>
- <li>Fastjson</li>
- <li>...</li>
- </ul>
- </el-col>
- <el-col :span="6">
- <h4>鍓嶇鎶�鏈�</h4>
- <ul>
- <li>Vue</li>
- <li>Vuex</li>
- <li>Element-ui</li>
- <li>Axios</li>
- <li>Sass</li>
- <li>Quill</li>
- <li>...</li>
- </ul>
- </el-col>
- </el-row>
- </el-col>
- </el-row>
- <el-divider />
- <el-row :gutter="20">
- <el-col :xs="24" :sm="24" :md="12" :lg="8">
- <el-card class="update-log">
- <div slot="header" class="clearfix">
- <span>鑱旂郴淇℃伅</span>
- </div>
- <div class="body">
- <p>
- <i class="el-icon-s-promotion"></i> 瀹樼綉锛�<el-link
- href="http://www.ruoyi.vip"
- target="_blank"
- >http://www.ruoyi.vip</el-link
- >
- </p>
- <p>
- <i class="el-icon-user-solid"></i> QQ缇わ細<s> 婊�937441 </s> <s> 婊�887144332 </s>
- <s> 婊�180251782 </s> <s> 婊�104180207 </s> <s> 婊�186866453 </s> <s> 婊�201396349 </s>
- <s> 婊�101456076 </s> <s> 婊�101539465 </s> <s> 婊�264312783 </s> <s> 婊�167385320 </s>
- <s> 婊�104748341 </s> <s> 婊�160110482 </s> <s> 婊�170801498 </s> <s> 婊�108482800 </s>
- <s> 婊�101046199 </s> <s> 婊�136919097 </s> <s> 婊�143961921 </s> <s> 婊�174951577 </s>
- <s> 婊�161281055 </s> <s> 婊�138988063 </s> <s> 婊�151450850 </s> <s> 婊�224622315 </s>
- <s> 婊�287842588 </s> <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=HKz42pk2zQ1WUMbbRo50-N7tY4IDKKrj&authKey=ukBg3edmUbnmoo40xZCo6R1tYdTglYJ1nBFRW9gTHuZwLI1r8wgFT6cWUrAldwcr&noverify=0&group_code=187944233" target="_blank">187944233</a>
- </p>
- <p>
- <i class="el-icon-chat-dot-round"></i> 寰俊锛�<a
- href="javascript:;"
- >/ *鑻ヤ緷</a
- >
- </p>
- <p>
- <i class="el-icon-money"></i> 鏀粯瀹濓細<a
- href="javascript:;"
- class="鏀粯瀹濅俊鎭�"
- >/ *鑻ヤ緷</a
- >
- </p>
- </div>
- </el-card>
- </el-col>
- <el-col :xs="24" :sm="24" :md="12" :lg="8">
- <el-card class="update-log">
- <div slot="header" class="clearfix">
- <span>鏇存柊鏃ュ織</span>
- </div>
- <el-collapse accordion>
- <el-collapse-item title="v3.8.9 - 2024-12-30">
- <ol>
- <li>鐢ㄦ埛绠$悊鏀寔鍒嗘爮鎷栧姩</li>
- <li>淇敼涓婚鏍峰紡鏈湴璇诲彇</li>
- <li>鐢ㄦ埛澶村儚http(s)閾炬帴鏀寔</li>
- <li>鐢ㄦ埛绠$悊杩囨护鎺夊凡绂佺敤閮ㄩ棬</li>
- <li>鏀寔鑷畾涔夋樉绀篍xcel灞炴�у垪</li>
- <li>鎿嶄綔鏃ュ織璁板綍DELETE璇锋眰鍙傛暟</li>
- <li>鐧藉悕鍗曟敮鎸佸閫氶厤绗﹁矾寰勫尮閰�</li>
- <li>鏍℃鏂囦欢鍚嶆槸鍚﹀寘鍚壒娈婂瓧绗�</li>
- <li>浠g爜鐢熸垚鍒涘缓琛ㄥ睆钄借繚瑙勭殑瀛楃</li>
- <li>鑿滃崟闈㈠寘灞戝鑸敮鎸佸灞傜骇鏄剧ず</li>
- <li>Excel娉ㄨВ鏀寔wrapText鏄惁鍏佽鍐呭鎹㈣</li>
- <li>浠g爜鐢熸垚鏂板閰嶇疆鏄惁鍏佽鏂囦欢瑕嗙洊鍒版湰鍦�</li>
- <li>淇瑙掕壊绂佺敤鏉冮檺涓嶅け鏁堥棶棰�</li>
- <li>淇浠g爜鐢熸垚涓婄骇鑿滃崟鏄剧ず闂</li>
- <li>淇瀵煎嚭瀛愬垪琛ㄥ璞″彧鑳藉湪鏈�鍚庣殑闂</li>
- <li>淇TopNav鏃犳硶姝g‘鑾峰彇active鐨勯棶棰�</li>
- <li>淇榛樿鍏抽棴Tags-Views鍐呴摼椤甸潰鎵撲笉寮�</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈�6.6.5</li>
- <li>鍗囩骇tomcat鍒版渶鏂扮増鏈�9.0.96</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増2.0.53</li>
- <li>鍗囩骇logback鍒版渶鏂扮増鏈�1.2.13</li>
- <li>鍗囩骇spring-framework鍒版渶鏂扮増鏈�5.3.39</li>
- <li>鍗囩骇quill鍒版渶鏂扮増鏈�2.0.2</li>
- <li>鍗囩骇axios鍒版渶鏂扮増鏈�0.28.1</li>
- <li>浼樺寲韬唤璇佽劚鏁忔鍒�</li>
- <li>浼樺寲鏉冮檺鏇存柊鍚庡悓姝ョ紦瀛�</li>
- <li>浼樺寲鏌ヨ鏃堕棿鑼冨洿鏃ユ湡鏍煎紡</li>
- <li>浼樺寲鍙傛暟閿�兼洿鎹负澶氳鏂囨湰</li>
- <li>浼樺寲瀵煎叆甯︽爣棰樻枃浠跺叧闂竻鐞�</li>
- <li>浼樺寲涓婁紶鍥剧墖甯﹀煙鍚嶄笉澧炲姞鍓嶇紑</li>
- <li>浼樺寲鐗规畩瀛楃瀵嗙爜淇敼澶辫触闂</li>
- <li>浼樺寲鏃犵敤鎴风紪鍙蜂笉鏍¢獙鏁版嵁鏉冮檺</li>
- <li>浼樺寲TopNav鍐呴摼鑿滃崟鐐瑰嚮娌℃湁楂樹寒</li>
- <li>浼樺寲鑿滃崟绠$悊鍒囨崲Mini甯冨眬閿欎贡闂</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.8 - 2024-06-30">
- <ol>
- <li>鑿滃崟绠$悊鏂板璺敱鍚嶇О</li>
- <li>鏂板鏁版嵁鑴辨晱杩囨护娉ㄨВ</li>
- <li>鐢ㄦ埛瀵嗙爜鏂板闈炴硶瀛楃楠岃瘉</li>
- <li>闄愬埗鐢ㄦ埛鎿嶄綔鏁版嵁鏉冮檺鑼冨洿</li>
- <li>浠g爜鐢熸垚鏂板鍒涘缓琛ㄧ粨鏋勫姛鑳�</li>
- <li>瀹氭椂浠诲姟鐧藉悕鍗曢厤缃寖鍥寸缉灏�</li>
- <li>浼樺寲浠g爜鐢熸垚涓诲瓙琛ㄥ叧鑱旀煡璇㈡柟寮�</li>
- <li>Excel娉ㄨВ鏂板灞炴�omboReadDict</li>
- <li>Excel娉ㄨВColumnType绫诲瀷鏂板鏂囨湰</li>
- <li>鏂板鍥介檯鍖栬祫婧愭枃浠堕厤缃�</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈�6.6.1</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈�1.2.23</li>
- <li>鍗囩骇core-js鍒版渶鏂扮増鏈�3.37.1</li>
- <li>鏇存柊HttpUtils涓殑User-Agent</li>
- <li>鏇存柊compressionPlugin鍒�6.1.2浠ュ吋瀹筺ode18+</li>
- <li>鍗囩骇spring-security鍒板畨鍏ㄧ増鏈紝闃叉婕忔礊椋庨櫓</li>
- <li>鍗囩骇spring-framework鍒板畨鍏ㄧ増鏈紝闃叉婕忔礊椋庨櫓</li>
- <li>浼樺寲鑷畾涔塜SS娉ㄨВ鍖归厤鏂瑰紡</li>
- <li>浼樺寲缂撳瓨鐩戞帶閿悕鍒楄〃鎺掑簭鏄剧ず</li>
- <li>浼樺寲瀹氭椂浠诲姟鏃ュ織榛樿鎸夋椂闂存帓搴�</li>
- <li>浼樺寲榛樿鏂囦欢澶у皬瓒呰繃2G鏃犳晥鐨勯棶棰�</li>
- <li>浼樺寲鏌ヨ〃鐗规畩瀛楃浣跨敤鍙嶆枩鏉犺繘琛岃浆涔�</li>
- <li>浼樺寲瀹氭椂浠诲姟cron琛ㄨ揪寮忓皬鏃堕厤缃樉绀洪敊璇棶棰�</li>
- <li>浼樺寲澶氫釜鑷畾鏁版嵁鏉冮檺浣跨敤in鏌ヨ,閬垮厤澶氭鎷兼帴</li>
- <li>浼樺寲瀵煎叆Excel鏃惰缃甦ictType灞炴�ч噸澶嶆煡缂撳瓨闂</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.7 - 2023-12-08">
- <ol>
- <li>鎿嶄綔鏃ュ織璁板綍閮ㄩ棬鍚嶇О</li>
- <li>鍏ㄥ眬鏁版嵁瀛樺偍鐢ㄦ埛缂栧彿</li>
- <li>鏂板缂栫▼寮忓垽鏂祫婧愯闂潈闄�</li>
- <li>鎿嶄綔鏃ュ織鍒楄〃鏂板IP鍦板潃鏌ヨ</li>
- <li>瀹氭椂浠诲姟鏂板椤靛幓闄ょ姸鎬侀�夐」</li>
- <li>浠g爜鐢熸垚鏀寔閫夋嫨鍓嶇妯℃澘绫诲瀷</li>
- <li>鏄鹃殣鍒楃粍浠舵敮鎸佸閫夋寮瑰嚭绫诲瀷</li>
- <li>閫氱敤鎺掑簭灞炴�rderBy鍙傛暟闄愬埗闀垮害</li>
- <li>Excel鑷畾涔夋暟鎹鐞嗗櫒澧炲姞鍗曞厓鏍�/宸ヤ綔绨垮璞�</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈�6.4.8</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈�1.2.20</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増2.0.43</li>
- <li>鍗囩骇pagehelper鍒版渶鏂扮増1.4.7</li>
- <li>鍗囩骇commons.io鍒版渶鏂扮増鏈�2.13.0</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.15.14</li>
- <li>淇浜旂骇璺敱缂撳瓨鏃犳晥闂</li>
- <li>淇澶栭摼甯︾鍙e嚭鐜扮殑寮傚父</li>
- <li>淇鏍戞ā鏉跨埗绾х紪鐮佸彉閲忛敊璇�</li>
- <li>淇瀛楀吀琛ㄨ鎯呴〉闈㈡悳绱㈤棶棰�</li>
- <li>淇鍐呴摼iframe娌℃湁浼犻�掑弬鏁伴棶棰�</li>
- <li>淇鑷畾涔夊瓧鍏告牱寮忎笉鐢熸晥鐨勯棶棰�</li>
- <li>淇瀛楀吀缂撳瓨鍒犻櫎鏂规硶鍙傛暟閿欒闂</li>
- <li>淇Excel瀵煎叆鏁版嵁涓存椂鏂囦欢鏃犳硶鍒犻櫎闂</li>
- <li>淇鏈櫥褰曞甫鍙傛暟璁块棶鎴愬姛鍚庡弬鏁颁涪澶遍棶棰�</li>
- <li>淇HeaderSearch缁勪欢璺宠浆query鍙傛暟涓㈠け闂</li>
- <li>淇浠g爜鐢熸垚瀵煎叆鍚庡繀濉」涓庢暟鎹簱涓嶅尮閰嶉棶棰�</li>
- <li>淇Excels瀵煎叆鏃舵棤娉曡幏鍙栧埌dictType瀛楀吀鍊奸棶棰�</li>
- <li>浼樺寲涓嬭浇zip鏂规硶鏂板閬僵灞�</li>
- <li>浼樺寲澶村儚涓婁紶鍙傛暟鏂板鏂囦欢鍚嶇О</li>
- <li>浼樺寲瀛楀吀鏍囩鏀寔鑷畾涔夊垎闅旂</li>
- <li>浼樺寲鑿滃崟绠$悊绫诲瀷涓烘寜閽姸鎬佸彲閫�</li>
- <li>浼樺寲鍓嶇闃查噸澶嶆彁浜ゆ暟鎹ぇ灏忛檺鍒�</li>
- <li>浼樺寲TopNav鑿滃崟娌℃湁鍥炬爣svg涓嶆樉绀�</li>
- <li>浼樺寲鏁板瓧閲戦澶у啓杞崲绮惧害涓㈠け闂</li>
- <li>浼樺寲瀵屾枃鏈珽ditor缁勪欢妫�楠屽浘鐗囨牸寮�</li>
- <li>浼樺寲椤电鍦‵irefox娴忚鍣ㄨ閬尅鐨勯棶棰�</li>
- <li>浼樺寲涓汉涓績/鍩烘湰璧勬枡淇敼鏃舵暟鎹樉绀洪棶棰�</li>
- <li>浼樺寲缂撳瓨鐩戞帶鍥捐〃鏀寔璺熼殢灞忓箷澶у皬鑷�傚簲璋冩暣</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.6 - 2023-06-30">
- <ol>
- <li>鏀寔鐧诲綍IP榛戝悕鍗曢檺鍒�</li>
- <li>鏂板鐩戞帶椤甸潰鍥炬爣鏄剧ず</li>
- <li>鎿嶄綔鏃ュ織鏂板娑堣�楁椂闂村睘鎬�</li>
- <li>灞忚斀瀹氭椂浠诲姟bean杩濊鐨勫瓧绗�</li>
- <li>鏃ュ織绠$悊浣跨敤绱㈠紩鎻愬崌鏌ヨ鎬ц兘</li>
- <li>鏃ュ織娉ㄨВ鏀寔鎺掗櫎鎸囧畾鐨勮姹傚弬鏁�</li>
- <li>鏀寔鑷畾涔夐殣钘忓睘鎬у垪杩囨护瀛愬璞�</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈�6.4.3</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈�1.2.16</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増2.0.34</li>
- <li>鍗囩骇spring-boot鍒版渶鏂扮増鏈�2.5.15</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.15.13</li>
- <li>绉婚櫎apache/commons-fileupload渚濊禆</li>
- <li>淇椤甸潰鍒囨崲鏃跺竷灞�閿欎贡鐨勯棶棰�</li>
- <li>淇鍖垮悕娉ㄨВAnonymous绌烘寚閽堥棶棰�</li>
- <li>淇璺敱璺宠浆琚樆姝㈡椂鍐呴儴浜х敓鎶ラ敊淇℃伅闂</li>
- <li>淇isMatchedIp鐨勫弬鏁板垽鏂骇鐢熺┖鎸囬拡鐨勯棶棰�</li>
- <li>淇鐢ㄦ埛澶氳鑹叉暟鎹潈闄愬彲鑳藉嚭鐜版潈闄愭姮鍗囩殑鎯呭喌</li>
- <li>淇寮�鍚疶opNav鍚庝竴绾ц彍鍗曡矾鐢卞弬鏁拌缃棤鏁堥棶棰�</li>
- <li>淇DictTag缁勪欢value娌℃湁鍖归厤鐨勫�兼椂鍒欏睍绀簐alue</li>
- <li>浼樺寲鏂囦欢涓嬭浇鍑虹幇鐨勫紓甯�</li>
- <li>浼樺寲閫夋嫨鍥炬爣缁勪欢楂樹寒鍥炴樉</li>
- <li>浼樺寲寮圭獥鍚庡鑸爮鍋忕Щ鐨勯棶棰�</li>
- <li>浼樺寲淇敼瀵嗙爜鏃ュ織瀛樺偍鏄庢枃闂</li>
- <li>浼樺寲椤电鏍忓叧闂叾浠栧嚭鐜扮殑寮傚父闂</li>
- <li>浼樺寲椤电鍏抽棴宸︿晶閫夐」鎺掗櫎棣栭〉閫夐」</li>
- <li>浼樺寲鍏抽棴褰撳墠tab椤佃烦杞渶鍙充晶tab椤�</li>
- <li>浼樺寲缂撳瓨鍒楄〃娓呴櫎鎿嶄綔鎻愮ず涓嶅彉鐨勯棶棰�</li>
- <li>浼樺寲瀛楃鏈娇鐢ㄤ笅鍒掔嚎涓嶈繘琛岄┘宄板紡澶勭悊</li>
- <li>浼樺寲鐢ㄦ埛瀵煎叆鏇存柊鏃堕渶鑾峰彇鐢ㄦ埛缂栧彿闂</li>
- <li>浼樺寲渚ц竟鏍忕殑骞冲彴鏍囬涓嶸UE_APP_TITLE淇濇寔鍚屾</li>
- <li>浼樺寲瀵煎嚭Excel鏃惰缃甦ictType灞炴�ч噸澶嶆煡缂撳瓨闂</li>
- <li>杩炴帴姹燚ruid鏀寔鏂扮殑閰嶇疆connectTimeout鍜宻ocketTimeout</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.5 - 2023-01-01">
- <ol>
- <li>瀹氭椂浠诲姟杩濊鐨勫瓧绗�</li>
- <li>閲嶇疆鏃跺彇娑堥儴闂ㄩ�変腑</li>
- <li>鏂板杩斿洖璀﹀憡娑堟伅鎻愮ず</li>
- <li>蹇界暐涓嶅繀瑕佺殑灞炴�ф暟鎹繑鍥�</li>
- <li>淇敼鍙傛暟閿悕鏃剁Щ闄ゅ墠缂撳瓨閰嶇疆</li>
- <li>瀵煎叆鏇存柊鐢ㄦ埛鏁版嵁鍓嶆牎楠屾暟鎹潈闄�</li>
- <li>鍏煎Excel涓嬫媺妗嗗唴瀹硅繃澶氭棤娉曟樉绀虹殑闂</li>
- <li>鍗囩骇echarts鍒版渶鏂扮増鏈�5.4.0</li>
- <li>鍗囩骇core-js鍒版渶鏂扮増鏈�3.25.3</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈�6.4.0</li>
- <li>鍗囩骇kaptcha鍒版渶鏂扮増2.3.3</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈�1.2.15</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増2.0.20</li>
- <li>鍗囩骇pagehelper鍒版渶鏂扮増1.4.6</li>
- <li>浼樺寲寮圭獥鍐呭杩囧灞曠ず涓嶅叏闂</li>
- <li>浼樺寲swagger-ui闈欐�佽祫婧愪娇鐢ㄧ紦瀛�</li>
- <li>寮�鍚疶opNav娌℃湁瀛愯彍鍗曢殣钘忎晶杈规爮</li>
- <li>鍒犻櫎fuse鏃犳晥閫夐」maxPatternLength</li>
- <li>浼樺寲瀵煎嚭瀵硅薄鐨勫瓙鍒楄〃涓虹┖浼氬嚭鐜癧]闂</li>
- <li>浼樺寲缂栬緫澶村儚鏃堕�忔槑閮ㄥ垎浼氬彉鎴愰粦鑹查棶棰�</li>
- <li>浼樺寲灏忓睆骞曚笂淇敼澶村儚鐣岄潰甯冨眬閿欎綅鐨勯棶棰�</li>
- <li>淇浠g爜鐢熸垚鍕鹃�夊睘鎬ф棤鏁堥棶棰�</li>
- <li>淇鏂囦欢涓婁紶缁勪欢鏍煎紡楠岃瘉闂</li>
- <li>淇鍥炴樉鏁版嵁瀛楀吀鏁扮粍寮傚父闂</li>
- <li>淇sheet瓒呭嚭鏈�澶ц鏁板紓甯搁棶棰�</li>
- <li>淇Log娉ㄨВGET璇锋眰璁板綍涓嶅埌鍙傛暟闂</li>
- <li>淇璋冨害鏃ュ織鐐瑰嚮澶氭鏁版嵁涓嶅彉鍖栫殑闂</li>
- <li>淇涓婚棰滆壊鍦―rawer缁勪欢涓嶄細鍔犺浇闂</li>
- <li>淇鏂囦欢鍚嶅寘鍚壒娈婂瓧绗︾殑鏂囦欢鏃犳硶涓嬭浇闂</li>
- <li>淇table涓洿澶氭寜閽垏鎹富棰樿壊鏈敓鏁堜慨澶嶉棶棰�</li>
- <li>淇鏌愪簺鐗规�х殑鐜鐢熸垚浠g爜鍙樹贡鐮乀XT鏂囦欢闂</li>
- <li>淇浠g爜鐢熸垚鍥剧墖/鏂囦欢/鍗曢�夋椂閫夋嫨蹇呭~鏃犳硶鏍¢獙闂</li>
- <li>淇鏌愪簺鐗规�х殑鎯呭喌鐢ㄦ埛缂栬緫瀵硅瘽妗嗕腑瑙掕壊鍜岄儴闂ㄦ棤娉曚慨鏀归棶棰�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.4 - 2022-09-26">
- <ol>
- <li>鏁版嵁閫昏緫鍒犻櫎涓嶈繘琛屽敮涓�楠岃瘉</li>
- <li>Excel娉ㄨВ鏀寔瀵煎嚭瀵硅薄鐨勫瓙鍒楄〃鏂规硶</li>
- <li>Excel娉ㄨВ鏀寔鑷畾涔夐殣钘忓睘鎬у垪</li>
- <li>Excel娉ㄨВ鏀寔backgroundColor灞炴�ц缃儗鏅壊</li>
- <li>鏀寔閰嶇疆瀵嗙爜鏈�澶ч敊璇鏁�/閿佸畾鏃堕棿</li>
- <li>鐧诲綍鏃ュ織鏂板瑙i攣璐︽埛鍔熻兘</li>
- <li>閫氱敤涓嬭浇鏂规硶鏂板config閰嶇疆閫夐」</li>
- <li>鏀寔澶氭潈闄愬瓧绗﹀尮閰嶈鑹叉暟鎹潈闄�</li>
- <li>椤甸潰鍐呭祵iframe鍒囨崲tab涓嶅埛鏂版暟鎹�</li>
- <li>鎿嶄綔鏃ュ織璁板綍鏀寔鎺掗櫎鏁忔劅灞炴�у瓧娈�</li>
- <li>淇澶氭枃浠朵笂浼犳姤閿欏嚭鐜扮殑寮傚父闂</li>
- <li>淇鍥剧墖棰勮缁勪欢src灞炴�т负null鍊兼帶鍒跺彴鎶ラ敊闂</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈�6.2.2</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増2.0.14</li>
- <li>鍗囩骇pagehelper鍒版渶鏂扮増1.4.3</li>
- <li>鍗囩骇core-js鍒版渶鏂扮増鏈�3.25.2</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.15.10</li>
- <li>浼樺寲浠诲姟杩囨湡涓嶆墽琛岃皟搴�</li>
- <li>浼樺寲瀛楀吀鏁版嵁浣跨敤store瀛樺彇</li>
- <li>浼樺寲淇敼璧勬枡澶村儚琚鐩栫殑闂</li>
- <li>浼樺寲淇敼鐢ㄦ埛鐧诲綍璐﹀彿閲嶅楠岃瘉</li>
- <li>浼樺寲浠g爜鐢熸垚鍚屾鍚庡�糔ULL闂</li>
- <li>浼樺寲瀹氭椂浠诲姟鏀寔鎵ц鐖剁被鏂规硶</li>
- <li>浼樺寲鐢ㄦ埛涓汉淇℃伅鎺ュ彛闃叉淇敼閮ㄩ棬</li>
- <li>浼樺寲甯冨眬璁剧疆浣跨敤el-drawer鎶藉眽鏄剧ず</li>
- <li>浼樺寲娌℃湁鏉冮檺鐨勭敤鎴风紪杈戦儴闂ㄧ己灏戞暟鎹�</li>
- <li>浼樺寲鏃ュ織娉ㄨВ璁板綍闄愬埗璇锋眰鍦板潃鐨勯暱搴�</li>
- <li>浼樺寲excel/scale灞炴�у鍑哄崟鍏冩牸鏁板�肩被鍨�</li>
- <li>浼樺寲鏃ュ織鎿嶄綔涓噸缃寜閽椂閲嶅鏌ヨ鐨勯棶棰�</li>
- <li>浼樺寲澶氫釜鐩稿悓瑙掕壊鏁版嵁瀵艰嚧鏉冮檺SQL閲嶅闂</li>
- <li>浼樺寲琛ㄦ牸涓婂彸渚у伐鍏锋潯锛堟悳绱㈡寜閽樉闅�&鍙充晶鏍峰紡鍑稿嚭锛�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.3 - 2022-06-27">
- <ol>
- <li>鏂板缂撳瓨鍒楄〃鑿滃崟鍔熻兘</li>
- <li>浠g爜鐢熸垚鏍戣〃鏂板(灞曞紑/鎶樺彔)</li>
- <li>Excel娉ㄨВ鏀寔color瀛椾綋棰滆壊</li>
- <li>鏂板Anonymous鍖垮悕璁块棶涓嶉壌鏉冩敞瑙�</li>
- <li>鐢ㄦ埛澶村儚涓婁紶闄愬埗鍙兘涓哄浘鐗囨牸寮�</li>
- <li>鎺ュ彛浣跨敤娉涘瀷浣垮叾鐪嬪埌鍝嶅簲灞炴�у瓧娈�</li>
- <li>妫�鏌ュ畾鏃朵换鍔ean鎵�鍦ㄥ寘鍚嶆槸鍚︿负鐧藉悕鍗曢厤缃�</li>
- <li>娣诲姞椤电openPage鏀寔浼犻�掑弬鏁�</li>
- <li>鐢ㄦ埛缂撳瓨淇℃伅娣诲姞閮ㄩ棬ancestors绁栫骇鍒楄〃</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.15.8</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈�6.1.6</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈�1.2.11</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増2.0.8</li>
- <li>鍗囩骇spring-boot鍒版渶鏂扮増鏈�2.5.14</li>
- <li>闄嶇骇jsencrypt鐗堟湰鍏煎IE娴忚鍣�</li>
- <li>鍒犻櫎澶氫綑鐨剆alt瀛楁</li>
- <li>鏂板鑾峰彇涓嶅甫鍚庣紑鏂囦欢鍚嶇О鏂规硶</li>
- <li>鏂板鑾峰彇閰嶇疆鏂囦欢涓殑灞炴�у�兼柟娉�</li>
- <li>鏂板鍐呭缂栫爜/瑙g爜鏂逛究鎻掍欢闆嗘垚浣跨敤</li>
- <li>瀛楀吀绫诲瀷蹇呴』浠ュ瓧姣嶅紑澶达紝涓斿彧鑳戒负锛堝皬鍐欏瓧姣嶏紝鏁板瓧锛屼笅婊戠嚎锛�</li>
- <li>浼樺寲璁剧疆鍒嗛〉鍙傛暟榛樿鍊�</li>
- <li>浼樺寲瀵圭┖瀛楃涓插弬鏁板鐞嗙殑杩囨护</li>
- <li>浼樺寲鏄剧ず椤哄簭orderNum绫诲瀷涓烘暣鍨�</li>
- <li>浼樺寲琛ㄥ崟鏋勫缓鎸夐挳涓嶆樉绀烘鍒欐牎楠�</li>
- <li>浼樺寲瀛楀吀鏁版嵁鍥炴樉鏍峰紡涓嬫媺妗嗘樉绀哄��</li>
- <li>浼樺寲R鍝嶅簲鎴愬姛鐘舵�佺爜涓庡叏灞�淇濇寔涓�鑷�</li>
- <li>浼樺寲druid寮�鍚痺all杩囨护鍣ㄥ嚭鐜扮殑寮傚父闂</li>
- <li>浼樺寲鐢ㄦ埛绠$悊宸︿晶鏍戝瀷缁勪欢澧炲姞閫変腑楂樹寒淇濇寔</li>
- <li>浼樺寲鏂板鐢ㄦ埛涓庤鑹蹭俊鎭�&鐢ㄦ埛涓庡矖浣嶄俊鎭�昏緫</li>
- <li>浼樺寲榛樿涓嶅惎鐢ㄥ帇缂╂枃浠剁紦瀛橀槻姝ode_modules杩囧ぇ</li>
- <li>淇瀛楀吀鏁版嵁鏄剧ず涓嶅叏闂</li>
- <li>淇鎿嶄綔鏃ュ織鏌ヨ绫诲瀷鏉′欢涓�0鏃朵細鏌ュ埌鎵�鏈夋暟鎹�</li>
- <li>淇Excel娉ㄨВprompt/combo鍚屾椂浣跨敤涓嶇敓鏁堥棶棰�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.2 - 2022-04-01">
- <ol>
- <li>鍓嶇鏀寔璁剧疆鏄惁闇�瑕侀槻姝㈡暟鎹噸澶嶆彁浜�</li>
- <li>寮�鍚疶opNav娌℃湁瀛愯彍鍗曟儏鍐甸殣钘忎晶杈规爮</li>
- <li>渚ц竟鏍忚彍鍗曞悕绉拌繃闀挎偓鍋滄樉绀烘爣棰�</li>
- <li>鐢ㄦ埛璁块棶鎺у埗鏃舵牎楠屾暟鎹潈闄愶紝闃叉瓒婃潈</li>
- <li>瀵煎嚭Excel鏃跺睆钄藉叕寮忥紝闃叉CSV娉ㄥ叆椋庨櫓</li>
- <li>缁勪欢ImagePreview鏀寔澶氬浘棰勮鏄剧ず</li>
- <li>缁勪欢ImageUpload鏀寔澶氬浘鍚屾椂閫夋嫨涓婁紶</li>
- <li>缁勪欢FileUpload鏀寔澶氭枃浠跺悓鏃堕�夋嫨涓婁紶</li>
- <li>鏈嶅姟鐩戞帶鏂板杩愯鍙傛暟淇℃伅鏄剧ず</li>
- <li>瀹氭椂浠诲姟鐩爣瀛楃涓茶繃婊ょ壒娈婂瓧绗�</li>
- <li>瀹氭椂浠诲姟鐩爣瀛楃涓查獙璇佸寘鍚嶇櫧鍚嶅崟</li>
- <li>浠g爜鐢熸垚鍒楄〃鍥剧墖鏀寔棰勮</li>
- <li>浠g爜鐢熸垚缂栬緫淇敼鎵撳紑鏂伴〉绛�</li>
- <li>浠g爜鐢熸垚鏂板Java绫诲瀷Boolean</li>
- <li>浠g爜鐢熸垚瀛愯〃鏀寔鏃ユ湡/瀛楀吀閰嶇疆</li>
- <li>浠g爜鐢熸垚鍚屾淇濈暀蹇呭~/绫诲瀷閫夐」</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈�6.1.2</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増1.2.80</li>
- <li>鍗囩骇pagehelper鍒版渶鏂扮増1.4.1</li>
- <li>鍗囩骇spring-boot鍒版渶鏂扮増鏈�2.5.11</li>
- <li>鍗囩骇spring-boot-mybatis鍒版渶鏂扮増2.2.2</li>
- <li>娣诲姞閬楁紡鐨勫垎椤靛弬鏁板悎鐞嗗寲灞炴��</li>
- <li>淇敼npm鍗冲皢杩囨湡鐨勬敞鍐屾簮鍦板潃</li>
- <li>淇鍒嗛〉缁勪欢璇锋眰涓ゆ闂</li>
- <li>淇閫氱敤鏂囦欢涓嬭浇鎺ュ彛璺ㄥ煙闂</li>
- <li>淇Xss娉ㄨВ瀛楁鍊间负绌烘椂鐨勫紓甯搁棶棰�</li>
- <li>淇閫夐」鍗$偣鍑诲彸閿埛鏂颁涪澶卞弬鏁伴棶棰�</li>
- <li>淇琛ㄥ崟娓呴櫎鍏冪礌浣嶇疆鏈瀭鐩村眳涓棶棰�</li>
- <li>淇鏈嶅姟鐩戞帶涓繍琛屽弬鏁版樉绀烘潯浠堕敊璇�</li>
- <li>淇瀵煎叆Excel鏃跺瓧鍏稿瓧娈电被鍨嬩负Long杞箟涓虹┖闂</li>
- <li>淇鐧诲綍瓒呮椂鍒锋柊椤甸潰璺宠浆鐧诲綍椤甸潰杩樻彁绀洪噸鏂扮櫥褰曢棶棰�</li>
- <li>浼樺寲鍔犺浇瀛楀吀缂撳瓨鏁版嵁</li>
- <li>浼樺寲IP鍦板潃鑾峰彇鍒板涓殑闂</li>
- <li>浼樺寲浠诲姟闃熷垪婊℃椂浠诲姟鎷掔粷绛栫暐</li>
- <li>浼樺寲鏂囦欢涓婁紶鍏煎Weblogic鐜</li>
- <li>浼樺寲瀹氭椂浠诲姟榛樿淇濆瓨鍒板唴瀛樹腑鎵ц</li>
- <li>浼樺寲閮ㄩ棬淇敼缂╂斁鍚庡嚭鐜扮殑閿欎綅闂</li>
- <li>浼樺寲Excel鏍煎紡鍖栦笉鍚岀被鍨嬬殑鏃ユ湡瀵硅薄</li>
- <li>浼樺寲鑿滃崟琛ㄥ叧閿瓧瀵艰嚧鐨勬彃浠舵姤閿欓棶棰�</li>
- <li>浼樺寲Oracle鐢ㄦ埛澶村儚鍒椾负绌烘椂涓嶆樉绀洪棶棰�</li>
- <li>浼樺寲椤甸潰鑻ユ湭鍖归厤鍒板瓧鍏告爣绛惧垯杩斿洖鍘熷瓧鍏稿��</li>
- <li>浼樺寲淇鐧诲綍澶辨晥鍚庡娆¤姹傛彁绀哄娆″脊绐楅棶棰�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.1 - 2022-01-01">
- <ol>
- <li>鏂板Vue3鍓嶇浠g爜鐢熸垚妯℃澘</li>
- <li>鏂板鍥剧墖棰勮缁勪欢</li>
- <li>鏂板鍘嬬缉鎻掍欢瀹炵幇鎵撳寘Gzip</li>
- <li>鑷畾涔墄ss鏍¢獙娉ㄨВ瀹炵幇</li>
- <li>鑷畾涔夋枃瀛楀鍒跺壀璐存寚浠�</li>
- <li>浠g爜鐢熸垚棰勮鏀寔澶嶅埗鍐呭</li>
- <li>璺敱鏀寔鍗曠嫭閰嶇疆鑿滃崟鎴栬鑹叉潈闄�</li>
- <li>鐢ㄦ埛绠$悊閮ㄩ棬鏌ヨ閫夋嫨鑺傜偣鍚庡垎椤靛弬鏁板垵濮�</li>
- <li>淇鐢ㄦ埛鍒嗛厤瑙掕壊灞炴�ч敊璇�</li>
- <li>淇鎵撳寘鍚庡瓧浣撳浘鏍囧伓鐜扮殑涔辩爜闂</li>
- <li>淇鑿滃崟绠$悊閲嶇疆琛ㄥ崟鍑虹幇鐨勯敊璇�</li>
- <li>淇鐗堟湰宸紓瀵艰嚧鐨勬噿鍔犺浇鎶ラ敊闂</li>
- <li>淇Cron缁勪欢涓懆鍥炴樉闂</li>
- <li>淇瀹氭椂浠诲姟澶氬弬鏁伴�楀彿鍒嗛殧鐨勯棶棰�</li>
- <li>淇鏍规嵁ID鏌ヨ鍒楄〃鍙兘鍑虹幇鐨勪富閿孩鍑洪棶棰�</li>
- <li>淇tomcat閰嶇疆鍙傛暟宸茶繃鏈熼棶棰�</li>
- <li>鍗囩骇clipboard鍒版渶鏂扮増鏈�2.0.8</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈瑅5.8.6</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増1.2.79</li>
- <li>鍗囩骇spring-boot鍒版渶鏂扮増鏈�2.5.8</li>
- <li>鍗囩骇log4j2鍒�2.17.1锛岄槻姝㈡紡娲為闄�</li>
- <li>浼樺寲涓嬭浇瑙f瀽blob寮傚父鎻愮ず</li>
- <li>浼樺寲浠g爜鐢熸垚瀛楀吀缁勯噸澶嶉棶棰�</li>
- <li>浼樺寲鏌ヨ鐢ㄦ埛鐨勮鑹茬粍&宀椾綅缁勪唬鐮�</li>
- <li>浼樺寲瀹氭椂浠诲姟cron琛ㄨ揪寮忓皬鏃惰缃�24</li>
- <li>浼樺寲鐢ㄦ埛瀵煎叆鎻愮ず婧㈠嚭鍒欐樉绀烘粴鍔ㄦ潯</li>
- <li>浼樺寲闃查噸澶嶆彁浜ゆ爣璇嗙粍鍚堜负(key+url+header)</li>
- <li>浼樺寲鍒嗛〉鏂规硶璁剧疆鎴愰�氱敤鏂逛究鐏垫椿璋冪敤</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.8.0 - 2021-12-01">
- <ol>
- <li>鏂板閰嶅骞跺悓姝ョ殑Vue3鍓嶇鐗堟湰</li>
- <li>鏂板閫氱敤鏂规硶绠�鍖栨ā鎬�/缂撳瓨/涓嬭浇/鏉冮檺/椤电浣跨敤</li>
- <li>浼樺寲瀵煎嚭鏁版嵁/浣跨敤閫氱敤涓嬭浇鏂规硶</li>
- <li>Excel娉ㄨВ鏀寔鑷畾涔夋暟鎹鐞嗗櫒</li>
- <li>Excel娉ㄨВ鏀寔瀵煎叆瀵煎嚭鏍囬淇℃伅</li>
- <li>Excel瀵煎叆鏀寔@Excels娉ㄨВ</li>
- <li>鏂板缁勪欢data-dict锛岀畝鍖栨暟鎹瓧鍏镐娇鐢�</li>
- <li>鏂板Jaxb渚濊禆锛岄槻姝dk8浠ヤ笂鍑虹幇鐨勫吋瀹归敊璇�</li>
- <li>鐢熶骇鐜浣跨敤璺敱鎳掑姞杞芥彁鍗囬〉闈㈠搷搴旈�熷害</li>
- <li>淇浜旂骇浠ヤ笂鑿滃崟鍑虹幇鐨�404闂</li>
- <li>闃查噸鎻愪氦娉ㄨВ鏀寔閰嶇疆闂撮殧鏃堕棿/鎻愮ず娑堟伅</li>
- <li>鏃ュ織娉ㄨВ鏂板鏄惁淇濆瓨鍝嶅簲鍙傛暟</li>
- <li>浠诲姟灞忚斀杩濊瀛楃&鍙傛暟蹇界暐鍙屽紩鍙蜂腑鐨勯�楀彿</li>
- <li>鍗囩骇SpringBoot鍒版渶鏂扮増鏈�2.5.6</li>
- <li>鍗囩骇pagehelper鍒版渶鏂扮増1.4.0</li>
- <li>鍗囩骇spring-boot-mybatis鍒版渶鏂扮増2.2.0</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈瑅5.8.2</li>
- <li>鍗囩骇druid鍒版渶鏂扮増1.2.8</li>
- <li>鍗囩骇velocity鍒版渶鏂扮増鏈�2.3</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増1.2.78</li>
- <li>鍗囩骇axios鍒版渶鏂扮増鏈�0.24.0</li>
- <li>鍗囩骇dart-sass鍒扮増鏈�1.32.13</li>
- <li>鍗囩骇core-js鍒版渶鏂扮増鏈�3.19.1</li>
- <li>鍗囩骇jsencrypt鍒版渶鏂扮増鏈�3.2.1</li>
- <li>鍗囩骇js-cookie鍒版渶鏂扮増鏈�3.0.1</li>
- <li>鍗囩骇file-saver鍒版渶鏂扮増鏈�2.0.5</li>
- <li>鍗囩骇sass-loader鍒版渶鏂扮増鏈�10.1.1</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.15.6</li>
- <li>鏂板sendGet鏃犲弬璇锋眰鏂规硶</li>
- <li>绂佺敤el-tag缁勪欢鐨勬笎鍙樺姩鐢�</li>
- <li>浠g爜鐢熸垚鐐瑰嚮棰勮閲嶇疆婵�娲籺ab</li>
- <li>AjaxResult閲嶅啓put鏂规硶锛屼互鏂逛究閾惧紡璋冪敤</li>
- <li>浼樺寲鐧诲綍/楠岃瘉鐮佽姹俬eaders涓嶈缃畉oken</li>
- <li>浼樺寲鐢ㄦ埛涓汉淇℃伅鎺ュ彛闃叉淇敼鐢ㄦ埛鍚�</li>
- <li>浼樺寲Cron琛ㄨ揪寮忕敓鎴愬櫒鍏抽棴鏃堕攢姣侀伩鍏嶇紦瀛�</li>
- <li>浼樺寲娉ㄥ唽鎴愬姛鎻愮ず娑堟伅绫诲瀷success</li>
- <li>浼樺寲aop璇硶锛屼娇鐢╯pring鑷姩娉ㄥ叆娉ㄨВ</li>
- <li>浼樺寲璁板綍鐧诲綍淇℃伅锛岀Щ闄や笉蹇呰鐨勪慨鏀�</li>
- <li>浼樺寲mybatis鍏ㄥ眬榛樿鐨勬墽琛屽櫒</li>
- <li>浼樺寲Excel瀵煎叆鍥剧墖鍙兘鍑虹幇鐨勫紓甯�</li>
- <li>淇浠g爜鐢熸垚妯℃澘涓诲瓙琛ㄥ垹闄ょ己灏戜簨鍔�</li>
- <li>淇鏃ュ織璁板綍鍙兘鍑虹幇鐨勮浆鎹㈠紓甯�</li>
- <li>淇浠g爜鐢熸垚澶嶉�夋瀛楀吀閬楁紡闂</li>
- <li>淇鍏抽棴xss鍔熻兘瀵艰嚧鍙噸澶嶈RepeatableFilter澶辨晥</li>
- <li>淇瀛楃涓叉棤娉曡鍙嶈浆涔夐棶棰�</li>
- <li>淇鍚庣涓诲瓙琛ㄤ唬鐮佹ā鏉挎柟娉曞悕鐢熸垚閿欒闂</li>
- <li>淇xss杩囨护鍚庢牸寮忓嚭鐜扮殑寮傚父</li>
- <li>淇swagger娌℃湁鎸囧畾dataTypeClass瀵艰嚧鍚姩鍑虹幇warn鏃ュ織</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.7.0 - 2021-09-13">
- <ol>
- <li>鍙傛暟绠$悊鏀寔閰嶇疆楠岃瘉鐮佸紑鍏�</li>
- <li>鏂板鏄惁寮�鍚敤鎴锋敞鍐屽姛鑳�</li>
- <li>瀹氭椂浠诲姟鏀寔鍦ㄧ嚎鐢熸垚cron琛ㄨ揪寮�</li>
- <li>鑿滃崟绠$悊鏀寔閰嶇疆璺敱鍙傛暟</li>
- <li>鏀寔鑷畾涔夋敞瑙e疄鐜版帴鍙i檺娴�</li>
- <li>Excel娉ㄨВ鏀寔Image鍥剧墖瀵煎叆</li>
- <li>鑷畾涔夊脊灞傛孩鍑烘粴鍔ㄦ牱寮�</li>
- <li>鑷畾涔夊彲鎷栧姩寮圭獥瀹藉害鎸囦护</li>
- <li>鑷畾涔夊彲鎷栧姩寮圭獥楂樺害鎸囦护</li>
- <li>淇浠绘剰璐︽埛瓒婃潈闂</li>
- <li>淇敼鏃舵鏌ョ敤鎴锋暟鎹潈闄愯寖鍥�</li>
- <li>淇淇濆瓨閰嶇疆涓婚棰滆壊澶辨晥闂</li>
- <li>鏂板鏆楄壊鑿滃崟椋庢牸涓婚</li>
- <li>鑿滃崟&閮ㄩ棬鏂板灞曞紑/鎶樺彔鍔熻兘</li>
- <li>椤电鏂板鍏抽棴宸︿晶&娣诲姞鍥炬爣</li>
- <li>椤堕儴鑿滃崟鎺掗櫎闅愯棌鐨勯粯璁よ矾鐢�</li>
- <li>椤堕儴鑿滃崟鍚屾绯荤粺涓婚鏍峰紡</li>
- <li>璺宠浆璺敱楂樹寒鐩稿搴旂殑鑿滃崟鏍�</li>
- <li>浠g爜鐢熸垚涓诲瓙琛ㄥ閫夎鏁版嵁</li>
- <li>鏃ユ湡鑼冨洿鏀寔娣诲姞澶氱粍</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.15.5</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈瑅5.8.0</li>
- <li>鍗囩骇commons.io鍒版渶鏂扮増鏈瑅2.11.0</li>
- <li>瀹氭椂浠诲姟灞忚斀ldap杩滅▼璋冪敤</li>
- <li>瀹氭椂浠诲姟灞忚斀http(s)杩滅▼璋冪敤</li>
- <li>琛ュ厖瀹氭椂浠诲姟琛ㄥ瓧娈垫敞閲�</li>
- <li>瀹氭椂浠诲姟瀵规鏌ュ紓甯歌繘琛屼簨鍔″洖婊�</li>
- <li>鍚敤鐖堕儴闂ㄧ姸鎬佹帓闄ら《绾ц妭鐐�</li>
- <li>瀵屾枃鏈柊澧炰笂浼犳枃浠跺ぇ灏忛檺鍒�</li>
- <li>榛樿棣栭〉浣跨敤keep-alive缂撳瓨</li>
- <li>淇敼浠g爜鐢熸垚瀛楀吀鍥炴樉鏍峰紡</li>
- <li>鑷畾涔夊垎椤靛悎鐞嗗寲浼犲叆鍙傛暟</li>
- <li>淇瀛楀吀缁勪欢鍊间负鏁村舰涓嶆樉绀洪棶棰�</li>
- <li>淇瀹氭椂浠诲姟鏃ュ織鎵ц鐘舵�佹樉绀�</li>
- <li>瑙掕壊&鑿滃崟鏂板瀛楁灞炴�ф彁绀轰俊鎭�</li>
- <li>淇瑙掕壊鍒嗛厤鐢ㄦ埛椤甸潰鍙傛暟绫诲瀷閿欒鎻愰啋</li>
- <li>浼樺寲甯冨眬璁剧疆鍔ㄧ敾鐗规晥</li>
- <li>浼樺寲寮傚父澶勭悊淇℃伅</li>
- <li>浼樺寲閿欒token瀵艰嚧鐨勮В鏋愬紓甯�</li>
- <li>瀵嗙爜妗嗘柊澧炴樉绀哄垏鎹㈠瘑鐮佸浘鏍�</li>
- <li>瀹氭椂浠诲姟鏂板鏇村鎿嶄綔</li>
- <li>鏇村鎿嶄綔鎸夐挳娣诲姞鏉冮檺鎺у埗</li>
- <li>瀵煎叆鐢ㄦ埛鏍峰紡浼樺寲</li>
- <li>鎻愬彇閫氱敤鏂规硶鍒板熀绫绘帶鍒跺櫒</li>
- <li>浼樺寲浣跨敤鏉冮檺宸ュ叿鑾峰彇鐢ㄦ埛淇℃伅</li>
- <li>浼樺寲鐢ㄦ埛涓嶈兘鍒犻櫎鑷繁</li>
- <li>浼樺寲XSS璺ㄧ珯鑴氭湰杩囨护</li>
- <li>浼樺寲浠g爜鐢熸垚妯℃澘</li>
- <li>楠岃瘉鐮侀粯璁�20s瓒呮椂</li>
- <li>BLOB涓嬭浇鏃舵竻闄RL瀵硅薄寮曠敤</li>
- <li>浠g爜鐢熸垚瀵煎叆琛ㄦ寜鍒涘缓鏃堕棿鎺掑簭</li>
- <li>淇浠g爜鐢熸垚椤甸潰鏁版嵁缂栬緫淇濆瓨涔嬪悗鎬绘槸璺宠浆绗竴椤电殑闂</li>
- <li>淇甯afari娴忚鍣ㄦ棤娉曟牸寮忓寲utc鏃ユ湡鏍煎紡yyyy-MM-dd'T'HH:mm:ss.SSS闂</li>
- <li>澶氬浘涓婁紶缁勪欢绉婚櫎澶氫綑鐨刟pi鍦板潃&楠岃瘉澶辫触瀵艰嚧鍥剧墖鍒犻櫎闂&鏃犳硶鍒犻櫎鐩稿簲鍥剧墖淇</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.6.0 - 2021-07-12">
- <ol>
- <li>瑙掕壊绠$悊鏂板鍒嗛厤鐢ㄦ埛鍔熻兘</li>
- <li>鐢ㄦ埛绠$悊鏂板鍒嗛厤瑙掕壊鍔熻兘</li>
- <li>鏃ュ織鍒楄〃鏀寔鎺掑簭鎿嶄綔</li>
- <li>浼樺寲鍙傛暟&瀛楀吀缂撳瓨鎿嶄綔</li>
- <li>绯荤粺甯冨眬閰嶇疆鏀寔鍔ㄦ�佹爣棰樺紑鍏�</li>
- <li>鑿滃崟璺敱閰嶇疆鏀寔鍐呴摼璁块棶</li>
- <li>榛樿璁块棶鍚庣棣栭〉鏂板鎻愮ず璇�</li>
- <li>瀵屾枃鏈粯璁や笂浼犺繑鍥瀠rl绫诲瀷</li>
- <li>鏂板鑷畾涔夊脊绐楁嫋鎷芥寚浠�</li>
- <li>鍏ㄥ眬娉ㄥ唽甯哥敤閫氱敤缁勪欢</li>
- <li>鍏ㄥ眬鎸傝浇瀛楀吀鏍囩缁勪欢</li>
- <li>ImageUpload缁勪欢鏀寔澶氬浘鐗囦笂浼�</li>
- <li>FileUpload缁勪欢鏀寔澶氭枃浠朵笂浼�</li>
- <li>鏂囦欢涓婁紶缁勪欢娣诲姞鏁伴噺闄愬埗灞炴��</li>
- <li>瀵屾枃鏈紪杈戠粍浠舵坊鍔犵被鍨嬪睘鎬�</li>
- <li>瀵屾枃鏈粍浠跺伐鍏锋爮閰嶇疆瑙嗛</li>
- <li>灏佽閫氱敤iframe缁勪欢</li>
- <li>闄愬埗瓒呯骇绠$悊鍛樹笉鍏佽鎿嶄綔</li>
- <li>鐢ㄦ埛淇℃伅闀垮害鏍¢獙闄愬埗</li>
- <li>鍒嗛〉缁勪欢鏂板pagerCount灞炴��</li>
- <li>娣诲姞bat鑴氭湰鎵ц搴旂敤</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈瑅5.7.4</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.15.2</li>
- <li>鍗囩骇pagehelper鍒版渶鏂扮増1.3.1</li>
- <li>鍗囩骇commons.io鍒版渶鏂扮増鏈瑅2.10.0</li>
- <li>鍗囩骇commons.fileupload鍒版渶鏂扮増鏈瑅1.4</li>
- <li>鍗囩骇swagger鍒版渶鏂扮増鏈瑅3.0.0</li>
- <li>淇鍏抽棴confirm鎻愮ず妗嗘帶鍒跺彴鎶ラ敊闂</li>
- <li>淇瀛樺湪鐨凷QL娉ㄥ叆婕忔礊闂</li>
- <li>瀹氭椂浠诲姟灞忚斀rmi杩滅▼璋冪敤</li>
- <li>淇鐢ㄦ埛鎼滅储鍒嗛〉鍙橀噺閿欒</li>
- <li>淇瀵煎嚭瑙掕壊鏁版嵁鑼冨洿缈昏瘧缂哄皯浠呮湰浜�</li>
- <li>淇琛ㄥ崟鏋勫缓閫夋嫨涓嬫媺閫夋嫨鎺у埗鍙版姤閿欓棶棰�</li>
- <li>浼樺寲鍥剧墖宸ュ叿绫昏鍙栨枃浠�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.5.0 - 2021-05-25">
- <ol>
- <li>鏂板鑿滃崟瀵艰埅鏄剧ず椋庢牸TopNav锛坒alse涓哄乏渚у鑸彍鍗曪紝true涓洪《閮ㄥ鑸彍鍗曪級</li>
- <li>甯冨眬璁剧疆鏀寔淇濆瓨&閲嶇疆閰嶇疆</li>
- <li>淇鏍戣〃鏁版嵁鏄剧ず涓嶅叏&鍔犺浇鎱㈤棶棰�</li>
- <li>鏂板IE娴忚鍣ㄧ増鏈繃浣庢彁绀洪〉闈�</li>
- <li>鐢ㄦ埛鐧诲綍鍚庤褰曟渶鍚庣櫥褰旾P&鏃堕棿</li>
- <li>椤甸潰瀵煎嚭鎸夐挳鐐瑰嚮涔嬪悗娣诲姞閬僵</li>
- <li>瀵屾枃鏈紪杈戝櫒鏀寔鑷畾涔変笂浼犲湴鍧�</li>
- <li>瀵屾枃鏈紪杈戠粍浠舵柊澧瀝eadOnly灞炴��</li>
- <li>椤电TagsView鏂板鍏抽棴鍙充晶鍔熻兘</li>
- <li>鏄鹃殣鍒楃粍浠跺姞杞藉垵濮嬮粯璁ら殣钘忓垪</li>
- <li>鍏抽棴澶村儚涓婁紶绐楀彛杩樺師榛樿鍥剧墖</li>
- <li>涓汉淇℃伅娣诲姞鎵嬫満&閭閲嶅楠岃瘉</li>
- <li>浠g爜鐢熸垚妯℃澘瀵煎嚭鎸夐挳鐐瑰嚮鍚庢坊鍔犻伄缃�</li>
- <li>浠g爜鐢熸垚妯℃澘鏍戣〃鎿嶄綔鍒楁坊鍔犳柊澧炴寜閽�</li>
- <li>浠g爜鐢熸垚妯℃澘淇涓诲瓙琛ㄥ瓧娈甸噸鍚嶉棶棰�</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増1.2.76</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈瑅1.2.6</li>
- <li>鍗囩骇mybatis鍒版渶鏂扮増3.5.6 闃绘杩滅▼浠g爜鎵ц婕忔礊</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈瑅5.6.0</li>
- <li>velocity鍓旈櫎commons-collections鐗堟湰锛岄槻姝�3.2.1鐗堟湰鐨勫弽搴忓垪鍖栨紡娲�</li>
- <li>鏁版嵁鐩戞帶椤甸粯璁よ处鎴峰瘑鐮侀槻姝㈣秺鏉冭闂�</li>
- <li>淇firefox涓嬭〃鍗曟瀯寤烘嫋鎷戒細鏂版墦鍗′竴涓�夐」鍗�</li>
- <li>淇鍚庣瀵煎叆琛ㄦ潈闄愭爣璇�</li>
- <li>淇鍓嶇鎿嶄綔鏃ュ織&鐧诲綍鏃ュ織鏉冮檺鏍囪瘑</li>
- <li>璁剧疆Redis閰嶇疆HashKey搴忓垪鍖�</li>
- <li>鍒犻櫎鎿嶄綔鏃ュ織璁板綍淇℃伅</li>
- <li>涓婁紶濯掍綋绫诲瀷娣诲姞瑙嗛鏍煎紡</li>
- <li>淇璇锋眰褰㈠弬鏈紶鍊艰褰曟棩蹇楀紓甯搁棶棰�</li>
- <li>浼樺寲xss鏍¢獙json璇锋眰鏉′欢</li>
- <li>鏍戠骇缁撴瀯鏇存柊瀛愯妭鐐逛娇鐢╮eplaceFirst</li>
- <li>浼樺寲ExcelUtil绌哄�煎鐞�</li>
- <li>鏃ュ織璁板綍杩囨护BindingResult瀵硅薄锛岄槻姝㈠紓甯�</li>
- <li>淇敼涓婚鍚巑ini绫诲瀷鎸夐挳鏃犳晥闂</li>
- <li>浼樺寲閫氱敤涓嬭浇瀹屾垚鍚庡垹闄よ妭鐐�</li>
- <li>閫氱敤Controller娣诲姞鍝嶅簲杩斿洖娑堟伅</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.4.0 - 2021-02-22">
- <ol>
- <li>浠g爜鐢熸垚妯℃澘鏀寔涓诲瓙琛�</li>
- <li>琛ㄦ牸鍙充晶宸ュ叿鏍忕粍浠舵敮鎸佹樉闅愬垪</li>
- <li>鍥剧墖缁勪欢娣诲姞棰勮&绉婚櫎鍔熻兘</li>
- <li>Excel娉ㄨВ鏀寔Image鍥剧墖瀵煎嚭</li>
- <li>鎿嶄綔鎸夐挳缁勮皟鏁翠负鏈寸礌鎸夐挳鏍峰紡</li>
- <li>浠g爜鐢熸垚鏀寔鏂囦欢涓婁紶缁勪欢</li>
- <li>浠g爜鐢熸垚鏃ユ湡鎺т欢鍖哄垎鑼冨洿</li>
- <li>浠g爜鐢熸垚鏁版嵁搴撴枃鏈被鍨嬬敓鎴愯〃鍗曟枃鏈煙</li>
- <li>鐢ㄦ埛鎵嬫満閭&鑿滃崟缁勪欢淇敼鍏佽绌哄瓧绗︿覆</li>
- <li>鍗囩骇SpringBoot鍒版渶鏂扮増鏈�2.2.13 鎻愬崌鍚姩閫熷害</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈瑅1.2.4</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増1.2.75</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.15.0</li>
- <li>淇IE11娴忚鍣ㄦ姤閿欓棶棰�</li>
- <li>浼樺寲澶氱骇鑿滃崟涔嬮棿鍒囨崲鏃犳硶缂撳瓨鐨勯棶棰�</li>
- <li>淇鍥涚骇鑿滃崟鏃犳硶鏄剧ず闂</li>
- <li>淇渚ц竟鏍忛潤鎬佽矾鐢变涪澶遍棶棰�</li>
- <li>淇瑙掕壊绠$悊-缂栬緫瑙掕壊-鍔熻兘鏉冮檺鏄剧ず寮傚父</li>
- <li>閰嶇疆鏂囦欢鏂板redis鏁版嵁搴撶储寮曞睘鎬�</li>
- <li>鏉冮檺宸ュ叿绫诲鍔燼dmin鍒ゆ柇</li>
- <li>瑙掕壊闈炶嚜瀹氫箟鏉冮檺鑼冨洿娓呯┖閫夋嫨鍊�</li>
- <li>淇瀵煎叆鏁版嵁涓鸿礋娴偣鏁版椂涓㈠け绮惧害闂</li>
- <li>绉婚櫎path-to-regexp姝e垯鍖归厤鎻掍欢</li>
- <li>淇鐢熸垚鏍戣〃浠g爜寮傚父</li>
- <li>淇敼ip瀛楁闀垮害闃叉ipv6鍦板潃闀垮害涓嶅</li>
- <li>闃叉get璇锋眰鍙傛暟鍊间负false鎴�0绛夌壒娈婂�间細瀵艰嚧鏃犳硶姝g‘鐨勪紶鍙�</li>
- <li>鐧诲綍鍚巔ush娣诲姞catch闃叉鍑虹幇妫�鏌ラ敊璇�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.3.0 - 2020-12-14">
- <ol>
- <li>鏂板缂撳瓨鐩戞帶鍔熻兘</li>
- <li>鏀寔涓婚椋庢牸閰嶇疆</li>
- <li>淇澶氱骇鑿滃崟涔嬮棿鍒囨崲鏃犳硶缂撳瓨鐨勯棶棰�</li>
- <li>澶氱骇鑿滃崟鑷姩閰嶇疆缁勪欢</li>
- <li>浠g爜鐢熸垚棰勮鏀寔楂樹寒鏄剧ず</li>
- <li>鏀寔Get璇锋眰鏄犲皠Params鍙傛暟</li>
- <li>鍒犻櫎鐢ㄦ埛鍜岃鑹茶В缁戝叧鑱�</li>
- <li>鍘婚櫎鐢ㄦ埛鎵嬫満閭閮ㄩ棬蹇呭~楠岃瘉</li>
- <li>Excel鏀寔娉ㄨВalign瀵归綈鏂瑰紡</li>
- <li>Excel鏀寔瀵煎叆Boolean鍨嬫暟鎹�</li>
- <li>浼樺寲澶村儚鏍峰紡锛岄紶鏍囩Щ鍏ユ偓鍋滈伄缃�</li>
- <li>浠g爜鐢熸垚棰勮鎻愪緵婊氬姩鏈哄埗</li>
- <li>浠g爜鐢熸垚鍒犻櫎澶氫綑鐨勬暟瀛梖loat绫诲瀷</li>
- <li>淇杞崲瀛楃涓茬殑鐩爣瀛楃闆嗗睘鎬�</li>
- <li>鍥炴樉鏁版嵁瀛楀吀闃叉绌哄�兼姤閿�</li>
- <li>鏃ュ織璁板綍澧炲姞杩囨护澶氭枃浠跺満鏅�</li>
- <li>淇敼缂撳瓨Set鏂规硶鍙兘瀵艰嚧宓屽鐨勯棶棰�</li>
- <li>绉婚櫎鍓嶇涓�浜涘浣欑殑渚濊禆</li>
- <li>闃叉瀹夊叏鎵弿YUI鍑虹幇鐨勯闄╂彁绀�</li>
- <li>淇敼node-sass涓篸art-sass</li>
- <li>鍗囩骇SpringBoot鍒版渶鏂扮増鏈�2.1.18</li>
- <li>鍗囩骇poi鍒版渶鏂扮増鏈�4.1.2</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈瑅5.3.6</li>
- <li>鍗囩骇bitwalker鍒版渶鏂扮増鏈�1.21</li>
- <li>鍗囩骇axios鍒版渶鏂扮増鏈�0.21.0</li>
- <li>鍗囩骇element-ui鍒版渶鏂扮増鏈�2.14.1</li>
- <li>鍗囩骇vue鍒版渶鏂扮増鏈�2.6.12</li>
- <li>鍗囩骇vuex鍒版渶鏂扮増鏈�3.6.0</li>
- <li>鍗囩骇vue-cli鍒扮増鏈�4.5.9</li>
- <li>鍗囩骇vue-router鍒版渶鏂扮増鏈�3.4.9</li>
- <li>鍗囩骇vue-cli鍒版渶鏂扮増鏈�4.4.6</li>
- <li>鍗囩骇vue-cropper鍒版渶鏂扮増鏈�0.5.5</li>
- <li>鍗囩骇clipboard鍒版渶鏂扮増鏈�2.0.6</li>
- <li>鍗囩骇core-js鍒版渶鏂扮増鏈�3.8.1</li>
- <li>鍗囩骇echarts鍒版渶鏂扮増鏈�4.9.0</li>
- <li>鍗囩骇file-saver鍒版渶鏂扮増鏈�2.0.4</li>
- <li>鍗囩骇fuse.js鍒版渶鏂扮増鏈�6.4.3</li>
- <li>鍗囩骇js-beautify鍒版渶鏂扮増鏈�1.13.0</li>
- <li>鍗囩骇js-cookie鍒版渶鏂扮増鏈�2.2.1</li>
- <li>鍗囩骇path-to-regexp鍒版渶鏂扮増鏈�6.2.0</li>
- <li>鍗囩骇quill鍒版渶鏂扮増鏈�1.3.7</li>
- <li>鍗囩骇screenfull鍒版渶鏂扮増鏈�5.0.2</li>
- <li>鍗囩骇sortablejs鍒版渶鏂扮増鏈�1.10.2</li>
- <li>鍗囩骇vuedraggable鍒版渶鏂扮増鏈�2.24.3</li>
- <li>鍗囩骇chalk鍒版渶鏂扮増鏈�4.1.0</li>
- <li>鍗囩骇eslint鍒版渶鏂扮増鏈�7.15.0</li>
- <li>鍗囩骇eslint-plugin-vue鍒版渶鏂扮増鏈�7.2.0</li>
- <li>鍗囩骇lint-staged鍒版渶鏂扮増鏈�10.5.3</li>
- <li>鍗囩骇runjs鍒版渶鏂扮増鏈�4.4.2</li>
- <li>鍗囩骇sass-loader鍒版渶鏂扮増鏈�10.1.0</li>
- <li>鍗囩骇script-ext-html-webpack-plugin鍒版渶鏂扮増鏈�2.1.5</li>
- <li>鍗囩骇svg-sprite-loader鍒版渶鏂扮増鏈�5.1.1</li>
- <li>鍗囩骇vue-template-compiler鍒版渶鏂扮増鏈�2.6.12</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.2.1 - 2020-11-18">
- <ol>
- <li>闃绘浠绘剰鏂囦欢涓嬭浇婕忔礊</li>
- <li>浠g爜鐢熸垚鏀寔涓婁紶鎺т欢</li>
- <li>鏂板鍥剧墖涓婁紶缁勪欢</li>
- <li>璋冩暣榛樿棣栭〉</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈瑅1.2.2</li>
- <li>mapperLocations閰嶇疆鏀寔鍒嗛殧绗�</li>
- <li>鏉冮檺淇℃伅璋冩暣</li>
- <li>璋冩暣sql榛樿鏃堕棿</li>
- <li>瑙e喅浠g爜鐢熸垚娌℃湁bit绫诲瀷鐨勯棶棰�</li>
- <li>鍗囩骇pagehelper鍒版渶鏂扮増1.3.0</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v3.2.0 - 2020-10-10">
- <ol>
- <li>鍗囩骇springboot鐗堟湰鍒�2.1.17 鎻愬崌瀹夊叏鎬�</li>
- <li>鍗囩骇oshi鍒版渶鏂扮増鏈瑅5.2.5</li>
- <li>鍗囩骇druid鍒版渶鏂扮増鏈瑅1.2.1</li>
- <li>鍗囩骇jjwt鍒扮増鏈�0.9.1</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増1.2.74</li>
- <li>淇敼sass涓簄ode-sass锛岄伩鍏峞l-icon鍥炬爣涔辩爜</li>
- <li>浠g爜鐢熸垚鏀寔鍚屾鏁版嵁搴�</li>
- <li>浠g爜鐢熸垚鏀寔瀵屾枃鏈帶浠�</li>
- <li>浠g爜鐢熸垚椤甸潰鏃朵笉蹇界暐remark灞炴��</li>
- <li>浠g爜鐢熸垚娣诲姞select蹇呭~閫夐」</li>
- <li>Excel瀵煎嚭绫诲瀷NUMERIC鏀寔绮惧害娴偣绫诲瀷</li>
- <li>Excel瀵煎嚭targetAttr浼樺寲鑾峰彇鍊硷紝闃叉get鏂规硶涓嶈鑼�</li>
- <li>Excel娉ㄨВ鏀寔鑷姩缁熻鏁版嵁鎬诲拰</li>
- <li>Excel娉ㄨВ鏀寔璁剧疆BigDecimal绮惧害&鑸嶅叆瑙勫垯</li>
- <li>鑿滃崟&鏁版嵁鏉冮檺鏂板锛堝睍寮�/鎶樺彔 鍏ㄩ��/鍏ㄤ笉閫� 鐖跺瓙鑱斿姩锛�</li>
- <li>鍏佽鐢ㄦ埛鍒嗛厤鍒伴儴闂ㄧ埗鑺傜偣</li>
- <li>鑿滃崟鏂板鏄惁缂撳瓨keep-alive</li>
- <li>琛ㄦ牸鎿嶄綔鍒楅棿璺濊皟鏁�</li>
- <li>闄愬埗绯荤粺鍐呯疆鍙傛暟涓嶅厑璁稿垹闄�</li>
- <li>瀵屾枃鏈粍浠朵紭鍖栵紝鏀寔鑷畾涔夐珮搴�&鍥剧墖鍐茬獊闂</li>
- <li>瀵屾枃鏈伐鍏锋爮鏍峰紡瀵归綈</li>
- <li>瀵煎叆excel鏁村舰鍊兼牎楠屼紭鍖�</li>
- <li>淇椤电鍏抽棴鎵�鏈夋椂鍥哄畾鏍囩璺敱涓嶅埛鏂伴棶棰�</li>
- <li>琛ㄥ崟鏋勫缓甯冨眬鍨嬬粍浠舵柊澧炴寜閽�</li>
- <li>宸︿晶鑿滃崟鏂囧瓧杩囬暱鏄剧ず鐪佺暐鍙�</li>
- <li>淇鏍硅妭鐐逛负瀛愰儴闂ㄦ椂锛屾爲鐘剁粨鏋勬樉绀洪棶棰�</li>
- <li>淇璋冪敤鐩爣瀛楃涓叉渶澶ч暱搴�</li>
- <li>淇鑿滃崟鎻愮ず淇℃伅閿欒</li>
- <li>淇瀹氭椂浠诲姟鎵ц涓�娆℃潈闄愭爣璇�</li>
- <li>淇鏁版嵁搴撳瓧绗︿覆绫诲瀷nvarchar</li>
- <li>浼樺寲閫掑綊瀛愯妭鐐�</li>
- <li>浼樺寲鏁版嵁鏉冮檺鍒ゆ柇</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
-
- <el-collapse-item title="v3.1.0 - 2020-08-13">
- <ol>
- <li>琛ㄦ牸宸ュ叿鏍忓彸渚ф坊鍔犲埛鏂�&鏄鹃殣鏌ヨ缁勪欢</li>
- <li>鍚庣鏀寔CORS璺ㄥ煙璇锋眰</li>
- <li>浠g爜鐢熸垚鏀寔閫夋嫨涓婄骇鑿滃崟</li>
- <li>浠g爜鐢熸垚鏀寔鑷畾涔夎矾寰�</li>
- <li>浠g爜鐢熸垚鏀寔澶嶉�夋</li>
- <li>Excel瀵煎嚭瀵煎叆鏀寔dictType瀛楀吀绫诲瀷</li>
- <li>Excel鏀寔鍒嗗壊瀛楃涓茬粍鍐呭</li>
- <li>楠岃瘉鐮佺被鍨嬫敮鎸侊紙鏁扮粍璁$畻銆佸瓧绗﹂獙璇侊級</li>
- <li>鍗囩骇vue-cli鐗堟湰鍒�4.4.4</li>
- <li>淇敼 node-sass 涓� dart-sass</li>
- <li>琛ㄥ崟绫诲瀷涓篒nteger/Long璁剧疆鏁村舰榛樿鍊�</li>
- <li>浠g爜鐢熸垚鍣ㄩ粯璁apper璺緞涓庨粯璁apperScan璺緞涓嶄竴鑷�</li>
- <li>浼樺寲闃查噸澶嶆彁浜ゆ嫤鎴櫒</li>
- <li>浼樺寲涓婄骇鑿滃崟涓嶈兘閫夋嫨鑷繁</li>
- <li>淇瑙掕壊鐨勬潈闄愬垎閰嶅悗锛屾湭瀹炴椂鐢熸晥闂</li>
- <li>淇鍦ㄧ嚎鐢ㄦ埛鏃ュ織璁板綍绫诲瀷</li>
- <li>淇瀵屾枃鏈┖鏍煎拰缂╄繘淇濆瓨鍚庝笉鐢熸晥闂</li>
- <li>淇鍦ㄧ嚎鐢ㄦ埛鍒ゆ柇閫昏緫</li>
- <li>鍞竴闄愬埗鏉′欢鍙繑鍥炲崟鏉℃暟鎹�</li>
- <li>娣诲姞鑾峰彇褰撳墠鐨勭幆澧冮厤缃柟娉�</li>
- <li>瓒呮椂鐧诲綍鍚庨〉闈㈣烦杞埌棣栭〉</li>
- <li>鍏ㄥ眬寮傚父鐘舵�佹眽鍖栨嫤鎴鐞�</li>
- <li>HTML杩囨护鍣ㄦ敼涓哄皢html杞箟</li>
- <li>妫�鏌ュ瓧绗︽敮鎸佸皬鏁扮偣&闄嶇骇鏀规垚寮傚父鎻愰啋</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
-
- <el-collapse-item title="v3.0.0 - 2020-07-20">
- <ol>
- <li>鍗曞簲鐢ㄨ皟鏁翠负澶氭ā鍧楅」鐩�</li>
- <li>鍗囩骇element-ui鐗堟湰鍒�2.13.2</li>
- <li>鍒犻櫎babel锛屾彁楂樼紪璇戦�熷害銆�</li>
- <li>鏂板鑿滃崟榛樿涓荤被鐩�</li>
- <li>缂栫爜鏂囦欢鍚嶄慨鏀逛负uuid鏂瑰紡</li>
- <li>瀹氭椂浠诲姟cron琛ㄨ揪寮忛獙璇�</li>
- <li>瑙掕壊鏉冮檺淇敼鏃跺凡鏈夋潈闄愭湭鑷姩鍕鹃�夊紓甯镐慨澶�</li>
- <li>闃叉鍒囨崲鏉冮檺鐢ㄦ埛鍚庣櫥褰曞嚭鐜�404</li>
- <li>Excel鏀寔sort瀵煎嚭鎺掑簭</li>
- <li>鍒涘缓鐢ㄦ埛涓嶅厑璁搁�夋嫨瓒呯骇绠$悊鍛樿鑹�</li>
- <li>淇浠g爜鐢熸垚瀵煎叆琛ㄧ粨鏋勫嚭鐜板紓甯搁〉闈笉鎻愰啋闂</li>
- <li>淇浠g爜鐢熸垚鐐瑰嚮澶氭琛ㄤ慨鏀规暟鎹笉鍙樺寲鐨勯棶棰�</li>
- <li>淇澶村儚涓婁紶鎴愬姛浜屾鎵撳紑鏃犳硶鏀瑰彉瑁佸壀妗嗗ぇ灏忓拰浣嶇疆闂</li>
- <li>淇甯冨眬涓簊mall鑰卪ini鐢ㄦ埛琛ㄥ崟鏄剧ず閿欎綅闂</li>
- <li>淇鐑儴缃插鑷寸殑寮烘崲寮傚父闂</li>
- <li>淇敼鐢ㄦ埛绠$悊澶嶉�夋瀹藉害锛岄槻姝㈤儴鍒嗘祻瑙堝櫒鍑虹幇鐪佺暐鍙�</li>
- <li>IpUtils宸ュ叿锛屾竻闄ss鐗规畩瀛楃锛岄槻姝ff娉ㄥ叆鏀诲嚮</li>
- <li>鐢熸垚domain 濡傛灉鏄诞鐐瑰瀷 缁熶竴鐢˙igDecimal</li>
- <li>瀹氭椂浠诲姟璋冩暣label-width锛岄槻姝㈤儴缃插嚭鐜伴敊浣�</li>
- <li>璋冩暣琛ㄥご鍥哄畾鍒楅粯璁ゆ牱寮�</li>
- <li>浠g爜鐢熸垚妯℃澘璋冩暣锛屽瓧娈典负String骞朵笖蹇呭~鍒欏姞绌轰覆鏉′欢</li>
- <li>浠g爜鐢熸垚瀛楀吀Integer/Long浣跨敤parseInt</li>
- <li>
- 淇dict_sort涓嶅彲update涓�0鐨勯棶棰�&鏌ヨ杩斿洖澧炲姞dict_sort鍗囧簭鎺掑簭
- </li>
- <li>淇宀椾綅瀵煎嚭鏉冮檺娉ㄨВ</li>
- <li>绂佹鍔犲瘑瀵嗘枃杩斿洖鍓嶇</li>
- <li>淇浠g爜鐢熸垚椤甸潰涓殑鏌ヨ鏉′欢鍒涘缓鏃堕棿鏈敓鏁堢殑闂</li>
- <li>淇棣栭〉鎼滅储鑿滃崟澶栭摼鏃犳硶鐐瑰嚮璺宠浆闂</li>
- <li>淇鑿滃崟绠$悊閫夋嫨鍥炬爣锛宐ackspace鍒犻櫎鏃朵笉杩囨护鏁版嵁</li>
- <li>鐢ㄦ埛绠$悊閮ㄩ棬鍒嗘敮鑺傜偣涓嶅彲妫�鏌�&鏄剧ず璁℃暟</li>
- <li>鏁版嵁鑼冨洿杩囨护灞炴�ц皟鏁�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
-
- <el-collapse-item title="v2.3.0 - 2020-06-01">
- <ol>
- <li>鍗囩骇fastjson鍒版渶鏂扮増1.2.70 淇楂樺嵄瀹夊叏婕忔礊</li>
- <li>dev鍚姩榛樿鎵撳紑娴忚鍣�</li>
- <li>vue-cli浣跨敤榛樿source-map</li>
- <li>slidebar eslint鎶ラ敊浼樺寲</li>
- <li>褰搕ags-view婊氬姩鍏抽棴鍙抽敭鑿滃崟</li>
- <li>瀛楀吀绠$悊娣诲姞缂撳瓨璇诲彇</li>
- <li>鍙傛暟绠$悊鏀寔缂撳瓨鎿嶄綔</li>
- <li>鏀寔涓�绾ц彍鍗曪紙鍜屼富椤靛悓绾э級鍦╩ain鍖哄煙鏄剧ず</li>
- <li>闄愬埗澶栭摼鍦板潃蹇呴』浠ttp(s)寮�澶�</li>
- <li>tagview & sidebar 涓婚棰滆壊涓巈lement ui(鍏ㄥ眬)鍚屾</li>
- <li>淇敼鏁版嵁婧愮被鍨嬩紭鍏堢骇锛屽厛鏍规嵁鏂规硶锛屽啀鏍规嵁绫�</li>
- <li>鏀寔鏄惁闇�瑕佽缃畉oken灞炴�э紝鑷畾涔夎繑鍥炵爜娑堟伅銆�</li>
- <li>swagger璇锋眰鍓嶇紑鍔犲叆閰嶇疆銆�</li>
- <li>鐧诲綍鍦扮偣璁剧疆鍐呭杩囬暱鍒欓殣钘忔樉绀�</li>
- <li>淇瀹氭椂浠诲姟鎵ц涓�娆℃寜閽悗涓嶆彁绀烘秷鎭棶棰�</li>
- <li>淇敼涓婄骇閮ㄩ棬锛堥�夋嫨椤规帓闄ゆ湰韬拰涓嬬骇锛�</li>
- <li>閫氱敤http鍙戦�佹柟娉曞鍔犲弬鏁� contentType 缂栫爜绫诲瀷</li>
- <li>鏇存崲IP鍦板潃鏌ヨ鎺ュ彛</li>
- <li>淇椤电鍙橀噺undefined</li>
- <li>娣诲姞鏍¢獙閮ㄩ棬鍖呭惈鏈仠鐢ㄧ殑瀛愰儴闂�</li>
- <li>淇敼瀹氭椂浠诲姟璇︽儏涓嬫鎵ц鏃堕棿鏃ユ湡鏄剧ず閿欒</li>
- <li>瑙掕壊绠$悊鏌ヨ璁剧疆榛樿鎺掑簭瀛楁</li>
- <li>swagger娣诲姞enable鍙傛暟鎺у埗鏄惁鍚敤</li>
- <li>鍙json绫诲瀷璇锋眰鏋勫缓鍙噸澶嶈鍙杋nputStream鐨剅equest</li>
- <li>淇敼浠g爜鐢熸垚瀛楀吀瀛楁int绫诲瀷娌℃湁鑷姩閫変腑闂</li>
- <li>vuex鐢ㄦ埛鍚嶅彇鍊间慨姝�</li>
- <li>琛ㄦ牸鏍戞ā鏉垮幓鎺夊浣欑殑)</li>
- <li>浠g爜鐢熸垚搴忓彿淇</li>
- <li>鍏ㄥ睆鎯呭喌涓嬩笉璋冩暣涓婂杈硅窛</li>
- <li>浠g爜鐢熸垚Date瀛楁娣诲姞榛樿鏍煎紡</li>
- <li>鐢ㄦ埛绠$悊瑙掕壊閫夋嫨鏉冮檺鎺у埗</li>
- <li>淇璺敱鎳掑姞杞芥姤閿欓棶棰�</li>
- <li>妯℃澘sql.vm娣诲姞鑿滃崟鐘舵��</li>
- <li>璁剧疆鐢ㄦ埛鍚嶇О涓嶈兘淇敼</li>
- <li>dialog娣诲姞append-to-body灞炴�э紝闃叉ie閬僵</li>
- <li>鑿滃崟鍖哄垎鐘舵�佸拰鏄剧ず闅愯棌鍔熻兘</li>
- <li>鍗囩骇fastjson鍒版渶鏂扮増1.2.68 淇瀹夊叏鍔犲浐</li>
- <li>淇浠g爜鐢熸垚濡傛灉閫夋嫨瀛楀吀绫诲瀷缂哄け閫楀彿闂</li>
- <li>鐧诲綍璇锋眰params鏇存崲涓篸ata锛岄槻姝㈡毚闇瞮rl</li>
- <li>鏃ュ織杩斿洖鏃堕棿鏍煎紡澶勭悊</li>
- <li>娣诲姞handle鎺у埗鍏佽鎷栧姩鐨勫厓绱�</li>
- <li>甯冨眬璁剧疆鐐瑰嚮鎵╁ぇ鑼冨洿</li>
- <li>浠g爜鐢熸垚鍒楀睘鎬ф帓搴忔煡璇�</li>
- <li>浠g爜鐢熸垚鍒楁敮鎸佹嫋鍔ㄦ帓搴�</li>
- <li>淇鏃堕棿鏍煎紡涓嶆敮鎸乮os闂</li>
- <li>琛ㄥ崟鏋勫缓娣诲姞鐖剁骇class锛岄槻姝㈠啿绐�</li>
- <li>瀹氭椂浠诲姟骞跺彂灞炴�т慨姝�</li>
- <li>瑙掕壊绂佺敤&鑿滃崟闅愯棌涓嶆煡璇㈡潈闄�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
-
- <el-collapse-item title="v2.2.0 - 2020-03-18">
- <ol>
- <li>绯荤粺鐩戞帶鏂板瀹氭椂浠诲姟鍔熻兘</li>
- <li>娣诲姞涓�涓墦鍖匴eb宸ョ▼bat</li>
- <li>淇椤电榧犳爣婊氳疆鎸変笅鐨勬椂鍊欙紝鍙互鍏抽棴涓嶅彲鍏抽棴鐨則ag</li>
- <li>淇鐐瑰嚮閫�鍑虹櫥褰曟湁鏃朵細鏃犳彁绀洪棶棰�</li>
- <li>淇闃查噸澶嶆彁浜ゆ敞瑙f棤鏁堥棶棰�</li>
- <li>淇閫氱煡鍏憡鎵归噺鍒犻櫎寮傚父闂</li>
- <li>娣诲姞鑿滃崟鏃惰矾鐢卞湴鍧�蹇呭~闄愬埗</li>
- <li>浠g爜鐢熸垚瀛楁鎻忚堪鍙紪杈�</li>
- <li>淇鐢ㄦ埛淇敼涓汉淇℃伅瀵艰嚧缂撳瓨涓嶈繃鏈熼棶棰�</li>
- <li>涓汉淇℃伅鍒涘缓鏃堕棿鑾峰彇姝g‘灞炴�у��</li>
- <li>鎿嶄綔鏃ュ織璇︾粏鏄剧ず姝g‘绫诲瀷</li>
- <li>瀵煎叆琛ㄥ崟鍑昏鏁版嵁鏃堕�変腑瀵瑰簲鐨勫閫夋</li>
- <li>鎵归噺鏇挎崲琛ㄥ墠缂�閫昏緫璋冩暣</li>
- <li>鍥哄畾閲嶅畾鍚戣矾寰勮〃杈惧紡</li>
- <li>鍗囩骇element-ui鐗堟湰鍒�2.13.0</li>
- <li>鎿嶄綔鏃ュ織鎺掑簭璋冩暣</li>
- <li>淇charts鍒囨崲渚ц竟鏍忔垨鑰呯缉鏀剧獥鍙f樉绀篵ug</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
-
- <el-collapse-item title="v2.1.0 - 2020-02-24">
- <ol>
- <li>鏂板琛ㄥ崟鏋勫缓</li>
- <li>浠g爜鐢熸垚鏀寔鏍戣〃缁撴瀯</li>
- <li>鏂板鐢ㄦ埛瀵煎叆</li>
- <li>淇鍔ㄦ�佸姞杞借矾鐢遍〉闈㈠埛鏂伴棶棰�</li>
- <li>淇鍦板潃寮�鍏虫棤鏁堥棶棰�</li>
- <li>姹夊寲閿欒鎻愮ず椤甸潰</li>
- <li>浠g爜鐢熸垚宸茬煡闂淇敼</li>
- <li>淇澶氭暟鎹簮涓嬮厤缃叧闂嚭鐜板紓甯稿鐞�</li>
- <li>娣诲姞HTML杩囨护鍣紝鐢ㄤ簬鍘婚櫎XSS婕忔礊闅愭偅</li>
- <li>淇涓婁紶澶村儚鎺у埗鍙板嚭鐜板紓甯�</li>
- <li>淇敼鐢ㄦ埛绠$悊鍒嗛〉涓嶆纭殑闂</li>
- <li>淇楠岃瘉鐮佽褰曟彁绀洪敊璇�</li>
- <li>淇request.js缂哄皯Message寮曠敤</li>
- <li>淇琛ㄦ牸鏃堕棿涓虹┖鍑虹幇鐨勫紓甯�</li>
- <li>娣诲姞Jackson鏃ユ湡鍙嶅簭鍒楀寲鏃跺尯閰嶇疆</li>
- <li>璋冩暣鏍规嵁鐢ㄦ埛鏉冮檺鍔犺浇鑿滃崟鏁版嵁鏍戝舰缁撴瀯</li>
- <li>璋冩暣鎴愬姛鐧诲綍涓嶆仮澶嶆寜閽紝闃叉澶氭鐐瑰嚮</li>
- <li>淇敼鐢ㄦ埛涓汉璧勬枡鍚屾缂撳瓨淇℃伅</li>
- <li>淇椤甸潰鍚屾椂鍑虹幇el-upload鍜孍ditor涓嶆樉绀哄鐞�</li>
- <li>淇鍦ㄨ鑹茬鐞嗛〉淇敼鑿滃崟鏉冮檺鍋跺皵鏈�変腑闂</li>
- <li>閰嶇疆鏂囦欢鏂板redis瀵嗙爜灞炴��</li>
- <li>璁剧疆mybatis鍏ㄥ眬鐨勯厤缃枃浠�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
-
- <el-collapse-item title="v2.0.0 - 2019-12-02">
- <ol>
- <li>鏂板浠g爜鐢熸垚</li>
- <li>鏂板@RepeatSubmit娉ㄨВ锛岄槻姝㈤噸澶嶆彁浜�</li>
- <li>鏂板鑿滃崟涓荤洰褰曟坊鍔�/鍒犻櫎鎿嶄綔</li>
- <li>鏃ュ織璁板綍杩囨护鐗规畩瀵硅薄锛岄槻姝㈣浆鎹㈠紓甯�</li>
- <li>淇敼浠g爜鐢熸垚璺敱鑴氭湰閿欒</li>
- <li>鐢ㄦ埛涓婁紶澶村儚瀹炴椂鍚屾缂撳瓨锛屾棤闇�閲嶆柊鐧诲綍</li>
- <li>璋冩暣鍒囨崲椤电鍚庝笉閲嶆柊鍔犺浇鏁版嵁</li>
- <li>娣诲姞jsencrypt瀹炵幇鍙傛暟鐨勫墠绔姞瀵�</li>
- <li>绯荤粺閫�鍑哄垹闄ょ敤鎴风紦瀛樿褰�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v1.1.0 - 2019-11-11">
- <ol>
- <li>鏂板鍦ㄧ嚎鐢ㄦ埛绠$悊</li>
- <li>鏂板鎸夐挳缁勫姛鑳藉疄鐜帮紙鎵归噺鍒犻櫎銆佸鍑恒�佹竻绌猴級</li>
- <li>鏂板鏌ヨ鏉′欢閲嶇疆鎸夐挳</li>
- <li>鏂板Swagger鍏ㄥ眬Token閰嶇疆</li>
- <li>鏂板鍚庣鍙傛暟鏍¢獙</li>
- <li>淇瀛楀吀绠$悊椤甸潰鐨勬棩鏈熸煡璇㈠紓甯�</li>
- <li>淇敼鏃堕棿鍑芥暟鍛藉悕闃叉鍐茬獊</li>
- <li>鍘婚櫎鑿滃崟涓婄骇鏍¢獙锛岄粯璁や负椤剁骇</li>
- <li>淇鐢ㄦ埛瀵嗙爜鏃犳硶淇敼闂</li>
- <li>淇鑿滃崟绫诲瀷涓烘寜閽椂涓嶆樉绀烘潈闄愭爣璇�</li>
- <li>鍏朵粬缁嗚妭浼樺寲</li>
- </ol>
- </el-collapse-item>
- <el-collapse-item title="v1.0.0 - 2019-10-08">
- <ol>
- <li>鑻ヤ緷鍓嶅悗绔垎绂荤郴缁熸寮忓彂甯�</li>
- </ol>
- </el-collapse-item>
- </el-collapse>
- </el-card>
- </el-col>
- <el-col :xs="24" :sm="24" :md="12" :lg="8">
- <el-card class="update-log">
- <div slot="header" class="clearfix">
- <span>鎹愯禒鏀寔</span>
- </div>
- <div class="body">
- <img
- src="@/assets/images/pay.png"
- alt="donate"
- width="100%"
- />
- <span style="display: inline-block; height: 30px; line-height: 30px"
- >浣犲彲浠ヨ浣滆�呭枬鏉挅鍟¤〃绀洪紦鍔�</span
- >
- </div>
- </el-card>
- </el-col>
- </el-row>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-row>
+ <el-button @click="handleCancel">鍙� 娑�</el-button>
+ <el-button :loading="loading" type="primary" @click="submit">纭� 瀹�</el-button>
+ </el-row>
+ </span>
+ </el-dialog>
</div>
</template>
<script>
+import {getYearAndMonthAndDays} from '@/utils/date.js'
+import ScrollPagination from '@/components/index/scroll-paging.vue'
export default {
- name: "Index",
+ components: {
+ ScrollPagination
+ },
data() {
return {
- // 鐗堟湰鍙�
- version: "3.8.9"
- };
+ user: {},
+ now: null,
+ calendarValue: new Date(),
+ currentIndex:5,
+ dialogVisible:false,
+ query:{
+ time:'',
+ text:''
+ },
+ loading:false,
+ workLoading:false,
+ workList:[],
+ workDay:[],
+ weekdays:[],
+ listScheduleByMe:[],
+ scheduleLoading:false,
+ list:[],
+ currentPage:1,
+ pageSize: 8, // 涓�椤�7鏉�
+ total: null,
+ listLoading: true, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
+ finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+ timer:null,
+ keyMap:{},
+ getNumberFourTypes: {},
+ }
+ },
+ watch:{
+ calendarValue(val){
+ this.getScheduleByMe()
+ },
+ currentIndex(){
+ this.keyMap = {}
+ this.currentPage = 1;
+ this.list = [];
+ this.getList();
+ }
+ },
+ mounted() {
+ this.user = JSON.parse(localStorage.getItem('user'))
+ this.nowTime()
+ setInterval(() => {
+ this.nowTime()
+ }, 1000)
+ this.weekdays = this.getWeekdaysForNextWeek()
+ this.init();
+ this.currentPage = 1;
+ this.keyMap = {}
+ this.list = [];
+ this.getList();
+ this.getScheduleByMe()
+ this.timer&&clearInterval(this.timer)
+ this.timer = setInterval(() => {
+ this.init();
+ this.currentPage = 1;
+ this.keyMap = {}
+ this.list = [];
+ this.getList();
+ this.getScheduleByMe()
+ },1000*60*10)
+ this.getNumberFourTypesFun()
},
methods: {
- goTarget(href) {
- window.open(href, "_blank");
- }
+ changeState (val) {
+ if (val == 0) {
+ return '寰呮楠�'
+ }
+ },
+ currentIndexChange () {
+ this.keyMap = {}
+ this.currentPage = 1;
+ this.list = [];
+ this.getList();
+ },
+ getNumberFourTypesFun() {
+ this.$axios.get(this.$api.informationNotification.getNumberFourTypesMessagesHomePage).then(res => {
+ this.getNumberFourTypes = res.data
+ })
+ },
+ getList(){
+ const key = `_${this.currentPage}`
+ const value = this.keyMap[key]
+ // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+ if(value) {
+ return
+ }
+ // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
+ this.keyMap[key] = 'temp'
+ if(this.currentPage==1){
+ this.listLoading = true
+ }
+ if(this.list.length==0){
+ this.finishLoding = false;
+ }
+ this.$axios.get(this.$api.informationNotification.page+'?size='+this.pageSize+'¤t='+this.currentPage+'&messageType='+this.currentIndex).then(res => {
+ if(res.code === 201){
+ return
+ }
+ let list = res.data.records;
+ this.total = res.data.total;
+ if(list.length==0){
+ this.finishLoding = true;
+ }else{
+ if(list.length<this.pageSize){
+ this.finishLoding = true;
+ }
+ this.list = this.list.concat(list)
+ if(this.total==this.list.length){
+ this.finishLoding = true;
+ }
+ this.currentPage++;
+ }
+ this.listLoading = false
+ })
+ },
+ nowTime() {
+ var date = new Date();
+ var y = date.getFullYear();
+ var m = date.getMonth() + 1;
+ var d = date.getDate();
+ var h = date.getHours();
+ this.timeH = h
+ var min = date.getMinutes();
+ var s = date.getSeconds();
+ if (s < 10) {
+ s = "0" + s;
+ }
+ if (min < 10) {
+ min = "0" + min;
+ }
+ if (h < 10) {
+ h = "0" + h;
+ }
+ if (d < 10) {
+ d = "0" + d;
+ }
+ if (m < 10) {
+ m = "0" + m;
+ }
+ this.now = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + s;
+ },
+ nextMonth(value) {
+ let year = this.calendarValue.getFullYear();// 褰撳墠骞翠唤
+ let month = this.calendarValue.getMonth() + 1;// 褰撳墠鏈堜唤
+ let day = this.calendarValue.getDate();// 褰撳墠澶╂暟
+ let nextyear = year;
+ let nextmonth = parseInt(month) + 1;
+ // 鍒ゆ柇涓嬩竴鏈堟槸鍚︿細杩涘叆涓嬩竴骞�
+ if (nextmonth === 13) {
+ nextyear = parseInt(year) + 1;
+ nextmonth = 1;
+ }
+ // 璁$畻涓嬩竴骞翠笅涓�涓湀鏈夊灏戝ぉ
+ let nextday = new Date(nextyear, nextmonth, 0);
+ let nextdays = nextday.getDate();
+ if (day > nextdays) {
+ day = nextdays;
+ if (day < 10) {
+ day = '0' + day;
+ }
+ }
+ if (nextmonth < 10) {
+ nextmonth = '0' + nextmonth;
+ }
+ let nexttime = nextyear + '-' + nextmonth + '-' + day;
+
+ // 灏嗗緱鍒扮殑骞存湀鏃ユ牸寮忚浆鎹负鏍囧噯鏃堕棿锛屼笌楗夸簡涔堟椂闂存牸寮忕浉鍚屾墠鑳借仈鍔�
+ this.calendarValue = new Date(nexttime);
+ },
+ prevMonth(time) {
+ let year = this.calendarValue.getFullYear();// 褰撳墠骞翠唤
+ let month = this.calendarValue.getMonth() + 1;// 褰撳墠鏈堜唤
+ let day = this.calendarValue.getDate();// 褰撳墠澶╂暟
+ let prevyear = year;
+ let prevmonth = parseInt(month) - 1;
+ // 鍒ゆ柇涓婁竴鏈堟槸鍚︿細杩涘叆涓婁竴骞�
+ if (prevmonth === 0) {
+ prevyear = parseInt(year) - 1;
+ prevmonth = 12;
+ }
+ // 璁$畻涓婁竴骞翠笂涓�涓湀鏈夊灏戝ぉ
+ let prevday = new Date(prevyear, prevmonth, 0);
+ let prevdays = prevday.getDate();
+ if (day > prevdays) {
+ day = prevdays;
+ if (day < 10) {
+ day = '0' + day;
+ }
+ }
+ if (prevmonth < 10) {
+ prevmonth = '0' + prevmonth;
+ }
+ let prevtime = prevyear + '-' + prevmonth + '-' + day;
+
+ // 灏嗗緱鍒扮殑骞存湀鏃ユ牸寮忚浆鎹负鏍囧噯鏃堕棿锛屼笌楗夸簡涔堟椂闂存牸寮忕浉鍚屾墠鑳借仈鍔�
+ this.calendarValue = new Date(prevtime);
+ },
+ handleCancel(){
+ this.dialogVisible = false;
+ this.query = {
+ time:'',
+ text:''
+ }
+ },
+ submit(){
+ if(!this.query.time){
+ this.$message.error('鏃堕棿鏈~鍐�')
+ return
+ }
+ if(!this.query.text){
+ this.$message.error('鍐呭鏈~鍐�')
+ return
+ }
+ this.loading = true;
+ this.$axios.post(this.$api.report.addSchedule, this.query).then(res => {
+ this.loading = false;
+ if (res.code == 201) {
+ this.$message.error('鎿嶄綔澶辫触')
+ return
+ }
+ this.$message.success('淇濆瓨鎴愬姛')
+ this.handleCancel()
+ this.getScheduleByMe()
+ })
+ },
+ init(){
+ this.workLoading = true;
+ this.$axios.get(this.$api.report.calendarWorkByWeek).then(res => {
+ if (res.code == 201) return
+ this.workLoading = false;
+ this.workList = [];
+ for(let i=0;i<7;i++){
+ this.workList.push(res.data[`work${i}`])
+ }
+ this.workDay = res.data.weekDays.map(m=>{
+ let arr = m.split('-')
+ return arr[2]
+ })
+ })
+ },
+ getWeekdaysForNextWeek() {
+ let weekdays = [];
+ for (let i = 0; i < 7; i++) {
+ let date = new Date();
+ date.setDate(date.getDate() - i); // 浠婂ぉ涔嬪悗鐨勬棩瀛�
+ let day = date.getDay(); // 0-6 浠h〃鏄熸湡鏃ュ埌鏄熸湡鍏�
+ weekdays.push(day);
+ }
+ weekdays.reverse()
+ weekdays = weekdays.map(m=>{
+ let day =''
+ switch (m) {
+ case 0:
+ day = '鏄熸湡澶�'
+ break;
+ case 1:
+ day = '鏄熸湡涓�'
+ break;
+ case 2:
+ day = '鏄熸湡浜�'
+ break;
+ case 3:
+ day = '鏄熸湡涓�'
+ break;
+ case 4:
+ day = '鏄熸湡鍥�'
+ break;
+ case 5:
+ day = '鏄熸湡浜�'
+ break;
+ case 6:
+ day = '鏄熸湡鍏�'
+ break;
+ }
+ return day
+ })
+ return weekdays;
+ },
+ getScheduleByMe(){
+ this.scheduleLoading = true;
+ this.$axios.post(this.$api.report.ScheduleByMe, {
+ date:getYearAndMonthAndDays(this.calendarValue)
+ }).then(res => {
+ this.loading = false;
+ this.scheduleLoading = false;
+ if (res.code == 201) {
+ return
+ }
+ this.listScheduleByMe = res.data.map(m=>{
+ if(m.scheduleTime){
+ let time = m.scheduleTime.split(' ')[1].split(':')
+ m.scheduleTimes = time[0] + ':' + time[1]
+ }else{
+ m.scheduleTimes = ''
+ }
+ return m
+ })
+ })
+ },
+ goNoticeDetail(row){
+ this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead+'/'+row.id).then(res => {
+ row.num = Math.random(100);
+ this.$bus.$emit("change", JSON.stringify(row));
+ this.$parent.addTab({
+ v: "娑堟伅璇︽儏",
+ i: "el-icon-s-tools",
+ u: "notice-detail",
+ k:35,
+ p: "abcd"
+ },29);
+ })
+ },
+ },
+ deactivated(){
+ this.timer&&clearInterval(this.timer)
}
-};
+}
</script>
<style scoped lang="scss">
-.home {
- blockquote {
- padding: 10px 20px;
- margin: 0 0 20px;
- font-size: 17.5px;
- border-left: 5px solid #eee;
- }
- hr {
- margin-top: 20px;
- margin-bottom: 20px;
- border: 0;
- border-top: 1px solid #eee;
- }
- .col-item {
- margin-bottom: 20px;
- }
+.index {
+ width: 100%;
+ height: calc(100% - 50px);
+ overflow-y: auto;
+ padding: 20px 10px 10px;
+ background: rgb(245, 247, 251);
+}
- ul {
- padding: 0;
- margin: 0;
- }
+.left-1 {
+ background-image: url("~@/assets/index_image/index-img1.png");
+ background-size: 100% 100%;
+ height: 118px;
+ margin-bottom: 16px;
+ border-radius: 16px;
+}
- font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 13px;
- color: #676a6c;
- overflow-x: hidden;
+.left-1 .say {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ margin-left: 15%;
+ width: 45%;
+}
- ul {
- list-style-type: none;
- }
+.left-1 .say div {
+ color: #fff;
+ margin: 4px 0;
+}
- h4 {
- margin-top: 0px;
- }
+.left-1 .say-1 {
+ font-size: 18px;
+}
- h2 {
- margin-top: 10px;
- font-size: 26px;
- font-weight: 100;
- }
+.left-1 .say-2 {
+ font-size: 17px;
+}
- p {
- margin-top: 10px;
+::-webkit-scrollbar {
+ width: 0px;
+}
- b {
- font-weight: 700;
- }
- }
+::-webkit-scrollbar-thumb {
+ background-color: transparent;
+ border-radius: 3px;
+}
- .update-log {
- ol {
- display: block;
- list-style-type: decimal;
- margin-block-start: 1em;
- margin-block-end: 1em;
- margin-inline-start: 0;
- margin-inline-end: 0;
- padding-inline-start: 40px;
- }
- }
+.card{
+ background: #FFFFFF;
+ border-radius: 16px;
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.right-1{
+ padding: 10px 10px 4px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 16px;
+}
+
+.right-1-item{
+ width: 25%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.right-1-item .mun{
+ margin-left: 6px;
+ color: #0166E2;
+}
+
+.right-2{
+ padding: 13px 14px 8px;
+ margin-bottom: 16px;
+}
+
+.right-2-title{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.right-2-body{
+ width: 100%;
+ margin-top: 20px;
+ display: flex;
+ align-items: start;
+ justify-content: space-between;
+}
+>>>.el-calendar__header {
+ display: none;
+}
+>>>.el-calendar__body{
+ padding: 0;
+}
+>>>.el-calendar-table:not(.is-range) td.next {
+ /*闅愯棌涓嬩釜鏈堢殑鏃ユ湡*/
+ display: none;
+}
+>>>.el-calendar-day{
+ height: 40px;
+}
+>>>.el-calendar-table td{
+ border: 0;
+ font-size: 14px;
+}
+>>>.el-calendar-table tr td:first-child{
+ border-left: 0;
+}
+.control{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ box-sizing: border-box;
+ padding: 0px 0 10px;
+}
+.control .el-button{
+ width: 32px;
+ height: 32px;
+ border-radius: 8px;
+ border: 1px solid #E8E8E8;
+ background: #fff;
+ padding: 0;
+ color: #0166E2;
+ font-size: 20px;
+}
+.list2-item{
+ line-height: 22px;
+ display: flex;
+ margin-bottom: 12px;
+ font-size: 14px;
+}
+.right-3-tab{
+ display: flex;
+ align-items: center;
+}
+.tab-item{
+ width: 50%;
+ box-sizing: border-box;
+ text-align: center;
+ padding: 14px 0;
+ font-size: 20px;
+ background: #F5F7FB;
+ color: #333333;
+}
+.tab-item.active{
+ background: #fff;
+ color: #FF3838;
+ padding-left: 16px;
+ text-align: left;
+}
+.right-3-list{
+ padding: 0 12px 8px;
+ box-sizing: border-box;
+ height: 390px;
+ overflow-y: auto;
+}
+.list3-item{
+ padding: 6px 4px;
+ margin: 8px 0;
+}
+.list3-item:hover{
+ background: rgba(58, 123, 250,0.05);
+}
+.list3-item-title{
+ display: flex;
+ align-items: start;
+ margin-bottom: 10px;
+}
+.list3-item-info{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ color: #666666;
+ font-size: 14px;
+}
+.left-2{
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ height: 777px;
+}
+.left-2-item{
+ border-right: 1px solid #F1F1F1;
+ overflow: hidden !important;
+}
+.left-2-item:nth-last-child(1){
+ border-right: 0;
+}
+.left-2-item:hover{
+ background: rgba(58,123,250,0.05);
+}
+.left-2-item:hover .left-item-title span{
+ color: #3A7BFA !important;
+}
+.left-item-title{
+ border-bottom: 1px solid #F1F1F1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 20px 0;
+}
+.left-item-body{
+ box-sizing: border-box;
+ padding: 5px;
+ height: 693px;
+ overflow-y: auto;
+}
+.body-item{
+ background: #70A090;
+ border-radius: 16px;
+ overflow: hidden;
+ margin-bottom: 8px;
+}
+.body-item.color0{
+ background: #70A090;
+}
+.body-item.color1{
+ background: #EBD476;
+}
+.body-item.color2{
+ background: #FF3838;
+}
+.body-item>div{
+ height: calc(100% - 16px);
+ margin-top: 16px;
+ background: rgba(255, 255, 255,0.9);
+ padding: 8px 8px 16px;
+ display: flex;
+ flex-direction: column;
+}
+.search_thing {
+ height: 50px;
+ margin-bottom: 26px;
+}
+
+.search_label {
+ width: 120px;
+ font-size: 14px;
+ text-align: left;
+ margin-bottom: 10px;
+}
+>>>.el-calendar-day span{
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+ text-align: center;
+ border-radius: 4px;
+}
+>>>.is-selected{
+ background: transparent !important;
+}
+>>>.is-selected .el-calendar-day{
+ background: transparent !important;
+}
+>>>.is-selected .el-calendar-day span{
+ background: #3A7BFA !important;
+ color: #fff !important;
+}
+>>>.el-calendar-day:hover{
+ background: transparent;
+}
+>>>.el-calendar-day span:hover{
+ background: #3A7BFA !important;
+ color: #fff !important;
+}
+.body-item-name {
+ display: inline-block;
+ height: 22px;width: 60px;
+ border-radius: 10px;
+ line-height: 22px;
+ text-align: center;
+ background: #C0C4CC;
+ color: #fff;
+ font-size: 14px
+}
+.body-item-insState {
+ margin-left: 2px;
+ display: inline-block;
+ height: 22px;width: 60px;
+ border-radius: 10px;
+ line-height: 22px;
+ text-align: center;
+ color: #fff;
+ font-size: 14px
}
</style>
-
--
Gitblit v1.9.3