src/api/platform/check-score.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/platform/check-template.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/result/detail/detail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/result/detail/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/result/detail/index1.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/result/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/template/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/platform/check-score.js
@@ -18,10 +18,11 @@ } // 查询考核积分明细详细 export function getScoreIndex(id) { export function getScoreIndex(query) { return request({ url: '/check/score/detail/' + id, method: 'get' url: '/check/score/detail/index', method: 'get', params: query }) } src/api/platform/check-template.js
@@ -42,7 +42,14 @@ data: data }) } // 修改考核模板权重 export function updateWeight(data) { return request({ url: '/check/template/weight', method: 'put', data: data }) } // 删除考核模板 export function delCheckTemplate(id) { return request({ src/views/system/result/detail/detail.vue
@@ -1,15 +1,15 @@ <template> <div class="app-container"> <el-page-header @back="goBack" content="详情页面"> <el-page-header @back="goBack()" content="详情页面"> </el-page-header> <el-container> <el-main> <h2>考核规则</h2> <el-table v-loading="loading" :data="checkRuleList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> <el-table-column label="规则名称" align="center" prop="checkRuleName" /> <el-table-column label="规则权重" align="center" prop="weight" /> <el-table-column type="selection" width="55" align="center"/> <el-table-column label="规则名称" align="center" prop="checkRuleName"/> <el-table-column label="规则权重" align="center" prop="weight"/> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button @@ -17,38 +17,43 @@ type="text" icon="el-icon-edit" @click="handleRuleUpdate(scope.row)" >修改</el-button> >修改 </el-button> </template> </el-table-column> </el-table> <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getRuleList" /> </el-main> </el-container> <el-container> <el-main> <h2>考核成绩</h2> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-row :gutter="10" class="mb5"> <el-col :span="1.5" style="margin-right: 20px"> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" >导出</el-button> >导出 </el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getRuleList"></right-toolbar> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> <el-form-item label="考核日期" prop="name"> <el-date-picker v-model="date" format="yyyy-MM" value-format="yyyy-MM" type="month" placeholder="选择日期" @change="dateChange"> </el-date-picker> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> </el-form-item> </el-form> </el-row> <el-table v-loading="loading" :data="dataMap" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="dataMap" @selection-change="handleSelectionChange"> <el-table-column label="考核日期" align="center" prop="create_time" width="120px" fixed> <template slot-scope="scope"> <span>{{ scope.row.create_time.split('T')[0] }}</span> @@ -64,23 +69,23 @@ :key="item.ruleName" :label="item.ruleName" align="center" width = "120px" width="180px" > <template slot-scope="scope"> <span>{{ scope.row[item.ruleIndex] }}</span> </template> </el-table-column> </template> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleIndexUpdate(scope.row,scope.index)" >修改</el-button> </template> </el-table-column> <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">--> <!-- <template slot-scope="scope">--> <!-- <el-button--> <!-- size="mini"--> <!-- type="text"--> <!-- icon="el-icon-edit"--> <!-- @click="handleIndexUpdate(scope.row,scope.index)"--> <!-- >修改</el-button>--> <!-- </template>--> <!-- </el-table-column>--> </el-table> </el-main> </el-container> @@ -92,7 +97,7 @@ <el-input v-model="ruleForm.checkRuleName" placeholder="请输入规则名称" disabled/> </el-form-item> <el-form-item label="规则权重" prop="weight"> <el-input-number v-model="ruleForm.weight" :precision="1" placeholder="请输入规则权重" /> <el-input-number v-model="ruleForm.weight" :precision="1" :step="0.1" placeholder="请输入规则权重"/> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> @@ -105,16 +110,12 @@ <el-dialog :title="title" :visible.sync="indexOpen" width="600px" append-to-body> <el-form ref="form" :model="indexForm" :rules="rules" label-width="150px"> <el-form-item label="考核日期" prop="create_time"> <el-input v-model="ruleForm.create_time" placeholder="请输入规则名称" disabled> <el-input v-model="formattedCreateTime" placeholder="" disabled> </el-input> </el-form-item> <!-- <el-form-item label="考核对象" prop="checkRuleName">--> <!-- <el-input v-model="ruleForm.checkRuleName" placeholder="请输入规则名称" disabled/>--> <!-- </el-form-item>--> <div v-for="item in tableData" :key="item.ruleIndex"> <el-form-item :label="item.ruleName" :prop="item.ruleIndex"> <el-input-number v-model="indexForm[item.ruleIndex]" :precision="4" placeholder="请输入指标"></el-input-number> <el-input-number v-model="indexForm[item.ruleIndex]" :precision="4" :step="0.1" placeholder="请输入指标"></el-input-number> </el-form-item> </div> </el-form> @@ -127,9 +128,10 @@ </template> <script> import { listCheckResult, getCheckResult, delCheckResult, addCheckResult, updateCheckResult,manualScore, publishCheckResult } from "@/api/platform/check-result"; import { listScore, getScoreIndex, delScore, addScore, updateScore } from "@/api/platform/check-score"; import { areaSelect } from '@/api/system/dept' import {listScore, getScoreIndex, delScore, addScore, updateScore} from "@/api/platform/check-score"; import {updateWeight} from "@/api/platform/check-template"; import {areaSelect} from '@/api/system/dept' export default { name: "CheckResult", @@ -137,9 +139,11 @@ data() { return { id: null, examineCategory: null, date: '', examineTag: null, deptId: null, areaList:[], areaList: [], tableData: [], dataMap: [], manualScoreOpen: false, @@ -173,15 +177,22 @@ //请求参数 queryParams: { id: null, date: null, }, // 表单校验 rules: {} }; }, computed: { formattedCreateTime() { // 如果 create_time 存在,则返回日期部分,否则返回空字符串 return this.indexForm.create_time ? this.indexForm.create_time.split('T')[0] : ''; }, }, created() { //考核成绩详情跳转参数接收 if(this.$route.query.id){ this.id = this.$route.query.id if (this.$route.query.id) { this.queryParams.id = this.$route.query.id } // 考核积分列表 this.getList(); @@ -191,7 +202,7 @@ /** 查询考核计分列表 */ getList() { this.loading = true; getScoreIndex(this.id).then(response => { getScoreIndex(this.queryParams).then(response => { this.checkRuleList = response.data.checkRuleList; this.dataMap = response.data.scoreMap.dataMap; this.tableData = response.data.scoreMap.tableData @@ -211,8 +222,7 @@ checkRuleName: null, weight: null, }; this.indexForm = { }; this.indexForm = {}; this.resetForm(formName); }, translateDeptId(deptId) { @@ -225,29 +235,23 @@ this.areaList = res.data; }) }, cancelManualScore() { this.manualScoreForm = {}; this.manualScoreTitle = ""; this.manualScoreOpen = false; /** 返回按钮 */ goBack() { const obj = { path: "/examine/detail", query: { index: this.$route.query.deptId, examineTag: this.$route.query.examineTag, pageNum: this.$route.query.pageNum } }; this.$tab.closeOpenPage(obj); }, submitManualScore() { if (! this.manualScoreForm.manualScore) { this.$modal.msgWarning("请填写分数"); return // 关闭当前tab页签,打开新页签 closeOpenPage(obj) { store.dispatch("tagsView/delView", router.currentRoute); if (obj !== undefined) { return router.push(obj); } manualScore(this.manualScoreForm).then(res => { this.$modal.msgSuccess("操作成功"); this.cancelManualScore(); this.getList(); }) }, handleSetManualScore(row) { this.manualScoreForm.id = row.id; this.manualScoreForm.manualScore = parseInt(row.manualScore); this.manualScoreTitle = row.checkUnitName + '人工打分' this.manualScoreOpen = true; dateChange() { this.queryParams.date = this.date; console.log(this.queryParams); this.getList(); }, /** 搜索按钮操作 */ handleQuery() { this.getList(); @@ -261,7 +265,7 @@ // 多选框选中数据 handleSelectionChange(selection) { this.ids = selection.map(item => item.id) this.single = selection.length!==1 this.single = selection.length !== 1 this.multiple = !selection.length }, /** 新增按钮操作 */ @@ -288,37 +292,21 @@ submitForm() { this.$refs["form"].validate(valid => { if (valid) { if (this.form.id != null) { updateCheckResult(this.form).then(response => { if (this.ruleForm.id != null) { updateWeight(this.ruleForm).then(response => { this.$modal.msgSuccess("修改成功"); this.open = false; this.getList(); }); } else { addCheckResult(this.form).then(response => { this.$modal.msgSuccess("新增成功"); this.open = false; this.ruleOpen = false; this.getList(); }); } } }); }, /** 删除按钮操作 */ handleDelete(row) { const ids = row.id || this.ids; this.$modal.confirm('是否确认删除考核结果编号为"' + ids + '"的数据项?').then(function() { return delCheckResult(ids); }).then(() => { this.getList(); this.$modal.msgSuccess("删除成功"); }).catch(() => {}); }, /** 导出按钮操作 */ handleExport() { this.download('system/checkResult/export', { this.download('/check/score/export', { ...this.queryParams }, `checkResult_${new Date().getTime()}.xlsx`) }, `考核指标_${new Date().getTime()}.xlsx`) }, handleSelect(key, keyPath) { console.log(key, keyPath); @@ -328,57 +316,6 @@ </script> <style scoped> .line { display: flex; flex-direction: row; justify-content: flex-start; align-items: center; } .line-right { width: 50px; } .input{ width: 200px; } .input-w { margin-left: 5px; width: 70px; } .row-warp { display: flex; flex-direction: column; justify-content: center; text-align: center; border: solid 1px gray; /*padding: 3px;*/ } .row { display: flex; flex-direction: row; justify-content: center; align-items: center; border-bottom: solid 1px gray; padding: 3px; } .row:last-of-type { border-bottom: none; } .row-left { flex: 2; border-right: solid 1px gray; } .row-right { flex: 4; display: flex; flex-direction: row; justify-content: center; } .header-container { display: flex; align-items: center; /* 垂直居中 */ } .header-container h2 { margin-right: 10px; /* 根据需要调整标题和菜单之间的间距 */ src/views/system/result/detail/index.vue
File was deleted src/views/system/result/detail/index1.vue
@@ -50,17 +50,22 @@ <el-table-column label="分数" prop="score" align="center"> </el-table-column> <el-table-column label="状态" prop="publish" align="center"> </el-table-column> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="small" type="text" v-show="scope.row.publish != 1">确认发布</el-button> <el-button size="small" type="text" v-show="scope.row.publish == 1">取消发布</el-button> <dict-tag :options="dict.type.platform_is_publish" :value="scope.row.publish" /> </template> </el-table-column> <el-table-column label="操作" align="center"> <template slot-scope="scope"> <div style="display: flex;justify-content: center;"> <el-button size="small" type="text" @click="handlePublish(scope.row)" v-if="scope.row.publish === 'UNPUBLISHED'" >确认发布</el-button> <el-button size="small" type="text" @click="handlePublish(scope.row)" v-if="scope.row.publish === 'PUBLISHED'">取消发布</el-button> <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row.id)" >详细</el-button> </div> </template> </el-table-column> </el-table> @@ -68,8 +73,8 @@ <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" :page.sync="queryParamsList.pageNum" :limit.sync="queryParamsList.pageSize" @pagination="getList" /> @@ -86,11 +91,15 @@ let observer = null; export default { name: 'index', dicts: ['platform_examine_use', 'platform_examine_category'], dicts: ['platform_examine_category','platform_is_publish'], data() { return { activeIndex: '0', areaList: [], province: { id: [], publish: null, }, date: '', dateRange: '', // 总条数 @@ -101,7 +110,14 @@ deptId: null, examineTag:0 }, queryParamsList: { pageNum: 1, pageSize: 10, deptId: null, examineTag:0 }, tableData: [], tableLoading: false, loading: false, searchForm: { time: null, @@ -113,20 +129,54 @@ console.log(this.$route.query.index) if (this.$route.query.index) { this.queryParams.deptId = this.$route.query.index this.queryParamsList.deptId = this.$route.query.index } const date = new Date(); const year = date.getFullYear(); const month = (date.getMonth() + 1) >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1); this.date = year + '-' + month; this.queryParams.date = this.date; this.queryParams.examineTag =this.$route.query.examineTag; this.queryParamsList.examineTag =this.$route.query.examineTag; this.activeIndex = this.$route.query.examineTag; this.areaSelect(); this.getChart(this.$route.query.index) this.getList(this.$route.query.index); }, computed: { }, methods: { //发布 handlePublish(row) { const getExamineCategoryText = category => { switch (category) { case 1: return '视频考核'; case 2: return '车辆考核'; case 3: return '人脸考核'; default: return '未知'; } }; const year = row.createTime.substr(0, 4); const month = (parseInt(row.createTime.substr(5, 2), 10)).toString(); const day = (parseInt(row.createTime.substr(8, 2), 10)).toString(); const formattedCreateTime = year + '年' + month + '月' + day + '日'; let text = row.publish === 'UNPUBLISHED' ? '发布' : '取消发布'; this.province.id = [row.id] this.province.publish = text === "发布" ? "PUBLISHED" : "UNPUBLISHED"; this.$modal.confirm('确认要' + text + "" + getExamineCategoryText(row.examineCategory) + "" + formattedCreateTime + '的考核成绩吗?') .then(() => { return publishScore(this.province); }) .then(() => { this.getList(); this.$modal.msgSuccess(text + "成功"); }) .catch(() => { // 错误处理逻辑 }); }, // 区域下拉数据 areaSelect() { areaSelect().then(res => { @@ -141,8 +191,9 @@ handleSelect(key) { this.activeIndex = key; this.queryParams.examineTag = key; this.queryParamsList.examineTag = key; this.getChart(this.queryParams.deptId); this.getList(this.queryParams.deptId); this.getList(this.queryParamsList.deptId); }, /** 查询考核模板列表 */ getChart(deptId) { @@ -156,7 +207,7 @@ /** 查询考核模板列表 */ getList() { this.tableLoading = true; detailScore(this.queryParams).then(response => { detailScore(this.queryParamsList).then(response => { this.tableData = response.rows; this.total = response.total; this.tableLoading = false; @@ -173,6 +224,8 @@ path: '/examine/detail/detail', query: { id: id, examineTag: this.activeIndex, deptId: this.queryParamsList.deptId } }) }, @@ -206,7 +259,7 @@ series: [ { name: '车辆考核', data: this.filterData(dataList, 0), data: this.filterData(dataList, 2), type: 'line', itemStyle: { color: 'rgba(62, 144, 247, 1)' @@ -214,7 +267,7 @@ }, { name: '人脸考核', data: this.filterData(dataList, 1), data: this.filterData(dataList, 3), type: 'line', itemStyle: { color: 'rgba(85, 192, 191, 1)' @@ -222,7 +275,7 @@ }, { name: '视频考核', data: this.filterData(dataList, 2), data: this.filterData(dataList, 1), type: 'line', itemStyle: { color: 'rgba(255, 165, 0, 1)' @@ -262,6 +315,10 @@ }, getAllDay() { // const date = new Date(); // const year = date.getFullYear(); // const month = (date.getMonth() + 1) >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1); // this.date = year + '-' + month; const currentDate = this.date.split('-'); const currentYear = currentDate[0]; const currentMonth = currentDate[1]; src/views/system/result/index.vue
@@ -3,8 +3,8 @@ <div> <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect" style="margin-bottom: 10px"> <el-menu-item index="1">省厅考核</el-menu-item> <el-menu-item index="2">市局考核</el-menu-item> <el-menu-item index="0">省厅考核</el-menu-item> <el-menu-item index="1">市局考核</el-menu-item> </el-menu> </div> @@ -13,10 +13,6 @@ <div class="card-content"> <div class="title-container"> <h1>考核成绩</h1> <div class="select-container"> <el-date-picker v-model="date" type="date" placeholder="选择日期"> </el-date-picker> </div> </div> <div class="echart-container"> <div id="barChart" ref="barChart"></div> @@ -39,9 +35,9 @@ </div> <div v-for="(score, scoreIndex) in city" :key="scoreIndex"> <div class="score-item"> <div v-if="score.examineCategory == 0">车辆:</div> <div v-else-if="score.examineCategory == 1">人脸:</div> <div v-else-if="score.examineCategory == 2">视频:</div> <div v-if="score.examineCategory == 2">车辆:</div> <div v-else-if="score.examineCategory == 3">人脸:</div> <div v-else-if="score.examineCategory == 1">视频:</div> <div class="score">{{ score.score }}</div> </div> </div> @@ -77,8 +73,7 @@ }, checkScoreList: [], areaList: [], activeIndex: '1', activeIndex2: '2', activeIndex: '0', date: '', company: '', dataList: { @@ -95,6 +90,7 @@ } }, created() { this.queryParams.examineTag = this.activeIndex this.getList(); this.areaSelect(); }, @@ -107,7 +103,8 @@ this.$router.push({ path: '/examine/detail', query: { index: index index: index, examineTag: this.activeIndex } }) }, @@ -176,9 +173,9 @@ } }); const nameArray = mapData.map(item => item.name); const data1 = this.filterData(mapData, 0); const data2 = this.filterData(mapData, 1); const data3 = this.filterData(mapData, 2); const data1 = this.filterData(mapData, 1); const data2 = this.filterData(mapData, 2); const data3 = this.filterData(mapData, 3); const option = { grid: { left: 0, @@ -277,16 +274,12 @@ /** 导航切换 */ handleSelect(key) { this.activeIndex = key; // 更新当前激活的菜单项 this.queryParams.examineTag = key; this.getList(); }, /** 查询考核成绩列表 */ getList() { this.loading = true; if (this.activeIndex === '1') { this.queryParams.examineTag = '0'; // 省厅考核 } else if (this.activeIndex === '2') { this.queryParams.examineTag = '1'; // 区域考核 } // 获取当前日期 const today = new Date(); @@ -310,7 +303,7 @@ const cityName = this.translateDeptId(parseInt(city[0].deptId)); this.province.publish = text === "发布" ? "PUBLISHED" : "UNPUBLISHED"; this.province.id = city.map(city => city.id); this.$modal.confirm('是否确认' + text + '考核名为"' + cityName + '"的数据项?') this.$modal.confirm('是否确认' + text + '考核名为"' + cityName + '"的成绩?') .then(() => { return publishScore(this.province); }) src/views/system/template/index.vue
@@ -314,11 +314,11 @@ const faceRules = this.ruleList['faceRules']; // 人脸相关的规则集合 // 使用条件语句来选择规则列表 if (ruleListKey == 0) { if (ruleListKey == 2) { return carRules; } else if (ruleListKey == 1) { } else if (ruleListKey == 3) { return faceRules; } else if (ruleListKey == 2) { } else if (ruleListKey == 1) { return videoRules; } else { // 默认返回一个空数组或备选方案