From 3389b07ef10428ada5d161eab3f720d725553b6b Mon Sep 17 00:00:00 2001 From: 叶松 <2217086471@qq.com> Date: 星期四, 16 十一月 2023 13:23:18 +0800 Subject: [PATCH] 安全积分超市样式完成 --- web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue | 181 +++++++++++++++++++++++++ web/src/views/SecureManage/NipCheck/SorceShop.vue | 55 +++++++ web/src/views/SecureManage/NipCheck/components/ScoreMarket.vue | 131 ++++++++++++++++++ 3 files changed, 365 insertions(+), 2 deletions(-) diff --git a/web/src/views/SecureManage/NipCheck/SorceShop.vue b/web/src/views/SecureManage/NipCheck/SorceShop.vue index 1769998..f32d389 100644 --- a/web/src/views/SecureManage/NipCheck/SorceShop.vue +++ b/web/src/views/SecureManage/NipCheck/SorceShop.vue @@ -1,3 +1,54 @@ <template> - <div>安全积分超市</div> -</template> \ No newline at end of file + <div class="main"> + <div class="main_tabs"> + <el-tabs v-model="activeName" @tab-click="handleClick"> + <el-tab-pane label="安全积分超市" name="first"> + <score-supermarket ref="market"></score-supermarket> + </el-tab-pane> + <el-tab-pane label="积分明细" name="second"> + <score-details ref="details"></score-details> + </el-tab-pane> + </el-tabs> + </div> + </div> +</template> +<script> +import ScoreSupermarket from './components/ScoreMarket.vue'//安全积分超市 +import ScoreDetails from './components/ScoreDetails.vue'//入库记录 +export default { + components:{ + ScoreSupermarket, + ScoreDetails, + }, + data(){ + return{ + activeName:'first' + } + }, + mounted(){ + this.$refs.market.searchButtonInfo(true); + }, + methods:{ + //切换界面 + handleClick(tab){ + switch(tab.name){ + case 'second': + this.$refs.details.searchButtonInfo(true); + break; + default: + this.$refs.market.searchButtonInfo(true); + } + }, + } +} +</script> +<style scoped lang="scss"> +@import'@/style/layout-main.scss'; +/deep/ .el-tabs__content{ + position: static; +} + +/deep/.main { + background: none; +} +</style> \ No newline at end of file diff --git a/web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue b/web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue new file mode 100644 index 0000000..0a2e352 --- /dev/null +++ b/web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue @@ -0,0 +1,181 @@ +<template> + <div class="main" style="height:89%"> + <div class="main_header"> + <div class="header_item"> + <span class="header_label">类型:</span> + <el-select v-model="search.type" clearable placeholder="请选择类型"> + <el-option + v-for="item in typeLists" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + <div class="header_item"> + <span class="header_label">时间范围:</span> + <el-date-picker + v-model="search.time" + type="daterange" + value-format="yyyy-MM-dd HH:mm:ss" + :default-time="['00:00:00','23:59:59']" + range-separator="-" + start-placeholder="起始时间" + end-placeholder="结束时间"> + </el-date-picker> + </div> + <div class="header_item"> + <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button> + <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('export')" @click="exportFiles">导出Excel</el-button> + </div> + </div> + <div class="score_index"> + <div class="score_titles">积分:</div> + <div class="score_datas"><span>65</span>分</div> + </div> + <div class="main_content"> + <el-table + v-loading="loading" + :data="dataList" + height="100%"> + <el-table-column align="center" label="序号" width="60"> + <template #default="scope"> + <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span> + </template> + </el-table-column> + <el-table-column prop="createTime" label="时间" align="center" width="150"></el-table-column> + <el-table-column prop="dangerLocation" label="积分分值" align="center" ></el-table-column> + <el-table-column prop="dangerLocation" label="余额" align="center" ></el-table-column> + <el-table-column prop="dangerLocation" label="类型" align="center" ></el-table-column> + <el-table-column prop="title" label="说明" align="center" show-overflow-tooltip></el-table-column> + </el-table> + </div> + <div class="main_footer"> + <el-pagination + background + @current-change="changePageNum" + @size-change="changePageSize" + :current-page="pageNum" + :page-sizes="[10, 20, 50, 100]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> + </div> +</template> + +<script> +import { buttonPinia } from '../../../../pinia/index'; +import { changeSize } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 + export default { + data() { + return { + size: changeSize(), // 组件尺寸 + pageNum: 1, + pageSize: 10, + search:{},//查询条件 + total: 0, + disabled:false, + loading: false, + dataList: [], //积分明细信息列表 + imageList:[], + asyncTitle: true, // 对话框title 新增:true 修改:false + asyncVisible: false, // 添加 修改对话框 + typeLists:[ + { + label:'获取', + value:1 + }, + { + label:'消耗', + value:2 + } + ] + } + }, + watch: { + asyncVisible(bol) { + if(!bol) { + this.ruleForm = {}; + this.$refs.ruleForm.resetFields(); + } + } + }, + mounted() { + const that = this; + // 根据窗口大小动态修改组件尺寸 + window.onresize = () => { + that.size = changeSize(); + } + }, + methods: { + // 查询按钮列表信息 + searchButtonInfo(bol) { + if(bol) { + this.pageNum = 1; + } + let params = Object.assign({},this.search,{ + pageNum: this.pageNum, + pageSize: this.pageSize + }) + params.startTime = this.search.time&&this.search.time[0] + params.endTime = this.search.time&&this.search.time[1] + delete params.time + this.loading = true; + this.$api.Safety.searchHiddenLists(params).then((res) => { + if(res.statusMsg === 'ok') { + this.total = res.data.total; + this.dataList = res.data.list; + } + this.loading = false; + }) + }, + //导出excel + exportFiles(){}, + // 判断按钮权限信息 + showButton(str) { + const pinia = buttonPinia(); + return pinia.$state.buttonInfo.includes(str); + }, + // 切换页数 + changePageNum(page) { + this.pageNum = page; + this.searchButtonInfo(); + }, + // 切换每页条数 + changePageSize(size) { + this.pageSize = size; + this.searchButtonInfo(); + } + } + } +</script> + +<style lang="scss" scoped> +@import '../../../../style/layout-main.scss'; +.score_index{ + width:200px; + line-height: 30px; + background-color: #0E6D90; + border-radius: 4px; + display: flex; + margin-bottom: 15px; + margin-left: 25px; + padding: 2px 0px 2px 15px; + + .score_titles{ + color: #E2EDF2; + font-size: 15px; + } + .score_datas{ + color: #E2EDF2; + font-size: 15px; + span{ + padding: 0 10px; + color: #19F9FA; + font-size: 24px; + } + } +} +</style> \ No newline at end of file diff --git a/web/src/views/SecureManage/NipCheck/components/ScoreMarket.vue b/web/src/views/SecureManage/NipCheck/components/ScoreMarket.vue new file mode 100644 index 0000000..bd03c77 --- /dev/null +++ b/web/src/views/SecureManage/NipCheck/components/ScoreMarket.vue @@ -0,0 +1,131 @@ +<template> + <div class="main" style="height:89%"> + <div class="main_header"> + <div class="header_item"> + <span class="header_label">时间范围:</span> + <el-date-picker + v-model="search.time" + type="daterange" + value-format="yyyy-MM-dd HH:mm:ss" + :default-time="['00:00:00','23:59:59']" + range-separator="-" + start-placeholder="起始时间" + end-placeholder="结束时间"> + </el-date-picker> + </div> + <div class="header_item"> + <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button> + <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('export')" @click="exportFiles">导出Excel</el-button> + </div> + </div> + <div class="main_content"> + <el-table + v-loading="loading" + :data="dataList" + height="100%"> + <el-table-column align="center" label="序号" width="60"> + <template #default="scope"> + <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span> + </template> + </el-table-column> + <el-table-column prop="createTime" label="时间" align="center" width="150"></el-table-column> + <el-table-column prop="dangerLocation" label="积分分值" align="center" ></el-table-column> + <el-table-column prop="title" label="说明" align="center" show-overflow-tooltip></el-table-column> + </el-table> + </div> + <div class="main_footer"> + <el-pagination + background + @current-change="changePageNum" + @size-change="changePageSize" + :current-page="pageNum" + :page-sizes="[10, 20, 50, 100]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> + </div> +</template> + +<script> +import { buttonPinia } from '../../../../pinia/index'; +import { changeSize } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 + export default { + data() { + return { + size: changeSize(), // 组件尺寸 + pageNum: 1, + pageSize: 10, + search:{},//查询条件 + total: 0, + disabled:false, + loading: false, + dataList: [], //举报隐患信息列表 + imageList:[], + asyncTitle: true, // 对话框title 新增:true 修改:false + asyncVisible: false, // 添加 修改对话框 + } + }, + watch: { + asyncVisible(bol) { + if(!bol) { + this.ruleForm = {}; + this.$refs.ruleForm.resetFields(); + } + } + }, + mounted() { + const that = this; + // 根据窗口大小动态修改组件尺寸 + window.onresize = () => { + that.size = changeSize(); + } + that.searchButtonInfo(true); + }, + methods: { + // 查询按钮列表信息 + searchButtonInfo(bol) { + if(bol) { + this.pageNum = 1; + } + let params = Object.assign({},this.search,{ + pageNum: this.pageNum, + pageSize: this.pageSize + }) + params.startTime = this.search.time&&this.search.time[0] + params.endTime = this.search.time&&this.search.time[1] + delete params.time + this.loading = true; + this.$api.Safety.searchHiddenLists(params).then((res) => { + if(res.statusMsg === 'ok') { + this.total = res.data.total; + this.dataList = res.data.list; + } + this.loading = false; + }) + }, + //导出excel + exportFiles(){}, + // 判断按钮权限信息 + showButton(str) { + const pinia = buttonPinia(); + return pinia.$state.buttonInfo.includes(str); + }, + // 切换页数 + changePageNum(page) { + this.pageNum = page; + this.searchButtonInfo(); + }, + // 切换每页条数 + changePageSize(size) { + this.pageSize = size; + this.searchButtonInfo(); + } + } + } +</script> + +<style lang="sass" scoped> +@import '../../../../style/layout-main.scss'; +</style> \ No newline at end of file -- Gitblit v1.9.3