| | |
| | | <template> |
| | | <div id="warp"> |
| | | <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> |
| | | </div> |
| | | |
| | | <div class="data-chart-container"> |
| | | <el-card class="data-card" :body-style="{ height: '100%' }"> |
| | | <div class="card-content"> |
| | |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="echart-container"> |
| | | <div id="barChart" ref="barChart"></div> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | <el-row :gutter="100"> |
| | | <el-col :span="6"> |
| | | <div class="city-warp"> |
| | | <div class="city"> |
| | | <div class="title"> |
| | | 自流井 |
| | | </div> |
| | | <div class="score-warp"> |
| | | <div class="score-item"> |
| | | <div style="font-size: 15px;margin-bottom: 15px">2024年4月12日</div> |
| | | |
| | | <div> |
| | | <el-row :gutter="100"> |
| | | <el-col :span="6" v-for="(city, index) in checkScoreList" :key="index"> |
| | | <div class="city-warp"> |
| | | <div class="city"> |
| | | <div class="title"> |
| | | {{ translateDeptId(index) }} |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>视频:</div> |
| | | <div class="score">99.5</div> |
| | | <div class="score-warp"> |
| | | <div class="score-item"> |
| | | <div style="font-size: 15px; margin-bottom: 15px">{{ formatCreateDate(city[0].createTime) }}</div> |
| | | </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 class="score">{{ score.score }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>人脸:</div> |
| | | <div class="score">87</div> |
| | | <div class="bottom-publish"> |
| | | <el-button |
| | | size="medium" |
| | | :type="isAnyUnpublished(city) ? 'success' : 'danger'" |
| | | @click="publish(city)" |
| | | > |
| | | {{ isAnyUnpublished(city) ? '发布' : '取消' }} |
| | | </el-button> |
| | | <el-button size="medium" @click="jumpDetail(index)" type="info">详情</el-button> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>车辆:</div> |
| | | <div class="score">94</div> |
| | | </div> |
| | | </div> |
| | | <div class="bottom-publish"> |
| | | <el-button size="medium" type="success">发布</el-button> |
| | | <el-button size="medium" @click="jumpDetail" type="info">详情</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <div class="city-warp"> |
| | | <div class="city"> |
| | | <div class="title"> |
| | | 富顺 |
| | | </div> |
| | | <div class="score-warp"> |
| | | <div class="score-item"> |
| | | <div style="font-size: 15px;margin-bottom: 15px">2024年4月12日</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>视频:</div> |
| | | <div class="score">99.5</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>人脸:</div> |
| | | <div class="score">87</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>车辆:</div> |
| | | <div class="score">94</div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="bottom-publish"> |
| | | <el-button size="medium" v-hasPermi="['calculate:rule:add']" type="success">发布</el-button> |
| | | <el-button size="medium" v-hasPermi="['calculate:rule:query']" @click="jumpDetail" type="info">详情</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <div class="city-warp"> |
| | | <div class="city"> |
| | | <div class="title"> |
| | | 荣县 |
| | | </div> |
| | | <div class="score-warp"> |
| | | <div class="score-item"> |
| | | <div style="font-size: 15px;margin-bottom: 15px">2024年4月12日</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>视频:</div> |
| | | <div class="score">99.5</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>人脸:</div> |
| | | <div class="score">87</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>车辆:</div> |
| | | <div class="score">94</div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="bottom-publish"> |
| | | <el-button size="medium" type="success">发布</el-button> |
| | | <el-button size="medium" @click="jumpDetail" type="info">详情</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <div class="city-warp"> |
| | | <div class="city"> |
| | | <div class="title"> |
| | | 沿滩区 |
| | | </div> |
| | | <div class="score-warp"> |
| | | <div class="score-item"> |
| | | <div style="font-size: 15px;margin-bottom: 15px">2024年4月12日</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>视频:</div> |
| | | <div class="score">99.5</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>人脸:</div> |
| | | <div class="score">87</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>车辆:</div> |
| | | <div class="score">94</div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="bottom-publish"> |
| | | <el-button size="medium" type="success">发布</el-button> |
| | | <el-button size="medium" @click="jumpDetail" type="info">详情</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | |
| | | |
| | | </el-row> |
| | | |
| | | <el-row style="margin-top: 30px" :gutter="100"> |
| | | <el-col :span="6"> |
| | | <div class="city-warp"> |
| | | <div class="city"> |
| | | <div class="title"> |
| | | 高新区 |
| | | </div> |
| | | <div class="score-warp"> |
| | | <div class="score-item"> |
| | | <div style="font-size: 15px;margin-bottom: 15px">2024年4月12日</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>视频:</div> |
| | | <div class="score">99.5</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>人脸:</div> |
| | | <div class="score">87</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>车辆:</div> |
| | | <div class="score">94</div> |
| | | </div> |
| | | </div> |
| | | <div class="bottom-publish"> |
| | | <el-button size="medium" type="success">发布</el-button> |
| | | <el-button size="medium" @click="jumpDetail" type="info">详情</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <div class="city-warp"> |
| | | <div class="city"> |
| | | <div class="title"> |
| | | 大安区 |
| | | </div> |
| | | <div class="score-warp"> |
| | | <div class="score-item"> |
| | | <div style="font-size: 15px;margin-bottom: 15px">2024年4月12日</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>视频:</div> |
| | | <div class="score">99.5</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>人脸:</div> |
| | | <div class="score">87</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>车辆:</div> |
| | | <div class="score">94</div> |
| | | </div> |
| | | </div> |
| | | <div class="bottom-publish"> |
| | | <el-button size="medium" type="success">发布</el-button> |
| | | <el-button size="medium" @click="jumpDetail" type="info">详情</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <div class="city-warp"> |
| | | <div class="city"> |
| | | <div class="title"> |
| | | 贡井区 |
| | | </div> |
| | | <div class="score-warp"> |
| | | <div class="score-item"> |
| | | <div style="font-size: 15px;margin-bottom: 15px">2024年4月12日</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>视频:</div> |
| | | <div class="score">99.5</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>人脸:</div> |
| | | <div class="score">87</div> |
| | | </div> |
| | | <div class="score-item"> |
| | | <div>车辆:</div> |
| | | <div class="score">94</div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="bottom-publish"> |
| | | <el-button size="medium" type="success">发布</el-button> |
| | | <el-button size="medium" @click="jumpDetail" type="info">详情</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import { areaSelect } from '@/api/system/dept'; |
| | | import { listScore, getScore, delScore, addScore, updateScore,publishScore} from "@/api/platform/check-score"; |
| | | import * as echarts from 'echarts'; |
| | | let observer = null; |
| | | let chart = null; |
| | |
| | | name: 'index', |
| | | data() { |
| | | return { |
| | | province:{ |
| | | id: [], |
| | | publish: null, |
| | | }, |
| | | checkScoreList:[], |
| | | areaList:[], |
| | | activeIndex: '1', |
| | | activeIndex2: '1', |
| | | activeIndex2: '2', |
| | | date: '', |
| | | company: '', |
| | | dataList: { |
| | |
| | | data2: [93.7, 93.5, 94.3, 96.5, 95.3, 94.2, 93.3], |
| | | data3: [98.3, 94.3, 93.3, 95.5, 96.8, 96.1, 95.8], |
| | | }, |
| | | // 查询参数 |
| | | queryParams: { |
| | | examineTag: null, |
| | | createTime: null |
| | | }, |
| | | } |
| | | }, |
| | | created() { |
| | | this.getList(); |
| | | this.areaSelect(); |
| | | }, |
| | | mounted() { |
| | | chart = echarts.init(this.$refs.barChart); |
| | | this.initEchart(); |
| | | }, |
| | | methods: { |
| | | jumpDetail() { |
| | | this.$router.push("/examine/detail") |
| | | jumpDetail(index) { |
| | | this.$router.push({ |
| | | path: '/examine/detail', |
| | | query: { |
| | | index: index |
| | | } |
| | | }) |
| | | }, |
| | | initEchart() { |
| | | const option = { |
| | |
| | | ] |
| | | } |
| | | chart.setOption(option, true); |
| | | }, |
| | | // 区域下拉数据 |
| | | areaSelect() { |
| | | areaSelect().then(res => { |
| | | this.areaList = res.data; |
| | | }) |
| | | }, |
| | | translateDeptId(deptId) { |
| | | const department = this.areaList.find(dept => dept.id === deptId); |
| | | return department ? department.value : '未知'; |
| | | }, |
| | | |
| | | } |
| | | isAnyUnpublished(city) { |
| | | // 检查 city 的 score 数组中是否有任何一个的 publish 属性为 'UNPUBLISHED' |
| | | return city.some(score => score.publish === 'UNPUBLISHED'); |
| | | }, |
| | | formatCreateDate(dateString) { |
| | | const date = new Date(dateString); |
| | | const year = date.getFullYear(); |
| | | const month = date.getMonth() + 1; // getMonth() 返回的月份是从 0 开始的,所以要加 1 |
| | | const day = date.getDate(); |
| | | |
| | | // 使用 padStart 方法确保月份和日期始终是两位数 |
| | | const formattedMonth = month.toString().padStart(2, '0'); |
| | | const formattedDay = day.toString().padStart(2, '0'); |
| | | |
| | | return `${year}年${formattedMonth}月${formattedDay}号`; |
| | | }, |
| | | /** 导航切换 */ |
| | | handleSelect(key){ |
| | | this.activeIndex = 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(); |
| | | |
| | | // 计算昨天的日期 |
| | | const yesterday = new Date(today); |
| | | yesterday.setDate(today.getDate() - 1); |
| | | |
| | | // 将昨天的日期格式化为字符串,这里假设后端期望的是ISO 8601格式 |
| | | this.queryParams.createTime = yesterday.toISOString().split('T')[0]; |
| | | |
| | | console.log(this.queryParams); |
| | | listScore(this.queryParams).then(response => { |
| | | this.checkScoreList = response.data; |
| | | console.log(this.checkScoreList); |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | publish(city){ |
| | | let text = this.isAnyUnpublished(city) ? "发布":"取消发布"; |
| | | 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 + '"的数据项?') |
| | | .then(() => { |
| | | return publishScore(this.province); |
| | | }) |
| | | .then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess(text + "成功"); |
| | | }) |
| | | .catch(() => { |
| | | // 错误处理逻辑 |
| | | }); |
| | | }, |
| | | }, |
| | | mounted() { |
| | | chart = echarts.init(this.$refs.barChart); |
| | | this.initEchart(); |
| | | } |
| | | } |
| | | </script> |
| | | |
| | |
| | | .score { |
| | | width: 60px; |
| | | text-align: right; |
| | | padding: 3px 0; |
| | | } |
| | | #warp { |
| | | padding: 20px; |
| | | padding: 0 10px; |
| | | } |
| | | .city-warp { |
| | | display: flex; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 210px; |
| | | margin-bottom: 25px; |
| | | } |
| | | .city { |
| | | width: 240px; |