web/src/api/modules/safety.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
web/src/views/SecureManage/NipCheck/NipTips.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
web/src/views/SecureManage/NipCheck/components/ScoreMarket.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
xcx/robePages/safeManage/approveHidden.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
xcx/robePages/safeManage/checkHidden.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
web/src/api/modules/safety.js
@@ -323,4 +323,43 @@ responseType: 'blob', data: params }), /** * 安全积分超市模块 */ //查询安全积分超市列表 searchMarketLists: (params) => axios.post('/secure/integralAccount/selectPageList', params), //添加或修改安全积分超市 addUpdateMarketInfo: (params) => axios.post('/secure/integralAccount/insertAndUpdate', params), //删除安全积分超市 deleteMarketInfo: (params) => axios.get('/secure/integralAccount/delete',{params}), //安全积分超市导出 exportMarketFiles:params=> axios({ method: 'post', url: '/secure/integralAccount/exportList', responseType: 'blob', data: params }), /** * 积分明细模块 */ //查询积分明细列表 searchIntegralLists: (params) => axios.post('/secure/integralAccount/selectSafeIntegralPageList', params), //查询个人明细列表 searchPersonLists: (params) => axios.post('/secure/integralAccount/selectSafeIntegralInfo', params), //积分明细导出 exportIntegralFiles:params=> axios({ method: 'post', url: '/secure/integralAccount/exportSafeIntegralInfo', responseType: 'blob', data: params }), } web/src/views/SecureManage/NipCheck/NipTips.vue
@@ -135,6 +135,7 @@ total: 0, disabled:false, loading: false, userId:null,//创建人 dataList: [], //举报隐患信息列表 positonOptions:[],//隐患地点 imageList:[], @@ -254,6 +255,7 @@ }, // 审核按钮 checkHidden(row) { this.userId = row.createUser this.asyncTitle = true; this.imageList = [] this.asyncVisible = true; @@ -352,6 +354,7 @@ arrTitle.push({imgPath:item.name}) }) params.imgEntities = arrTitle params.createUser = this.userId this.$api.Safety.checkHiddenInfo(params).then((res) => { if(res.statusMsg === 'ok') { this.asyncVisible = false; web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue
@@ -2,36 +2,36 @@ <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> <span class="header_label">人员类型:</span> <el-select v-model="search.userType" clearable placeholder="请选择人员类型" @change="changeType"> <el-option v-for="item in optionsType" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> <div class="header_item"> <span class="header_label">人员姓名:</span> <el-select v-model="search.userId" filterable clearable placeholder="请选择人员名称"> <el-option v-for="item in optionsUser" :key="item.userId" :label="item.realName" :value="item.userId"> </el-option> </el-select> </div> <div class="header_item"> <span class="header_label">累计积分范围:</span> <el-input v-model="search.startIntegral" clearable placeholder="请输入"></el-input> <el-input v-model="search.endIntegra" style="margin-left:15px" clearable placeholder="请输入"></el-input> </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> <!-- <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 @@ -44,10 +44,20 @@ </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-column prop="realName" label="人员姓名" align="center" ></el-table-column> <el-table-column prop="accumulateIntegral" label="累计积分" align="center" ></el-table-column> <el-table-column prop="totalIntegral" label="当前积分" align="center" ></el-table-column> <el-table-column prop="totalConsumption" label="总消耗" align="center" ></el-table-column> <el-table-column prop="userType" label="人员类型" align="center" > <template #default="{row}"> <div>{{optionsType[row.userType-1]&&optionsType[row.userType - 1].label}}</div> </template> </el-table-column> <el-table-column label="操作" align="center"> <template #default="{ row }"> <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">个人积分明细</el-button> </template> </el-table-column> </el-table> </div> <div class="main_footer"> @@ -62,27 +72,120 @@ :total="total"> </el-pagination> </div> <!-- 个人积分超市明细 --> <el-dialog class="prop_dialog" title="个人积分明细" :close-on-click-modal="false" :visible.sync="asyncVisible" width="65%"> <div> <div class="main_header"> <div class="header_item"> <span class="header_label">类型:</span> <el-select v-model="searchForm.type" clearable placeholder="请选择类型"> <el-option v-for="item in optionsFormType" :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="searchForm.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="searchFormButtonInfo(true,userIds)">查询</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>{{ruleNumber}}</span>分</div> </div> <div class="main_content" style="height:350px"> <el-table v-loading="loading" :data="dataFormList" 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="integralWater" label="积分分值" align="center" ></el-table-column> <el-table-column prop="balanc" label="余额" align="center" ></el-table-column> <el-table-column prop="type" label="类型" align="center" > <template #default="{row}"> <div>{{optionsFormType[row.type-1]&&optionsFormType[row.type - 1].label}}</div> </template> </el-table-column> <el-table-column prop="remark" label="说明" align="center" show-overflow-tooltip></el-table-column> </el-table> </div> <div class="main_footer"> <el-pagination background @current-change="changeFormPageNum" @size-change="changeFormPageSize" :current-page="pageFormNum" :page-sizes="[10, 20, 50, 100]" :page-size="pageFormSize" layout="total, sizes, prev, pager, next, jumper" :total="totalForm"> </el-pagination> </div> </div> </el-dialog> </div> </template> <script> import { buttonPinia } from '../../../../pinia/index'; import { changeSize } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 import { changeSize,downFiles } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 export default { data() { return { size: changeSize(), // 组件尺寸 pageNum: 1, pageSize: 10, pageFormNum:1, pageFormSize:10, ruleNumber:null,//总积分数 userIds:null,//人员id totalForm:0, search:{},//查询条件 optionsUser:[],//人员 searchForm:{},//弹框中的查询条件 total: 0, disabled:false, loading: false, dataList: [], //积分明细信息列表 dataFormList:[],//弹框中的列表 imageList:[], asyncTitle: true, // 对话框title 新增:true 修改:false asyncVisible: false, // 添加 修改对话框 typeLists:[ optionsType:[ { label:'管理人员', value:1 }, { label:'劳务人员', value:2 }, ], optionsFormType:[ { label:'获取', value:1 @@ -91,7 +194,7 @@ label:'消耗', value:2 } ] ], } }, watch: { @@ -110,6 +213,17 @@ } }, methods: { //通过修改人员类型获取对应的人员名称 changeType(val){ this.$set(this.search,'userId','') this.$api.Engineer.getPersonsList({userType:val}).then(res=>{ if(res.statusMsg === 'ok'){ this.optionsUser = res.data }else{ this.$message.warning(res.statusMsg) } }) }, // 查询按钮列表信息 searchButtonInfo(bol) { if(bol) { @@ -123,7 +237,7 @@ params.endTime = this.search.time&&this.search.time[1] delete params.time this.loading = true; this.$api.Safety.searchHiddenLists(params).then((res) => { this.$api.Safety.searchIntegralLists(params).then((res) => { if(res.statusMsg === 'ok') { this.total = res.data.total; this.dataList = res.data.list; @@ -131,8 +245,59 @@ this.loading = false; }) }, //查询弹框中的列表 searchFormButtonInfo(bol,userId){ if(bol) { this.pageFormNum = 1; } let params = Object.assign({},this.searchForm,{ pageNum: this.pageFormNum, pageSize: this.pageFormSize, userId:userId }) params.startTime = this.searchForm.time&&this.searchForm.time[0] params.endTime = this.searchForm.time&&this.searchForm.time[1] delete params.time this.loading = true; this.$api.Safety.searchPersonLists(params).then((res) => { if(res.statusMsg === 'ok') { this.totalForm = res.data.data.total; this.ruleNumber = res.data.integral this.dataFormList = res.data.data.list; } this.loading = false; }) }, //导出excel exportFiles(){}, exportFiles(){ let params = {} params.startTime = this.search.time&&this.search.time[0] params.endTime = this.search.time&&this.search.time[1] delete params.time this.functionLoading(); this.$api.Safety.exportMarketFiles(params).then(res => { downFiles(res, '积分明细信息', 'xls') this.loadingView.close() }) .catch(() => { this.loadingView.close(); }) }, // 转圈圈 functionLoading() { this.loadingView = this.$loading({ lock: true, text: '请稍后...', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }); }, //个人积分明细弹框 updateProp(row){ this.userIds = row.userId this.asyncVisible = true; this.searchFormButtonInfo(true,row.userId) }, // 判断按钮权限信息 showButton(str) { const pinia = buttonPinia(); @@ -147,7 +312,17 @@ changePageSize(size) { this.pageSize = size; this.searchButtonInfo(); } }, //切换弹框页数 changeFormPageNum(page){ this.pageFormNum = page; this.searchFormButtonInfo(); }, // 切换弹框每页条数 changeFormPageSize(size) { this.pageFormSize = size; this.searchFormButtonInfo(); }, } } </script> web/src/views/SecureManage/NipCheck/components/ScoreMarket.vue
@@ -1,6 +1,28 @@ <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.userType" clearable placeholder="请选择人员类型" @change="changeType"> <el-option v-for="item in optionsType" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> <div class="header_item"> <span class="header_label">人员姓名:</span> <el-select v-model="search.userId" filterable clearable placeholder="请选择人员名称"> <el-option v-for="item in optionsUser" :key="item.userId" :label="item.realName" :value="item.userId"> </el-option> </el-select> </div> <div class="header_item"> <span class="header_label">时间范围:</span> <el-date-picker @@ -15,6 +37,7 @@ </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('insert')" @click="insertProp">新增</el-button> <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('export')" @click="exportFiles">导出Excel</el-button> </div> </div> @@ -29,8 +52,19 @@ </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-column prop="realName" label="人员姓名" align="center" ></el-table-column> <el-table-column prop="integralWater" label="积分分值" align="center" > <template #default="{row}"> -{{row.integralWater}} </template> </el-table-column> <el-table-column prop="remark" label="说明" align="center" show-overflow-tooltip></el-table-column> <el-table-column label="操作" align="center"> <template #default="{ row }"> <!-- <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">修改</el-button> --> <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(row)">删除</el-button> </template> </el-table-column> </el-table> </div> <div class="main_footer"> @@ -45,12 +79,51 @@ :total="total"> </el-pagination> </div> <el-dialog class="prop_dialog" :title="asyncTitle ? '新增' : '修改'" :close-on-click-modal="false" :visible.sync="asyncVisible" width="35%"> <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form"> <el-form-item label="类型:" prop="userType"> <el-select v-model="ruleForm.userType" clearable placeholder="请选择人员类型" @change="changeType"> <el-option v-for="item in optionsType" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="人员姓名:" prop="userId"> <el-select v-model="ruleForm.userId" filterable clearable placeholder="请选择人员名称"> <el-option v-for="item in optionsUser" :key="item.userId" :label="item.realName" :value="item.userId"> </el-option> </el-select> </el-form-item> <el-form-item label="扣除积分:" prop="integralWater"> <el-input v-model="ruleForm.integralWater" :size="size" type="number" clearable placeholder="请输入扣除积分"></el-input> </el-form-item> <el-form-item label="说明:" prop="remark"> <el-input v-model="ruleForm.remark" type="textarea" :rows="5" :size="size" clearable placeholder="请输入说明"></el-input> </el-form-item> </el-form> <div slot="footer"> <el-button @click="asyncVisible = false">取 消</el-button> <el-button class="submit_btn" @click="asyncTitle ? submitInsert() : submitUpdate()">提 交</el-button> </div> </el-dialog> </div> </template> <script> import { buttonPinia } from '../../../../pinia/index'; import { changeSize } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 import { changeSize,throttle,downFiles } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 export default { data() { return { @@ -61,10 +134,44 @@ total: 0, disabled:false, loading: false, dataList: [], //举报隐患信息列表 dataList: [], //安全积分超市 optionsUser:[],//所有人员 imageList:[], asyncTitle: true, // 对话框title 新增:true 修改:false asyncVisible: false, // 添加 修改对话框 ruleForm: {}, // 按钮表单 rules: { userType: [{ required: true, message: '请选择人员类型', trigger: 'change' }], userId: [{ required: true, message: '请选择人员姓名', trigger: 'change' }], integralWater: [{ required: true, message: '请输入扣除积分', trigger: 'blur' }], remark: [{ required: true, message: '请输入说明', trigger: 'blur' }], }, optionsType:[ { label:'劳务人员', value:2 }, { label:'管理人员', value:1 } ] } }, watch: { @@ -83,6 +190,85 @@ } }, methods: { //通过修改人员类型获取对应的人员名称 changeType(val){ this.$set(this.search,'userId','') this.$set(this.ruleForm,'userId','') this.$api.Engineer.getPersonsList({userType:val}).then(res=>{ if(res.statusMsg === 'ok'){ this.optionsUser = res.data }else{ this.$message.warning(res.statusMsg) } }) }, // 新增按钮信息 insertProp() { this.asyncTitle = true; this.asyncVisible = true; }, // 修改按钮信息 updateProp(row) { this.asyncTitle = false; this.asyncVisible = true; this.ruleForm = row }, // 删除按钮信息 deleteInfo(row) { this.$confirm("该操作将删除该信息,是否继续删除?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }) .then(() => { this.$api.Safety.deleteMarketInfo({id: row.id}) .then(res => { if(res.statusMsg === 'ok') { this.searchButtonInfo(true); this.$message.success("删除成功!"); } else { this.$message.warning(res.statusMsg); } }) }) .catch(() => { this.$message.warning("您已取消"); }) }, // 提交添加按钮信息 submitInsert: throttle(function() { this.$refs.ruleForm.validate((valid) => { if(valid) { const params = Object.assign({}, this.ruleForm); this.$api.Safety.addUpdateMarketInfo(params).then((res) => { if(res.statusMsg === 'ok') { this.asyncVisible = false; this.searchButtonInfo(true); this.$message.success('添加成功!'); } else { this.$message.warning(res.statusMsg); } }) } }) }, 3000), // 提交修改按钮信息 submitUpdate: throttle(function() { this.$refs.ruleForm.validate((valid) => { if(valid) { const params = Object.assign({}, this.ruleForm); this.$api.Safety.addUpdateMarketInfo(params).then((res) => { if(res.statusMsg === 'ok') { this.asyncVisible = false; this.searchButtonInfo(true); this.$message.success('修改成功!'); } else { this.$message.warning(res.statusMsg); } }) } }) }, 3000), // 查询按钮列表信息 searchButtonInfo(bol) { if(bol) { @@ -96,7 +282,7 @@ params.endTime = this.search.time&&this.search.time[1] delete params.time this.loading = true; this.$api.Safety.searchHiddenLists(params).then((res) => { this.$api.Safety.searchMarketLists(params).then((res) => { if(res.statusMsg === 'ok') { this.total = res.data.total; this.dataList = res.data.list; @@ -105,7 +291,29 @@ }) }, //导出excel exportFiles(){}, exportFiles(){ let params = {} params.startTime = this.search.time&&this.search.time[0] params.endTime = this.search.time&&this.search.time[1] delete params.time this.functionLoading(); this.$api.Safety.exportMarketFiles(params).then(res => { downFiles(res, '安全积分超市信息', 'xls') this.loadingView.close() }) .catch(() => { this.loadingView.close(); }) }, // 转圈圈 functionLoading() { this.loadingView = this.$loading({ lock: true, text: '请稍后...', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }); }, // 判断按钮权限信息 showButton(str) { const pinia = buttonPinia(); xcx/robePages/safeManage/approveHidden.vue
@@ -92,6 +92,7 @@ data(){ return{ hiddenBtn:0,//是否展示提交按钮 0:展示 createUser:null,//创建人 checkShow:false,//展示隐患等级和积分值是否可修改 showLever: false,//隐患等级弹框显隐 leverColumns: [ @@ -132,6 +133,7 @@ }, onLoad(option) { this.hiddenBtn = option.status this.createUser = option.createUser if(option.status==='0'){//0为审批页面、其他为详情页面 this.checkShow = false this.getDetailsInfo(option.id,0) @@ -175,6 +177,7 @@ const params = Object.assign({},this.hiddenDetails); params.level = this.formCheck.levelId params.integral = this.formCheck.integral params.createUser = this.createUser this.$api.reboSystem.checkHiddenInfo(params).then((res) => { if(res.success) { uni.$u.toast("提交成功!"); xcx/robePages/safeManage/checkHidden.vue
@@ -113,7 +113,7 @@ //跳转隐患审批或详情页面 goDetailsPage(val){ uni.navigateTo({ url: `./approveHidden?id=${val.id}&status=${val.auditStatus}` url: `./approveHidden?id=${val.id}&status=${val.auditStatus}&createUser=${val.createUser}` }) }, //查询列表