src/api/platform/publish.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/platform/score.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/system/dept.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/login.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/check-rule/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/check-template/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/contract/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/score/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/platform/publish.js
@@ -43,4 +43,10 @@ }) } // 获取考核下拉列表 export function publishSelect() { return request({ url: '/system/publish/all', method: 'get' }) } src/api/platform/score.js
New file @@ -0,0 +1,44 @@ import request from '@/utils/request' // 查询考核计分列表 export function listScore(query) { return request({ url: '/platform/score/list', method: 'get', params: query }) } // 查询考核计分详细 export function getScore(id) { return request({ url: '/platform/score/' + id, method: 'get' }) } // 新增考核计分 export function addScore(data) { return request({ url: '/platform/score', method: 'post', data: data }) } // 修改考核计分 export function updateScore(data) { return request({ url: '/platform/score', method: 'put', data: data }) } // 删除考核计分 export function delScore(id) { return request({ url: '/platform/score/' + id, method: 'delete' }) } src/api/system/dept.js
@@ -49,4 +49,12 @@ url: '/system/dept/' + deptId, method: 'delete' }) } } // 获取运维单位下拉列表 export function deptSelect() { return request({ url: '/system/dept/all', method: 'get' }) } src/views/login.vue
@@ -41,7 +41,7 @@ <img :src="codeUrl" @click="getCode" class="login-code-img"/> </div> </el-form-item> <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> <el-checkbox v-model="loginForm.rememberMe" style=" margin:0px 0px 25px 0px;">记住密码</el-checkbox> <el-form-item style="width:100%;"> <el-button :loading="loading" src/views/system/check-rule/index.vue
@@ -73,28 +73,32 @@ <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="ruleName" /> <el-table-column label="运维类别" align="center" prop="category"> <template slot-scope="scope"> <div v-if="scope.row.category === 1">视频监控</div> <div v-else-if="scope.row.category === 2">车辆识别</div> <div v-else-if="scope.row.category === 3">人脸识别</div> </template> </el-table-column> <el-table-column label="规则描述" align="center" prop="ruleDetail" /> <!-- <el-table-column label="天网视频点位数" align="center" prop="videoPointNum" /> <el-table-column label="车辆卡口点位数" align="center" prop="vehicleCheckpointNum" /> <el-table-column label="人脸卡口点位数" align="center" prop="faceChceckpointNum" /> --> <el-table-column label="创建时间" align="center" prop="createTime" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" >修改</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" >删除</el-button> </template> </el-table-column> </el-table> <el-table-column label="创建时间" align="center" prop="createTime" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" >修改</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" >删除</el-button> </template> </el-table-column> </el-table> <pagination v-show="total>0" @@ -104,11 +108,21 @@ @pagination="getList" /> <!-- 添加或修改考核规则对话框 --> <!-- 添加或修改考核规则对话框 --> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="规则名称" prop="ruleName"> <el-input v-model="form.ruleName" placeholder="请输入规则名称" /> </el-form-item> <el-form-item label="规则类型" prop="category"> <el-select v-model="form.category" placeholder="规则类型"> <el-option v-for="item in categoryList" :key="item.id" :label="item.value" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item label="规则描述" prop="ruleDetail"> <el-input v-model="form.ruleDetail" type="textarea" show-word-limit maxlength="150" placeholder="请输入规则描述" /> @@ -174,6 +188,12 @@ showSearch: true, // 总条数 total: 0, // 运维类型 categoryList: [ { id: 1, value: '视频监控' }, { id: 2, value: '车辆识别' }, { id: 3, value: '人脸识别' }, ], // 考核规则表格数据 checkRuleList: [], daterangeCreateTime: [], src/views/system/check-template/index.vue
@@ -9,6 +9,14 @@ @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="公司名" prop="unitName"> <el-input v-model="queryParams.status" placeholder="请输入公司名" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="创建时间"> <el-date-picker v-model="daterangeCreateTime" @@ -71,6 +79,7 @@ <el-table v-loading="loading" :data="checkTemplateList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> <el-table-column label="模板名称" align="center" prop="templateName" /> <el-table-column label="公司名" align="center" prop="unitName" /> <el-table-column label="调整系数" align="center" prop="adjustCoefficient" /> <el-table-column label="调整系数计算方式" align="center" prop="adjustWay" /> <el-table-column label="状态" align="center" prop="status" /> @@ -105,6 +114,16 @@ <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="模板名称" prop="templateName"> <el-input v-model="form.templateName" placeholder="请输入模板名称" /> </el-form-item> <el-form-item label="公司名" prop="unitName"> <el-select v-model="form.unitName" placeholder="请选择"> <el-option v-for="item in unitList" :key="item.id" :label="item.value" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item label="考核规则" prop="tempRuleFormList"> <div class="row-warp"> @@ -168,12 +187,14 @@ <script> import { listCheckTemplate, getCheckTemplate, delCheckTemplate, addCheckTemplate, updateCheckTemplate } from "@/api/platform/check-template"; import { ruleSelect } from '../../../api/platform/check-rule' import { unitSelect } from '../../../api/platform/unit' export default { name: "CheckTemplate", data() { return { ruleList: [], unitList: [], // 临时规则表单 tempRuleForm: {}, // 临时规则表单列表 @@ -226,6 +247,7 @@ created() { this.getList(); this.selectCheckRule(); this.selectUnit(); }, methods: { removeRule(form) { @@ -249,6 +271,12 @@ this.ruleList = res.data; }) }, // 运维公司下拉数据 selectUnit() { unitSelect().then(res => { this.unitList = res.data; }) }, /** 查询考核模板列表 */ getList() { this.loading = true; src/views/system/contract/index.vue
@@ -75,112 +75,77 @@ style="width: 100%"> <el-table-column type="expand"> <template slot-scope="props"> <el-form label-position="left" inline class="demo-table-expand"> <el-form label-position="left" inline class="table-expand"> <el-collapse v-model="activeNames" @change="handleChange"> <el-collapse-item title="视频平均在线率" name="1"> <div>≥98%:不扣分</div> <div>95%≤视频平均在线率<98%:扣5分</div> <div>90%≤视频平均在线率<95%:扣10分</div> <div><90%:扣20分,若有连续两次省厅考核在线率低于90%,招标人有权解除合同。</div> <div class="inline-input-container"> 95%≤视频平均在线率<98%: <el-input v-model="props.row.score95to98" type="number" min="0" max="100" placeholder="请输入扣分"></el-input> </div> <div class="inline-input-container"> 90%≤视频平均在线率<95%:<el-input v-model="props.row.score90to95" type="number" min="0" max="100" placeholder="请输入扣分"></el-input> </div> <div class="inline-input-container"> <90%: <el-input v-model="props.row.scoreBelow90" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>, 若有连续两次省厅考核在线率低于90%,招标人有权解除合同。 </div> </el-collapse-item> <el-collapse-item title="前端感知源治理工作" name="2"> <div>时钟同步(超过±3秒为不合格)24小时内未修复的:扣除相关镜头数量*0.1分</div> <div>OSD标识不满足《GAT 751-2008 视频图像文字标注规范》,24小时内未修复的:标扣除相关镜头数量*0.1分</div> <div>用户抽检,一机一档数据项不合格(提供虚假数据或错误数据为不合格),24小时内未修复的:扣除相关镜头数量*0.1分</div> <div class="inline-input-container"> 时钟同步(超过±3秒为不合格)24小时内未修复的:扣除相关镜头数量* <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分 </div> <div class="inline-input-container"> OSD标识不满足《GAT 751-2008 视频图像文字标注规范》,24小时内未修复的:标扣除相关镜头数量* <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分 </div> <div class="inline-input-container"> 用户抽检,一机一档数据项不合格(提供虚假数据或错误数据为不合格),24小时内未修复的:扣除相关镜头数量* <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分 </div> </el-collapse-item> <el-collapse-item title="后台系统的保障" name="3"> <div>个别设备故障但不影响该功能模块整体应用情况下,超出72小时不足144小时的;扣1分/12小时</div> <div>个别设备故障但不影响该功能模块整体应用情况下,超出144小时以后,每超出12小时:扣2分/12小时</div> <div>个别设备故障但不影响该功能模块整体应用情况下,同一功能模块的相同或不同设备累计一个月内故障超过3次:扣1分/次</div> <div>后台功能模块不能正常运行影响正常使用的,超出24小时不足48小时的:扣3分/12小时</div> <div>后台功能模块不能正常运行影响正常使用的,超出48小时以后:扣5分/12小时</div> <div>后台功能模块不能正常运行影响正常使用的,同一功能模块的相同或不同设备累计一个月内故障超过2次:扣3分/次</div> <div class="inline-input-container"> 个别设备故障但不影响该功能模块整体应用情况下,超出72小时不足144小时的;扣 <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/12小时 </div> <div class="inline-input-container"> 个别设备故障但不影响该功能模块整体应用情况下,超出144小时以后,每超出12小时:扣 <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/12小时 </div> <div class="inline-input-container"> 个别设备故障但不影响该功能模块整体应用情况下,同一功能模块的相同或不同设备累计一个月内故障超过3次:扣 <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/12小时 </div> <div class="inline-input-container"> 后台功能模块不能正常运行影响正常使用的,超出24小时不足48小时的:扣 <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/次 </div> <div class="inline-input-container"> 个别设备故障但不影响该功能模块整体应用情况下,超出72小时不足144小时的;扣 <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/12小时 </div> <div class="inline-input-container"> 后台功能模块不能正常运行影响正常使用的,超出48小时以后:扣 <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/12小时 </div> <div class="inline-input-container"> 后台功能模块不能正常运行影响正常使用的,同一功能模块的相同或不同设备累计一个月内故障超过2次:扣 <el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/次 </div> </el-collapse-item> <el-collapse-item title="存储故障" name="4"> <div>因存储设备、云存储软件等引起平台不能正常查看历史图像,单次故障时长在24小时以内的:扣0.5分/小时</div> <div>因存储设备、云存储软件等引起平台不能正常查看历史图像,单次故障时长在24小时以内的:扣1分/小时</div> <div>因视频或者图片丢失导致重要案事件不能回放或查看,同一点位视频图像同一案件不累计计算:扣2分/次</div> <div class="inline-input-container"> 因存储设备、云存储软件等引起平台不能正常查看历史图像,单次故障时长在24小时以内的:扣<el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/小时 </div> <div class="inline-input-container"> 因存储设备、云存储软件等引起平台不能正常查看历史图像,单次故障时长在24小时以内的:扣<el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/小时 </div> <div class="inline-input-container"> 因视频或者图片丢失导致重要案事件不能回放或查看,同一点位视频图像同一案件不累计计算:扣<el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分/次 </div> </el-collapse-item> <el-collapse-item title="对于前端点位异常情况的处理" name="5"> <div>24小时后未修复的:扣0.5分*镜头数量</div> <div>48小时后未修复,累计扣分:扣1分*镜头数量*天</div> <div class="inline-input-container"> 24小时后未修复的:扣<el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分*镜头数量 </div> <div class="inline-input-container"> 48小时后未修复,累计扣分:扣<el-input v-model="props.row.time24" type="number" min="0" max="100" placeholder="请输入扣分"></el-input>分*镜头数量*天 </div> </el-collapse-item> <el-collapse-item title="安全管理" name="6"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="运维周期性报告" name="7"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="建立故障申报热线电话" name="8"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="人员驻场服务" name="9"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="保障工作" name="10"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="运维保障情况" name="11"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="系统及设备产品质量" name="12"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="运维团队" name="13"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="设备系统升级" name="14"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="泄密追查" name="15"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="安全防护终端" name="16"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="台账登记" name="17"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="建立数据监测维护机制" name="18"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="确保录像完整,不定期对所有点位录像完整性抽查" name="19"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="确保图片完整,不定期对所有人脸、车辆以及智能前端抓拍的图片完整性抽查" name="20"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="视觉计算省厅验证工作" name="21"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="自贡市智慧城市大数据中心机房" name="22"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="主干链路(10G及以上)故障" name="23"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <el-collapse-item title="考核结果应用规则" name="24"> <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div> <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div> </el-collapse-item> <div style="text-align: right; margin-top: 10px;"> <el-button type="primary" @click="submitForm1(props.row)">提交</el-button> </div> </el-collapse> </el-form> </template> @@ -231,13 +196,38 @@ <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="公司名" prop="companyName"> <el-input v-model="form.companyName" placeholder="请输入公司名" /> <el-select v-model="form.companyName" placeholder="请选择"> <el-option v-for="item in unitList" :key="item.id" :label="item.value" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item label="部门名称" prop="deptName"> <el-input v-model="form.deptName" placeholder="请输入部门名称" /> <el-select v-model="form.deptName" placeholder="请选择"> <el-option v-for="item in deptList" :key="item.id" :label="item.value" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item label="合同明细" prop="detail"> <el-input v-model="form.detail" type="textarea" placeholder="请输入内容" /> <el-form-item label="合同时间" prop="timezone"> <el-date-picker :disabled="title === '修改合同时间'" @change="dateChange" v-model="form.timezone" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" > </el-date-picker> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> @@ -250,11 +240,15 @@ <script> import { listContract, getContract, delContract, addContract, updateContract } from "@/api/platform/contract"; import {unitSelect} from "../../../api/platform/unit"; import {deptSelect} from "../../../api/system/dept"; export default { name: "Contract", data() { return { unitList: [], deptList: [], activeNames: ['1'], // 遮罩层 loading: true, @@ -311,8 +305,6 @@ }], // 表单参数 form: { }, // 表单校验 rules: { @@ -324,8 +316,25 @@ }, created() { this.getList(); this.selectUnit(); this.selectDept(); }, methods: { // 运维公司下拉数据 selectUnit() { unitSelect().then(res => { this.unitList = res.data; }) }, // 公安部门下拉数据 selectDept() { deptSelect().then(res => { this.deptList = res.data; }) }, submitForm1() { alert('提交成功!'); }, handleChange(val) { console.log(val); }, @@ -428,17 +437,20 @@ </script> <style scoped> .demo-table-expand { .table-expand { font-size: 0; } .demo-table-expand .title{ width: 250px; .table-expand { width: 100%; color: #99a9bf; } .demo-table-expand { margin-right: 0; margin-bottom: 0; width: 100%; .table-expand { } .inline-input-container { white-space: nowrap; /* 防止内容内部的换行 */ margin-right: 50px; /* 可选的,用于在元素之间添加一些间距 */ width: 7%; } src/views/system/score/index.vue
New file @@ -0,0 +1,365 @@ <template> <div class="app-container"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="单位名" prop="unitId"> <el-input v-model="queryParams.unitId" placeholder="请输入单位名" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="考核名" prop="examineId"> <el-input v-model="queryParams.examineId" placeholder="请输入考核名" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="操作类型" prop="operateCategory"> <el-select v-model="queryParams.operateCategory" placeholder="请选择操作类型" clearable> <el-option v-for="dict in dict.type.platform_operate_category" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item> <el-form-item label="积分类型" prop="scoreCategory"> <el-input v-model="queryParams.scoreCategory" placeholder="请输入积分类型" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> </el-form-item> </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['platform:score:add']" >新增</el-button> </el-col> <el-col :span="1.5"> <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['platform:score:edit']" >修改</el-button> </el-col> <el-col :span="1.5"> <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['platform:score:remove']" >删除</el-button> </el-col> <el-col :span="1.5"> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['platform:score:export']" >导出</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <el-table v-loading="loading" :data="scoreList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> <el-table-column label="考核名" align="center" prop="examineName" /> <el-table-column label="单位名" align="center" prop="unitName" /> <el-table-column label="分值" align="center" prop="score" /> <el-table-column label="操作类型" align="center" prop="operateCategory"> <template slot-scope="scope"> <dict-tag :options="dict.type.platform_operate_category" :value="scope.row.operateCategory"/> </template> </el-table-column> <el-table-column label="积分类型" align="center" prop="scoreCategory"> <template slot-scope="scope"> <div v-if="scope.row.scoreCategory === 1">视频在线率</div> <div v-else-if="scope.row.scoreCategory === 2">存储故障</div> <div v-else-if="scope.row.scoreCategory === 3">保障工作</div> </template> </el-table-column> <el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建时间" align="center" prop="createTime" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['platform:score:edit']" >修改</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['platform:score:remove']" >删除</el-button> </template> </el-table-column> </el-table> <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <!-- 添加或修改考核计分对话框 --> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="分值" prop="score"> <el-input v-model="form.score" placeholder="请输入分值" /> </el-form-item> <el-form-item label="单位名" prop="unitId"> <el-select v-model="form.unitId" placeholder="请选择"> <el-option v-for="item in unitList" :key="item.id" :label="item.value" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item label="考核名" prop="examineId"> <el-select v-model="form.examineId" placeholder="请选择"> <el-option v-for="item in examineList" :key="item.id" :label="item.value" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item label="操作类型" prop="operateCategory"> <el-select v-model="form.operateCategory" placeholder="请选择操作类型"> <el-option v-for="item in operateCategoryList" :key="item.id" :label="item.value" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item label="积分类型" prop="scoreCategory"> <el-select v-model="form.scoreCategory" placeholder="请选择"> <el-option v-for="item in scoreCategoryList" :key="item.id" :label="item.value" :value="item.id"> </el-option> </el-select> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">确 定</el-button> <el-button @click="cancel">取 消</el-button> </div> </el-dialog> </div> </template> <script> import { listScore, getScore, delScore, addScore, updateScore } from "@/api/platform/score"; import {unitSelect} from "../../../api/platform/unit"; import {publishSelect} from "../../../api/platform/publish"; export default { name: "Score", dicts: ['platform_operate_category'], data() { return { operateCategoryList: [ { id: 2, value: '人工打分' }, { id: 1, value: '系统打分' }, ], scoreCategoryList: [ { id: 2, value: '存储故障' }, { id: 1, value: '视频在线率' }, { id: 3, value: '保障工作' }, ], unitList: [], examineList: [], // 遮罩层 loading: true, // 选中数组 ids: [], // 非单个禁用 single: true, // 非多个禁用 multiple: true, // 显示搜索条件 showSearch: true, // 总条数 total: 0, // 考核计分表格数据 scoreList: [], // 弹出层标题 title: "", // 是否显示弹出层 open: false, // 查询参数 queryParams: { pageNum: 1, pageSize: 10, score: null, unitId: null, examineId: null, operateCategory: null, scoreCategory: null, }, // 表单参数 form: {}, // 表单校验 rules: { } }; }, created() { this.getList(); this.selectUnit(); this.selectExamine(); }, methods: { // 运维公司下拉数据 selectUnit() { unitSelect().then(res => { this.unitList = res.data; }) }, // 考核下拉数据 selectExamine() { publishSelect().then(res => { this.examineList = res.data; }) }, /** 查询考核计分列表 */ getList() { this.loading = true; listScore(this.queryParams).then(response => { this.scoreList = response.rows; this.total = response.total; this.loading = false; }); }, // 取消按钮 cancel() { this.open = false; this.reset(); }, // 表单重置 reset() { this.form = { id: null, score: null, unitId: null, examineId: null, operateCategory: null, scoreCategory: null, createTime: null, createBy: null }; this.resetForm("form"); }, /** 搜索按钮操作 */ handleQuery() { this.queryParams.pageNum = 1; this.getList(); }, /** 重置按钮操作 */ resetQuery() { this.resetForm("queryForm"); this.handleQuery(); }, // 多选框选中数据 handleSelectionChange(selection) { this.ids = selection.map(item => item.id) this.single = selection.length!==1 this.multiple = !selection.length }, /** 新增按钮操作 */ handleAdd() { this.reset(); this.open = true; this.title = "添加考核计分"; }, /** 修改按钮操作 */ handleUpdate(row) { this.reset(); const id = row.id || this.ids getScore(id).then(response => { this.form = response.data; this.open = true; this.title = "修改考核计分"; }); }, /** 提交按钮 */ submitForm() { this.$refs["form"].validate(valid => { if (valid) { if (this.form.id != null) { updateScore(this.form).then(response => { this.$modal.msgSuccess("修改成功"); this.open = false; this.getList(); }); } else { addScore(this.form).then(response => { this.$modal.msgSuccess("新增成功"); this.open = false; this.getList(); }); } } }); }, /** 删除按钮操作 */ handleDelete(row) { const ids = row.id || this.ids; this.$modal.confirm('是否确认删除考核计分编号为"' + ids + '"的数据项?').then(function() { return delScore(ids); }).then(() => { this.getList(); this.$modal.msgSuccess("删除成功"); }).catch(() => {}); }, /** 导出按钮操作 */ handleExport() { this.download('platform/score/export', { ...this.queryParams }, `score_${new Date().getTime()}.xlsx`) } } }; </script>