¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/business/carousel/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/business/carousel/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/business/carousel/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/business/carousel/updateById', data) |
| | | } |
| | | export function updateStatus (data) { |
| | | return request.post('/business/carousel/updateStatus', data) |
| | | } |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/business/carousel/delete/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/business/carousel/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export function getFoodDataVO () { |
| | | return request.get('/business/carousel/getFoodDataVO') |
| | | } |
| | | |
| | | // ä¿®æ¹åºé¨è®¿é
ç½® |
| | | export function updFoodData (data) { |
| | | return request.post('/business/carousel/updFoodData', data) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/business/information/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/business/information/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/business/information/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/business/information/updateById', data) |
| | | } |
| | | export function updateStatus (data) { |
| | | return request.post('/business/information/updateStatus', data) |
| | | } |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/business/information/delete/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/business/information/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="60%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="æ é¢" prop="title"> |
| | | <el-input v-model="form.title" placeholder="请è¾å
¥æ é¢" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ¦è¿°" prop="detail"> |
| | | <el-input type="textarea" v-model="form.detail" placeholder="请è¾å
¥æè¿°" v-trim/> |
| | | </el-form-item> |
| | | <div style="display: flex"> |
| | | <el-form-item label="缩ç¥å¾" prop="thumbnailImgurl" style="display:inline-block;flex: 1"> |
| | | <div class="upload_wrap"> |
| | | <UploadAvatarImage :file="{ 'imgurlfull': form.fullThumbnailImgurl, 'imgurl': form.thumbnailImgurl }" :uploadData="{folder:''}" |
| | | @uploadSuccess="uploadAvatarSuccess1" /> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="髿¸
å¾" prop="imgurl" style="display:inline-block;flex: 3"> |
| | | <div class="upload_wrap"> |
| | | <UploadAvatarImage :file="{ 'imgurlfull': form.fullImgurl, 'imgurl': form.imgurl }" :uploadData="{folder:''}" |
| | | @uploadSuccess="uploadAvatarSuccess" /> |
| | | </div> |
| | | </el-form-item> |
| | | </div> |
| | | |
| | | <el-form-item label="å
容类å" prop="jumpType" > |
| | | <el-radio-group v-model="form.jumpType"> |
| | | <el-radio :label="0" :value="0">å¤é¾</el-radio> |
| | | <el-radio :label="1" :value="1">坿æ¬</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="跳转å
容" prop="content" > |
| | | <RichEditor v-if="form.jumpType === 1" :richData="form.content" :styleEditor="styleEditor" @getWangedditor="getWangedditor" :readonly="false"/> |
| | | <el-input v-if="form.jumpType === 0" v-model="form.content" placeholder="请è¾å
¥è·³è½¬é¾æ¥å°å" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="status" required class="form-item-status"> |
| | | <el-switch v-model="form.status" :active-value="0" :inactive-value="1" active-color="#13ce66"/> |
| | | </el-form-item> |
| | | <el-form-item label="æåºç ï¼éåºï¼" prop="sortnum"> |
| | | <el-input v-model="form.sortnum" placeholder="请è¾å
¥æåºç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" type="textarea" placeholder="请è¾å
¥å¤æ³¨" v-trim/> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import RichEditor from '@/components/common/RichEditor' |
| | | import UploadAvatarImage from '@/components/common/UploadAvatarImage' |
| | | export default { |
| | | name: 'OperaCarouselWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, UploadAvatarImage, RichEditor }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | styleEditor: 'border: 1px solid #ccc;display: inline-block;height:500px', |
| | | form: { |
| | | id: null, |
| | | remark: '', |
| | | title: '', |
| | | detail: '', |
| | | imgurl: '', |
| | | fullImgurl: '', |
| | | thumbnailImgurl: '', |
| | | fullThumbnailImgurl: '', |
| | | jumpType: 0, |
| | | content: '', |
| | | sortnum: '', |
| | | status: 0 |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | title: [ |
| | | { required: true, message: '请è¾å
¥æ é¢' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/carousel', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form= { |
| | | id: null, |
| | | remark: '', |
| | | title: '', |
| | | detail: '', |
| | | imgurl: '', |
| | | imgurlFull: '', |
| | | thumbnailImgurl: '', |
| | | thumbnailImgurlFull: '', |
| | | jumpType: 0, |
| | | content: '', |
| | | sortnum: '', |
| | | status: 0 |
| | | } |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | }, |
| | | // ä¸ä¼ å¾ç |
| | | getWangedditor (val) { |
| | | this.form.content = val |
| | | }, |
| | | uploadAvatarSuccess (file) { |
| | | this.form.imgurl = file.imgurl |
| | | this.form.fullImgurl = file.imgurlfull |
| | | }, |
| | | uploadAvatarSuccess1 (file) { |
| | | this.form.thumbnailImgurl = file.imgurl |
| | | this.form.fullThumbnailImgurl = file.imgurlfull |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="60%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="æ é¢" prop="title"> |
| | | <el-input v-model="form.title" placeholder="请è¾å
¥æ é¢" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å表å¾" prop="imgurl" > |
| | | <div class="upload_wrap"> |
| | | <UploadAvatarImage :file="{ 'imgurlfull': form.fullImgurl, 'imgurl': form.imgurl }" :uploadData="{folder:''}" @uploadSuccess="uploadAvatarSuccess" /> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="ç®ä»" prop="detail"> |
| | | <el-input type="textarea" v-model="form.detail" placeholder="请è¾å
¥ç®ä»" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å叿¥æ" prop="releaseDate" > |
| | | <el-date-picker v-model="form.releaseDate" value-format="yyyy-MM-dd HH:mm:ss" type="datetime"> </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="å
容" prop="content" > |
| | | <RichEditor :richData="form.content" :styleEditor="styleEditor" @getWangedditor="getWangedditor" :readonly="false"/> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="status" required class="form-item-status"> |
| | | <el-switch v-model="form.status" :active-value="0" :inactive-value="1" active-color="#13ce66"/> |
| | | </el-form-item> |
| | | <el-form-item label="æåºç ï¼éåºï¼" prop="sortnum"> |
| | | <el-input v-model="form.sortnum" placeholder="请è¾å
¥æåºç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" type="textarea" placeholder="请è¾å
¥å¤æ³¨" v-trim/> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import RichEditor from '@/components/common/RichEditor' |
| | | import UploadAvatarImage from '@/components/common/UploadAvatarImage' |
| | | export default { |
| | | name: 'OperaInformationWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, UploadAvatarImage, RichEditor }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | styleEditor: 'border: 1px solid #ccc;display: inline-block;height:500px', |
| | | form: { |
| | | id: null, |
| | | remark: '', |
| | | title: '', |
| | | detail: '', |
| | | imgurl: '', |
| | | fullImgurl: '', |
| | | jumpType: 0, |
| | | content: '', |
| | | releaseDate: new Date(), |
| | | sortnum: '', |
| | | status: 0 |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | title: [ |
| | | { required: true, message: '请è¾å
¥æ é¢' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/information', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form= { |
| | | id: null, |
| | | remark: '', |
| | | title: '', |
| | | detail: '', |
| | | releaseDate: new Date(), |
| | | imgurl: '', |
| | | imgurlFull: '', |
| | | thumbnailImgurl: '', |
| | | thumbnailImgurlFull: '', |
| | | jumpType: 0, |
| | | content: '', |
| | | sortnum: '', |
| | | status: 0 |
| | | } |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | }, |
| | | // ä¸ä¼ å¾ç |
| | | getWangedditor (val) { |
| | | this.form.content = val |
| | | }, |
| | | uploadAvatarSuccess (file) { |
| | | this.form.imgurl = file.imgurl |
| | | this.form.fullImgurl = file.imgurlfull |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:carousel:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="æ é¢" prop="title"> |
| | | <el-input v-model="searchForm.title" clearable placeholder="请è¾å
¥æ é¢" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="status"> |
| | | <el-select v-model="searchForm.status" clearable @change="search" placeholder="ç¶æ"> |
| | | <el-option label="æ£å¸¸" value="1"></el-option> |
| | | <el-option label="ç¦ç¨" value="0"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:carousel:create', 'business:carousel:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaCarouselWindow.open('æ°å»ºè½®æå¾')" icon="el-icon-plus" v-permissions="['business:carousel:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:carousel:delete']">å é¤</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="title" label="æ é¢" min-width="150px"></el-table-column> |
| | | <el-table-column prop="thumbnailImgurl" label="缩ç¥å¾" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-image v-if="row.fullThumbnailImgurl" style="width: 60px; height: 60px" :src="row.fullThumbnailImgurl" |
| | | :preview-src-list="[row.fullThumbnailImgurl]"> |
| | | </el-image> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="imgurl" label="髿¸
å¾" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-image v-if="row.fullImgurl" style="width: 60px; height: 60px" :src="row.fullImgurl" |
| | | :preview-src-list="[row.fullImgurl]"> |
| | | </el-image> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="detail" label="æ¦è¿°" min-width="200px"></el-table-column> |
| | | <el-table-column prop="jumpType" label="跳转类å" align="center" min-width="150px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.jumpType == 0 && row.content!=null && row.content!=''"><a :href="row.content" target="_blank">ç¹å»è·³è½¬</a></span> |
| | | <span v-else-if="row.jumpType == 1 && row.content!=null && row.content!=''"><el-button @click="showContentDo(row)" >æ¥çå
容</el-button></span> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66" |
| | | inactive-color="#ff4949" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="remark" label="夿³¨" min-width="100px"></el-table-column> |
| | | <el-table-column prop="sortnum" label="æåºç " min-width="80px"></el-table-column> |
| | | <el-table-column prop="createDate" label="å建æ¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column prop="editDate" label="æ´æ°æ¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:carousel:update', 'business:carousel:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaCarouselWindow.open('ç¼è¾è½®æå¾', row)" icon="el-icon-edit" v-permissions="['business:carousel:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:carousel:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaCarouselWindow ref="operaCarouselWindow" @success="handlePageChange"/> |
| | | |
| | | <el-dialog |
| | | class="center-title" |
| | | :title="showTitle||'æ¾ç¤ºå
容'" |
| | | width="70%" |
| | | height="70%" |
| | | text="å
容" |
| | | :visible.sync="visible1" |
| | | append-to-body |
| | | > |
| | | <div class="agree-list" v-html="showContent"> |
| | | </div> |
| | | <template v-slot:footer> |
| | | <el-button @click="visible1=false">è¿å</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaCarouselWindow from '@/components/business/OperaCarouselWindow' |
| | | export default { |
| | | name: 'Carousel', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaCarouselWindow }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | visible1: false, |
| | | showContent: '', |
| | | showTitle: '', |
| | | searchForm: { |
| | | id: '', |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | remark: '', |
| | | title: '', |
| | | describe: '', |
| | | imgurl: '', |
| | | thumbnailImgurl: '', |
| | | type: '', |
| | | jumpType: '', |
| | | contnet: '', |
| | | sortnum: '', |
| | | status: '' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'è½®æå¾', |
| | | api: '/business/carousel', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | showContentDo(row){ |
| | | this.showTitle=row.showTitle |
| | | this.showContent=row.content |
| | | this.visible1=true |
| | | }, |
| | | changeStatus (e, row) { |
| | | this.canvisiting = true |
| | | this.api.updateStatus({ id: row.id, status: e }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess(res || 'æä½æå') |
| | | this.search() |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.canvisiting = false |
| | | }) |
| | | .catch(() => { }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .agree-list{ |
| | | height: 550px; |
| | | //max-height: 50%; |
| | | overflow: auto; |
| | | } |
| | | |
| | | /deep/ .window__body { |
| | | .table-content { |
| | | padding: 0; |
| | | .table-wrap { |
| | | padding-top: 0; |
| | | } |
| | | } |
| | | |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:information:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="æ é¢" prop="title"> |
| | | <el-input v-model="searchForm.title" clearable placeholder="请è¾å
¥æ é¢" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="status"> |
| | | <el-select v-model="searchForm.status" clearable @change="search" placeholder="ç¶æ"> |
| | | <el-option label="æ£å¸¸" value="1"></el-option> |
| | | <el-option label="ç¦ç¨" value="0"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:information:create', 'business:information:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaInformationWindow.open('æ°å»ºå¨æèµè®¯')" icon="el-icon-plus" v-permissions="['business:information:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:information:delete']">å é¤</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="title" label="æ é¢" min-width="150px"></el-table-column> |
| | | <el-table-column prop="releaseDate" label="å叿¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column prop="imgurl" label="å表å¾" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-image v-if="row.fullImgurl" style="width: 60px; height: 60px" :src="row.fullImgurl" |
| | | :preview-src-list="[row.fullImgurl]"> |
| | | </el-image> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="detail" label="ç®ä»" min-width="200px"></el-table-column> |
| | | <el-table-column prop="jumpType" label="å
容" align="center" min-width="150px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if= "row.content!=null && row.content!=''"><el-button @click="showContentDo(row)" >æ¥çå
容</el-button></span> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66" |
| | | inactive-color="#ff4949" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="remark" label="夿³¨" min-width="100px"></el-table-column> |
| | | <el-table-column prop="sortnum" label="æåºç " min-width="80px"></el-table-column> |
| | | <el-table-column prop="createDate" label="å建æ¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column prop="editDate" label="æ´æ°æ¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:information:update', 'business:information:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaInformationWindow.open('ç¼è¾å¨æèµè®¯', row)" icon="el-icon-edit" v-permissions="['business:information:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:information:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaInformationWindow ref="operaInformationWindow" @success="handlePageChange"/> |
| | | |
| | | <el-dialog |
| | | class="center-title" |
| | | :title="showTitle||'æ¾ç¤ºå
容'" |
| | | width="70%" |
| | | height="70%" |
| | | text="å
容" |
| | | :visible.sync="visible1" |
| | | append-to-body |
| | | > |
| | | <div class="agree-list" v-html="showContent"> |
| | | </div> |
| | | <template v-slot:footer> |
| | | <el-button @click="visible1=false">è¿å</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaInformationWindow from '@/components/business/OperaInformationWindow' |
| | | export default { |
| | | name: 'Information', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaInformationWindow }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | visible1: false, |
| | | showContent: '', |
| | | showTitle: '', |
| | | searchForm: { |
| | | id: '', |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | remark: '', |
| | | title: '', |
| | | describe: '', |
| | | imgurl: '', |
| | | thumbnailImgurl: '', |
| | | type: '', |
| | | jumpType: '', |
| | | contnet: '', |
| | | sortnum: '', |
| | | status: '' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: '卿å¨è¯¢', |
| | | api: '/business/information', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | showContentDo (row) { |
| | | this.showTitle = row.showTitle |
| | | this.showContent = row.content |
| | | this.visible1 = true |
| | | }, |
| | | changeStatus (e, row) { |
| | | this.canvisiting = true |
| | | this.api.updateStatus({ id: row.id, status: e }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess(res || 'æä½æå') |
| | | this.search() |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.canvisiting = false |
| | | }) |
| | | .catch(() => { }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .agree-list{ |
| | | height: 550px; |
| | | //max-height: 50%; |
| | | overflow: auto; |
| | | } |
| | | |
| | | /deep/ .window__body { |
| | | .table-content { |
| | | padding: 0; |
| | | .table-wrap { |
| | | padding-top: 0; |
| | | } |
| | | } |
| | | |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee; |
| | | import javax.servlet.ServletContextEvent; |
| | | import javax.servlet.ServletContextListener; |
| | | import javax.servlet.annotation.WebListener; |
| | | import java.sql.Driver; |
| | | import java.sql.DriverManager; |
| | | import java.sql.SQLException; |
| | | import java.util.Enumeration; |
| | | import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread; |
| | | |
| | | //@WebListener |
| | | public class ContextFinalizer implements ServletContextListener{ |
| | | |
| | | public void contextInitialized(ServletContextEvent sce) {} |
| | | |
| | | public void contextDestroyed(ServletContextEvent sce) { |
| | | Enumeration<Driver> drivers = DriverManager.getDrivers(); |
| | | Driver d = null; |
| | | while (drivers.hasMoreElements()) { |
| | | try { |
| | | d = drivers.nextElement(); |
| | | DriverManager.deregisterDriver(d); |
| | | } catch (SQLException ex) { |
| | | } |
| | | } |
| | | try { |
| | | // 注æï¼mysql8çæ¬çjar好åshutdownæ¹æ³ç§æäºï¼åªè½è°ç¨checkedShutdownæuncheckedShutdown |
| | | AbandonedConnectionCleanupThread.checkedShutdown(); |
| | | } catch ( Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |