diff --git a/src/api/deployMsg/index.js b/src/api/deployMsg/index.js deleted file mode 100644 index 7daf24b..0000000 --- a/src/api/deployMsg/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from "@/utils/request2"; - -export function getList(query) { - return request({ - url: "/inspectorAssign", - method: "GET", - params: query, - }); -} diff --git a/src/api/deployRecord/index.js b/src/api/deployRecord/index.js deleted file mode 100644 index 1b616ad..0000000 --- a/src/api/deployRecord/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from "@/utils/request2"; - -export function getList(query) { - return request({ - url: "/inspectorAssignRecord", - method: "GET", - params: query, - }); -} diff --git a/src/api/inspectorTrain/index.js b/src/api/inspectorTrain/index.js deleted file mode 100644 index fa340a4..0000000 --- a/src/api/inspectorTrain/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import request from "@/utils/request2.js"; -export function getList(query) { - return request({ - url: "/inspectorTrain/selectAllInspectorTrain", - method: "GET", - params: query, - }); -} diff --git a/src/api/largeSize/index.js b/src/api/largeSize/index.js deleted file mode 100644 index 6508a35..0000000 --- a/src/api/largeSize/index.js +++ /dev/null @@ -1,50 +0,0 @@ -import request from "@/utils/request2"; -// 查询检查队伍级别分布; -export function getPieLevel(query) { - return request({ - url: "/inspectorScreen/grade", - method: "GET", - params: query, - }); -} -//查询检查队伍类别分布 -export function getPieType(query) { - return request({ - url: "/inspectorScreen/type", - method: "GET", - params: query, - }); -} -//查询检查队伍层级分布 -export function getPieCj(query) { - return request({ - url: "/inspectorScreen/level", - method: "GET", - params: query, - }); -} -//查询检查队伍学历分布 -export function getPieXl(query) { - return request({ - url: "/inspectorScreen/education", - method: "GET", - params: query, - }); -} - -// 2023年年度培训情况统计 -export function getTrainData(query) { - return request({ - url: "/inspectorScreen/train", - method: "GET", - params: query, - }); -} - -//检查园数量 -export function getinspectorNum() { - return request({ - url: "/inspectorInformation/getinspectorNum", - method: "POST", - }); -} diff --git a/src/api/myapi/infoMsg/index.js b/src/api/myapi/infoMsg/index.js deleted file mode 100644 index 4eaa5c4..0000000 --- a/src/api/myapi/infoMsg/index.js +++ /dev/null @@ -1,40 +0,0 @@ -import request from '@/utils/request2' - -export default { - // 获取单个检查员信息 - detail(e) { - return request({ - url: `/inspectorInformation/${e}`, - method: 'get', - }) - }, - // 修改单个检查员信息 - update(data) { - return request({ - url: '/inspectorInformation', - method: 'put', - data - }) - }, - //上传文件 - updateFile(data) { - return request({ - url: '/common/uploadMinioonfile', - method: 'post', - headers: { - "Content-Type": "multipart/form-data", - }, - data - }) - }, - //根据word模板导出数据 - exportFile(id) { - return request({ - url: `/inspectorInformation/exportWord/${id}`, - method: 'post', - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - }) - }, -} diff --git a/src/api/myapi/jiangcheng/index.js b/src/api/myapi/jiangcheng/index.js deleted file mode 100644 index ab4c871..0000000 --- a/src/api/myapi/jiangcheng/index.js +++ /dev/null @@ -1,41 +0,0 @@ -import request from "@/utils/request2"; - -export default { - // 获取奖惩信息列表 - list(e) { - return request({ - url: `/inspectorPunishment`, - method: "get", - params: e, - }); - }, - // // 修改单个检查员信息 - // update(data) { - // return request({ - // url: '/inspectorInformation', - // method: 'put', - // data - // }) - // }, - // //上传文件 - // updateFile(data) { - // return request({ - // url: '/common/uploadMinioonfile', - // method: 'post', - // headers: { - // "Content-Type": "multipart/form-data", - // }, - // data - // }) - // }, - // //根据word模板导出数据 - // exportFile(id) { - // return request({ - // url: `/inspectorInformation/exportWord/${id}`, - // method: 'post', - // headers: { - // "Content-Type": "application/x-www-form-urlencoded", - // }, - // }) - // }, -}; diff --git a/src/api/myapi/pinren/index.js b/src/api/myapi/pinren/index.js deleted file mode 100644 index 8083127..0000000 --- a/src/api/myapi/pinren/index.js +++ /dev/null @@ -1,41 +0,0 @@ -import request from "@/utils/request2"; - -export default { - // 获取聘任信息列表 - list(e) { - return request({ - url: `/inspectorAppointment`, - method: "get", - params: e, - }); - }, - // // 修改单个检查员信息 - // update(data) { - // return request({ - // url: '/inspectorInformation', - // method: 'put', - // data - // }) - // }, - // //上传文件 - // updateFile(data) { - // return request({ - // url: '/common/uploadMinioonfile', - // method: 'post', - // headers: { - // "Content-Type": "multipart/form-data", - // }, - // data - // }) - // }, - // //根据word模板导出数据 - // exportFile(id) { - // return request({ - // url: `/inspectorInformation/exportWord/${id}`, - // method: 'post', - // headers: { - // "Content-Type": "application/x-www-form-urlencoded", - // }, - // }) - // }, -}; diff --git a/src/api/myapi/screenLeft/index.js b/src/api/myapi/screenLeft/index.js deleted file mode 100644 index e8c1fb4..0000000 --- a/src/api/myapi/screenLeft/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import request from '@/utils/request2' - -export default { - // 检查人员工龄分布 - detectCompose(query) { - return request({ - url: '/inspectorScreen/seniority', - method: 'get', - params: query - }) - }, - //检查人员男女性别分布 - sex(query) { - return request({ - url: '/inspectorScreen/sex', - method: 'get', - params: query - }) - }, - //执法监督工作 - -} diff --git a/src/api/myapi/training/index.js b/src/api/myapi/training/index.js deleted file mode 100644 index 536ebf6..0000000 --- a/src/api/myapi/training/index.js +++ /dev/null @@ -1,50 +0,0 @@ -import request from "@/utils/request2"; - -export default { - // 检查员培训情况列表 - listTraining(query) { - return request({ - url: "/inspectorTrain", - method: "get", - params: query, - }); - }, - // 检查员培训情况添加 - addTraining(data) { - return request({ - url: "/inspectorTrain", - method: "post", - data, - }); - }, - // 检查员培训情况修改 - updateTraining(data) { - return request({ - url: "/inspectorTrain", - method: "put", - data, - }); - }, - // 检查员培训情况删除 - deleteTraining(e) { - return request({ - url: `/inspectorTrain?idList=${e}`, - method: "delete", - }); - }, - // 检查员培训情况查询单个 - detailTraining(e) { - return request({ - url: `/inspectorTrain/${e}`, - method: "get", - }); - }, - //导出 - exportMsg(e) { - return request({ - url: `/inspectorTrain/export`, - method: "get", - params: e, - }); - }, -}; diff --git a/src/api/myapi/traits/index.js b/src/api/myapi/traits/index.js deleted file mode 100644 index a41b0a1..0000000 --- a/src/api/myapi/traits/index.js +++ /dev/null @@ -1,27 +0,0 @@ -import request from "@/utils/request2"; - -export default { - //检查员特质列表 - listTraits(e) { - return request({ - url: "/inspectorSpeciality", - method: "get", - params: e, - }); - }, - // 检查员特质修改 - updateTraits(data) { - return request({ - url: "/inspectorSpeciality", - method: "put", - data, - }); - }, - // 检查员特质详情 - detailTraits(e) { - return request({ - url: `/inspectorSpeciality/${e}`, - method: "get", - }); - }, -}; diff --git a/src/api/myapi/work/index.js b/src/api/myapi/work/index.js deleted file mode 100644 index 7ff6e9e..0000000 --- a/src/api/myapi/work/index.js +++ /dev/null @@ -1,43 +0,0 @@ -import request from '@/utils/request2' - -export default { - // 检查员工作经历列表 - listWork(query) { - return request({ - url: '/inspectorWorkexperiences', - method: 'get', - params: query, - - }) - }, - // 检查员工作经历添加 - addWork(data) { - return request({ - url: '/inspectorWorkexperiences', - method: 'post', - data - }) - }, - // 检查员工作经历修改 - updateWork(data) { - return request({ - url: "/inspectorWorkexperiences", - method: 'put', - data - }) - }, - // 检查员工作经历删除 - deleteWork(e) { - return request({ - url: `/inspectorWorkexperiences?idList=${e}`, - method: 'delete', - }) - }, - // 检查员工作经历查询单个 - detailWork(e) { - return request({ - url: `/inspectorWorkexperiences/${e}`, - method: 'get', - }) - } -} diff --git a/src/api/schoolMsg/index.js b/src/api/schoolMsg/index.js deleted file mode 100644 index f30393b..0000000 --- a/src/api/schoolMsg/index.js +++ /dev/null @@ -1,36 +0,0 @@ -import request from "@/utils/request2"; - -export function getList(query) { - return request({ - url: "/inspectorEducation", - method: "GET", - params: query, - }); -} -export function addList(data) { - return request({ - url: "/inspectorEducation", - method: "POST", - data, - }); -} -export function deleteList(ids) { - return request({ - url: `/inspectorEducation?idList=${ids}`, - method: "DELETE", - }); -} -export function updataList(data) { - return request({ - url: `/inspectorEducation`, - method: "PUT", - data, - }); -} - -export function getListInfo(id) { - return request({ - url: `/inspectorEducation/${id}`, - method: "GET", - }); -} diff --git a/src/api/yearAssess/index.js b/src/api/yearAssess/index.js deleted file mode 100644 index 4e8b125..0000000 --- a/src/api/yearAssess/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import request from "@/utils/request2"; - -export function getList(query) { - return request({ - url: "/inspectorAssess", - method: "GET", - params: query, - }); -} - -export function updateRow(data) { - return request({ - url: "/inspectorAssess", - method: "PUT", - data, - }); -} diff --git a/src/views/administrative/index.vue b/src/views/administrative/index.vue deleted file mode 100644 index 7666d9b..0000000 --- a/src/views/administrative/index.vue +++ /dev/null @@ -1,3 +0,0 @@ -<template> - <div> 11111111</div> -</template> \ No newline at end of file diff --git a/src/views/censor/components/appointmentMsg.vue b/src/views/censor/components/appointmentMsg.vue deleted file mode 100644 index 947e2b2..0000000 --- a/src/views/censor/components/appointmentMsg.vue +++ /dev/null @@ -1,130 +0,0 @@ -<template> - <div> - <div class="tableDistance"> - <el-table - :data="tableData" - :border="true" - style="width: 100%" - v-loading="loading" - > - <el-table-column prop="begainTime" label="聘任开始时间"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.begainTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column prop="endTime" label="聘任结束时间"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.endTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column prop="appointmentType" label="聘任序列类型"> - <template slot-scope="scope"> - {{ filterDict(scope.row.appointmentType, "appointmentType") }} - </template> - </el-table-column> - <el-table-column prop="appointmentLevel" label="聘任层级"> - <template slot-scope="scope"> - {{ - filterDict(scope.row.appointmentLevel, "appointmentLevel") - }}</template - > - </el-table-column> - <el-table-column prop="appointmentInspectorType" label="聘任检查员类型"> - <template slot-scope="scope"> - {{ - filterDict(scope.row.appointmentInspectorType, "inspectorType") - }} - </template> - </el-table-column> - <el-table-column prop="situation" label="专/兼职情况"> - </el-table-column> - <el-table-column prop="groupLeader" label="组长资格"> </el-table-column> - </el-table> - </div> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.current" - :limit.sync="queryParams.size" - @pagination="getList" - /> - </div> -</template> -<script> -import { dictList } from "@/api/jcy/index.js"; -import { exportExcel } from "@/api/jcy"; -export default { - data() { - return { - dict: {}, - loading: false, - total: 20, - queryParams: { - inspectorId: undefined, - current: 1, - size: 10, - }, - tableData: [], - allList: {}, - }; - }, - props: { - //检查员id - inspectorId: { - type: Number, - }, - }, - created() { - this.queryParams.inspectorId = this.inspectorId; - this.getDict("inspectorType,appointmentLevel,appointmentType"); - }, - methods: { - /**导出 */ - exportExcel() { - let params = { - value: 2, - ids: this.inspectorId, - }; - exportExcel(params).then((res) => { - if (res.data.code == 200) { - this.uploadFile( - res.data.data.result.url, - res.data.data.result.originalFilename - ); - } - }); - }, - /**获取字典列表 */ - getDict(typeList) { - let query = { - list: typeList, - }; - dictList(query).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - this.getList(); - } - }); - }, - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - }, - async getList() { - this.loading = true; - let msg1 = await this.$api.pinren.list(this.queryParams); - if (msg1.status == 200) this.loading = false; - this.total = msg1.result.total; - this.tableData = msg1.result.records; - }, - }, -}; -</script> -<style lang="scss" scoped></style> diff --git a/src/views/censor/components/baseMsg.vue b/src/views/censor/components/baseMsg.vue deleted file mode 100644 index 5da1c88..0000000 --- a/src/views/censor/components/baseMsg.vue +++ /dev/null @@ -1,1347 +0,0 @@ -<template> - <div class="baseAllBox" v-loading="loading"> - <el-form - ref="form" - :model="form" - :rules="rules" - :show-message="false" - :status-icon="true" - > - <table :border="true" cellspacing="0" cellpadding="0" class="tableBox"> - <tbody> - <tr> - <td>姓名</td> - <td> - <el-form-item prop="name"> - <el-input v-model="form.name"></el-input> - </el-form-item> - </td> - <td>性别</td> - <td> - <el-form-item> - <el-radio-group v-model="form.sex" prop="sex"> - <el-radio :label="1">男</el-radio> - <el-radio :label="2">女</el-radio> - </el-radio-group> - </el-form-item> - </td> - <td rowspan="3">照片</td> - <td rowspan="3"> - <div class="photoBox"> - <div class="leftImgBox"> - <imgDelivery - v-model="form.photoPath" - :isShowImgBtn="Boolean(form.photoPath)" - @getImgUrl="getImgUrl" - urlA="getImgUrl" - > - <el-button - type="primary" - size="mini" - :disabled="Boolean(form.photoPath)" - v-hasPermi="[ - 'inspector:global:profile', - 'inspector:global:profile:s', - ]" - >上传图片</el-button - > - </imgDelivery> - <section - class="textAllStyle" - id="A-1" - v-hasPermi="[ - 'inspector:global:profile', - 'inspector:global:profile:s', - ]" - > - <i class="el-icon-warning-outline"></i> - <div>支持jpg、png、 jpeg等格式</div> - </section> - </div> - <div class="rightImgBox"> - <el-image - style="height: 100%; width: 100%" - :src="zp" - :preview-src-list="srcList" - fit="cover" - > - <div slot="error" class="image-slot"> - <i class="el-icon-picture-outline"></i> - </div> - </el-image> - <div - class="rightImgBoxItem" - v-if="form.photoPath" - v-hasPermi="[ - 'inspector:global:profile', - 'inspector:global:profile:s', - ]" - > - <i class="el-icon-close" @click="deleteImg()"></i> - </div> - </div> - </div> - </td> - </tr> - <tr> - <td>身份证号</td> - <td> - <el-form-item prop="cards"> - <div class="cards"> - {{ form.idCard }} - </div> - </el-form-item> - </td> - <td>民族</td> - <td class="rtBorder"> - <el-form-item prop="nation"> - <el-select v-model="form.nation" placeholder="请选择"> - <el-option - v-for="item in allList.nation" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - </tr> - <tr> - <td>政治面貌</td> - <td> - <el-form-item prop="politicalOutlook"> - <el-select v-model="form.politicalOutlook" placeholder="请选择"> - <el-option - v-for="item in allList.politicalOutlook" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - <td>工作单位所在市</td> - <td class="rtBorder"> - <el-form-item prop="workPlace"> - <!-- <el-cascader - v-model="form.workPlace" - :options="options2" - separator="-" - ></el-cascader> --> - <el-select v-model="form.workPlace" placeholder="请选择"> - <el-option - v-for="item in allList.workPlace" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - </tr> - <tr> - <td>学历</td> - <td> - <el-form-item prop="education"> - <el-select v-model="form.education" placeholder="请选择"> - <el-option - v-for="item in allList.education" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - <td rowspan="2">学位</td> - <td rowspan="2"> - <div class="degreeBox"> - <div class="littleSonImg"> - <el-form-item prop="degree"> - <el-select v-model="form.degree" placeholder="请选择"> - <el-option - v-for="item in allList.degree" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </div> - <div> - <FileUpload :isShowTip="true" v-model="degreeList"> - <el-button - size="mini" - type="primary" - v-hasPermi="[ - 'inspector:global:diploma', - 'inspector:global:diploma:s', - ]" - >上传学位证书</el-button - > - <span - class="textAllStyle1" - style="margin-top: 0" - v-hasPermi="[ - 'inspector:global:diploma', - 'inspector:global:diploma:s', - ]" - > - <i class="el-icon-warning-outline"> - 请上传文件,支持doc/docx/xls/xlsx/ppt/pptx/txt/pdf/jpg/png/jpeg等格式 - </i> - </span> - </FileUpload> - </div> - </div> - </td> - <td rowspan="2">签名</td> - <td rowspan="2"> - <div class="signature"> - <!-- <div> - <el-button - type="primary" - size="mini" - @click="writeOpen()" - v-hasPermi="['inspector:global:signature']" - >手动签名</el-button - > - <span - class="textAllStyle" - style="display: inline; margin-top: 0" - v-hasPermi="['inspector:global:signature']" - > - <i class="el-icon-warning-outline"></i> - 请完成手动签名 - </span> - </div> - <div class="signatureImg"> - <el-image - style="height: 100%; width: 100%" - :src="qm" - :preview-src-list="signatureList" - fit="cover" - > - <div slot="error" class="image-slot"> - <i class="el-icon-picture-outline"></i> - </div> - </el-image> - </div> --> - - <div> - <imgDelivery - v-model="form.signaturePath" - :isShowImgBtn="Boolean(form.signaturePath)" - @getWrite="getWrite" - urlA="getWrite" - > - <el-button - type="primary" - size="mini" - :disabled="Boolean(form.signaturePath)" - v-hasPermi="[ - 'inspector:global:signature', - 'inspector:global:signature:s', - ]" - >上传签名</el-button - > - <span - class="textAllStyle" - style="margin-top: 0" - v-hasPermi="[ - 'inspector:global:signature', - 'inspector:global:signature:s', - ]" - > - <i class="el-icon-warning-outline"></i> - 请上传图片,支持jpg、png、jpeg等格式 - </span> - </imgDelivery> - </div> - <div class="signatureImg"> - <div style="position: relative; width: 100%; height: 100%"> - <el-image - style="height: 100%; width: 100%" - :src="qm" - :preview-src-list="signatureList" - fit="cover" - > - <div slot="error" class="image-slot"> - <i class="el-icon-picture-outline"></i> - </div> - </el-image> - <div - class="qmAbsolute" - v-if="form.signaturePath" - v-hasPermi="[ - 'inspector:global:signature', - 'inspector:global:signature:s', - ]" - > - <i class="el-icon-close" @click="deleteWrite()"></i> - </div> - </div> - </div> - </div> - </td> - </tr> - <tr> - <td>毕业院校</td> - <td class="rtBorder"> - <el-form-item> - <el-input v-model="form.graduationSchool" placeholder="请输入"> - </el-input> - </el-form-item> - </td> - </tr> - <tr> - <td>系别</td> - <td> - <el-form-item prop="department"> - <el-select v-model="form.department" placeholder="请选择"> - <el-option - v-for="item in allList.department" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - <td>专业</td> - <td> - <el-form-item> - <el-input v-model="form.speciality" placeholder="请选择"> - </el-input> - </el-form-item> - </td> - <td>专业技术职称</td> - <td> - <el-form-item prop="technicalTitles"> - <el-select v-model="form.technicalTitles" placeholder="请选择"> - <el-option - v-for="item in allList.technicalTitles" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - </tr> - <tr> - <td>单位类型</td> - <td colspan="3"> - <el-form-item prop="unitType"> - <el-select v-model="form.unitType" placeholder="请选择"> - <el-option - v-for="item in allList.unitType" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - <td>职称级别</td> - <td> - <el-form-item prop="professionalLevel"> - <el-select - v-model="form.professionalLevel" - placeholder="请选择" - > - <el-option - v-for="item in allList.professionalLevel" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - </tr> - <tr> - <td>工作单位</td> - <td colspan="3"> - <el-form-item v-if="selectIf"> - <el-select v-model="form.workUnit" placeholder="请选择"> - <el-option - v-for="item in cascadeDict" - :key="item.dictLabel" - :label="item.dictLabel" - :value="item.dictLabel" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item v-else> - <el-input v-model="form.workUnit"></el-input> - </el-form-item> - </td> - <td>检查员类别</td> - <td> - <el-form-item prop="inspectorType"> - <el-select - v-model="form.inspectorType" - placeholder="请选择" - multiple - > - <el-option - v-for="item in allList.inspectorType" - :key="item.dictLabel" - :label="item.dictLabel" - :value="item.dictLabel" - > - </el-option> - </el-select> - </el-form-item> - </td> - </tr> - <tr> - <td>检查员层级</td> - <td> - <el-form-item prop="inspectorLevel"> - <el-select v-model="form.inspectorLevel" placeholder="请选择"> - <el-option - v-for="item in allList.inspectorLevel" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - <td>检查员证书编号</td> - <td> - <el-form-item> - <el-input v-model="form.inspectorNumber"></el-input> - </el-form-item> - </td> - <td>检查员级别</td> - <td> - <el-form-item prop="inspectorGrade"> - <el-select v-model="form.inspectorGrade" placeholder="请选择"> - <el-option - v-for="item in allList.inspectorGrade" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - </tr> - <tr> - <td>部门</td> - <td colspan="3"> - <el-form-item v-if="selectIf"> - <el-select v-model="form.division" placeholder="请选择"> - <el-option - v-for="item in treeChild" - :key="item.dictLabel" - :label="item.dictLabel" - :value="item.dictLabel" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item v-else> - <el-input v-model="form.division"></el-input> - </el-form-item> - </td> - <td>职务</td> - <td> - <el-form-item prop="duty"> - <el-select v-model="form.duty" placeholder="请选择"> - <el-option - v-for="item in allList.duty" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - <!-- <td>组内类别标记</td> - <td> - <el-form-item> - <el-input v-model="form.intragroupMakers"></el-input> - </el-form-item> - </td> --> - </tr> - <tr> - <td>分管工作</td> - <td colspan="6"> - <el-form-item> - <el-input v-model="form.responsibilities"></el-input> - </el-form-item> - - <div class="workBox"> - <div> - <FileUpload :isShowTip="true" v-model="workList"> - <el-button - size="mini" - type="primary" - v-hasPermi="[ - 'inspector:global:workCertificat', - 'inspector:global:workCertificat:s', - ]" - >上传工作证明证书</el-button - > - <span - class="textAllStyle1" - style="margin-top: 0" - v-hasPermi="[ - 'inspector:global:workCertificat', - 'inspector:global:workCertificat:s', - ]" - > - <i class="el-icon-warning-outline el"> - 请上传文件,支持doc/docx/xls/xlsx/ppt/pptx/txt/pdf/jpg/png/jpeg等格式 - </i> - </span> - </FileUpload> - </div> - </div> - </td> - </tr> - <tr> - <td>专业擅长领域</td> - <td colspan="3"> - <el-form-item> - <el-input v-model="form.expertiseAreas"></el-input> - </el-form-item> - </td> - <td>来源</td> - <td colspan="2"> - <el-form-item prop="source"> - <el-input v-model="form.source" disabled></el-input> - <!-- <el-select v-model="form.source" placeholder="请选择" disabled> - <el-option - v-for="item in allList.source" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue.toString()" - > - </el-option> - </el-select> --> - </el-form-item> - </td> - </tr> - <tr> - <td>开户行</td> - <td colspan="3"> - <el-form-item> - <el-input v-model="form.accountBank"></el-input> - </el-form-item> - </td> - <td>银行卡号</td> - <td colspan="2"> - <el-form-item> - <el-input v-model="form.cardNumber"></el-input> - </el-form-item> - </td> - </tr> - <tr> - <td>执法证号</td> - <td colspan="3"> - <el-form-item> - <el-input v-model="form.lawNumber"></el-input> - </el-form-item> - </td> - <td>执法证有效期</td> - <td colspan="1"> - <el-form-item> - <el-date-picker - v-model="form.lawTime" - type="date" - placeholder="请选择时间" - value-format="yyyy-MM-dd" - > - </el-date-picker> - </el-form-item> - </td> - </tr> - <tr> - <td>通讯地址</td> - <td colspan="3"> - <el-form-item> - <el-input v-model="form.mailAddress"></el-input> - </el-form-item> - </td> - <td>职务级别</td> - <td> - <el-form-item prop="jobLevel"> - <el-select v-model="form.jobLevel" placeholder="请选择"> - <el-option - v-for="item in allList.jobLevl" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - </td> - </tr> - <tr> - <td>单位电话</td> - <td colspan="3"> - <el-form-item> - <el-input v-model="form.workTel"></el-input> - </el-form-item> - </td> - <!-- <td>家庭电话</td> - <td> - <el-form-item> - <el-input v-model="form.homeTel"></el-input> - </el-form-item> - </td> --> - <td>手机</td> - <td> - <el-form-item> - <el-input v-model="form.phone"></el-input> - </el-form-item> - </td> - </tr> - <tr> - <td>传真</td> - <td> - <el-form-item> - <el-input v-model="form.fax"></el-input> - </el-form-item> - </td> - <td>邮编</td> - <td> - <el-form-item> - <el-input v-model="form.zipCode"></el-input> - </el-form-item> - </td> - <td>E-MALL</td> - <td> - <el-form-item> - <el-input v-model="form.email"></el-input> - </el-form-item> - </td> - </tr> - <tr> - <td>熟悉外语语种</td> - <td colspan="5"> - <!-- <el-input v-model="form.foreignLanguages"></el-input> --> - <el-select v-model="manySelect" multiple placeholder="请选择"> - <el-option - v-for="item in allList.foreignLanguages" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </td> - </tr> - <tr> - <td class="englishA">外语阅读水平</td> - <td colspan="5"> - <el-radio-group v-model="form.readingLeve"> - <el-radio :label="1" text-color="#606266" - >顺利专业阅读</el-radio - > - <el-radio :label="2" text-color="#606266" - >一般专业阅读</el-radio - > - <el-radio :label="3" text-color="#606266" - >一般报刊阅读</el-radio - > - </el-radio-group> - </td> - </tr> - <tr> - <td class="englishA">外语口语能力</td> - <td colspan="5"> - <el-radio-group v-model="form.speakingLevel"> - <el-radio :label="1">理解外语广播</el-radio> - <el-radio :label="2">一般听懂外语广播</el-radio> - <el-radio :label="3">一般听懂外语广播单词</el-radio> - </el-radio-group> - </td> - </tr> - <tr> - <td class="englishA">外语写作水平</td> - <td colspan="5"> - <el-radio-group v-model="form.writingLevel"> - <el-radio :label="1">流利的专业交流</el-radio> - <el-radio :label="2">流利的日常交流</el-radio> - <el-radio :label="3">一般的日常交流</el-radio> - </el-radio-group> - </td> - </tr> - <tr> - <td class="englishA">外语听力水平</td> - <td colspan="5"> - <el-radio-group v-model="form.listeningLevel"> - <el-radio :label="1">理解外语广播</el-radio> - <el-radio :label="2">一般听懂外语广播</el-radio> - <el-radio :label="3">一般听懂外语广播</el-radio> - </el-radio-group> - </td> - </tr> - <!-- <tr> - <td class="englishA">历史版本</td> - <td colspan="5"> - <a href="" class="linkStyle">2023-03-07创建</a> - </td> - </tr> --> - </tbody> - </table> - </el-form> - <div class="footerBoxEnd"> - <button - class="btn" - @click="print()" - v-hasPermi="[ - 'inspector:global:basicdataPrint', - 'inspector:global:basicdataPrint:s', - ]" - > - <i class="el-icon-printer"></i> - <span> 打印 </span> - </button> - <button - class="btn activeColorBtn" - @click="save()" - v-hasPermi="[ - 'inspector:global:basicsdataSava', - 'inspector:global:basicsdataSava:s', - ]" - > - <i style="color: #fff" class="el-icon-document"></i> - <span style="color: #fff"> 保存 </span> - </button> - </div> - <!-- <write ref="writeBox" @getWrite="getWrite"></write> --> - </div> -</template> -<script> -import { dictList, getWorkUnit } from "@/api/jcy/index.js"; -// import write from "../../userMsgPage/components/write.vue"; -export default { - data() { - return { - //级联字典 - cascadeDict: [], - loading: true, - //打印保存的变量 - chcolor: 1, - form: { - //姓名 - name: "", - //性别 - sex: "", - //照片名称 - photo: "", - //照片路径 - photoPath: "", - //身份证号 - idCard: "", - //民族 - nation: "", - //政治面貌 - politicalOutlook: "", - //工作单位所在市 - workPlace: "", - //学历 - education: "", - //学位 - degree: "", - //学位证书图片路径 - degreeImage: "", - //学位证书图片名称 - degreeImagename: "", - //毕业院校 - graduationSchool: "", - //签名图片名称 - signaturePathname: "", - //签名图片路径 - signaturePath: "", - //系列 - department: 1, - //专业 - speciality: "", - //专业技术职称 - technicalTitles: "", - //单位类型 - unitType: "", - //职称级别 - professionalLevel: "", - //工作单位 - workUnit: "", - //检查员类别 - inspectorType: [], - //检查员层级 - inspectorLevel: "", - //检查员证书编号 - inspectorNumber: "", - //检查员级别 - inspectorGrade: "", - //部门 - division: "", - //职务 - duty: "", - //组内类别标记 - // intragroupMakers: "", - //分管工作 - responsibilities: "", - workFilename: "", - workCertificate: "", - //通讯地址 - mailAddress: " ", - //职务级别 - jobLevel: "", - //单位电话 - workTel: "", - //家庭电话 - // homeTel: "", - //手机 - phone: "", - //传真 - fax: "", - //邮编 - zipCode: "", - //e-mail - email: "", - //熟悉的外语语种 - foreignLanguages: "", - //外语阅读水平 - readingLeve: 1, - //外语口语水平 - speakingLevel: 1, - //外语写作水平 - writingLevel: 1, - //外语听力水平 - listeningLevel: 1, - - //执法证号 - lawNumber: "", - //执法证有效期 - lawTime: "", - //专业擅长领域 - expertiseAreas: "", - source: "", //来源 - accountBank: "", //开户行 - cardNumber: "", //银行卡号 - }, - rules: { - // name: [{ required: true, trigger: "blur" }], - sex: [ - { - required: true, - trigger: "change", - }, - ], - // idCard: [{ required: true, trigger: "blur" }], - // nation: [{ required: true, trigger: "change" }], - // politicalOutlook: [{ required: true, trigger: "change" }], - // workPlace: [{ required: true, trigger: "change" }], - // education: [{ required: true, trigger: "change" }], - // degree: [{ required: true, trigger: "change" }], - // graduationSchool: [{ required: true, trigger: "blur" }], - // department: [{ required: true, trigger: "change" }], - // technicalTitles: [{ required: true, trigger: "change" }], - // unitType: [{ required: true, trigger: "change" }], - // professionalLevel: [{ required: true, trigger: "change" }], - - inspectorGrade: [{ required: true, trigger: "change" }], - inspectorLevel: [{ required: true, trigger: "change" }], - inspectorType: [{ required: true, trigger: "change" }], - - // duty: [{ required: true, trigger: "change" }], - // source: [{ required: true, trigger: "change" }], - // jobLevel: [{ required: true, trigger: "change" }], - }, - //照片 - zp: "", - //照片预览 - srcList: [], - //签名 - qm: "", - //签名预览 - signatureList: [], - //接受学位证书文件的数组 - degreeList: [], - //接受工作证明证书的数组 - workList: [], - //字典列表 - allList: [], - baseURL: - location.origin + - process.env.VUE_APP_BASE_API2 + - "/common/downloadmino/download?filename=", - //多选框 - manySelect: "", - }; - }, - components: { - // write, - }, - created() { - this.getdictionary(); - }, - props: { - inspectorId: { - type: Number, - require: true, - default: 15, - }, - }, - computed: { - treeChild() { - if (!this.form.workUnit) { - return []; - } else { - let list = this.cascadeDict.filter( - (item) => item.dictLabel == this.form.workUnit - ); - return list.length > 0 ? list[0].children : []; - } - }, - selectIf() { - //内 => 选 ,外=>输入 - if (this.form.source == "内部人员") { - return true; - } else { - return false; - } - }, - }, - watch: {}, - methods: { - //获取字典 - getdictionary() { - let value = - "workPlace,source,foreignLanguages,nation,politicalOutlook,degree,department,technicalTitles,unitType,professionalLevel,inspectorType,inspectorLevel,inspectorGrade,duty,education,jobLevl"; - let query = { - list: value, - }; - dictList(query).then((res) => { - this.allList = res.result; - getWorkUnit().then((resed) => { - console.log(resed); - this.cascadeDict = resed.result; - this.getDetail(); - }); - }); - }, - //获取详情要处理照片,处理签名,处理学位证书,工作证明 - async getDetail() { - this.loading = true; - let msg1 = await this.$api.infoMsg.detail(this.inspectorId); - if (msg1.status == 200) this.loading = false; - - this.form = msg1.result; - if (this.form.inspectorType) { - this.form.inspectorType = this.form.inspectorType.split(","); - } else { - this.form.inspectorType = []; - } - - //照片预览 - if (this.form.photoPath) { - this.zp = this.baseURL + this.form.photoPath; - this.srcList.push(this.zp); - } - //签名预览 - if (this.form.signaturePath) { - this.qm = this.baseURL + this.form.signaturePath; - this.signatureList.push(this.qm); - } - //处理学位证书 - if (msg1.result.degreeImagename && msg1.result.degreeImage) { - this.degreeList = this.begin( - msg1.result.degreeImage, - msg1.result.degreeImagename - ); - } - //处理工作证明 - if (msg1.result.workCertificate && msg1.result.workFilename) { - this.workList = this.begin( - msg1.result.workCertificate, - msg1.result.workFilename - ); - } - //处理语种 - if (this.form.foreignLanguages) { - let languages1 = this.form.foreignLanguages.split("、").map((item) => { - item = Number(item); - return item; - }); - this.manySelect = languages1; - } - }, - - //进入时的循环函数 - begin(a, b) { - let arr1 = []; - let arr2 = []; - let arr3 = []; - arr1 = a.split(","); - arr2 = b.split(","); - arr1.forEach((value, index) => { - arr3.push({ - url: value, - name: arr2[index], - }); - }); - return arr3; - }, - //提交时的循环函数 - submit(a) { - let arr1 = []; - let arr2 = []; - a.forEach((value, index) => { - arr1.push(value.name); - arr2.push(value.url); - }); - return [arr1, arr2]; - }, - - //修改信息 - async save() { - this.$refs["form"].validate((valid) => { - if (valid) { - //检察院类型 - this.form.inspectorType = this.form.inspectorType.join(","); - //处理语种 - let languages = this.manySelect.map((item) => { - return item.toString(); - }); - this.form.foreignLanguages = languages.join("、"); - //处理学位证书 - let newList = this.submit(this.degreeList); - this.form.degreeImagename = newList[0].join(","); - this.form.degreeImage = newList[1].join(","); - //处理工作证明证书 - let newList1 = this.submit(this.workList); - this.form.workFilename = newList1[0].join(","); - this.form.workCertificate = newList1[1].join(","); - this.$confirm("您确定修改吗?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning", - }) - .then(async () => { - let msg1 = await this.$api.infoMsg.update(this.form); - if (msg1.status == 200) { - this.$message({ - type: "success", - message: "修改成功!", - }); - this.getDetail(); - } - }) - .catch(() => { - this.$message({ - type: "error", - message: "已取消修改", - }); - }); - } else { - this.$modal.msgError("请填写必填项"); - return false; - } - }); - }, - // writeOpen() { - // this.$refs.writeBox.open(); - // }, - //打印 - async print() { - this.$confirm("是否导出基本信息进行打印?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning", - }) - .then(async () => { - let msg1 = await this.$api.infoMsg.exportFile(this.inspectorId); - this.uploadFile(msg1.result.url, msg1.result.originalFilename); - if (msg1.status == 200) { - this.$message({ - type: "success", - message: "导出成功!", - }); - this.getDetail(); - } - }) - .catch(() => { - this.$message({ - type: "error", - message: "已取消打印", - }); - }); - }, - - //删除照片 - deleteImg() { - this.srcList = []; - this.form.photoPath = ""; - this.zp = ""; - }, - //删除签名 - deleteWrite() { - this.signatureList = []; - this.form.signaturePath = ""; - this.qm = ""; - }, - getImgUrl(e) { - this.srcList = []; - this.form.photoPath = e; - this.zp = this.baseURL + e; - this.srcList.push(this.zp); - }, - getWrite(e) { - this.signatureList = []; - this.form.signaturePath = e; - this.qm = this.baseURL + e; - this.signatureList.push(this.qm); - }, - }, -}; -</script> -<style lang="scss" scoped> -::v-deep .el-date-editor.el-input { - width: 100% !important; -} -.cards { - padding-left: 15px; -} -.qmAbsolute { - position: absolute; - top: 5px; - right: 5px; - height: 15px; - width: 15px; - border-radius: 50%; - border: 1px solid #f5f5f5; - background: #ffffff; - text-align: center; - line-height: 15px; - font-size: 12px; - font-weight: bold; - cursor: pointer; -} -.textAllStyle1 { - font-size: 12px; - color: #8e8e8e; - font-weight: 400; - margin-top: 10px; - padding-left: 5px; - display: flex; - align-items: center; - word-break: break-all; - position: relative; -} -::v-deep .image-slot { - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; - background: rgb(245, 247, 250); - color: #c0c4cc; - font-size: 24px; -} - -::v-deep .el-form-item { - margin-bottom: 0; -} -::v-deep .el-form-item__content { - margin-left: 0 !important; -} -::v-deep .el-select { - width: 100%; -} -::v-deep .el-cascader--medium { - width: 100%; -} -::v-deep .el-input__inner { - color: #292f38; -} -::v-deep .el-radio__label { - color: #4d5158 !important; -} -.tableBox { - border: 1px solid #e4e8ee; - width: 100%; - & tr { - border: none; - } - & > tbody > tr > td { - border: none; - } - & > tbody > tr > td:nth-child(odd) { - width: 9%; - padding-left: 15px; - font-size: 14px; - font-weight: 500; - color: #292f38; - background: #f6faff; - border-right: 1px solid #e4e8ee; - border-bottom: 1px solid #e4e8ee; - } - & > tbody > tr > td:nth-of-type(2) { - // width: 73%; - width: 17%; - } - & > tbody > tr > td:nth-of-type(4) { - width: 29%; - } - & > tbody > tr > td:nth-of-type(6) { - width: 27%; - } - & > tbody > tr > td:nth-child(even) { - padding: 10px; - border-right: 1px solid #e4e8ee; - border-bottom: 1px solid #e4e8ee; - } - & > tbody > tr > td:nth-last-child(1) { - border-right: none; - } - & > tbody > tr:nth-last-child(1) > td { - border-bottom: none; - } - //table右线 - .rtBorder { - border-right: 1px solid #e4e8ee !important; - } - .linkStyle { - color: #1e80eb; - text-decoration: underline; - font-weight: 400; - font-size: 14px; - } - .photoBox { - height: 180px; - display: flex; - flex-direction: row; - .leftImgBox { - padding-top: 5px; - width: 35%; - i { - position: absolute; - left: -5px; - top: 3px; - } - } - .rightImgBox { - width: 150px; - position: relative; - .rightImgBoxItem { - position: absolute; - top: 5px; - right: 5px; - height: 15px; - width: 15px; - border-radius: 50%; - border: 1px solid #f5f5f5; - background: #ffffff; - text-align: center; - line-height: 15px; - font-size: 12px; - font-weight: bold; - cursor: pointer; - } - } - } - - .signature { - min-height: 140px; - .signatureImg { - height: 90px; - width: 160px; - margin-top: 10px; - position: relative; - // .signatureImgItem { - // position: absolute; - // top: 5px; - // right: 5px; - // font-size: 22px; - // cursor: pointer; - // } - } - } - - .degreeBox { - min-height: 140px; - .littleSonImg { - padding-bottom: 10px; - } - } - - .workBox { - min-height: 130px; - padding-top: 10px; - } - .englishA { - padding: 15px 0 15px 15px; - } -} -//提示样式 -.textAllStyle { - font-size: 12px; - color: #8e8e8e; - line-height: 22px; - font-weight: 400; - margin-top: 10px; - padding-left: 5px; - // display: flex; - position: relative; -} -#A-1 { - padding-left: 15px; -} -//下面的按钮 -.footerBoxEnd { - display: flex; - justify-content: center; - margin-top: 30px; - .btn { - cursor: pointer; - border: 1px solid #dbe0e8; - background: #ffffff; - border-radius: 5px; - padding: 6px 8px; - margin-right: 10px; - span { - font-size: 12px; - font-weight: normal; - margin-left: 4px; - color: #4d5158; - } - i { - color: #a1abba; - font-size: 12px; - } - } - .activeColorBtn { - background: #52cd80; - } -} -//按钮的样式 -::v-deep .el-button--mini { - border-radius: 5px; - height: 30px; - line-height: 30px; - padding: 0 6px !important; -} -</style> diff --git a/src/views/censor/components/deployedMsg.vue b/src/views/censor/components/deployedMsg.vue deleted file mode 100644 index 5e3b898..0000000 --- a/src/views/censor/components/deployedMsg.vue +++ /dev/null @@ -1,73 +0,0 @@ -<template> - <div> - <div class="tableDistance"> - <el-table - :data="tableData" - :border="true" - style="width: 100%" - v-loading="loading" - > - <el-table-column prop="year" label="年度"> - <!-- <template slot-scope="scope"> --> - <!-- <span>{{ parseTime(scope.row.begainTime, "{y}-{m}-{d}") }}</span> --> - <!-- </template> --> - </el-table-column> - <el-table-column prop="assignCount" label="调派次数"> - <!-- <template slot-scope="scope"> --> - <!-- <span>{{ parseTime(scope.row.endTime, "{y}-{m}-{d}") }}</span> --> - <!-- </template> --> - </el-table-column> - <el-table-column prop="acceptAssignCount" label="接受调派次数"> - </el-table-column> - <el-table-column prop="unacceptAssignCount" label="未接受调派次数"> - </el-table-column> - </el-table> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.current" - :limit.sync="queryParams.size" - @pagination="getList" - /> - </div> - </div> -</template> -<script> -import { getList } from "@/api/deployMsg"; -export default { - props: { - //检查员id - inspectorId: { - type: Number, - }, - }, - data() { - return { - loading: false, - tableData: [], - // 总条数 - total: 0, - queryParams: { - inspectorId: undefined, - current: 1, - size: 10, - }, - }; - }, - created() { - this.queryParams.inspectorId = this.inspectorId; - this.getList(); - }, - methods: { - getList() { - this.loading = true; - getList(this.queryParams).then((res) => { - this.tableData = res.result.records; - this.total = res.result.total; - this.loading = false; - }); - }, - }, -}; -</script> -<style lang="scss" scoped></style> diff --git a/src/views/censor/components/dispatchRecords.vue b/src/views/censor/components/dispatchRecords.vue deleted file mode 100644 index b673551..0000000 --- a/src/views/censor/components/dispatchRecords.vue +++ /dev/null @@ -1,113 +0,0 @@ -<template> - <div> - <div class="tableDistance"> - <el-table - :data="tableData" - :border="true" - style="width: 100%" - v-loading="loading" - > - <el-table-column - prop="assignUnit" - label="调派单位" - :show-overflow-tooltip="true" - > - <template slot-scope="scope"> - {{ filterDict(scope.row.assignUnit, "assignUnit") }} - </template> - </el-table-column> - <el-table-column prop="assignMechanism" label="调派机制"> - <template slot-scope="scope"> - {{ filterDict(scope.row.assignMechanism, "assignMechanism") }} - </template> - </el-table-column> - <el-table-column prop="taskType" label="任务类型"> </el-table-column> - <el-table-column prop="begainTime" label="检查时间起"> - </el-table-column> - <el-table-column prop="endTime" label="检查时间止"> </el-table-column> - <el-table-column prop="assignStatus" label="是否接受调派"> - </el-table-column> - <el-table-column - prop="reaseons" - label="原因说明" - :show-overflow-tooltip="true" - > - </el-table-column> - </el-table> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.current" - :limit.sync="queryParams.size" - @pagination="getList" - /> - </div> - </div> -</template> -<script> -import { getList } from "@/api/deployRecord"; -import { dictList } from "@/api/jcy"; -export default { - props: { - //检查员id - inspectorId: { - type: Number, - }, - }, - data() { - return { - dict: {}, - loading: false, - tableData: [], - // 总条数 - total: 0, - queryParams: { - inspectorId: undefined, - current: 1, - size: 10, - }, - }; - }, - created() { - this.queryParams.inspectorId = this.inspectorId; - this.getDict("assignMechanism,taskType,assignStatus"); - }, - methods: { - /**获取字典列表 */ - getDict(typeList) { - let query = { - list: typeList, - }; - dictList(query).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - this.getList(); - } - }); - }, - /**过滤字典 */ - filterDict(value, type) { - if (value) { - if (this.dict[type] == undefined) { - return value; - } - let dictLable = this.dict[type].filter( - (item) => item.dictValue == value - ); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - } - }, - getList() { - this.loading = true; - getList(this.queryParams).then((res) => { - this.tableData = res.result.records; - this.total = res.result.total; - this.loading = false; - }); - }, - }, -}; -</script> -<style lang="scss" scoped></style> diff --git a/src/views/censor/components/examine.vue b/src/views/censor/components/examine.vue deleted file mode 100644 index d61a33d..0000000 --- a/src/views/censor/components/examine.vue +++ /dev/null @@ -1,421 +0,0 @@ -<template> - <div> - <el-descriptions - :border="true" - :column="2" - labelClassName="leftStyle" - contentClassName="rightStyle" - v-loading="loading" - > - <el-descriptions-item> - <template slot="label"> 生产质量监管/管理年限 </template> - {{ userData.regulatoryYears }} - </el-descriptions-item> - <el-descriptions-item> - <template slot="label"> 擅长领域</template> - {{ userData.field }} - </el-descriptions-item> - <el-descriptions-item> - <template slot="label"> 参加生产企业现场检查的次数 </template> - {{ userData.sceneCheckNumber }} - </el-descriptions-item> - <el-descriptions-item> - <template slot="label"> 参加省级检查的次数</template> - {{ userData.provincialCheckNumber }} - </el-descriptions-item> - <el-descriptions-item> - <template slot="label"> 参加国家级飞行检查的次数 </template> - {{ userData.nationalCheckNumber }} - </el-descriptions-item> - <el-descriptions-item> - <template slot="label"> 担任现场检查组组长的次数 </template> - {{ userData.checkLeaderNumber }} - </el-descriptions-item> - <el-descriptions-item> - <template slot="label"> 熟悉检查的生产类别 </template> - {{ getType(userData.productionCategory) }} - </el-descriptions-item> - <el-descriptions-item> - <template slot="label"> 担任组长次数</template> - {{ userData.teamNumber }} - </el-descriptions-item> - </el-descriptions> - <!-- 检查员特质 --> - <el-dialog - :visible.sync="show" - width="55%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title">检查员特质</div> - <el-form - ref="formName" - :model="form" - :rules="rules" - label-position="right" - label-width="210px" - class="my-dialog-body" - v-loading="load1" - > - <el-row> - <el-col :span="12"> - <el-form-item - label="生产质量监管/管理年限:" - prop="regulatoryYears" - > - <el-input - v-model.number="form.regulatoryYears" - placeholder="请输入年限" - ></el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item - label="参加省级检查的次数:" - prop="provincialCheckNumber" - > - <el-input - v-model.number="form.provincialCheckNumber" - placeholder="请输入次数" - ></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item - label="参加生产企业现场检查的次数:" - prop="sceneCheckNumber" - > - <el-input - v-model.number="form.sceneCheckNumber" - placeholder="请输入次数" - ></el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item - label="担任现场检查组组长的次数:" - prop="checkLeaderNumber" - > - <el-input - v-model.number="form.checkLeaderNumber" - placeholder="请输入次数" - ></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item - label="参加国家级飞行检查的次数:" - prop="nationalCheckNumber" - > - <el-input - v-model.number="form.nationalCheckNumber" - placeholder="请输入次数" - ></el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="担任组长的次数:" prop="teamNumber"> - <el-input - v-model.number="form.teamNumber" - placeholder="请输入次数" - ></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="擅长领域:" prop="field"> - <el-select v-model="form.field" placeholder="请选择擅长领域"> - <el-option label="区域一" value="shanghai"></el-option> - <el-option label="区域二" value="beijing"></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="熟悉检查的生产类别:"> - <el-checkbox-group v-model="form.productionCategory"> - <div> - <el-checkbox label="1" name="type">化学药品</el-checkbox> - <el-checkbox label="2" name="type">中药制剂</el-checkbox> - <el-checkbox label="3" name="type">中药饮片</el-checkbox> - <el-checkbox label="4" name="type">体外诊断试剂</el-checkbox> - </div> - <div> - <el-checkbox label="5" name="type">特殊药品</el-checkbox> - <el-checkbox label="6" name="type">药用辅料</el-checkbox> - <el-checkbox label="7" name="type">医用氧</el-checkbox> - <el-checkbox label="8" name="type">生物制品</el-checkbox> - </div> - </el-checkbox-group> - </el-form-item> - </el-col> - </el-row> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button - size="small" - type="primary" - icon="el-icon-my-save" - @click="submit()" - >提交</el-button - > - <el-button size="small" icon="el-icon-my-reset" @click="reset()" - >重置</el-button - > - </div> - </el-dialog> - </div> -</template> -<script> -export default { - data() { - return { - loading: true, - show: false, - form: { - id: 0, - inspectorId: null, - regulatoryYears: 0, - sceneCheckNumber: 0, - checkLeaderNumber: 0, - nationalCheckNumber: 0, - teamNumber: 0, - field: "区域一", - provincialCheckNumber: 0, - productionCategory: "", - }, - load1: true, - rules: { - regulatoryYears: [ - { - required: true, - message: "生产质量监管/管理年限不能为空", - trigger: "blur", - }, - { - type: "number", - message: "请输入数字", - trigger: "blur", - }, - ], - provincialCheckNumber: [ - { - required: true, - message: "参加省级检查的次数不能为空", - trigger: "blur", - }, - { - type: "number", - message: "请输入数字", - trigger: "blur", - }, - ], - sceneCheckNumber: [ - { - required: true, - message: "参加企业现场检查的次数不能为空", - trigger: "blur", - }, - { - type: "number", - message: "请输入数字", - trigger: "blur", - }, - ], - checkLeaderNumber: [ - { - required: true, - message: "担任现场检查组组长的次数不能为空", - trigger: "blur", - }, - { - type: "number", - message: "请输入数字", - trigger: "blur", - }, - ], - nationalCheckNumber: [ - { - required: true, - message: "参加国家级飞行检查的次数不能为空", - trigger: "blur", - }, - { - type: "number", - message: "请输入数字", - trigger: "blur", - }, - ], - - teamNumber: [ - { - required: true, - message: "担任组长的次数不能为空", - trigger: "blur", - }, - { - type: "number", - message: "请输入数字", - trigger: "blur", - }, - ], - field: [ - { - required: true, - message: "擅长领域不能为空", - trigger: "blur", - }, - ], - }, - option: [ - { - value: "1", - label: "化学药品", - }, - { - value: "2", - label: "中药制剂", - }, - { - value: "3", - label: "中药饮片", - }, - { - value: "4", - label: "体外诊断试剂", - }, - { - value: "5", - label: "特殊药品", - }, - { - value: "6", - label: "药用辅料", - }, - { - value: "7", - label: "医用氧", - }, - { - value: "8", - label: "生物制品", - }, - ], - userData: {}, - }; - }, - created() { - //获取检查员的id并赋值 - this.form.inspectorId = this.inspectorId; - this.getMsg(); - }, - props: { - inspectorId: { - type: Number, - default: 0, - }, - }, - methods: { - reset() { - let id = this.form.id; - this.form = { - id, - inspectorId: this.inspectorId, - regulatoryYears: 0, - sceneCheckNumber: 0, - checkLeaderNumber: 0, - nationalCheckNumber: 0, - teamNumber: 0, - field: "", - provincialCheckNumber: 0, - productionCategory: "", - }; - }, - getType(e) { - if (e == undefined || null || "") return; - let arr1 = [...e]; - var names = []; - arr1.forEach((v, i) => { - this.option.forEach((value, index) => { - if (value.value == v) { - names.push(value.label); - } - }); - }); - return names.join("、"); - }, - async examineUpdate() { - this.show = true; - this.load1 = true; - let msg = await this.$api.traits.detailTraits(this.userData.id); - if (msg.status == 200) this.load1 = false; - - this.form = msg.result; - let arr1 = this.form.productionCategory; - this.form.productionCategory = arr1.split(","); - }, - async getMsg() { - this.loading = true; - let msg = await this.$api.traits.listTraits({ - inspectorId: this.form.inspectorId, - }); - if (msg.status == 200) this.loading = false; - if (msg.result.records.length > 0) { - this.userData = msg.result.records[0]; - } else { - this.userData = { - regulatoryYears: "", - field: "", - sceneCheckNumber: "", - provincialCheckNumber: "", - nationalCheckNumber: "", - checkLeaderNumber: "", - productionCategory: "", - teamNumber: "", - }; - } - }, - submit() { - this.$refs.formName.validate(async (valid) => { - if (valid) { - if (this.form.productionCategory != "") { - let arr1 = this.form.productionCategory.join(","); - this.form.productionCategory = arr1; - } - let msg = await this.$api.traits.updateTraits(this.form); - - if (msg.status == 200) - this.$message({ - type: "success", - message: `修改成功!`, - }); - this.show = false; - this.getMsg(); - } - }); - }, - }, -}; -</script> -<style lang="scss"> -.leftStyle { - background-color: #f6faff !important; - font-size: 14px !important; - font-weight: 500 !important; - color: #292f38 !important; - width: 18%; -} -.rightStyle { - font-size: 14px !important; - font-weight: 400 !important; - color: #4d5158 !important; - width: 32%; -} -</style> diff --git a/src/views/censor/components/examineTable.vue b/src/views/censor/components/examineTable.vue deleted file mode 100644 index 88e764d..0000000 --- a/src/views/censor/components/examineTable.vue +++ /dev/null @@ -1,30 +0,0 @@ -<template> - <div> - <div> - <el-table :data="tableData" :border="true" style="width: 100%"> - <el-table-column prop="a1" label="姓名" width="110"> </el-table-column> - <el-table-column prop="a2" label="检查类型"> </el-table-column> - <el-table-column prop="a3" label="受理号/任务编号"> </el-table-column> - <el-table-column prop="a4" label="被检查单位" width="180"> - </el-table-column> - <el-table-column prop="a5" label="品种名称" width="190"> - </el-table-column> - <el-table-column prop="a6" label="检查开始时间"> </el-table-column> - <el-table-column prop="a7" label="检查结束时间"> </el-table-column> - <el-table-column prop="a8" label="检查天数"> </el-table-column> - <el-table-column prop="a9" label="检查身份"> </el-table-column> - </el-table> - </div> - </div> -</template> -<script> -export default { - data() { - return { - tableData: [], - }; - }, - methods: {}, -}; -</script> -<style lang="scss" scoped></style> diff --git a/src/views/censor/components/incentiveMsg.vue b/src/views/censor/components/incentiveMsg.vue deleted file mode 100644 index d65c37f..0000000 --- a/src/views/censor/components/incentiveMsg.vue +++ /dev/null @@ -1,115 +0,0 @@ -<template> - <div> - <div class="tableDistance"> - <el-table - :data="tableData" - :border="true" - style="width: 100%" - v-loading="loading" - > - <el-table-column prop="punishmenType" label="奖惩类型"> - <template slot-scope="scope"> - {{ filterDict(scope.row.punishmenType, "punishmenType") }} - </template> - </el-table-column> - <el-table-column prop="punishmentTime" label="时间"> - <template slot-scope="scope"> - <span>{{ - parseTime(scope.row.punishmentTime, "{y}-{m}-{d}") - }}</span> - </template> - </el-table-column> - <el-table-column prop="punishmentName" label="奖惩名称"> - </el-table-column> - <el-table-column prop="backgroundReasons" label="背景原因"> - </el-table-column> - <el-table-column prop="remark" label="备注"> </el-table-column> - </el-table> - </div> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.current" - :limit.sync="queryParams.size" - @pagination="getList" - /> - </div> -</template> -<script> -import { dictList, exportExcel } from "@/api/jcy"; -export default { - data() { - return { - dict: {}, - total: 0, - loading: false, - tableData: [], - queryParams: { - inspectorId: undefined, - current: 1, - size: 10, - }, - }; - }, - props: { - //检查员id - inspectorId: { - type: Number, - }, - }, - created() { - this.queryParams.inspectorId = this.inspectorId; - this.getDict("punishmenType"); - }, - methods: { - //导出 - async exportTrain() { - let params = { - value: 3, - ids: this.inspectorId, - }; - exportExcel(params, this.form).then((res) => { - if (res.data.code == 200) { - this.uploadFile( - res.data.data.result.url, - res.data.data.result.originalFilename - ); - } - }); - }, - /**获取字典列表 */ - getDict(typeList) { - let query = { - list: typeList, - }; - dictList(query).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - - this.getList(); - } - }); - }, - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - }, - //获取列表 - async getList() { - this.loading = true; - let msg1 = await this.$api.jiangcheng.list(this.queryParams); - if (msg1.status == 200) this.loading = false; - this.tableData = msg1.result.records; - this.total = msg1.result.total; - }, - }, -}; -</script> -<style lang="scss" scoped></style> diff --git a/src/views/censor/components/infoMsg.vue b/src/views/censor/components/infoMsg.vue deleted file mode 100644 index 12eb08f..0000000 --- a/src/views/censor/components/infoMsg.vue +++ /dev/null @@ -1,335 +0,0 @@ -<template> - <div> - <section class="userFooterBox"> - <div class="userItemA"> - <div class="ItemAText">2023年普通案件办理数量</div> - <div class="ItemNumberBox"> - <div class="startBox"> - <span>23</span> - <span>家</span> - </div> - <div class="centerBox"> - <span>环比去年</span> - <span style="margin: 0 5px"> 87% </span> - <i class="el-icon-top"></i> - </div> - <div class="imgBox"></div> - </div> - </div> - <div class="userItemA"> - <div class="ItemAText">2023年简易案件办理数量</div> - <div class="ItemNumberBox"> - <div class="startBox"> - <span>11</span> - <span>家</span> - </div> - <div class="centerBox colors"> - <span>环比去年</span> - <span style="margin: 0 5px"> 3% </span> - <!-- <i class="el-icon-top"></i> --> - <i class="el-icon-bottom"></i> - </div> - <div - class="imgBox" - :style="{ - backgroundImage: - 'url(' + require('@/assets/images/icon3.png') + ')', - }" - ></div> - </div> - </div> - <div class="userItemA"> - <div class="ItemAText">2023年药品生产监督检查数量</div> - <div class="ItemNumberBox"> - <div class="startBox"> - <span>8</span> - <span>家次</span> - </div> - <div class="centerBox"> - <span>环比去年</span> - <span style="margin: 0 5px"> 87% </span> - <i class="el-icon-top"></i> - <!-- <i class="el-icon-bottom"></i> --> - </div> - <div - class="imgBox" - :style="{ - backgroundImage: - 'url(' + require('@/assets/images/icon4.png') + ')', - }" - ></div> - </div> - </div> - <div class="userItemA"> - <div class="ItemAText">2023年参加检查发现缺陷类型统计</div> - <div class="ItemNumberBox"> - <div class="itemleft"> - <div class="one"> - <section>一般</section> - <section><span>8</span>条</section> - </div> - <div class="two"> - <section>主要</section> - <section><span>8</span>条</section> - </div> - <div class="three"> - <section>严重</section> - <section><span>8</span>条</section> - </div> - </div> - <div class="itemright"> - <div - class="imgBox" - :style="{ - backgroundImage: - 'url(' + require('@/assets/images/icon8.png') + ')', - }" - ></div> - </div> - </div> - </div> - <div class="userItemA"> - <div class="ItemAText">2023年药品流通监督检查数量</div> - <div class="ItemNumberBox"> - <div class="startBox"> - <span>3</span> - <span>家次</span> - </div> - <div class="centerBox"> - <span>环比去年</span> - <span style="margin: 0 5px"> 87% </span> - <i class="el-icon-top"></i> - <!-- <i class="el-icon-bottom"></i> --> - </div> - <div - class="imgBox" - :style="{ - backgroundImage: - 'url(' + require('@/assets/images/icon5.png') + ')', - }" - ></div> - </div> - </div> - <div class="userItemA"> - <div class="ItemAText">2023年医疗器械监督检查数量</div> - <div class="ItemNumberBox"> - <div class="startBox"> - <span>3</span> - <span>家次</span> - </div> - <div class="centerBox"> - <span>环比去年</span> - <span style="margin: 0 5px"> 87% </span> - <i class="el-icon-top"></i> - <!-- <i class="el-icon-bottom"></i> --> - </div> - <div - class="imgBox" - :style="{ - backgroundImage: - 'url(' + require('@/assets/images/icon6.png') + ')', - }" - ></div> - </div> - </div> - <div class="userItemA"> - <div class="ItemAText">2023年化妆品监督检查数量</div> - <div class="ItemNumberBox"> - <div class="startBox"> - <span>17</span> - <span>家次</span> - </div> - <div class="centerBox"> - <span>环比去年</span> - <span style="margin: 0 5px"> 87% </span> - <i class="el-icon-top"></i> - <!-- <i class="el-icon-bottom"></i> --> - </div> - <div - class="imgBox" - :style="{ - backgroundImage: - 'url(' + require('@/assets/images/icon7.png') + ')', - }" - ></div> - </div> - </div> - <div class="userItemA"> - <div class="ItemAText"> - {{ trainData.begainYear }} — - {{ trainData.endBegainYear }} 年年度培训情况统计 - </div> - <div class="ItemNumberBox"> - <div class="itemleft"> - <div class="one"> - <section>总学时</section> - <section> - <span>{{ trainData.sm }}</span - >学时 - </section> - </div> - <div class="two"> - <section>总次数</section> - <section> - <span>{{ trainData.total }}</span - >次 - </section> - </div> - </div> - <div class="itemright"> - <div - class="imgBox" - :style="{ - backgroundImage: - 'url(' + require('@/assets/images/icon1.png') + ')', - }" - ></div> - </div> - </div> - </div> - </section> - </div> -</template> -<script> -import { getTrainData } from "@/api/largeSize"; -export default { - data() { - return { - trainData: { - year: "", - sm: "", - total: "", - }, - }; - }, - created() { - let yearParams = { - begainYear: new Date().getFullYear(), - endBegainYear: new Date().getFullYear(), - }; - this.getTrain(yearParams); - }, - methods: { - getinfoData(yearParams) { - this.getTrain(yearParams); - }, - getTrain(year) { - getTrainData(year).then((res) => { - if (res.result.length > 0) { - this.trainData = res.result[0]; - this.trainData.begainYear = year.begainYear; - this.trainData.endBegainYear = year.endBegainYear; - } else { - this.trainData = { - begainYear: year.begainYear, - endBegainYear: year.endBegainYear, - sm: 0, - total: 0, - }; - } - }); - }, - }, -}; -</script> -<style lang="scss"> -.userFooterBox { - height: calc(340px - 50px); - padding: 10px 15px 20px; - display: flex; - justify-content: space-between; - align-content: space-between; - flex-wrap: wrap; - .userItemA { - background-color: rgba($color: #1e80eb, $alpha: 0.04); - border-radius: 4px; - width: 24.2%; - height: 47%; - padding: 0 15px; - .ItemAText { - height: 55px; - font-size: 16px; - font-weight: 400; - color: #292f38; - line-height: 50px; - } - .ItemNumberBox { - display: flex; - justify-content: space-between; - .startBox { - font-family: "DINPro-Medium"; - font-size: 14px; - font-weight: 500; - display: flex; - align-items: end; - - & > span:nth-of-type(1) { - color: #2468f2; - font-size: 42px; - margin-right: 8px; - line-height: 100%; - } - } - .colors { - color: #52cd80 !important; - } - .centerBox { - font-size: 14px; - font-weight: 400; - color: #f04f54; - display: flex; - align-items: end; - & > span:nth-of-type(1) { - color: #85898b; - } - } - - .itemleft { - width: 75%; - display: flex; - justify-content: space-between; - font-size: 14px; - font-weight: 500; - color: #3d3f40; - & span { - font-size: 32px; - margin-right: 5px; - font-family: "DINPro-Medium"; - } - .one, - .two, - .three { - & > section:nth-of-type(1) { - margin-bottom: 4px; - } - } - .one span { - color: #1e80eb; - } - .two span { - color: #52cd80; - } - .three span { - color: #f88129; - } - } - .itemright { - width: 25%; - display: flex; - flex-direction: row-reverse; - } - } - } -} -//图片公用样式 -.imgBox { - width: 50px; - height: 50px; - background-image: url("../../../assets/images/icon2.png"); - background-size: 100% 100%; - // img { - // width: 100%; - // height: 100%; - // } -} -</style> diff --git a/src/views/censor/components/schoolMsg.vue b/src/views/censor/components/schoolMsg.vue deleted file mode 100644 index d62a140..0000000 --- a/src/views/censor/components/schoolMsg.vue +++ /dev/null @@ -1,481 +0,0 @@ -<template> - <div> - <header> - <i class="el-icon-warning-outline"></i> - 提示:【上传附件】可以上传学历,学位证书等文件,支持jpg、png、jpeg、pdf、word等格式 - </header> - <div class="tableDistance"> - <el-table - :data="tableData" - style="width: 100%" - v-loading="loading" - border - > - <el-table-column prop="begainTime" label="开始日期"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.begainTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column prop="endTime" label="结束日期"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.endTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column prop="graduateSchool" label="毕业院校"> - </el-table-column> - <el-table-column prop="department" label="系别"> - <template slot-scope="scope"> - {{ filterDict(scope.row.department, "department") }} - </template> - </el-table-column> - <el-table-column prop="speciality" label="专业"> </el-table-column> - <el-table-column prop="education" label="学历"> - <template slot-scope="scope"> - {{ filterDict(scope.row.education, "education") }} - </template> - </el-table-column> - <el-table-column prop="degree" label="学位"> - <template slot-scope="scope"> - {{ filterDict(scope.row.degree, "degree") }} - </template> - </el-table-column> - <el-table-column label="操作"> - <template slot-scope="scope"> - <div> - <button - v-hasPermi="[ - 'inspector:global:educationBacEdit', - 'inspector:global:educationBacEdit:s', - ]" - class="btnStyle" - @click="handleEdit(scope.$index, scope.row)" - > - 编辑 - </button> - <button - v-hasPermi="[ - 'inspector:global:educationBacDel', - 'inspector:global:educationBacDel:s', - ]" - class="btnStyle green" - @click="handleDelete(scope.$index, scope.row)" - > - 删除 - </button> - </div> - </template> - </el-table-column> - <el-table-column prop="a9" label="上传附件"> - <template slot-scope="scope"> - <div> - <button - v-hasPermi="[ - 'inspector:global:educationBacUpload', - 'inspector:global:educationUpload:s', - ]" - class="btnStyle update" - @click="uploadFile(scope.$index, scope.row)" - > - 上传附件 - </button> - </div> - </template> - </el-table-column> - </el-table> - </div> - <!-- 附件上传 --> - <el-dialog - :visible.sync="showUpload" - width="30%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - :before-close="handleClose" - > - <div slot="title" class="my-dialog-title">附件上传</div> - <FileUpload v-model="filelist" :isShowTip="false"> - <el-button size="mini" type="primary">上传附件</el-button> - </FileUpload> - <div slot="footer" class="dialog-footer"> - <el-button - size="small" - type="primary" - icon="el-icon-my-save" - @click="fileSubmit()" - >提交</el-button - > - </div> - </el-dialog> - <!-- 教育、培训经历dialog --> - <el-dialog - :visible.sync="show" - width="30%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title">{{ title }}</div> - <el-form - ref="form" - :model="form" - :rules="rules" - label-position="right" - label-width="100px" - class="my-dialog-body" - > - <el-form-item label="开始时间:" prop="begainTime"> - <el-date-picker - v-model="form.begainTime" - type="date" - value-format="yyyy-MM-dd HH:mm:ss" - placeholder="请选择时间" - > - </el-date-picker> - </el-form-item> - <el-form-item label="结束时间:" prop="endTime"> - <el-date-picker - v-model="form.endTime" - type="date" - value-format="yyyy-MM-dd HH:mm:ss" - placeholder="请选择时间" - > - </el-date-picker> - </el-form-item> - <el-form-item label="毕业院校:" prop="graduateSchool"> - <el-input - v-model="form.graduateSchool" - placeholder="请输入院校名称" - ></el-input> - </el-form-item> - <el-form-item label="系别:" prop="department"> - <el-select v-model="form.department"> - <el-option - :label="dict.dictLabel" - :value="dict.dictValue.toString()" - v-for="dict in dict.department" - :key="dict.dictValue" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="专业:" prop="speciality"> - <el-input - v-model="form.speciality" - placeholder="请输入专业" - ></el-input> - </el-form-item> - <el-form-item label="学历:" prop="education"> - <el-select v-model="form.education"> - <el-option - :label="dict.dictLabel" - :value="dict.dictValue.toString()" - v-for="dict in dict.education" - :key="dict.dictValue" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="学位:" prop="degree"> - <el-select v-model="form.degree"> - <el-option - :label="dict.dictLabel" - :value="dict.dictValue.toString()" - v-for="dict in dict.degree" - :key="dict.dictValue" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="" prop="specialityTitle"> - <el-radio-group v-model="form.specialityTitle"> - <el-radio :label="1">第一学历</el-radio> - <el-radio :label="2">最高学历</el-radio> - </el-radio-group> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button - size="small" - type="primary" - icon="el-icon-my-save" - @click="onSubmit('form')" - >提交</el-button - > - <el-button size="small" icon="el-icon-my-reset" @click="reset()" - >重置</el-button - > - </div> - </el-dialog> - </div> -</template> -<script> -import { - getList, - addList, - deleteList, - updataList, - getListInfo, -} from "@/api/schoolMsg"; -import { dictList } from "@/api/jcy"; -export default { - props: { - //检查员id - inspectorId: { - type: Number, - }, - }, - data() { - return { - dict: {}, - filelist: [], - fileFrom: {}, - //上传附件 - showUpload: false, - //dialog打开状态 - show: false, - //dialog标题 - title: "", - // 遮罩层 - loading: true, - //表格 - tableData: [], - //表单 - form: { - id: null, - inspectorId: null, - begainTime: "", - endTime: "", - graduateSchool: "", - department: "", - speciality: "", - education: "", - degree: "", - specialityTitle: 1, - educationPath: "", - }, - queryParams: { - inspectorId: null, - }, - //校验 - rules: { - begainTime: [ - { - required: true, - message: "请选择日期", - trigger: "change", - }, - ], - endTime: [ - { - required: true, - message: "请选择日期", - trigger: "change", - }, - ], - graduateSchool: [ - { required: true, message: "请输入毕业院校", trigger: "blur" }, - ], - department: [ - { - required: true, - message: "请输入系别", - trigger: "blur", - }, - ], - degree: [ - { - required: true, - message: "请选择学位", - trigger: "change", - }, - ], - speciality: [ - { required: true, message: "请输入专业", trigger: "blur" }, - ], - education: [ - { - required: true, - message: "请输入学历", - trigger: "blur", - }, - ], - }, - }; - }, - created() { - this.queryParams.inspectorId = this.inspectorId; - this.form.inspectorId = this.inspectorId; - this.getDictList("department,education,degree"); - }, - methods: { - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - }, - getDictList(typeList) { - let query = { - list: typeList, - }; - dictList(query).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - this.getList(); - } - }); - }, - handleClose(done) { - this.filelist = []; - done(); - }, - /**文件上传提交 */ - fileSubmit() { - if (this.filelist.length == 0) { - this.$modal.msgError("请上传文件!"); - } else { - this.fileFrom.degreePath = []; - this.fileFrom.degreePathname = []; - this.filelist.forEach((item) => { - this.fileFrom.degreePath.push(item.url); - this.fileFrom.degreePathname.push(item.name); - }); - this.fileFrom.degreePath = this.fileFrom.degreePath.toString(); - this.fileFrom.degreePathname = this.fileFrom.degreePathname.toString(); - - updataList(this.fileFrom).then((res) => { - this.$modal.msgSuccess("修改成功"); - this.showUpload = false; - this.filelist = []; - this.getList(); - }); - } - }, - /**打开上传附件 */ - uploadFile(index, row) { - getListInfo(row.id).then((res) => { - this.fileFrom = res.result; - if (this.fileFrom.degreePath) { - this.fileFrom.degreePath = this.fileFrom.degreePath.split(","); - this.fileFrom.degreePathname = - this.fileFrom.degreePathname.split(","); - this.fileFrom.degreePath.forEach((item, index) => { - this.filelist.push({ - name: this.fileFrom.degreePathname[index], - url: item, - }); - }); - } - this.showUpload = true; - }); - }, - /**新增 */ - openDialog() { - this.reset(); - this.title = "新增教育背景"; - this.show = true; - }, - /**表格数据 */ - getList() { - this.loading = true; - getList(this.queryParams).then((res) => { - this.tableData = res.result.records; - this.loading = false; - }); - }, - /**重置 */ - reset() { - this.form = { - id: null, - inspectorId: this.inspectorId, - begainTime: "", - endTime: "", - graduateSchool: "", - department: "", - speciality: "", - education: "", - degree: "", - specialityTitle: 1, - educationPath: "", - }; - this.resetForm("form"); - }, - /**提交 */ - onSubmit(formName) { - this.$refs[formName].validate((valid) => { - if (valid) { - if (this.form.id != null) { - updataList(this.form).then((res) => { - this.$modal.msgSuccess("修改成功"); - this.show = false; - this.getList(); - }); - } else { - addList(this.form).then((res) => { - this.$modal.msgSuccess("新增成功"); - this.show = false; - this.getList(); - }); - } - } else { - return false; - } - }); - }, - /**编辑 */ - handleEdit(index, row) { - this.reset(); - getListInfo(row.id).then((res) => { - this.title = "编辑教育背景"; - this.form = res.result; - this.show = true; - }); - }, - /**删除 */ - handleDelete(index, row) { - const infoIds = row.id; - this.$modal - .confirm("确认删除该条数据项?") - .then(function () { - return deleteList(infoIds); - }) - .then(() => { - this.getList(); - this.$modal.msgSuccess("删除成功"); - }) - .catch(() => {}); - }, - }, -}; -</script> -<style lang="scss" scoped> -header { - font-size: 14px; - font-weight: 400; - color: #e61c1c; - line-height: 24px; -} -.tableDistance { - margin-top: 15px; -} -.btnStyle { - border: 1px solid #ffc89f; - background: #ffefe3; - border-radius: 4px; - color: #f88129; - font-size: 12px; - cursor: pointer; -} -.green { - background: #ffe0de; - border: 1px solid #f89d97; - color: #f76359; - margin-left: 8px; -} -.update { - background: #ebf5ff; - border: 1px solid #a1cbf8; - color: #0e7cf4; -} -</style> diff --git a/src/views/censor/components/trainingMsg.vue b/src/views/censor/components/trainingMsg.vue deleted file mode 100644 index ab70857..0000000 --- a/src/views/censor/components/trainingMsg.vue +++ /dev/null @@ -1,579 +0,0 @@ -<template> - <div> - <div> - <el-table - :data="tableData" - :border="true" - style="width: 100%" - v-loading="loading" - > - <el-table-column prop="begainTime" label="开班时间"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.begainTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column prop="begainTime" label="开班结束时间"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.begainTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column prop="traningName" label="培训名称"> </el-table-column> - <el-table-column - prop="traningUnit" - label="培训组织单位" - :show-overflow-tooltip="true" - > - </el-table-column> - <el-table-column prop="traningAddress" label="培训地点"> - </el-table-column> - <el-table-column prop="narionalProvincialLevel" label="国家级/省级"> - </el-table-column> - <el-table-column prop="classHour" label="学时"> </el-table-column> - <el-table-column prop="courseType" label="课程类型"> - <template slot-scope="scope"> - {{ filterDict(scope.row.courseType, "courseType") }} - </template> - </el-table-column> - <el-table-column prop="learningStyle" label="学习方式"> - <template slot-scope="scope"> - {{ filterDict(scope.row.learningStyle, "learningStyle") }} - </template> - </el-table-column> - <el-table-column prop="traningResults" label="培训成绩"> - </el-table-column> - <el-table-column - prop="assessmentResults" - label="考核结果" - :formatter=" - (row, column, cellValue, index) => { - return cellValue == 1 - ? '优秀' - : cellValue == 2 - ? '合格' - : cellValue == 3 - ? '不合格' - : ''; - } - " - > - </el-table-column> - - <el-table-column label="操作"> - <template slot-scope="scope"> - <div v-if="scope.row.exportStatus == null"> - <button - class="btnStyle" - @click="handleUpdate(scope.$index, scope.row)" - v-hasPermi="[ - 'inspector:global:trainEdit', - 'inspector:global:trainEdit:s', - ]" - > - 编辑 - </button> - <button - class="btnStyle green" - @click="handleDelete(scope.$index, scope.row)" - v-hasPermi="[ - 'inspector:global:trainDel', - 'inspector:global:trainDel:s', - ]" - > - 删除 - </button> - <!-- <button - class="btnStyle update" - @click="handleEdit(scope.$index, scope.row)" - - > - 上传附件 - </button> --> - </div> - </template> - </el-table-column> - </el-table> - </div> - <!-- 培训班情况 --> - <el-dialog - :visible.sync="show" - width="30%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title"> - {{ this.distinguish }}培训情况 - </div> - <el-form - ref="formName" - :model="form" - :rules="rules" - label-position="right" - label-width="155px" - class="my-dialog-body" - v-loading="load1" - > - <el-form-item label="开班时间:" prop="begainTime"> - <el-date-picker - v-model="form.begainTime" - type="date" - placeholder="请选择时间" - value-format="yyyy-MM-dd hh:mm:ss" - > - </el-date-picker> - </el-form-item> - <el-form-item label="结束时间:" prop="endTime"> - <el-date-picker - v-model="form.endTime" - type="date" - placeholder="请选择时间" - value-format="yyyy-MM-dd hh:mm:ss" - > - </el-date-picker> - </el-form-item> - - <el-form-item label="培训名称:" prop="traningName"> - <el-input - v-model="form.traningName" - placeholder="请输入名称" - ></el-input> - </el-form-item> - <el-form-item label="培训地点:" prop="traningAddress"> - <el-input - v-model="form.traningAddress" - placeholder="请输入地点" - ></el-input> - </el-form-item> - <el-form-item label="培训班级别:" prop="narionalProvincialLevel"> - <el-select - v-model="form.narionalProvincialLevel" - placeholder="请选择" - > - <el-option - v-for="item in options" - :key="item.label" - :label="item.value" - :value="item.value" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="学时:" prop="classHour" class="input-units"> - <el-input - v-model.number="form.classHour" - placeholder="请输入学时" - ></el-input> - <div class="units-text">时</div> - </el-form-item> - <el-form-item label="培训组织单位:" prop="traningUnit"> - <el-input - v-model="form.traningUnit" - placeholder="请输入单位" - ></el-input> - </el-form-item> - <el-form-item label="培训成绩:" class="input-units"> - <el-input - v-model.number="form.traningResults" - placeholder="请输入成绩" - ></el-input> - <div class="units-text">分</div> - </el-form-item> - <el-form-item label="课程类型:" prop="courseType"> - <el-select v-model="form.courseType" placeholder="请选择"> - <el-option - v-for="item in dict.courseType" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="学习方式:" prop="learningStyle"> - <el-select v-model="form.learningStyle" placeholder="请选择"> - <el-option - v-for="item in dict.learningStyle" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue.toString()" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="考核结果:"> - <el-radio-group v-model="form.assessmentResults"> - <el-radio - v-for="item in radio" - :key="item.label" - :label="item.label" - >{{ item.value }}</el-radio - > - </el-radio-group> - </el-form-item> - <el-form-item label="上传附件:" prop="assessmentFilename"> - <FileUpload v-model="list" :isShowTip="false"> - <el-button - size="mini" - type="primary" - v-hasPermi="[ - 'inspector:global:trainUpload', - 'inspector:global:trainUpload:s', - ]" - >上传培训情况附件</el-button - > - </FileUpload> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button - size="small" - type="primary" - icon="el-icon-my-save" - @click="submit()" - >提交</el-button - > - <el-button size="small" icon="el-icon-my-reset" @click="reset()" - >重置</el-button - > - </div> - </el-dialog> - <!-- <fileDiaglog ref="fileDiaglog"></fileDiaglog> --> - </div> -</template> -<script> -import { exportExcel, dictList } from "@/api/jcy"; -export default { - data() { - const unitName = (rule, value, callback) => { - if (value.includes("辽宁省药品监督管理局")) { - callback(new Error("不得输入辽宁省药品监督管理局等字样")); - } else { - callback(); - } - }; - return { - dict: {}, - list: [], - //单选按钮 - radio: [ - { - value: "优秀", - label: 1, - }, - { - value: "合格", - label: 2, - }, - { - value: "不合格", - label: 3, - }, - ], - //区分修改和新增 - distinguish: "", - options: [ - { - value: "国家级", - label: "0", - }, - { - value: "省级", - label: "1", - }, - ], - loading: true, - //弹出框的等待效果 - load1: true, - show: false, - tableData: [], - form: { - assessmentResults: 1, - assessmentFilename: "", - assessmentResultsUrl: "", - begainTime: "", - - endTime: "", - - classHour: "", - courseType: "", - idCard: null, - //检查员id - inspectorId: null, - learningStyle: "", - narionalProvincialLevel: "", - remark: "", - traningAddress: "", - traningName: "", - traningResults: "", - traningUnit: "", - }, - rules: { - begainTime: [ - { required: true, message: "请选择时间", trigger: "blur" }, - ], - endTime: [{ required: true, message: "请选择时间", trigger: "blur" }], - - traningName: [ - { required: true, message: "培训名称不能为空", trigger: "blur" }, - ], - - traningAddress: [ - { required: true, message: "培训地点不能为空", trigger: "blur" }, - ], - narionalProvincialLevel: [ - { required: true, message: "请选择培训班级别", trigger: "blur" }, - ], - classHour: [ - { required: true, message: "学时不能为空", trigger: "blur" }, - { - type: "number", - message: "请输入数字类型的学时", - trigger: "blur", - }, - ], - traningUnit: [ - { - required: true, - message: "培训组织单位不能为空", - trigger: "blur", - }, - { required: true, validator: unitName, trigger: "blur" }, - ], - traningResults: [ - { required: true, message: "培训成绩不能为空", trigger: "blur" }, - { - type: "number", - message: "请输入数字类型的培训成绩", - trigger: "blur", - }, - ], - courseType: [ - { required: true, message: "课程类型不能为空", trigger: "blur" }, - ], - learningStyle: [ - { required: true, message: "学习方式不能为空", trigger: "blur" }, - ], - // assessmentResults: [ - // { required: true, message: "请选择考核结果", trigger: "change" }, - // ], - assessmentFilename: [ - { required: true, message: "请选择附件", trigger: "blur" }, - ], - }, - }; - }, - props: { - inspectorId: { - type: Number, - default: 0, - }, - }, - components: { - // fileDiaglog, - }, - created() { - //获取检查员的id并赋值 - this.form.inspectorId = this.inspectorId; - this.getDictList("courseType,learningStyle"); - }, - methods: { - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - }, - getDictList(typeList) { - let query = { - list: typeList, - }; - dictList(query).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - this.getList(); - } - }); - }, - //获取培训详情列表 - async getList() { - this.loading = true; - let msg = await this.$api.training.listTraining({ - inspectorId: this.form.inspectorId, - }); - if (msg.status == 200) this.loading = false; - this.tableData = msg.result.records; - }, - //重置 - reset() { - this.form = { - assessmentResults: 1, - assessmentFilename: "", - assessmentResultsUrl: "", - begainTime: "", - classHour: "", - courseType: "", - //检查员id - inspectorId: this.inspectorId, - learningStyle: "", - narionalProvincialLevel: "", - remark: "", - traningAddress: "", - traningName: "", - traningResults: "", - traningUnit: "", - }; - this.list = []; - }, - //新增 - async handleAdd() { - this.distinguish = "新增"; - this.reset(); - this.show = true; - this.load1 = false; - }, - //编辑 - async handleUpdate(index, row) { - this.reset(); - this.show = true; - this.load1 = true; - this.distinguish = "修改"; - //获取详情 - let msg1 = await this.$api.training.detailTraining(row.id); - if (msg1.status == 200) this.load1 = false; - this.form = msg1.result; - if (msg1.result.assessmentResultsUrl && msg1.result.assessmentFilename) { - let arr1 = []; - let arr2 = []; - arr1 = msg1.result.assessmentResultsUrl.split(","); - arr2 = msg1.result.assessmentFilename.split(","); - arr1.forEach((value, index) => { - this.list.push({ - url: value, - name: arr2[index], - }); - }); - } - }, - //弹窗的确认 - submit() { - let arr1 = []; - let arr2 = []; - this.list.forEach((value, index) => { - arr1.push(value.name); - arr2.push(value.url); - }); - this.form.assessmentFilename = arr1.join(","); - this.form.assessmentResultsUrl = arr2.join(","); - this.$refs.formName.validate(async (valid) => { - if (valid) { - if (this.distinguish === "新增") { - let msg = await this.$api.training.addTraining(this.form); - if (msg.status == 200) this.dialog(); - } else if (this.distinguish === "修改") { - let msg = await this.$api.training.updateTraining(this.form); - if (msg.status == 200) this.dialog(); - } - this.show = false; - this.getList(); - } - }); - }, - //成功弹窗 - dialog() { - this.$message({ - type: "success", - message: `${this.distinguish}成功!`, - }); - }, - //删除 - handleDelete(index, row) { - this.$confirm("此操作将删除该条培训情况, 是否继续?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning", - }) - .then(async () => { - let msg1 = await this.$api.training.deleteTraining(row.id); - if (msg1.status == 200) { - this.$message({ - type: "success", - message: "删除成功!", - }); - this.getList(); - } - }) - .catch(() => { - this.$message({ - type: "info", - message: "已取消删除", - }); - }); - }, - //上传附件 - async handleEdit(index, row) { - this.$refs.fileDiaglog.open(row.id, "培训"); - }, - //导出 - async exportTrain() { - let params = { - value: 1, - ids: this.inspectorId, - }; - exportExcel(params).then((res) => { - if (res.data.code == 200) { - this.uploadFile( - res.data.data.result.url, - res.data.data.result.originalFilename - ); - } - }); - }, - //判断上午下午 - timerChange(e) { - let timer = new Date(e); - let hours = timer.getHours(); - if (hours < 12) { - return "上午"; - } else { - return "下午"; - } - }, - }, -}; -</script> -<style lang="scss" scoped> -.btnStyle { - border: 1px solid #ffc89f; - background: #ffefe3; - border-radius: 4px; - color: #f88129; - font-size: 12px; - cursor: pointer; -} -.green { - background: #ffe0de; - border: 1px solid #f89d97; - color: #f76359; - margin: 0 8px; -} -.update { - background: #ebf5ff; - border: 1px solid #a1cbf8; - color: #0e7cf4; -} -.input-units { - position: relative; - .units-text { - font-size: 13px; - position: absolute; - right: 10px; - top: 50%; - transform: translateY(-50%); - color: #c0c4cc; - } -} -</style> diff --git a/src/views/censor/components/work.vue b/src/views/censor/components/work.vue deleted file mode 100644 index 8f68fbd..0000000 --- a/src/views/censor/components/work.vue +++ /dev/null @@ -1,393 +0,0 @@ -<template> - <div> - <header> - <i class="el-icon-warning-outline"></i> - 提示:【上传附件】可以上传工作内容证明、职称证书等文件,支持jpg、png、jpeg、pdf、word等格式 - </header> - <div class="tableDistance"> - <el-table - :data="tableData" - :border="true" - style="width: 100%" - v-loading="loading" - > - <el-table-column prop="begainTime" label="开始日期" width="110"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.begainTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column prop="endTime" label="结束日期" width="110"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.endTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column prop="workPlace" label="工作单位"> </el-table-column> - <el-table-column prop="workUnit" label="工作部门"> </el-table-column> - <el-table-column prop="workUnit" label="从事工作"> </el-table-column> - <el-table-column prop="duty" label="职务"> - <template slot-scope="scope"> - {{ filterDict(scope.row.duty, "duty") }} - </template> - </el-table-column> - <el-table-column prop="title" label="职称"> - <template slot-scope="scope"> - {{ filterDict(scope.row.title, "title") }} - </template> - </el-table-column> - <el-table-column label="操作"> - <template slot-scope="scope"> - <div> - <button - class="btnStyle" - @click="handleUpdate(scope.$index, scope.row)" - v-hasPermi="[ - 'inspector:global:workEdit', - 'inspector:global:workEdit:s', - ]" - > - 编辑 - </button> - <button - class="btnStyle green" - @click="handleDelete(scope.$index, scope.row)" - v-hasPermi="[ - 'inspector:global:workDel', - 'inspector:global:workDel:s', - ]" - > - 删除 - </button> - </div> - </template> - </el-table-column> - <el-table-column label="上传附件"> - <template slot-scope="scope"> - <div> - <button - class="btnStyle update" - @click="handleEdit(scope.$index, scope.row)" - v-hasPermi="[ - 'inspector:global:workUpload', - 'inspector:global:workUpload:s', - ]" - > - 上传附件 - </button> - </div> - </template> - </el-table-column> - </el-table> - </div> - <!-- 工作经历 --> - <el-dialog - :visible.sync="show" - width="30%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title"> - {{ this.distinguish }}工作经历 - </div> - <el-form - ref="formName" - :model="form" - :rules="rules" - label-position="right" - label-width="100px" - class="my-dialog-body" - v-loading="load1" - > - <el-form-item label="开始时间:" prop="begainTime"> - <el-date-picker - v-model="form.begainTime" - type="date" - placeholder="请选择时间" - value-format="yyyy-MM-dd HH:mm:ss" - > - </el-date-picker> - </el-form-item> - <el-form-item label="结束时间:" prop="endTime"> - <el-date-picker - v-model="form.endTime" - type="date" - placeholder="请选择时间" - value-format="yyyy-MM-dd HH:mm:ss" - > - </el-date-picker> - </el-form-item> - <el-form-item label="工作单位:" prop="workPlace"> - <el-input - v-model="form.workPlace" - placeholder="请输入单位名称" - ></el-input> - </el-form-item> - <el-form-item label="工作部门:" prop="workUnit"> - <el-input - v-model="form.workUnit" - placeholder="请输入部门名称" - ></el-input> - </el-form-item> - <el-form-item label="职称:" prop="title"> - <!-- <el-input v-model="form.title" placeholder="请输入职称"></el-input> --> - <el-select v-model="form.title" placeholder="请选择"> - <el-option - v-for="item in dict.title" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue.toString()" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="职务:" prop="duty"> - <el-select v-model="form.duty" placeholder="请选择"> - <el-option - v-for="item in dict.duty" - :key="item.dictValue" - :label="item.dictLabel" - :value="item.dictValue.toString()" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="从事工作:" prop="undertake"> - <el-input - type="textarea" - v-model="form.undertake" - placeholder="请输入内容" - ></el-input> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button - size="small" - type="primary" - icon="el-icon-my-save" - @click="submit" - >提交</el-button - > - <el-button size="small" icon="el-icon-my-reset" @click="reset()" - >重置</el-button - > - </div> - </el-dialog> - <fileDiaglog ref="work" :showTitle="showTitle"></fileDiaglog> - </div> -</template> -<script> -import fileDiaglog from "../../userMsgPage/components/fileDiaglog.vue"; -import { dictList } from "@/api/jcy/index.js"; - -export default { - data() { - return { - //职务字典 - dict: {}, - - showTitle: true, - //区分修改和新增 - distinguish: "", - loading: true, - //弹出框的等待效果 - load1: true, - show: false, - tableData: [], - form: { - begainTime: "", - duty: "", - endTime: "", - inspectorId: undefined, - title: "", - undertake: "", - workPlace: "", - workUnit: "", - }, - rules: { - begainTime: [ - { required: true, message: "请选择开始时间", trigger: "blur" }, - ], - endTime: [ - { required: true, message: "请选择结束时间", trigger: "blur" }, - ], - workPlace: [ - { - required: true, - message: "单位名称不能为空", - trigger: "blur", - }, - ], - workUnit: [ - { required: true, message: "工作部门不能为空", trigger: "blur" }, - ], - title: [{ required: true, message: "职称不能为空", trigger: "blur" }], - - duty: [{ required: true, message: "请选择职务", trigger: "blur" }], - undertake: [ - { - required: true, - message: "从事工作不能为空", - trigger: "blur", - }, - ], - }, - }; - }, - created() { - //获取检查员的id并赋值 - this.form.inspectorId = this.inspectorId; - - dictList({ - list: "duty,title", - }).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - this.getList(); - } - }); - }, - props: { - inspectorId: { - type: Number, - default: 0, - }, - }, - components: { - fileDiaglog, - }, - methods: { - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - }, - //获取培训详情列表 - async getList() { - this.loading = true; - let msg = await this.$api.work.listWork({ - inspectorId: this.form.inspectorId, - }); - if (msg.status == 200) this.loading = false; - this.tableData = msg.result.records; - }, - //重置 - reset() { - // this.$refs.formName.resetFields(); - this.form = { - begainTime: "", - duty: "", - endTime: "", - //检查员id - inspectorId: this.inspectorId, - title: "", - undertake: "", - workPlace: "", - workUnit: "", - }; - }, - //新增 - async workAddList() { - this.distinguish = "新增"; - this.reset(); - this.show = true; - this.load1 = false; - }, - //编辑 - async handleUpdate(index, row) { - this.show = true; - this.load1 = true; - this.distinguish = "修改"; - //获取详情 - let msg1 = await this.$api.work.detailWork(row.id); - if (msg1.status == 200) this.load1 = false; - this.form = msg1.result; - }, - //弹窗的确认 - submit() { - this.$refs.formName.validate(async (valid) => { - if (valid) { - if (this.distinguish === "新增") { - let msg = await this.$api.work.addWork(this.form); - - if (msg.status == 200) this.dialog(); - } else if (this.distinguish === "修改") { - let msg = await this.$api.work.updateWork(this.form); - if (msg.status == 200) this.dialog(); - } - this.show = false; - this.getList(); - } - }); - }, - //弹窗 - dialog() { - this.$message({ - type: "success", - message: `${this.distinguish}成功!`, - }); - }, - //删除 - handleDelete(index, row) { - this.$confirm("此操作将删除该条工作经历, 是否继续?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning", - }) - .then(async () => { - let msg1 = await this.$api.work.deleteWork(row.id); - if (msg1.status == 200) { - this.$message({ - type: "success", - message: "删除成功!", - }); - this.getList(); - } - }) - .catch(() => { - this.$message({ - type: "info", - message: "已取消删除", - }); - }); - }, - handleEdit(index, row) { - this.$refs.work.open(row.id, "工作"); - }, - }, -}; -</script> -<style lang="scss" scoped> -header { - font-size: 14px; - font-weight: 400; - color: #e61c1c; - line-height: 24px; -} -.tableDistance { - margin-top: 15px; -} -.btnStyle { - border: 1px solid #ffc89f; - background: #ffefe3; - border-radius: 4px; - color: #f88129; - font-size: 12px; - cursor: pointer; -} -.green { - background: #ffe0de; - border: 1px solid #f89d97; - color: #f76359; - margin-left: 8px; -} -.update { - background: #ebf5ff; - border: 1px solid #a1cbf8; - color: #0e7cf4; -} -</style> diff --git a/src/views/censor/components/yearAssess.vue b/src/views/censor/components/yearAssess.vue deleted file mode 100644 index 552f090..0000000 --- a/src/views/censor/components/yearAssess.vue +++ /dev/null @@ -1,266 +0,0 @@ -<template> - <div> - <div> - <el-table - :data="tableData" - :border="true" - v-loading="loading" - style="width: 100%" - > - <el-table-column prop="name" label="姓名" width="110"> - </el-table-column> - <el-table-column - prop="workUnit" - label="工作单位" - :show-overflow-tooltip="true" - > - </el-table-column> - <el-table-column prop="assessYear" label="考核年度"> </el-table-column> - <el-table-column - prop="division" - label="考核部门" - :show-overflow-tooltip="true" - /> - <el-table-column prop="assessTime" label="考核时间"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.assessTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column - prop="remark" - label="年度综合评定意见" - :show-overflow-tooltip="true" - > - <template slot-scope="scope"> - {{ filterDict(scope.row.remark, "remark") }} - </template> - </el-table-column> - <el-table-column label="操作"> - <template slot-scope="scope"> - <div v-hasPermi="['inspector:global:yearEdit']"> - <button class="btnStyle" @click="handleEdit(scope.row)"> - 编辑 - </button> - </div> - </template> - </el-table-column> - </el-table> - </div> - <el-dialog - :visible.sync="open" - width="30%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title">编辑年度考核</div> - - <el-form - ref="form" - :model="form" - :rules="rules" - label-position="right" - label-width="100px" - class="my-dialog-body" - > - <el-form-item label="姓名:" prop="name"> - <el-input v-model="form.name" placeholder="请输入姓名"></el-input> - </el-form-item> - <el-form-item label="工作单位:" prop="workUnit"> - <el-select v-model="form.workUnit" placeholder="请选择"> - <el-option - :label="dict.dictLabel" - :value="dict.dictLabel.toString()" - v-for="dict in dict.workUnit" - :key="dict.dictValue" - ></el-option> - </el-select> - <!-- <el-input - v-model="form.workUnit" - placeholder="请输入工作单位" - ></el-input> --> - </el-form-item> - <el-form-item label="考核年度:" prop="assessYear"> - <el-date-picker - v-model="form.assessYear" - type="year" - placeholder="请选择" - value-format="yyyy" - > - </el-date-picker> - </el-form-item> - <el-form-item label="考核部门:" prop="division"> - <el-select v-model="form.division" placeholder="请选择"> - <el-option - :label="dict.dictLabel" - :value="dict.dictLabel.toString()" - v-for="dict in dict.division" - :key="dict.dictValue" - ></el-option> - </el-select> - <!-- <el-input - v-model="form.division" - placeholder="请输入考核部门" - ></el-input> --> - </el-form-item> - <el-form-item label="考核时间:" prop="assessTime"> - <el-date-picker - v-model="form.assessTime" - type="date" - value-format="yyyy-MM-dd" - placeholder="选择日期" - > - </el-date-picker> - </el-form-item> - <el-form-item label="综合评定意见:" prop="remark"> - <el-select v-model="form.remark" placeholder="请选择"> - <el-option - :label="dict.dictLabel" - :value="dict.dictValue.toString()" - v-for="dict in dict.remark" - :key="dict.dictValue" - ></el-option> - </el-select> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button - size="small" - type="primary" - icon="el-icon-my-save" - @click="onSubmit('form')" - >提交</el-button - > - <el-button size="small" icon="el-icon-my-reset" @click="reset()" - >重置</el-button - > - </div> - </el-dialog> - </div> -</template> -<script> -import { exportExcel, dictList } from "@/api/jcy"; -import { getList, updateRow } from "@/api/yearAssess"; -export default { - props: { - inspectorId: { - type: Number, - default: 0, - }, - }, - data() { - return { - dict: {}, - open: false, - loading: true, - tableData: [], - queryParams: { - inspectorId: undefined, - }, - form: {}, - rules: { - name: [{ required: true, message: "请填写姓名", trigger: "blur" }], - workUnit: [ - { required: true, message: "请选择工作单位", trigger: "change" }, - ], - assessYear: [ - { required: true, message: "请选择考核年", trigger: "change" }, - ], - division: [ - { required: true, message: "请选择考核部门", trigger: "change" }, - ], - assessTime: [ - { required: true, message: "请选择考核时间", trigger: "change" }, - ], - remark: [ - { required: true, message: "请选择综合评定意见", trigger: "change" }, - ], - }, - }; - }, - created() { - this.queryParams.inspectorId = this.inspectorId; - dictList({ list: "remark,workUnit,division" }).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - this.getList(); - } - }); - }, - methods: { - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - }, - /**重置 */ - reset() { - this.form = { - id: null, - name: "", - workUnit: "", - assessYear: "", - division: "", - assessTime: "", - remark: "", - }; - this.resetForm("form"); - }, - /**提交 */ - onSubmit(formName) { - this.$refs[formName].validate((valid) => { - if (valid) { - updateRow(this.form).then((res) => { - this.open = false; - this.$modal.msgSuccess("修改成功"); - this.getList(); - }); - } else { - return false; - } - }); - }, - /**编辑 */ - handleEdit(row) { - this.form = JSON.parse(JSON.stringify(row)); - this.open = true; - }, - getList() { - this.loading = true; - getList(this.queryParams).then((res) => { - this.tableData = res.result.records; - this.loading = false; - }); - }, - exportTrain() { - let params = { - value: 4, - ids: this.inspectorId, - }; - exportExcel(params).then((res) => { - if (res.data.code == 200) { - this.uploadFile( - res.data.data.result.url, - res.data.data.result.originalFilename - ); - } - }); - }, - }, -}; -</script> -<style lang="scss" scoped> -.btnStyle { - border: 1px solid #ffc89f; - background: #ffefe3; - border-radius: 4px; - color: #f88129; - font-size: 12px; - cursor: pointer; -} -</style> diff --git a/src/views/censor/index.vue b/src/views/censor/index.vue deleted file mode 100644 index 4012bb0..0000000 --- a/src/views/censor/index.vue +++ /dev/null @@ -1,858 +0,0 @@ -<template> - <div class="child-container"> - <div class="table-list" v-show="!info"> - <div class="search-box"> - <gridsTitle title="查询条件" /> - <el-form - :model="queryParams" - ref="queryForm" - size="small" - :inline="true" - label-width="95px" - class="search-from" - > - <el-form-item label="人员姓名:" prop="name"> - <el-input v-model="queryParams.name" clearable></el-input> - </el-form-item> - <el-form-item label="性别:" prop="sex"> - <el-select v-model="queryParams.sex" clearable> - <el-option - :label="sex.label" - :value="sex.value" - v-for="sex in dictList.sex" - :key="sex.value" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="部门:" prop="division"> - <el-input v-model="queryParams.division" clearable></el-input> - </el-form-item> - <el-form-item label="执法证号:" prop="lawNumber"> - <el-input v-model="queryParams.lawNumber" clearable></el-input> - </el-form-item> - <el-form-item label="状态:" prop="status"> - <el-select v-model="queryParams.status" clearable> - <el-option label="停用中" :value="1"></el-option> - <el-option label="启用中" :value="2"></el-option> - </el-select> - </el-form-item> - <div class="search-btn"> - <el-button icon="el-icon-my-reset" size="mini" @click="resetQuery" - >重置</el-button - > - <el-button - type="primary" - icon="el-icon-search" - size="mini" - @click="handleQuery" - >搜索</el-button - > - </div> - </el-form> - </div> - <div class="table-box"> - <gridsTitle title="检查员列表" /> - <div class="table-data"> - <el-row :gutter="10" class="mb8 table-top-btn"> - <!-- <el-col :span="1.5"> - <el-button - v-hasPermi="['inspector:global:score']" - plain - icon="el-icon-star-off" - size="mini" - @click="conditionSet()" - >评分条件设置</el-button - > - </el-col> --> - <el-col :span="1.5"> - <el-button - v-hasPermi="['inspector:global:export']" - plain - icon="el-icon-edit-outline" - size="mini" - :disabled="multiple" - @click="openModel(0)" - >导出</el-button - > - </el-col> - <el-col :span="1.5"> - <el-button - v-hasPermi="['inspector:global:Import']" - plain - icon="el-icon-my-import" - size="mini" - @click="handleImport()" - >导入</el-button - > - </el-col> - <el-col :span="1.5"> - <el-button - v-hasPermi="['inspector:global:download']" - type="text" - icon="el-icon-download" - size="mini" - @click="openModel(1)" - >导入模版下载</el-button - > - </el-col> - </el-row> - <el-table - v-loading="loading" - :data="tableList" - height="83%" - @selection-change="handleSelectionChange" - > - <el-table-column type="selection" width="55" align="center" /> - <el-table-column type="index" label="序号" width="55"> - </el-table-column> - <el-table-column label="人员姓名" align="center" prop="name" /> - <el-table-column label="性别" align="center" prop="sex"> - <template slot-scope="scope"> - {{ - scope.row.sex == 1 ? "男" : scope.row.sex == 2 ? "女" : "未知" - }} - </template> - </el-table-column> - <el-table-column label="职务" align="center" prop="duty"> - <template slot-scope="scope"> - {{ filterDict(scope.row.duty, "duty") }} - </template> - </el-table-column> - <el-table-column label="来源" align="center" prop="source"> - <template slot-scope="scope"> - {{ filterDict(scope.row.source, "source") }} - </template> - </el-table-column> - <el-table-column label="执法证号" align="center" prop="lawNumber"> - <!-- <template slot-scope="scope"> - {{ filterDict(scope.row.lawNumber, "lawNumber") }} - </template> --> - </el-table-column> - <el-table-column label="执法证有效期" align="center" prop="lawTime"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.lawTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column - label="部门" - align="center" - prop="division" - :show-overflow-tooltip="true" - > - <template slot-scope="scope"> - {{ filterDict(scope.row.division, "division") }} - </template> - </el-table-column> - <el-table-column - label="检查员层级" - align="center" - prop="inspectorLevel" - > - <template slot-scope="scope"> - {{ filterDict(scope.row.inspectorLevel, "inspectorLevel") }} - </template> - </el-table-column> - <el-table-column - label="检查员类别" - align="center" - prop="inspectorType" - :show-overflow-tooltip="true" - > - <template slot-scope="scope"> - {{ scope.row.inspectorType }} - </template> - </el-table-column> - <el-table-column - label="检查员级别" - align="center" - prop="inspectorGrade" - > - <template slot-scope="scope"> - {{ filterDict(scope.row.inspectorGrade, "inspectorGrade") }} - </template> - </el-table-column> - <el-table-column label="状态" align="center" prop="status"> - <template slot-scope="scope"> - {{ - scope.row.status == 1 - ? "停用中" - : scope.row.status == 2 - ? "启用中" - : "未知" - }} - </template> - </el-table-column> - <el-table-column - label="操作" - align="center" - class-name="small-padding fixed-width" - > - <template slot-scope="scope"> - <el-button - v-hasPermi="['inspector:global:info']" - size="mini" - plain - type="primary" - @click="getInfo(scope.row)" - >详情</el-button - > - <el-button - v-hasPermi="['inspector:global:state']" - size="mini" - plain - :type="scope.row.status == 1 ? 'success' : 'danger'" - @click="updata(scope.row)" - >{{ - scope.row.status == 1 - ? "启用" - : scope.row.status == 2 - ? "停用" - : "未知" - }}</el-button - > - </template> - </el-table-column> - </el-table> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.current" - :limit.sync="queryParams.size" - @pagination="getList" - /> - </div> - </div> - </div> - - <div class="table-info" v-if="info"> - <userMsgPage - :showBack="true" - @getSonData="getSonData" - :inspectorId="inspectorId" - ></userMsgPage> - </div> - - <el-dialog - :visible.sync="showSet" - width="35%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title">评分条件设置</div> - - <div class="my-dialog-content"> - <div class="content-head"> - <i class="el-icon-warning-outline"></i> - 提示:选择相应条件后,系统会根据计算方式自动计算出评分 - </div> - <!-- <div class="contentSelect"> --> - <div v-for="(item, index) in formData.list" :key="index"> - <div class="contentAdd"> - <span>因子1:</span> - - <div class="itemContent"> - <el-select - v-model="formData.value" - size="small" - placeholder="请选择" - > - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </div> - - <div class="itemContent"> - <el-input - placeholder="请输入内容" - v-model="formData.value1" - size="small" - > - <template slot="prepend">权重</template> - </el-input> - </div> - <div - :class="[index > 0 ? 'deleteIcon' : 'contentIcon']" - @click="addCondition(index)" - > - <i - :class="[ - index > 0 - ? 'el-icon-remove-outline' - : 'el-icon-circle-plus-outline', - ]" - ></i> - </div> - </div> - </div> - </div> - <div class="manner"> - <span>计算方式:</span> - <div class="inputM"> - <el-select v-model="formData.value" size="small" placeholder="请选择"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </div> - </div> - - <div slot="footer" class="my-dialog-footer"> - <el-button icon="el-icon-refresh-left">重置</el-button> - <el-button type="primary" icon="el-icon-s-promotion">提交</el-button> - </div> - </el-dialog> - - <!-- 下载模版 --> - <el-dialog - :visible.sync="uploadTel" - width="400px" - append-to-body - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title">{{ ModelTitle }}</div> - <div class="upload-list"> - <div - v-for="item in telList" - :key="item.value" - @click="uploadTemplate(item.value, item.lable)" - > - <el-link type="primary"> - {{ item.lable }}<span v-if="ModelTitle != '导出数据'">模版</span> - <span v-else>数据</span> - </el-link> - </div> - </div> - </el-dialog> - - <!-- 用户导入对话框 --> - <el-dialog - :visible.sync="upload.open" - width="400px" - append-to-body - custom-class="my-dialog-container" - destroy-on-close - > - <div slot="title" class="my-dialog-title">{{ upload.title }}</div> - <div class="upload-row"> - <div class="row-lable">数据模块:</div> - <div class="row-value"> - <el-select v-model="uploadData.value" placeholder="请选择"> - <el-option - v-for="item in telList" - :key="item.value" - :label="item.lable" - :value="item.value" - ></el-option> - </el-select> - </div> - </div> - - <el-upload - ref="upload" - :limit="1" - accept=".xlsx,.xls," - :headers="upload.headers" - :action="upload.url" - :on-progress="handleFileUploadProgress" - :on-success="handleFileSuccess" - :on-error="handleFileError" - :auto-upload="false" - :data="uploadData" - :file-list="fileList" - :on-change="fileChange" - drag - > - <i class="el-icon-upload"></i> - <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> - <div class="el-upload__tip text-center" slot="tip"> - <!-- <div class="el-upload__tip" slot="tip"> - <el-checkbox v-model="upload.updateSupport" /> - 是否更新已经存在的用户数据 - </div> --> - <span style="color: red" - >仅允许导入xls、xlsx格式文件,请按照数据格式要求导入数据。</span - > - </div> - </el-upload> - <div slot="footer" class="dialog-footer"> - <el-button size="small" type="primary" @click="submitFileForm" - >确 定</el-button - > - <el-button size="small" @click="upload.open = false">取 消</el-button> - </div> - </el-dialog> - </div> -</template> - -<script> -import { Loading } from "element-ui"; -var downloadLoadingInstance; -import userMsgPage from "../userMsgPage/index2.vue"; -// import { -// getList, -// uploadFile, -// dictList, -// updataRow, -// exportFile, -// exportExcel, -// } from "@/api/jcy"; -import gridsTitle from "../components/gridsTitle"; - -export default { - components: { - gridsTitle, - userMsgPage, - }, - data() { - return { - fileList: [], - ModelTitle: "", - currentTab: 0, //导出、下载 - ids: [], - multiple: true, - //字典 - dict: {}, - inspectorId: null, - //显示评分条件设置 - showSet: false, - //输入框 - formData: { - value1: "", - list: [ - { - a1: "1", - a2: "2", - }, - ], - }, - options: [], - //详情 - info: false, - // 遮罩层 - loading: true, - // 总条数 - total: 0, - //接口条件 - queryParams: { - name: "", - sex: "", - lawNumber: "", - division: "", - current: 1, - size: 10, - status: "", - }, - //表格数据 - tableList: [], - // 下载模版 - uploadTel: false, - telList: [ - { lable: "基础信息", value: 0 }, - { lable: "培训情况", value: 1 }, - { lable: "聘任信息", value: 2 }, - { lable: "奖惩信息", value: 3 }, - { lable: "年度考核情况", value: 4 }, - ], - // 导入模版参数 - uploadData: { - value: 0, - }, - upload: { - // 是否显示弹出层(用户导入) - open: false, - // 弹出层标题(用户导入) - title: "", - // 是否禁用上传 - isUploading: false, - // 是否更新已经存在的用户数据 - updateSupport: 0, - // 设置上传的请求头部 - headers: { - Authentication: localStorage.getItem("MSSM-LIAONING__TOKEN"), - }, - // 上传的地址 - url: process.env.VUE_APP_BASE_API2 + "/common/importExcel", - }, - }; - }, - created() { - this.getDict( - "duty,source,inspectorLevel,inspectorType,inspectorGrade,division" - ); - }, - - methods: { - /**表格全选 */ - handleSelectionChange(selection) { - this.ids = selection.map((item) => item.id); - this.multiple = !selection.length; - }, - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : value; - }, - /**获取字典列表 */ - getDict(typeList) { - let query = { - list: typeList, - }; - dictList(query).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - } - this.getList(); - }); - }, - /**停用 */ - updata(row) { - let title = ""; - let params = {}; - if (row.status == 1) { - params.id = row.id; - params.status = 2; - title = "您确定要启用吗?"; - } else { - params.id = row.id; - params.status = 1; - title = "您确定要停用吗?"; - } - this.$confirm(`${title}`, "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning", - }) - .then(async () => { - updataRow(params).then((res) => { - this.$modal.msgSuccess("修改成功"); - this.getList(); - }); - }) - .catch(() => { - this.$modal.msgWarning("已取消操作!"); - }); - }, - /**导出或者下载 */ - openModel(index) { - this.currentTab = index; - if (index == 0) { - this.ModelTitle = "导出数据"; - } else { - this.ModelTitle = "模版下载"; - } - this.uploadTel = true; - }, - /**下载模板、导出 */ - uploadTemplate(value, lable) { - if (this.currentTab == 1) { - let suffix = "xlsx"; - let baseUrl = - location.origin + - process.env.VUE_APP_PREFIX + - `/static/file/${lable}.${suffix}`; - const link = document.createElement("a"); - link.href = baseUrl; - link.style.display = "none"; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - // let params = { - // value, - // }; - // uploadFile(params).then((res) => { - // this.uploadFile( - // res.data.data.result.url, - // res.data.data.result.originalFilename - // ); - // }); - } else { - let params = { - value: value, - ids: this.ids.toString(), - }; - exportExcel(params).then((res) => { - if (res.data.code == 200) { - this.uploadFile( - res.data.data.result.url, - res.data.data.result.originalFilename - ); - } - }); - } - }, - // /**导出 */ - // handleExport() { - // let ids = this.ids.toString(); - // exportFile(ids).then((res) => { - // if (res.data.status == 200) { - // this.uploadFile( - // res.data.result.url, - // res.data.result.originalFilename - // ); - // } - // }); - // }, - fileChange(file, fileList) { - this.fileList = fileList; - }, - /** 导入按钮操作 */ - handleImport() { - this.upload.title = "检查员信息导入"; - this.upload.open = true; - }, - // 文件上传中处理 - handleFileUploadProgress(event, file, fileList) { - console.log("wenjian", fileList); - this.upload.isUploading = true; - }, - //上传失败 - handleFileError(err, file, fileList) { - this.fileList = []; - downloadLoadingInstance.close(); - let myError = JSON.parse(err.toString().replace("Error: ", "")); //转字符串 - this.$modal.msgError(myError.message); - }, - // 文件上传成功处理 - handleFileSuccess(response, file, fileList) { - downloadLoadingInstance.close(); - this.upload.open = false; - this.upload.isUploading = false; - this.$refs.upload.clearFiles(); - this.fileList = []; - this.$alert( - "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + - response.msg + - "</div>", - "导入结果", - { dangerouslyUseHTMLString: true } - ); - if (this.uploadData.value == 0) { - this.getList(); - } - }, - // 提交上传文件 - submitFileForm() { - console.log(this.fileList, "文件"); - if (this.fileList.length == 0) { - this.$modal.msgError("请先上传文件!"); - return; - } - downloadLoadingInstance = Loading.service({ - text: "正在导入数据,请稍候", - spinner: "el-icon-loading", - background: "rgba(0, 0, 0, 0.7)", - }); - this.$refs.upload.submit(); - }, - - //评分条件设置 - conditionSet() { - this.showSet = true; - }, - addCondition(e) { - if (e == 0) { - this.formData.list.push({ - a1: "1", - a2: "2", - }); - } else { - this.formData.list.splice(0, 1); - } - }, - /**打开详情页 */ - getInfo(rows) { - this.inspectorId = rows.id; - this.info = !this.info; - }, - /**详情返回 */ - getSonData(e) { - this.info = e.isShow; - this.resetQuery(); - }, - /**获取表格数据 */ - getList() { - this.loading = true; - getList(this.queryParams).then((res) => { - this.tableList = res.result.records; - this.total = res.result.total; - this.loading = false; - }); - }, - /** 搜索按钮操作 */ - handleQuery() { - this.queryParams.current = 1; - this.getList(); - }, - /** 重置按钮操作 */ - resetQuery() { - this.resetForm("queryForm"); - this.handleQuery(); - }, - }, -}; -</script> - -<style lang="scss" scoped> -.child-container { - height: 100%; - & > div { - height: 100%; - } - // 表格部分 - .table-list { - display: flex; - flex-direction: column; - align-items: center; - .search-box { - .search-from { - padding: 15px; - } - .search-btn { - position: relative; - left: 50%; - bottom: 0; - transform: translateZ(-50%); - } - } - .table-box { - flex: 1; - margin-top: 10px; - .table-data { - height: calc(100% - 40px); - box-sizing: border-box; - padding: 15px; - position: relative; - .paginBox { - position: absolute; - bottom: 15px; - width: 100%; - width: 98%; - margin: 0; - } - } - } - & > div { - width: 100%; - border-radius: 6px; - background-color: #fff; - } - } - .table-top-btn { - margin-bottom: 15px; - } - // 结束 -} -::v-deep .search-from { - .el-form-item__label { - font-size: 14px; - font-weight: 500; - color: #4d5158; - } - .el-select, - .el-input { - width: 300px; - } -} -//弹出框 -.my-dialog-title { - font-size: 16px; - font-weight: 550; - color: #333333; - background: #e9eff7; - padding: 10px 0 10px 16px; -} -.my-dialog-content { - padding-left: 40px; - - .content-head { - font-size: 14px; - font-weight: 400; - color: #8e8e8e; - line-height: 24px; - } - .contentAdd { - display: flex; - align-items: center; - margin-top: 10px; - span { - font-size: 14px; - font-weight: 500; - color: #4d5158; - margin-right: 4px; - } - .itemContent { - width: 40%; - margin: 0 4px; - } - .contentIcon { - font-size: 22px; - color: #22c98d; - margin-left: 4px; - cursor: pointer; - } - .deleteIcon { - font-size: 22px; - color: #f76359; - margin-left: 4px; - cursor: pointer; - } - } -} -.manner { - padding-left: 19px; - display: flex; - align-items: center; - margin-top: 10px; - span { - font-size: 14px; - font-weight: 500; - color: #4d5158; - margin-right: 4px; - } - .inputM { - width: 78.5%; - margin-left: 4px; - } -} -::v-deep .el-select { - width: 100%; -} -.my-dialog-footer ::v-deep .el-button { - padding: 8px 10px !important; -} -.my-dialog-footer ::v-deep .el-button--primary { - background: #ff9822 !important; - border: 1px solid #ff9822; -} -.upload-row { - display: flex; - align-items: center; - margin-bottom: 15px; - .row-lable { - font-size: 14px; - } -} -.upload-list { - & > div { - margin-bottom: 10px; - } - & > :last-child { - margin-bottom: 0; - } -} -</style> diff --git a/src/views/changePassword/index.vue b/src/views/changePassword/index.vue deleted file mode 100644 index bb9af27..0000000 --- a/src/views/changePassword/index.vue +++ /dev/null @@ -1,158 +0,0 @@ -<template> - <div class="child-container"> - <div class="pass-container"> - <el-form - ref="form" - :model="form" - :rules="rules" - label-position="right" - label-width="145px" - :show-message="false" - :status-icon="true" - class="pass-from" - > - <el-form-item label="机构:"> - <el-input v-model="form.name1" readonly></el-input> - </el-form-item> - <el-form-item label="姓名:"> - <el-input v-model="form.realName" readonly></el-input> - </el-form-item> - <el-form-item label="部门:"> - <el-input v-model="form.orgName" readonly></el-input> - </el-form-item> - <el-form-item label="输入旧密码:" prop="oldPassword"> - <el-input - v-model="form.oldPassword" - placeholder="请输入旧密码" - ></el-input> - </el-form-item> - <el-form-item label="输入新密码:" prop="newPassword"> - <el-input - v-model="form.newPassword" - placeholder="请输入新密码" - ></el-input> - </el-form-item> - <el-form-item label="重新输入新密码:" prop="checkPass"> - <el-input - v-model="form.checkPass" - placeholder="请输入确认密码" - ></el-input> - </el-form-item> - <el-form-item> - <el-button - size="small" - @click="resetForm('form')" - icon="el-icon-my-reset" - >重置</el-button - > - <el-button - size="small" - type="primary" - icon="el-icon-my-save" - @click="onSubmit('form')" - >提交</el-button - > - </el-form-item> - </el-form> - </div> - </div> -</template> - -<script> -import { changePass } from "@/api/external"; -export default { - data() { - const equalToPassword = (rule, value, callback) => { - if (this.form.newPassword !== value) { - callback(new Error("两次输入的密码不一致")); - } else { - callback(); - } - }; - return { - form: { - name1: "辽宁省药品监督管理局", - realName: "", - orgName: "", - oldPassword: "", - newPassword: "", - checkPass: "", - username: "", - }, - rules: { - oldPassword: [ - { required: true, message: "请输入旧密码", trigger: "blur" }, - ], - newPassword: [ - { required: true, message: "请输入新密码", trigger: "blur" }, - // { - // pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/, - // message: "密码必须包含大小写字母和数字,长度为 8 到 16 位", - // trigger: "blur", - // }, - ], - checkPass: [ - { required: true, message: "请输入确认密码", trigger: "blur" }, - { required: true, validator: equalToPassword, trigger: "blur" }, - ], - }, - }; - }, - created() { - let user = this.$store.state.myselfPermission.userData; - this.form.realName = user.realName; - this.form.orgName = user.orgName; - this.form.username = user.username; - }, - methods: { - onSubmit(formName) { - this.$refs[formName].validate((valid) => { - if (valid) { - let data = { - oldPassword: this.form.oldPassword, - newPassword: this.form.newPassword, - checkPass: this.form.checkPass, - username: this.form.username, - }; - changePass(data).then((res) => { - this.$modal.msgSuccess("修改成功"); - this.resetForm(); - }); - } else { - return false; - } - }); - }, - resetForm() { - this.form.oldPassword = ""; - this.form.newPassword = ""; - this.form.checkPass = ""; - }, - }, -}; -</script> - -<style lang="scss" scoped> -.child-container { - height: 100%; - background: #f2f2f2; - .pass-container { - width: 100%; - height: 100%; - background: #fff; - padding-top: 46px; - border-radius: 6px; - } - .pass-from { - margin: auto; - width: 600px; - } -} -::v-deep .pass-from { - .el-form-item:nth-child(-n + 3) { - .el-input__inner { - border: none; - } - } -} -</style> diff --git a/src/views/components/home/leftEcharts/people.vue b/src/views/components/home/leftEcharts/people.vue deleted file mode 100644 index e64f037..0000000 --- a/src/views/components/home/leftEcharts/people.vue +++ /dev/null @@ -1,196 +0,0 @@ -<template> - <div class="people-container"> - <div class="tab"> - <div - class="tab-item" - v-for="(item, index) in tabList" - :key="index" - :class="currentIndex == index ? 'activeTab' : ''" - @click="clickTab(index)" - > - {{ item.name }} - </div> - </div> - <div id="people"></div> - </div> -</template> - -<script> -import * as echarts from "echarts"; -export default { - data() { - return { - currentIndex: 0, - tabList: [{ name: "工龄分布" }, { name: "性别分布" }], - queryData: [], - list: [], - myChart: null, - }; - }, - mounted() { - this.clickTab(0); - // this.initialize() - }, - methods: { - clickTab(index) { - this.currentIndex = index; - // if (this.myChart != null && this.myChart != "" && this.myChart != undefined) { - // this.myChart.dispose(); - // } - if (index == 0) { - this.ageList(); - } else { - this.sexList(); - } - }, - //工龄分布 - async ageList() { - let msg = await this.$api.screenLeft.detectCompose(); - this.queryData = msg.result; - this.list = []; - this.queryData.forEach((value) => { - this.list.push({ - value: Number(value.pt) * 10, - name: value.durationGroup + "年", - }); - }); - let isExist = this.list.some((item) => { - return item.name.includes("10"); - }); - if (!isExist) { - this.list.push({ value: 0, name: "10年以上" }); - } - this.initialize(); - }, - //男女分布 - async sexList() { - let msg = await this.$api.screenLeft.sex(); - this.queryData = msg.result; - this.list = []; - this.list.push( - { - value: Number(msg.result.level1) * 10, - name: "男", - }, - { - value: Number(msg.result.level2) * 10, - name: "女", - } - ); - this.initialize(); - }, - initialize() { - let _this = this; - this.myChart = echarts.init(document.getElementById("people")); - var data = this.list; - var colorList = ["#0E7CF4", "#91CC75", "#FAC858", "#EE6666"]; - let option = { - legend: { - orient: "vertical", - x: "50%", - y: "30%", - itemWidth: this.getFontSize(75), - itemHeight: this.getFontSize(100), - itemGap: 15, - borderRadius: 10, - align: "left", - textStyle: { - color: "#333333", - fontSize: _this.getFontSize(140), - }, - formatter: (params) => { - const dataAll = data.map((item) => Number(item.value)); - const total = dataAll.reduce( - (x, y) => parseInt(x, 10) + parseInt(y, 10) - ); - const value = Number( - data.filter((item) => item.name === params)[0].value - ); - if (total === 0) { - return `${params}:0.00%`; - } - // const name = params - return ` ${params}:${((value * 100) / total).toFixed(2)}%`; - }, - }, - series: [ - { - type: "pie", - radius: ["50%", "68%"], - center: ["25%", "60%"], - label: { - show: false, - normal: { - // formatter: '{c}', - position: "inside", - formatter: (params) => { - // return params.name + '\n' + params.value+'%' - return params.value + "%"; - }, - fontSize: 12, - }, - }, - data: data, - itemStyle: { - normal: { - color: function (params) { - return colorList[params.dataIndex]; - }, - label: { - show: false, - color: "#fff", - }, - labelLine: { - show: false, - }, - }, - }, - }, - ], - }; - this.myChart.setOption(option, true); - }, - }, -}; -</script> - -<style lang="scss" scoped> -.people-container { - height: 100%; - width: 100%; - position: relative; - #people { - height: 100%; - width: 100%; - } - .tab { - position: absolute; - left: 50%; - top: 13px; - transform: translateX(-50%); - display: flex; - z-index: 8; - & > div { - cursor: pointer; - padding: 6px 10px; - font-size: 14px; - font-weight: normal; - color: #4d5158; - border: 1px solid #dbe0e8; - } - & > div:nth-child(1) { - border-radius: 4px 0px 0px 4px; - border-right: 0px; - } - & > div:nth-child(2) { - border-radius: 0px 4px 4px 0px; - border-left: 0px; - } - .activeTab { - background: #1e80eb; - border-color: #1e80eb; - color: #fff; - } - } -} -</style> diff --git a/src/views/components/home/leftEcharts/xueli.vue b/src/views/components/home/leftEcharts/xueli.vue deleted file mode 100644 index 08caa3a..0000000 --- a/src/views/components/home/leftEcharts/xueli.vue +++ /dev/null @@ -1,165 +0,0 @@ -<template> - <div id="xuexi"></div> -</template> - -<script> -import { getPieXl } from "@/api/largeSize"; -import * as echarts from "echarts"; -export default { - data() { - return { - queryData: null, - //内部人员 - arr1: [], - //外部人员 - arr2: [], - list: [ - { - id: 1, - }, - { - id: 2, - }, - - { - id: 3, - }, - { - id: 4, - }, - { - id: 5, - }, - ], - interior: [], - exterior: [], - }; - }, - created() {}, - mounted() { - this.getList(); - }, - methods: { - getList() { - getPieXl().then((res) => { - res.result.forEach((item) => { - if (item.source == 1) { - //内部人员加进数组 - this.arr1.push(item); - } else { - //外部人员加进数组 - this.arr2.push(item); - } - }); - this.list.forEach((value) => { - this.arr1.forEach((v) => { - if (value.id == v.education) { - this.interior.push(v.count); - } else { - this.interior.push(0); - } - }); - this.arr2.forEach((v) => { - if (value.id == v.education) { - this.exterior.push(v.count); - } else { - this.exterior.push(0); - } - }); - }); - this.initEchatrs(); - }); - }, - initEchatrs() { - let _this = this; - var myChart = echarts.init(document.getElementById("xuexi")); - let option = { - tooltip: {}, - grid: { - top: "10%", - bottom: "13%", - left: "3%", - right: "0", - containLabel: true, - }, - legend: { - data: ["内部", "外部"], - icon: "circle", - itemWidth: 10, - itemHeight: 10, - itemGap: 36, - bottom: "2%", - textStyle: { - color: "#9DA2AB", - fontSize: _this.getFontSize(140), - }, - }, - xAxis: { - data: ["本科", "硕士", "博士", "博士后", "其他"], - grid: { - borderColor: "rgba(210, 210, 210, 0.2)", - }, - axisTick: { - show: false, - }, - axisLine: { - show: true, - lineStyle: { - color: "#D2D2D2", - }, - }, - axisLabel: { - color: "#616367", - fontSize: _this.getFontSize(140), - }, - }, - yAxis: { - minInterval: 20, - axisLine: { - show: true, - lineStyle: { - color: "#D2D2D2", - }, - }, - axisLabel: { - color: "#616367", - fontSize: _this.getFontSize(140), - }, - }, - series: [ - { - name: "内部", - type: "bar", - barWidth: "15%", - data: this.interior, - itemStyle: { - color: "#0E7CF4", - borderRadius: 3, // 柱子圆角半径 - }, - barGap: "30%", - }, - { - name: "外部", - type: "bar", - barWidth: "15%", - data: this.exterior, - itemStyle: { - color: "#FAC858", - borderRadius: 3, // 柱子圆角半径 - }, - barGap: "30%", - }, - ], - }; - myChart.setOption(option, true); - }, - }, -}; -</script> - -<style lang="scss" scoped> -#xuexi { - height: 100%; - width: 100%; -} -</style> diff --git a/src/views/components/home/leftEcharts/zfdb.vue b/src/views/components/home/leftEcharts/zfdb.vue deleted file mode 100644 index add4375..0000000 --- a/src/views/components/home/leftEcharts/zfdb.vue +++ /dev/null @@ -1,162 +0,0 @@ -<template> - <div class="zf-container"> - <div class="tabgrap"> - <div class="grap-item"> - <div class="item-title">执法监督工作总量</div> - <div class="item-data"> - <span class="data-value">34223</span> - <span class="data-lable">次</span> - </div> - </div> - <div class="grap-item" style="margin-left: 20px"> - <div class="item-title">日常监督检查开展</div> - <div class="item-data"> - <span class="data-value">35323</span> - <span class="data-lable">次</span> - </div> - </div> - </div> - <div id="zhi-fa"></div> - </div> -</template> - -<script> -import * as echarts from "echarts"; -export default { - data() { - return {}; - }, - mounted() { - this.initEcharts(); - }, - methods: { - initEcharts() { - let _this = this; - var myChart = echarts.init(document.getElementById("zhi-fa")); - const chartData = { min: 0, max: 100, value: 50 }; - let option = { - series: [ - { - name: "风险指数", - type: "gauge", - center: ["50%", "95%"], - radius: "80%", - min: chartData.min, - max: chartData.max, - startAngle: 180, - endAngle: 0, - splitNumber: 8, - axisLine: { - lineStyle: { - color: [ - [0.25, "#FF6060"], - [0.5, "#F88129"], - [0.75, "#FCD678"], - [1, "#33BAAB"], - ], - width: 15, - }, - }, - splitLine: { - // 分隔线 - show: false, - }, - axisTick: { - // 刻度线样式(及短线样式) - show: false, - }, - axisLabel: false, - detail: { - fontSize: _this.getFontSize(100), - formatter: "{value}%", - color: "auto", - offsetCenter: ["0", "-32%"], - }, - pointer: { - icon: "triangle", - show: true, - offsetCenter: [0, "-55%"], - itemStyle: { - color: "auto", - }, - length: "10%", - width: "7%", - }, - title: { - // fontSize: 12, - // offsetCenter: [0, -20], - }, - data: [ - { - title: { - show: true, - color: "#333333", - offsetCenter: [0, "-6%"], - fontSize: _this.getFontSize(140), - }, - value: chartData.value, - name: "检查完成率", - }, - ], - }, - ], - }; - - myChart.setOption(option, true); - }, - }, -}; -</script> - -<style lang="scss" scoped> -.zf-container { - height: 100%; - width: 100%; - position: relative; - #zhi-fa { - height: 100%; - width: 100%; - } - .tabgrap { - position: absolute; - z-index: 100; - left: 50%; - top: 20px; - transform: translateX(-50%); - width: 100%; - display: flex; - align-items: center; - justify-content: center; - .grap-item { - width: 195px; - height: 89px; - background: url("../../../../assets/images/grapItem.png"); - background-size: 100% 100%; - padding: 8px 20px; - .item-title { - font-size: 16px; - font-weight: 400; - color: #3d3f40; - } - .item-data { - margin-top: 6px; - span { - display: inline-block; - } - .data-value { - font-size: 36px; - font-family: "DIN-Medium"; - font-weight: 500; - color: #0e7cf4; - } - .data-lable { - font-size: 14px; - font-weight: 400; - color: #3d3f40; - margin-left: 6px; - } - } - } - } -} -</style> diff --git a/src/views/components/home/map/index.vue b/src/views/components/home/map/index.vue deleted file mode 100644 index 17475c4..0000000 --- a/src/views/components/home/map/index.vue +++ /dev/null @@ -1,301 +0,0 @@ -<template> - <div class="map-container"> - <div class="top-data-box"> - <div class="data-collect"> - <div class="collect-num"> - <span>39</span> - <span>家</span> - </div> - <div class="collect-text">全省检验机构</div> - </div> - <div class="data-collect" style="margin-left: 150px"> - <div class="collect-num"> - <span>{{ allInspector }}</span> - <span>人</span> - </div> - <div class="collect-text">检查人员</div> - </div> - </div> - <div id="leafletMap"></div> - <div class="legend"> - <div class="legend-item" v-for="(item, index) in legendList" :key="index"> - <div class="item-color" :style="{ background: item.color }"></div> - <div class="item-text">{{ item.text }}</div> - </div> - </div> - </div> -</template> -<script> -import { dictList } from "@/api/jcy"; -import { getinspectorNum } from "@/api/largeSize"; -import cityJson from "@/utils/mapJson/liaoning-city.json"; -import cityCenter from "@/utils/mapJson/cityCenter.json"; -import province from "@/utils/mapJson/liaoning-province.json"; -export default { - data() { - return { - cityData: { - 沈阳市: 0, - 大连市: 0, - 鞍山市: 0, - 抚顺市: 0, - 本溪市: 0, - 丹东市: 0, - 锦州市: 0, - 营口市: 0, - 阜新市: 0, - 辽阳市: 0, - 盘锦市: 0, - 铁岭市: 0, - 朝阳市: 0, - 葫芦岛市: 0, - 沈抚示范区: 0, - }, - allInspector: 0, - //字典 - dict: {}, - legendList: [ - { color: "#28599C", text: ">=600" }, - { color: "#3477B2", text: "400-599" }, - { color: "#4499CE", text: "200-399" }, - { color: "#59BBEC", text: "100-199" }, - { color: "#9BD3F5", text: "1-99" }, - { color: "#C5F0FF", text: "0" }, - ], - globalMap: null, - latitude: "40.904726971438656", - longitude: "122.80196410332945", - zoom: 8, - maxZoom: 18, - minZoom: 6, - layerObj: { - provinceLayer: null, - cityLayer: null, - textLayer1: null, - }, - }; - }, - mounted() { - this.$nextTick(() => { - this.initMap(); - this.getDict("workPlace"); - }); - }, - methods: { - /**获取字典列表 */ - getDict(typeList) { - let query = { - list: typeList, - }; - dictList(query).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - } - this.getCityData().then((data) => { - this.initCityLayer(data); - this.initPoitCenter(data); - }); - }); - }, - getCityData() { - return new Promise((resolve, reject) => { - getinspectorNum() - .then((res) => { - res.result.forEach((item) => { - let city = this.filterDict(item.workPlace, "workPlace"); - for (let key in this.cityData) { - if (key == city) { - this.cityData[key] = item.count; - this.allInspector = this.allInspector + item.count; - } - } - }); - resolve(this.cityData); - }) - .catch((error) => { - reject(error); - }); - }); - }, - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - }, - initMap() { - this.globalMap = L.map("leafletMap", { - center: [this.latitude, this.longitude], // 地图中心[纬度,经度] - zoom: this.zoom, // 地图层级 - maxZoom: this.maxZoom, - minZoom: this.minZoom, - zoomControl: false, // 放大缩小按钮 - attributionControl: false, // 右下角leaflet图标 - dragging: false, - doubleClickZoom: false, - scrollWheelZoom: false, - }); - // 省 - this.globalMap.createPane("provinceLayer"); - this.globalMap.getPane("provinceLayer").style.zIndex = 504; - this.globalMap.getPane("provinceLayer").style.pointerEvents = "none"; - this.layerObj.provinceLayer = L.layerGroup().addTo(this.globalMap); - //市 - this.globalMap.createPane("cityLayer"); - this.globalMap.getPane("cityLayer").style.zIndex = 505; - this.globalMap.getPane("cityLayer").style.pointerEvents = "none"; - this.layerObj.cityLayer = L.layerGroup().addTo(this.globalMap); - - this.globalMap.createPane("textLayer1"); - this.globalMap.getPane("textLayer1").style.zIndex = 506; - this.globalMap.getPane("textLayer1").style.pointerEvents = "none"; - this.layerObj.textLayer1 = L.layerGroup().addTo(this.globalMap); - - this.provinceLayer(); - }, - - //省级图层 - provinceLayer() { - let geojson = L.geoJSON(province, { - style: function () { - return { - weight: 2, - color: "#36527D", - fillColor: "", - fillOpacity: 0.7, - }; - }, - }).addTo(this.layerObj.provinceLayer); - this.globalMap.fitBounds(geojson.getBounds()); - }, - // 市级图层 - initCityLayer(data) { - let _this = this; - L.geoJSON(cityJson, { - style: function (geoJsonFeature) { - let num = data[geoJsonFeature.properties.name]; - let style = { - weight: 1, - color: "#fff", - fillColor: "", - fillOpacity: 0.7, - }; - if (num == 0) { - style.fillColor = "#C5F0FF"; - } else if (num >= 1 && num <= 99) { - style.fillColor = "#9BD3F5"; - } else if (num >= 100 && num <= 199) { - style.fillColor = "#59BBEC"; - } else if (num >= 200 && num <= 399) { - style.fillColor = "#4499CE"; - } else if (num >= 400 && num <= 599) { - style.fillColor = "#3477B2"; - } else { - style.fillColor = "#28599C"; - } - return style; - }, - }).addTo(this.layerObj.cityLayer); - - // 市中心点 - }, - - initPoitCenter(data) { - L.geoJSON(cityCenter, { - pointToLayer: function (feature, latlng) { - return L.marker(latlng, { - icon: L.divIcon({ - className: "city-marker", - html: `<div class="marker-data"> - <div class="data-box"> - ${data[feature.properties.fName]} - </div> - <div class="circle"></div> - <div class="city-name">${feature.properties.fName}</div> - </div>`, - }), - }); - }, - }).addTo(this.layerObj.textLayer1); - }, - }, -}; -</script> - -<style lang="scss" scoped> -.map-container { - height: 100%; - width: 100%; - position: relative; - - #leafletMap { - height: 100%; - width: 100%; - } - .top-data-box { - position: absolute; - top: 30px; - left: 0; - width: 100%; - z-index: 500; - display: flex; - align-items: center; - justify-content: center; - .data-collect { - display: flex; - flex-direction: column; - align-items: center; - } - .collect-num { - font-weight: 500; - color: #3d3f40; - font-family: "DIN-Medium"; - & > span:nth-child(1) { - font-size: 36px; - } - & > span:nth-child(2) { - display: inline-block; - margin-left: 6px; - font-size: 12px; - } - } - .collect-text { - margin-top: 10px; - font-size: 16px; - font-weight: 400; - color: #7a808a; - } - } - .legend { - position: absolute; - left: 20px; - bottom: 10px; - z-index: 100; - & > div { - display: flex; - align-items: center; - margin-bottom: 15px; - } - .item-color { - width: 26px; - text-align: center; - line-height: 26px; - height: 18px; - border-radius: 6px; - } - .item-text { - margin-left: 10px; - font-size: 14px; - font-weight: 400; - color: #3380be; - } - } -} -::v-deep .leaflet-container { - background: #fff; -} -</style> diff --git a/src/views/components/home/rightEchats/LevelPie.vue b/src/views/components/home/rightEchats/LevelPie.vue deleted file mode 100644 index 6d77521..0000000 --- a/src/views/components/home/rightEchats/LevelPie.vue +++ /dev/null @@ -1,123 +0,0 @@ -<template> - <div id="LevelPie"></div> -</template> - -<script> -import { getPieLevel } from "@/api/largeSize"; -import * as echarts from "echarts"; -export default { - data() { - return {}; - }, - methods: { - getList() { - getPieLevel().then((res) => { - let list = []; - for (let key in res.result) { - list.push(res.result[key]); - } - this.initPie(list); - }); - }, - initPie(list) { - let _this = this; - var myChart = echarts.init(document.getElementById("LevelPie")); - var level = list; - var data = [ - { - value: level[0], - name: "见习检查员", - }, - { - value: level[1], - name: "初级检查员", - }, - { - value: level[2], - name: "中级检查员", - }, - { - value: level[3], - name: "高级检查员", - }, - { - value: level[4], - name: "专家级检查员", - }, - ]; - var colorList = ["#0E7CF4", "#91CC75", "#FAC858", "#EE6666", "#36BBB0"]; - let option = { - legend: { - orient: "vertical", - x: "50%", - y: "center", - itemWidth: this.getFontSize(75), - itemHeight: this.getFontSize(100), - itemGap: 15, - align: "left", - textStyle: { - color: "#333333", - fontSize: _this.getFontSize(140), - }, - formatter: (params) => { - const dataAll = data.map((item) => Number(item.value)); - const total = dataAll.reduce( - (x, y) => parseInt(x, 10) + parseInt(y, 10) - ); - const value = Number( - data.filter((item) => item.name === params)[0].value - ); - return ` ${params}:${value}%`; - }, - }, - series: [ - { - type: "pie", - radius: ["48%", "65%"], - center: ["25%", "50%"], - minAngle: 10, - label: { - show: false, - normal: { - // formatter: '{c}', - position: "inside", - formatter: (params) => { - // return params.name + '\n' + params.value+'%' - return params.value + "%"; - }, - fontSize: 12, - }, - }, - data: data, - itemStyle: { - normal: { - color: function (params) { - return colorList[params.dataIndex]; - }, - label: { - show: false, - color: "#fff", - }, - labelLine: { - show: false, - }, - }, - }, - }, - ], - }; - myChart.setOption(option, true); - }, - }, - mounted() { - this.getList(); - }, -}; -</script> - -<style lang="scss" scoped> -#LevelPie { - height: 100%; - width: 100%; -} -</style> diff --git a/src/views/components/home/rightEchats/hierarchy.vue b/src/views/components/home/rightEchats/hierarchy.vue deleted file mode 100644 index bafd310..0000000 --- a/src/views/components/home/rightEchats/hierarchy.vue +++ /dev/null @@ -1,112 +0,0 @@ -<template> - <div id="hierarchy"></div> -</template> - -<script> -import { getPieCj } from "@/api/largeSize"; -import * as echarts from "echarts"; -export default { - data() { - return {}; - }, - methods: { - getList() { - getPieCj().then((res) => { - let list = []; - for (let key in res.result) { - list.push(res.result[key]); - } - this.initPie(list); - }); - }, - initPie(list) { - let _this = this; - var myChart = echarts.init(document.getElementById("hierarchy")); - var level = list; - var data = [ - { - value: level[0], - name: "省级", - }, - { - value: level[1], - name: "国家级", - }, - ]; - var colorList = ["#0E7CF4", "#91CC75"]; - let option = { - legend: { - orient: "vertical", - x: "50%", - y: "center", - itemWidth: this.getFontSize(75), - itemHeight: this.getFontSize(100), - itemGap: 20, - borderRadius: 10, - align: "left", - textStyle: { - color: "#333333", - fontSize: _this.getFontSize(140), - }, - formatter: (params) => { - const dataAll = data.map((item) => Number(item.value)); - const total = dataAll.reduce( - (x, y) => parseInt(x, 10) + parseInt(y, 10) - ); - const value = Number( - data.filter((item) => item.name === params)[0].value - ); - return ` ${params}:${value}%`; - }, - }, - series: [ - { - type: "pie", - radius: ["48%", "65%"], - center: ["25%", "50%"], - label: { - show: false, - normal: { - // formatter: '{c}', - position: "inside", - formatter: (params) => { - // return params.name + '\n' + params.value+'%' - return params.value + "%"; - }, - fontSize: 12, - }, - }, - data: data, - minAngle: 10, - itemStyle: { - normal: { - color: function (params) { - return colorList[params.dataIndex]; - }, - label: { - show: false, - color: "#fff", - }, - labelLine: { - show: false, - }, - }, - }, - }, - ], - }; - myChart.setOption(option, true); - }, - }, - mounted() { - this.getList(); - }, -}; -</script> - -<style lang="scss" scoped> -#hierarchy { - height: 100%; - width: 100%; -} -</style> diff --git a/src/views/components/home/rightEchats/typePie.vue b/src/views/components/home/rightEchats/typePie.vue deleted file mode 100644 index 96ac034..0000000 --- a/src/views/components/home/rightEchats/typePie.vue +++ /dev/null @@ -1,149 +0,0 @@ -<template> - <div id="typePie"></div> -</template> - -<script> -import { getPieType } from "@/api/largeSize"; -import * as echarts from "echarts"; -export default { - data() { - return {}; - }, - methods: { - getList() { - getPieType().then((res) => { - let list = []; - for (let key in res.result) { - list.push(res.result[key]); - } - this.initPie(list); - }); - }, - initPie(list) { - let _this = this; - var myChart = echarts.init(document.getElementById("typePie")); - var level = list; - var data = [ - { - value: level[0], - name: " 药物非临床检查员", - }, - { - value: level[1], - name: "药物临床检查员", - }, - { - value: level[2], - name: "药品生产检查员", - }, - { - value: level[3], - name: "药品流通检查员", - }, - { - value: level[4], - name: "医疗器械临床检查员", - }, - { - value: level[5], - name: "医疗器械生产检查员", - }, - { - value: level[6], - name: "医疗器械流通检查员", - }, - { - value: level[7], - name: "化妆品研制检查员", - }, - { - value: level[8], - name: "化妆品生产检查员", - }, - ]; - var colorList = [ - "#0E7CF4", - "#91CC75", - "#FAC858", - "#EE6666", - "#36BBB0", - "#91CC75", - "#FAC858", - "#EE6666", - "#36BBB0", - ]; - let option = { - legend: { - orient: "vertical", - x: "50%", - y: "center", - itemWidth: this.getFontSize(100), - itemHeight: this.getFontSize(120), - itemGap: 4, - align: "left", - textStyle: { - color: "#333333", - fontSize: _this.getFontSize(170), - }, - formatter: (params) => { - const dataAll = data.map((item) => Number(item.value)); - const total = dataAll.reduce( - (x, y) => parseInt(x, 10) + parseInt(y, 10) - ); - const value = Number( - data.filter((item) => item.name === params)[0].value - ); - return ` ${params}:${value}%`; - }, - }, - series: [ - { - type: "pie", - radius: ["48%", "65%"], - center: ["25%", "50%"], - label: { - show: false, - normal: { - // formatter: '{c}', - position: "inside", - formatter: (params) => { - // return params.name + '\n' + params.value+'%' - return params.value + "%"; - }, - fontSize: 12, - }, - }, - data: data, - minAngle: 10, - itemStyle: { - normal: { - color: function (params) { - return colorList[params.dataIndex]; - }, - label: { - show: false, - color: "#fff", - }, - labelLine: { - show: false, - }, - }, - }, - }, - ], - }; - myChart.setOption(option, true); - }, - }, - mounted() { - this.getList(); - }, -}; -</script> - -<style lang="scss" scoped> -#typePie { - height: 100%; - width: 100%; -} -</style> diff --git a/src/views/drugFile/index.vue b/src/views/drugFile/index.vue deleted file mode 100644 index bcb0ba2..0000000 --- a/src/views/drugFile/index.vue +++ /dev/null @@ -1,193 +0,0 @@ -<template> - <div class="container"> - <div class="right-content"> - <div class="name-content"> - <div class="drug-name"> - <span class="name">药品通用名称 : </span> - <span class="tag">健母宝经典修护精华液</span> - <div class="info-Tag"> - <div>10年老企</div> - <div>高风险企业</div> - </div> - </div> - <div class="close-icon"> - <i class="el-icon-close" size="50"></i> - </div> - </div> - </div> - <!-- <div class="left"> - <div class="left-grids"> - <gridsTitle title="检查人员组成" /> - <div class="main"> - <people /> - </div> - </div> - <div class="left-grids middle-box"> - <gridsTitle title="检查队伍学历分布" /> - <div class="main"> - <xueli /> - </div> - </div> - <div class="left-grids"> - <gridsTitle title="执法监督工作" /> - <div class="main"> - <zfdb /> - </div> - </div> - </div> - <div class="middle"> - <gridsTitle title="全省数据" /> - <div class="main"> - <leafletMap /> - </div> - </div> - <div class="right"> - <div class="right-grids"> - <gridsTitle title="检查员层级分布" /> - <div class="main"> - <hierarchy /> - </div> - </div> - <div class="right-grids middle-box"> - <gridsTitle title="检查员类别分布" /> - <div class="main"> - <typePie /> - </div> - </div> - <div class="right-grids"> - <gridsTitle title="检查员级别分布" /> - <div class="main"> - <LevelPie /> - </div> - </div> - </div> --> - </div> -</template> - -<script> -import gridsTitle from "../components/gridsTitle"; -import leafletMap from "../components/home/map"; -// 左侧图表 -import people from "../components/home/leftEcharts/people.vue"; -import xueli from "../components/home/leftEcharts/xueli.vue"; -import zfdb from "../components/home/leftEcharts/zfdb.vue"; -// 右侧图表 -import hierarchy from "../components/home/rightEchats/hierarchy.vue"; -import typePie from "../components/home/rightEchats/typePie.vue"; -import LevelPie from "../components/home/rightEchats/LevelPie.vue"; -export default { - components: { - gridsTitle, - leafletMap, - people, - xueli, - zfdb, - hierarchy, - typePie, - LevelPie, - }, - data() { - return {}; - }, - mounted() {}, - methods: {}, -}; -</script> - -<style lang="scss" scoped> -.container { - height: 100%; - box-sizing: border-box; - display: flex; - align-items: center; - background: #f2f2f2; - padding: 10px; - & > div { - flex: 1; - height: 100%; - } - & > div:nth-child(2) { - flex: 2; - margin: 0 10px; - } - .middle { - height: 100%; - background: #ffff; - border-radius: 8px; - overflow: hidden; - } - .left, - .right { - display: flex; - flex-direction: column; - align-items: center; - & > div { - width: 100%; - border-radius: 8px; - flex: 1; - background: #ffffff; - } - } - .middle-box { - margin: 10px; - } - - .main { - height: calc(100% - 40px); - } - .right-content { - background-color: #fff; - .name-content { - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px; - border-bottom: 1px solid #F2F3F5; - .drug-name { - display: flex; - align-items: center; - font-size: 18px; - font-family: Source Han Sans SC-Bold, Source Han Sans SC; - font-weight: bold; - color: #323233; - .name { - - } - .tag { - color: #1349C5; - margin-left: 4px; - } - .info-Tag { - // margin-top: vh(9); - margin-left: 12px; - display: flex; - align-items: center; - font-size: 12px; - font-family: Source Han Sans CN; - font-weight: 400; - div { - padding: 4px 11px; - margin-right: 10px; - background: #DDEBFA; - border-radius: 4px; - color: #1E80EB; - &:last-child { - margin-right: 0; - background: #FDEBEB; - border-radius: 4px; - color: #E42424; - } - } - - } - } - .close-icon { - cursor: pointer; - i { - font-size: 25px; - } - } - } - } -} -</style> diff --git a/src/views/enterpriseMsg/index.vue b/src/views/enterpriseMsg/index.vue deleted file mode 100644 index cc21e28..0000000 --- a/src/views/enterpriseMsg/index.vue +++ /dev/null @@ -1,3 +0,0 @@ -<template> - <div> 22222</div> -</template> \ No newline at end of file diff --git a/src/views/logout/index.vue b/src/views/logout/index.vue deleted file mode 100644 index 444cae0..0000000 --- a/src/views/logout/index.vue +++ /dev/null @@ -1,3 +0,0 @@ -<template> - <div> 4444</div> -</template> \ No newline at end of file diff --git a/src/views/personalData/index.vue b/src/views/personalData/index.vue deleted file mode 100644 index c6f1752..0000000 --- a/src/views/personalData/index.vue +++ /dev/null @@ -1,14 +0,0 @@ -<template> - <div style="height: 100%"> - <userMsgPage></userMsgPage> - </div> -</template> -<script> -import userMsgPage from "../userMsgPage/index.vue"; -export default { - components: { - userMsgPage, - }, -}; -</script> -<style lang="scss" scoped></style> diff --git a/src/views/productsMsg/components/cosmeticsArchives.vue b/src/views/productsMsg/components/cosmeticsArchives.vue index abc1708..9e3e459 100644 --- a/src/views/productsMsg/components/cosmeticsArchives.vue +++ b/src/views/productsMsg/components/cosmeticsArchives.vue @@ -73,18 +73,18 @@ :stripe="false" > <el-table-column type="selection" width="55" align="center" /> - <el-table-column type="index" label="序号" width="55" /> - <el-table-column label="产品名称"> - <template slot-scope="scope"> + <el-table-column type="index" label="序号" width="55" align="center" /> + <el-table-column label="产品名称" align="center"> + <template slot-scope="scope" > {{ scope.row.mc || scope.row.cpmc }} </template> </el-table-column> - <el-table-column :label="A2"> + <el-table-column :label="A2" align="center"> <template slot-scope="scope"> {{ scope.row.bah || scope.row.pzrq }} </template> </el-table-column> - <el-table-column :label="A3"> + <el-table-column :label="A3" align="center"> <template slot-scope="scope"> {{ scope.row.qy || scope.row.sf }} </template> @@ -93,6 +93,7 @@ label="操作" class-name="small-padding fixed-width" width="140" + align="center" > <template slot-scope="scope"> <el-button @@ -102,7 +103,7 @@ @click="toDetail(scope.row)" >详情</el-button > - <el-button size="mini" plain type="warning">编辑</el-button> + <!-- <el-button size="mini" plain type="warning">编辑</el-button> --> </template> </el-table-column> </el-table> diff --git a/src/views/productsMsg/components/drugArchives.vue b/src/views/productsMsg/components/drugArchives.vue deleted file mode 100644 index 0781e12..0000000 --- a/src/views/productsMsg/components/drugArchives.vue +++ /dev/null @@ -1,3 +0,0 @@ -<template> - <div>77777777777</div> -</template> \ No newline at end of file diff --git a/src/views/productsMsg/components/health.vue b/src/views/productsMsg/components/health.vue index dec9f52..99f98d7 100644 --- a/src/views/productsMsg/components/health.vue +++ b/src/views/productsMsg/components/health.vue @@ -57,22 +57,24 @@ </div> <section class="table-box"> <div class="table-item"> - <el-table v-loading="loading" :data="tableData" border height="300"> + <el-table v-loading="loading" :data="tableData" border height="300" align="center"> <el-table-column type="selection" width="55" align="center" /> - <el-table-column type="index" label="序号" width="55" /> - <el-table-column label="产品名称" prop="cpmc"> </el-table-column> - <el-table-column label="产品类型" prop="cplx"></el-table-column> - <el-table-column label="生产企业" prop="zcsqr"></el-table-column> + <el-table-column type="index" label="序号" align="center" width="55" /> + <el-table-column label="产品名称" prop="cpmc" align="center"> </el-table-column> + <el-table-column label="产品类型" prop="cplx" align="center"></el-table-column> + <el-table-column label="生产企业" prop="zcsqr" align="center"></el-table-column> <el-table-column label="产品管理类别" prop="cplb" + align="center" ></el-table-column> - <el-table-column label="注册证编号/备案编号" prop="zczh"> + <el-table-column label="注册证编号/备案编号" prop="zczh" align="center"> </el-table-column> <el-table-column label="操作" class-name="small-padding fixed-width" width="140" + align="center" > <template slot-scope="scope"> <el-button @@ -82,7 +84,7 @@ @click="toDetail(scope.row)" >详情</el-button > - <el-button size="mini" plain type="warning">编辑</el-button> + <!-- <el-button size="mini" plain type="warning">编辑</el-button> --> </template> </el-table-column> </el-table> diff --git a/src/views/statistics/index.vue b/src/views/statistics/index.vue deleted file mode 100644 index 2631444..0000000 --- a/src/views/statistics/index.vue +++ /dev/null @@ -1,375 +0,0 @@ -<template> - <div class="child-container"> - <div class="table-list"> - <div class="search-box"> - <gridsTitle title="查询条件" /> - <el-form - :model="queryParams" - ref="queryForm" - size="small" - :inline="true" - label-width="95px" - class="search-from" - > - <el-form-item label="培训名称:" prop="traningName"> - <el-input v-model="queryParams.traningName" clearable></el-input> - </el-form-item> - <el-form-item label="课程类型:" prop="courseType"> - <el-select v-model="queryParams.courseType" clearable> - <el-option - :label="sex.dictLabel" - :value="sex.dictValue" - v-for="sex in dict.courseType" - :key="sex.dictValue" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="培训时间:"> - <el-date-picker - v-model="timeData" - value-format="yyyy-MM-dd" - type="daterange" - range-separator="至" - start-placeholder="开始日期" - end-placeholder="结束日期" - @change="changePicker" - > - </el-date-picker> - </el-form-item> - - <div class="search-btn"> - <el-button icon="el-icon-my-reset" size="mini" @click="resetQuery" - >重置</el-button - > - <el-button - type="primary" - icon="el-icon-search" - size="mini" - @click="handleQuery" - >搜索</el-button - > - </div> - </el-form> - </div> - <div class="table-box"> - <gridsTitle title="培训记录列表" /> - <div class="table-data"> - <el-table v-loading="loading" :data="tableList" height="90%"> - <el-table-column - type="index" - label="序号" - width="55" - align="center" - > - </el-table-column> - <el-table-column - label="培训名称" - align="center" - prop="traningName" - /> - <el-table-column - label="培训开始时间" - align="center" - prop="begainTime" - > - <template slot-scope="scope"> - <span>{{ - parseTime(scope.row.begainTime, "{y}-{m}-{d}") - }}</span> - </template> - </el-table-column> - <el-table-column label="培训结束时间" align="center" prop="duty"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.endTime, "{y}-{m}-{d}") }}</span> - </template> - </el-table-column> - <el-table-column - label="培训组织单位" - align="center" - prop="traningUnit" - /> - - <el-table-column label="课程类型" align="center" prop="courseType"> - <template slot-scope="scope"> - {{ filterDict(scope.row.courseType, "courseType") }} - </template> - </el-table-column> - <el-table-column label="培训学时" align="center" prop="classHour" /> - <el-table-column - label="学习方式" - align="center" - prop="learningStyle" - > - <template slot-scope="scope"> - {{ filterDict(scope.row.learningStyle, "learningStyle") }} - </template> - </el-table-column> - <el-table-column - label="参与总人数" - align="center" - prop="countNumber" - > - </el-table-column> - <el-table-column - label="省局监管人员参与人数" - align="center" - prop="countDeptNumber" - > - </el-table-column> - </el-table> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.current" - :limit.sync="queryParams.size" - @pagination="getList" - /> - </div> - </div> - </div> - </div> -</template> - -<script> -import { dictList } from "@/api/jcy"; -import { getList } from "@/api/inspectorTrain"; -import gridsTitle from "../components/gridsTitle"; -export default { - components: { - gridsTitle, - }, - data() { - return { - //字典 - dict: {}, - inspectorId: null, - // 遮罩层 - loading: true, - // 总条数 - total: 0, - //接口条件 - timeData: null, - queryParams: { - traningName: undefined, - courseType: undefined, - begainTime: undefined, - endTime: undefined, - current: 1, - size: 10, - }, - //表格数据 - tableList: [], - }; - }, - created() { - this.getDict("learningStyle,courseType"); - }, - - methods: { - changePicker(e) { - if (e) { - this.queryParams.begainTime = e[0]; - this.queryParams.endTime = e[1]; - } else { - this.queryParams.begainTime = undefined; - this.queryParams.endTime = undefined; - } - }, - /**过滤字典 */ - filterDict(value, type) { - if (this.dict[type] == undefined) { - return value; - } - let dictLable = this.dict[type].filter((item) => item.dictValue == value); - return dictLable.length > 0 ? dictLable[0].dictLabel : "未知"; - }, - /**获取字典列表 */ - getDict(typeList) { - let query = { - list: typeList, - }; - dictList(query).then((res) => { - if (res.status == 200) { - for (let key in res.result) { - this.dict[key] = res.result[key]; - } - } - this.getList(); - }); - }, - - /**获取表格数据 */ - getList() { - this.loading = true; - getList(this.queryParams).then((res) => { - this.tableList = res.result.records; - this.total = res.result.total; - this.loading = false; - }); - }, - /** 搜索按钮操作 */ - handleQuery() { - this.queryParams.current = 1; - this.getList(); - }, - /** 重置按钮操作 */ - resetQuery() { - this.resetForm("queryForm"); - this.timeData = null; - this.queryParams.begainTime = undefined; - this.queryParams.endTime = undefined; - this.handleQuery(); - }, - }, -}; -</script> - -<style lang="scss" scoped> -.child-container { - height: 100%; - & > div { - height: 100%; - } - // 表格部分 - .table-list { - display: flex; - flex-direction: column; - align-items: center; - .search-box { - .search-from { - padding: 15px; - } - .search-btn { - position: relative; - left: 50%; - bottom: 0; - transform: translateZ(-50%); - } - } - .table-box { - flex: 1; - margin-top: 10px; - .table-data { - height: calc(100% - 40px); - box-sizing: border-box; - padding: 15px; - position: relative; - .paginBox { - position: absolute; - bottom: 15px; - width: 100%; - width: 98%; - margin: 0; - } - } - } - & > div { - width: 100%; - border-radius: 6px; - background-color: #fff; - } - } - .table-top-btn { - margin-bottom: 15px; - } - // 结束 -} -::v-deep .search-from { - .el-form-item__label { - font-size: 14px; - font-weight: 500; - color: #4d5158; - } - .el-select, - .el-input { - width: 300px; - } -} -//弹出框 -.my-dialog-title { - font-size: 16px; - font-weight: 550; - color: #333333; - background: #e9eff7; - padding: 10px 0 10px 16px; -} -.my-dialog-content { - padding-left: 40px; - - .content-head { - font-size: 14px; - font-weight: 400; - color: #8e8e8e; - line-height: 24px; - } - .contentAdd { - display: flex; - align-items: center; - margin-top: 10px; - span { - font-size: 14px; - font-weight: 500; - color: #4d5158; - margin-right: 4px; - } - .itemContent { - width: 40%; - margin: 0 4px; - } - .contentIcon { - font-size: 22px; - color: #22c98d; - margin-left: 4px; - cursor: pointer; - } - .deleteIcon { - font-size: 22px; - color: #f76359; - margin-left: 4px; - cursor: pointer; - } - } -} -.manner { - padding-left: 19px; - display: flex; - align-items: center; - margin-top: 10px; - span { - font-size: 14px; - font-weight: 500; - color: #4d5158; - margin-right: 4px; - } - .inputM { - width: 78.5%; - margin-left: 4px; - } -} -::v-deep .el-select { - width: 100%; -} -.my-dialog-footer ::v-deep .el-button { - padding: 8px 10px !important; -} -.my-dialog-footer ::v-deep .el-button--primary { - background: #ff9822 !important; - border: 1px solid #ff9822; -} -.upload-row { - display: flex; - align-items: center; - margin-bottom: 15px; - .row-lable { - font-size: 14px; - } -} -.upload-list { - & > div { - margin-bottom: 10px; - } - & > :last-child { - margin-bottom: 0; - } -} -</style> diff --git a/src/views/userMsgPage/components/fileDiaglog.vue b/src/views/userMsgPage/components/fileDiaglog.vue deleted file mode 100644 index ee680a1..0000000 --- a/src/views/userMsgPage/components/fileDiaglog.vue +++ /dev/null @@ -1,168 +0,0 @@ -<template> - <div> - <!-- 附件上传 --> - <el-dialog - :visible.sync="showUpload" - width="30%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title">附件上传</div> - <FileUpload - v-model="list" - :isShowTip="false" - v-loading="fileLoading" - v-if="!showTitle" - > - <el-button size="mini" type="primary">上传培训情况附件</el-button> - </FileUpload> - <div v-if="showTitle" v-loading="fileLoading"> - <FileUpload v-model="list2" :isShowTip="false"> - <el-button size="mini" type="primary">上传工作内容证明、职称证书等附件</el-button> - </FileUpload> - </div> - <div slot="footer" class="dialog-footer"> - <el-button - size="small" - type="primary" - icon="el-icon-my-save" - @click="fileSubmit()" - >提交</el-button - > - </div> - </el-dialog> - </div> -</template> -<script> -export default { - data() { - return { - showUpload: false, - fileLoading: true, - list: [], - // list1: [], - list2: [], - //培训 - filelist: { - id: null, - assessmentFilename: "", - assessmentResultsUrl: "", - }, - //工作 - workList: { - //职称证书 - titleCertificate: "", - titleFilename: "", - // //工作证明 - // workCertificate: "", - // workFilename: "", - id: null, - }, - type: "", - }; - }, - props: { - showTitle: { - type: Boolean, - default: false, - }, - }, - methods: { - //打开弹窗 - async open(e, s) { - this.showUpload = true; - this.fileLoading = true; - this.list = []; - // this.list1 = []; - this.list2 = []; - this.type = s; - if (s == "培训") { - //获取培训情况的详情 - this.filelist.id = e; - let msg1 = await this.$api.training.detailTraining(e); - if (msg1.status == 200) this.fileLoading = false; - if ( - msg1.result.assessmentResultsUrl && - msg1.result.assessmentFilename - ) { - this.list = this.begin( - msg1.result.assessmentResultsUrl, - msg1.result.assessmentFilename - ); - } - } else if (s == "工作") { - this.workList.id = e; - let msg1 = await this.$api.work.detailWork(e); - if (msg1.status == 200) this.fileLoading = false; - // if (msg1.result.workCertificate && msg1.result.workFilename) { - // this.list1 = this.begin( - // msg1.result.workCertificate, - // msg1.result.workFilename - // ); - // } - if (msg1.result.titleCertificate && msg1.result.titleFilename) { - this.list2 = this.begin( - msg1.result.titleCertificate, - msg1.result.titleFilename - ); - } - } - }, - //点击上传文件弹窗的确认按钮 - async fileSubmit() { - if (this.type == "培训") { - let newList = this.submit(this.list); - this.filelist.assessmentFilename = newList[0].join(","); - this.filelist.assessmentResultsUrl = newList[1].join(","); - let msg = await this.$api.training.updateTraining(this.filelist); - if (msg.status == 200) - this.$message({ - type: "success", - message: `修改成功!`, - }); - } else if (this.type == "工作") { - // let newList1 = this.submit(this.list1); - // this.workList.workFilename = newList1[0].join(","); - // this.workList.workCertificate = newList1[1].join(","); - let newList2 = this.submit(this.list2); - this.workList.titleFilename = newList2[0].join(","); - this.workList.titleCertificate = newList2[1].join(","); - let msg = await this.$api.work.updateWork(this.workList); - if (msg.status == 200) - this.$message({ - type: "success", - message: `修改成功!`, - }); - } - this.showUpload = false; - }, - //进入时的循环函数 - begin(a, b) { - let arr1 = []; - let arr2 = []; - let arr3 = []; - arr1 = a.split(","); - arr2 = b.split(","); - arr1.forEach((value, index) => { - arr3.push({ - url: value, - name: arr2[index], - }); - }); - return arr3; - }, - //提交时的循环函数 - submit(a) { - let arr1 = []; - let arr2 = []; - a.forEach((value, index) => { - arr1.push(value.name); - arr2.push(value.url); - }); - return [arr1, arr2]; - }, - }, -}; -</script> -<style lang="scss" scoped></style> diff --git a/src/views/userMsgPage/components/write.vue b/src/views/userMsgPage/components/write.vue deleted file mode 100644 index 07c45b2..0000000 --- a/src/views/userMsgPage/components/write.vue +++ /dev/null @@ -1,103 +0,0 @@ -<template> - <div> - <el-dialog - :visible.sync="editVisible" - width="40%" - append-to-body - destroy-on-close - custom-class="my-dialog-container" - > - <div slot="title" class="my-dialog-title">签名</div> - <div class="content"> - <VueSignaturePad id="signature" ref="signaturePad" :options="options" /> - </div> - <div slot="footer" class="dialog-footer"> - <el-button type="success" plain @click="save">保存</el-button> - <el-button type="danger" plain @click="close">关闭</el-button> - <el-button type="danger" plain @click="resume">重置</el-button> - <el-button type="primary" plain @click="undo">撤销</el-button> - </div> - </el-dialog> - </div> -</template> - <script> -export default { - data() { - return { - editVisible: false, - options: { - penColor: "#000", - minWidth: 2, //控制画笔最小宽度 - maxWidth: 2, //控制画笔最大宽度 - }, - // uploadImgUrl: process.env.VUE_APP_BASE_API2 + "/common/uploadMinioonfile", // 上传的图片服务器地址 - }; - }, - methods: { - open() { - this.editVisible = true; - }, - //撤销 - undo() { - this.$refs.signaturePad.undoSignature(); - }, - //重置 - resume() { - this.$refs.signaturePad.clearSignature(); - }, - //保存 - async save() { - const { isEmpty, data } = this.$refs.signaturePad.saveSignature(); - if (isEmpty) { - this.$message({ - type: "error", - message: "请您完成签名", - }); - } else { - var form1 = new FormData(); - form1.append("file", this.dataURLtoFile(data, "我的签名")); - let msg1 = await this.$api.infoMsg.updateFile(form1); - console.log(msg1); - // 拼接图片并且显示; - this.$emit("getWrite", msg1.result.url); - this.editVisible = false; - this.$message({ - type: "success", - message: "保存成功", - }); - } - }, - dataURLtoFile(dataurl, filename) { - var arr = dataurl.split(","), - mime = arr[0].match(/:(.*?);/)[1], - bstr = atob(arr[1]), - n = bstr.length, - u8arr = new Uint8Array(n); - while (n--) { - u8arr[n] = bstr.charCodeAt(n); - } - return new File([u8arr], filename, { type: mime }); - }, - close() { - this.editVisible = false; - }, - }, -}; -</script> - <style lang="scss" scoped> -#signature { - width: 100%; - height: 100%; - border: double 3px transparent; - border-radius: 2px; - background-image: linear-gradient(white, #ffffff), - radial-gradient(circle at top left, #4bc5e8, #9f6274); - background-origin: border-box; - background-clip: content-box, border-box; -} -.content { - width: 100%; - height: 450px; - padding: 20px; -} -</style> \ No newline at end of file diff --git a/src/views/userMsgPage/index.vue b/src/views/userMsgPage/index.vue deleted file mode 100644 index 198fa8b..0000000 --- a/src/views/userMsgPage/index.vue +++ /dev/null @@ -1,777 +0,0 @@ -<template> - <diV class="child-container"> - <div - class="child-container" - :class="[showBack ? 'changeMgPx' : '']" - v-if="inspectorId" - > - <!-- 左边菜单导航 --> - <div class="leftAside"> - <div class="asideHeader"> - 菜单导航 - <footer></footer> - </div> - <div class="asideItemBox"> - <div - v-for="(item, index) in asideDate" - :key="index" - id="asideFooter" - @click="handleIndex(index)" - :class="[changeNum == index ? 'activeColor' : '']" - > - {{ item.name }} - </div> - </div> - </div> - <!-- 右边个人信息栏 --> - <div class="rightBox" ref="rightBox" @scroll="handScroll"> - <!-- 个人情况统计 --> - <div class="userInfo" ref="userInfo"> - <div class="userHeaderBox"> - <div class="userText"> - <div>个人情况统计</div> - </div> - <div class="userOption"> - <div class="absiluteBox" v-if="showBack"> - <el-button size="small" @click="backIndex()">返回</el-button> - </div> - <el-date-picker - v-model="yearParams.begainYear" - type="year" - placeholder="选择开始年" - value-format="yyyy" - > - </el-date-picker> - <span class="year-middle">至</span> - <el-date-picker - v-model="yearParams.endBegainYear" - type="year" - placeholder="选择结束年" - @change="changeYear" - value-format="yyyy" - > - </el-date-picker> - </div> - </div> - <infoMsg ref="infoMsg"></infoMsg> - </div> - <!-- 基础信息 --> - <div class="baseMsg" style="margin-top: 8px" ref="baseMsg"> - <div class="userHeaderBox"> - <div class="userText"> - <div>基础信息</div> - </div> - </div> - <div class="baseMsgFooterBox"> - <baseMsg :inspectorId="inspectorId"></baseMsg> - </div> - </div> - <!-- 教育背景 --> - <div class="schoolBack" style="margin-top: 8px" ref="schoolBack"> - <div class="userHeaderBox"> - <div class="userText"> - <div>教育背景(从大学开始填写)</div> - </div> - <div @click.stop="addBackground()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:educationBacAdd']" - >新增</el-button - > - </div> - </div> - <div class="schoolBackFooterBox"> - <schoolMsg ref="teach" :inspectorId="inspectorId"></schoolMsg> - </div> - </div> - <!-- 聘任信息 --> - <div class="schoolBack" style="margin-top: 8px" ref="toAppointment"> - <div class="userHeaderBox"> - <div class="userText"> - <div>聘任信息</div> - </div> - <el-button - type="success" - icon="el-icon-edit-outline" - size="mini" - @click="exportAppointmentMsg()" - v-hasPermi="['inspector:global:trainExport']" - >导出</el-button - > - <!-- <div @click.stop="addBackground()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:educationBacAdd']" - >新增</el-button - > - </div> --> - </div> - <div class="schoolBackFooterBox"> - <appointmentMsg - ref="appointmentMsgRefs" - :inspectorId="inspectorId" - ></appointmentMsg> - </div> - </div> - <!-- 工作经历 --> - <div class="schoolBack" style="margin-top: 8px" ref="work"> - <div class="userHeaderBox"> - <div class="userText"> - <div>工作经历</div> - </div> - <div @click="addWork()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:workAdd']" - >新增</el-button - > - </div> - </div> - <div class="schoolBackFooterBox"> - <work ref="workA" :inspectorId="inspectorId"></work> - </div> - </div> - <!-- 检查员特质 --> - <div class="traits" style="margin-top: 8px" ref="traitsType"> - <div class="userHeaderBox"> - <div class="userText"> - <div>检查员特质</div> - </div> - <div> - <el-button - type="primary" - icon="el-icon-edit" - size="mini" - @click="updateTraits()" - v-hasPermi="['inspector:global:traitsEdit']" - >编辑</el-button - > - </div> - </div> - <div class="traitsFooter"> - <examine ref="examine" :inspectorId="inspectorId"></examine> - </div> - </div> - <!-- 参加培训情况 --> - <div class="traits" style="margin-top: 8px" ref="traitsSituation"> - <div class="userHeaderBox"> - <div class="userText"> - <div>参加培训情况</div> - </div> - <div class="footerBoxEnd"> - <el-button - type="success" - icon="el-icon-edit-outline" - size="mini" - @click="exportTrain()" - v-hasPermi="['inspector:global:trainExport']" - >导出</el-button - > - <el-button - type="primary" - icon="el-icon-edit" - size="mini" - @click="addTraining()" - v-hasPermi="['inspector:global:trainAdd']" - >新增</el-button - > - </div> - </div> - <div class="traitsFooter"> - <trainingMsg - ref="trainingMsgA" - :inspectorId="inspectorId" - ></trainingMsg> - </div> - </div> - <!-- 检查情况表 --> - <div class="traits" style="margin-top: 8px" ref="traitsTable"> - <div class="userHeaderBox"> - <div class="userText"> - <div>检查情况表</div> - </div> - <div class="footerBoxEnd"> - <el-button - type="success" - icon="el-icon-edit-outline" - size="mini" - v-hasPermi="['inspector:global:examineExport']" - >导出</el-button - > - </div> - </div> - <div class="traitsFooter"> - <examineTable></examineTable> - </div> - </div> - <!-- 年度考核情况 --> - <div class="traits" style="margin-top: 8px" ref="traitsMsg"> - <div class="userHeaderBox"> - <div class="userText"> - <div>年度考核情况</div> - </div> - <div class="footerBoxEnd"> - <el-button - @click="exportYear" - type="success" - icon="el-icon-edit-outline" - size="mini" - v-hasPermi="['inspector:global:checkExport']" - >导出</el-button - > - </div> - </div> - <div class="traitsFooter"> - <yearAssess - ref="yearAssess" - :inspectorId="inspectorId" - ></yearAssess> - </div> - </div> - <!-- 奖惩信息 --> - <div class="schoolBack" style="margin-top: 8px" ref="toIncentive"> - <div class="userHeaderBox"> - <div class="userText"> - <div>奖惩信息</div> - </div> - <div> - <el-button - type="success" - icon="el-icon-edit-outline" - size="mini" - @click="exportIncentiveMsg()" - v-hasPermi="['inspector:global:trainExport']" - >导出</el-button - > - </div> - </div> - <div class="schoolBackFooterBox"> - <incentiveMsg - ref="incentiveMsgRefs" - :inspectorId="inspectorId" - ></incentiveMsg> - </div> - </div> - <!-- 调派信息 --> - <div class="schoolBack" style="margin-top: 8px" ref="toDeployed"> - <div class="userHeaderBox"> - <div class="userText"> - <div>调派信息</div> - </div> - <!-- <div @click.stop="addBackground()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:educationBacAdd']" - >新增</el-button - > - </div> --> - </div> - <div class="schoolBackFooterBox"> - <deployedMsg - ref="deployedMsgRefs" - :inspectorId="inspectorId" - ></deployedMsg> - </div> - </div> - <!-- 调派记录 --> - <div class="schoolBack" style="margin-top: 8px" ref="toDispatchRecords"> - <div class="userHeaderBox"> - <div class="userText"> - <div>调派记录</div> - </div> - <!-- <div @click.stop="addBackground()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:educationBacAdd']" - >新增</el-button - > - </div> --> - </div> - <div class="schoolBackFooterBox"> - <dispatchRecords - ref="dispatchRecordsRefs" - :inspectorId="inspectorId" - ></dispatchRecords> - </div> - </div> - - <div - class="backTop" - @click="backTop()" - id="backTop" - v-show="scrollShow" - > - <i class="el-icon-caret-top"></i> - </div> - </div> - </div> - <div class="child-container no-data" v-if="!inspectorId"> - <el-empty description="您不在检察员列表中!"></el-empty> - </div> - </diV> -</template> - -<script> -import { mapGetters } from "vuex"; -//个人情况统计 -import infoMsg from "../censor/components/infoMsg.vue"; -//基础信息 -import baseMsg from "../censor/components/baseMsg.vue"; -//教育背景 -import schoolMsg from "../censor/components/schoolMsg.vue"; -//聘任信息 -import appointmentMsg from "../censor/components/appointmentMsg.vue"; -//工作经历 -import work from "../censor/components/work.vue"; -//检查员特质 -import examine from "../censor/components/examine.vue"; -//参加培训情况 -import trainingMsg from "../censor/components/trainingMsg.vue"; -//检查情况表 -import examineTable from "../censor/components/examineTable.vue"; -//年度考核情况 -import yearAssess from "../censor/components/yearAssess.vue"; -//奖惩信息 -import incentiveMsg from "../censor/components/incentiveMsg.vue"; -//调派信息 -import deployedMsg from "../censor/components/deployedMsg.vue"; -//调派记录 -import dispatchRecords from "../censor/components/dispatchRecords.vue"; -export default { - name: "Notice", - data() { - return { - scrollShow: false, - isdisabled: false, - allRefs: [ - { - index: 0, - name: "userInfo", - }, - { - index: 1, - name: "baseMsg", - }, - { - index: 2, - name: "schoolBack", - }, - { - index: 3, - name: "toAppointment", - }, - { - index: 4, - name: "work", - }, - { - index: 5, - name: "traitsType", - }, - { - index: 6, - name: "traitsSituation", - }, - { - index: 7, - name: "traitsTable", - }, - { - index: 8, - name: "traitsMsg", - }, - { - index: 9, - name: "toIncentive", - }, - { - index: 10, - name: "toDeployed", - }, - { - index: 11, - name: "toDispatchRecords", - }, - ], - changeNum: 0, - asideDate: [ - { - name: "个人信息统计", - }, - { - name: "基本信息", - }, - { - name: "教育背景", - }, - { - name: "聘任信息", - }, - { - name: "工作经历", - }, - { - name: "检查员特质", - }, - { - name: "参加培训情况", - }, - { - name: "检查情况", - }, - { - name: "年度考核情况", - }, - { - name: "奖惩信息", - }, - { - name: "调派信息", - }, - { - name: "调派记录", - }, - ], - options: [ - { - value: "选项1", - label: "2022", - }, - { - value: "选项2", - label: "2023", - }, - ], - refsList: [ - "userInfo", - "baseMsg", - "schoolBack", - "work", - "traitsType", - "traitsSituation", - "traitsTable", - "traitsMsg", - ], - value: "", - a1: 0, - // previous: 0, - yearParams: { - begainYear: null, - endBegainYear: null, - }, - }; - }, - props: { - showBack: { - type: Boolean, - default: false, - }, - }, - components: { - infoMsg, - baseMsg, - schoolMsg, - work, - examine, - trainingMsg, - examineTable, - yearAssess, - appointmentMsg, - incentiveMsg, - deployedMsg, - dispatchRecords, - }, - created() {}, - computed: { - ...mapGetters(["inspectorId"]), - }, - methods: { - backTop() { - // 滚动页面至顶部 - this.$refs.rightBox.scrollTo({ - top: 0, - behavior: "smooth", // 使用平滑滚动效果 - }); - }, - /**年变化 */ - changeYear(e) { - if (e) { - if (!this.yearParams.begainYear) { - this.$modal.msgError("请选择开始年份!"); - return; - } else if (this.yearParams.begainYear > this.yearParams.endBegainYear) { - this.$modal.msgError("开始年不能大于结束年!"); - } else { - this.$refs.infoMsg.getinfoData(this.yearParams); - } - } - }, - //新增培训情况 - addTraining() { - this.$refs.trainingMsgA.handleAdd(); - }, - //新增教育背景 - addBackground() { - this.$refs.teach.openDialog(); - }, - //新增工作经历 - addWork() { - this.$refs.workA.workAddList(); - }, - //编辑检查员特质 - updateTraits() { - this.$refs.examine.examineUpdate(); - }, - //导出培训情况 - exportTrain() { - this.$refs.trainingMsgA.exportTrain(); - }, - //年度考核导出 - exportYear() { - this.$refs.yearAssess.exportTrain(); - }, - exportIncentiveMsg() { - this.$refs.incentiveMsgRefs.exportTrain(); - }, - exportAppointmentMsg() { - this.$refs.appointmentMsgRefs.exportExcel(); - }, - backIndex() { - this.$emit("getSonData", { isShow: false }); - }, - /**单击左侧tab */ - handleIndex(index) { - this.changeNum = index; - this.$refs[this.allRefs[index].name].scrollIntoView({ - behavior: "smooth", - block: "start", - }); - this.isdisabled = true; - setTimeout(() => { - this.isdisabled = false; - }, 1000); - }, - /**容器滚动 */ - handScroll(e) { - if (this.isdisabled == true) return; - let scrollData = e.target.scrollTop; - if (scrollData > 0) { - this.scrollShow = true; - } else { - this.scrollShow = false; - } - var data = []; - this.allRefs.forEach((value) => { - data.push(this.$refs[value.name].offsetHeight); - }); - let addData = 0; - let count = 0; - for (let i = 0; i < this.asideDate.length; i++) { - if ( - scrollData >= addData + 8 * count && - scrollData < addData + data[i] + 8 * count + 8 - ) { - this.changeNum = i; - break; - } - count += 1; - addData += data[i]; - } - }, - }, - mounted() {}, - beforeDestroy() {}, -}; -</script> -<style lang="scss" scoped> -//按钮的样式 -::v-deep .el-button--mini { - padding: 6px 8px; - border-radius: 5px; -} -::v-deep .el-button--success { - background-color: #52cd80; - border-color: #52cd80; -} -::v-deep .el-button--primary { - background-color: #1e80eb; - border-color: #1e80eb; -} -.changeMgPx { - padding: 0 !important; - height: 100% !important; -} -::v-deep .el-backtop { - width: 45px; - height: 45px; - font-size: 16px; -} - -.child-container { - height: 100%; - background-color: rgb(242, 242, 242); - display: flex; - .leftAside { - height: 100%; - background-color: white; - width: 180px; - padding: 20px; - border-radius: 8px; - .asideHeader { - font-size: 16px; - font-weight: bold; - line-height: 30px; - letter-spacing: 0.045em; - color: #323233; - footer { - width: 50px; - width: 34px; - height: 3px; - border-radius: 4px; - background-color: #1e80eb; - } - } - .asideItemBox { - user-select: none; - width: 100%; - margin-top: 15px; - cursor: pointer; - #asideFooter { - width: 100%; - height: 38px; - border-bottom: 1px solid #dee2ee; - font-size: 14px; - line-height: 14px; - letter-spacing: 0.045em; - display: flex; - align-items: center; - padding-left: 12px; - } - .activeColor { - background-color: #1e80eb; - color: white; - } - } - } - .rightBox { - flex: 1; - margin-left: 10px; - overflow: auto; - position: relative; - border-radius: 6px; - .userInfo { - height: 340px; - border-radius: 8px; - background: white; - } - .baseMsg { - // margin-top: 10px; - // height: 1430px; - border-radius: 8px; - background: white; - .baseMsgFooterBox { - padding: 10px 15px 20px; - } - } - .schoolBack { - // margin-top: 10px; - border-radius: 8px; - background: white; - .schoolBackFooterBox { - padding: 20px 15px; - } - } - .traits { - // margin-top: 10px; - border-radius: 8px; - background: white; - .traitsFooter { - padding: 20px 15px; - } - } - } -} -//头部公用样式 -.userHeaderBox { - height: 50px; - border-bottom: 1px solid #e8ebea; - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 18px 0 35px; - position: relative; - .absiluteBox { - height: 100%; - position: absolute; - right: 140px; - display: flex; - align-items: center; - justify-content: center; - } - .userText { - font-size: 16px; - letter-spacing: -0.018000000000000002em; - &::before { - content: ""; - position: absolute; - top: 17px; - left: 20px; - width: 4px; - height: 17px; - background: linear-gradient(180deg, #8bc2ff 0%, #1e80eb 100%); - border-radius: 3px; - } - } - .userOption { - cursor: pointer; - display: flex; - align-items: center; - .absiluteBox { - margin-right: 15px; - } - } -} -::v-deep .el-date-editor { - width: 135px; -} -.year-middle { - margin: 0 10px; -} -.back-icon { - font-weight: bold; -} -.no-data { - width: 100%; - background: #fff; - border-radius: 6px; - display: flex; - align-items: center; - justify-content: center; -} -.backTop { - position: fixed; - right: 35px; - bottom: 30px; - height: 40px; - text-align: center; - line-height: 40px; - width: 40px; - z-index: 100; - background: #fff; - border-radius: 6px; - box-shadow: 0 0 6px rgba(0, 0, 0, 0.12); - color: #409eff; - font-size: 20px; - cursor: pointer; -} -</style> diff --git a/src/views/userMsgPage/index2.vue b/src/views/userMsgPage/index2.vue deleted file mode 100644 index 506ffda..0000000 --- a/src/views/userMsgPage/index2.vue +++ /dev/null @@ -1,758 +0,0 @@ -<template> - <div class="child-container" :class="[showBack ? 'changeMgPx' : '']"> - <!-- 左边菜单导航 --> - <div class="leftAside"> - <div class="asideHeader"> - 菜单导航 - <footer></footer> - </div> - <div class="asideItemBox"> - <div - v-for="(item, index) in asideDate" - :key="index" - id="asideFooter" - @click="handleIndex(index)" - :class="[changeNum == index ? 'activeColor' : '']" - > - {{ item.name }} - </div> - </div> - </div> - <!-- 右边个人信息栏 --> - <div class="rightBox" ref="rightBox" @scroll="handScroll"> - <!-- 个人情况统计 --> - <div class="userInfo" ref="userInfo"> - <div class="userHeaderBox"> - <div class="userText"> - <div>个人情况统计</div> - </div> - <div class="userOption"> - <div class="absiluteBox" v-if="showBack"> - <el-button size="small" @click="backIndex()">返回</el-button> - </div> - <el-date-picker - v-model="yearParams.begainYear" - type="year" - placeholder="选择开始年" - value-format="yyyy" - > - </el-date-picker> - <span class="year-middle">至</span> - <el-date-picker - v-model="yearParams.endBegainYear" - type="year" - placeholder="选择结束年" - @change="changeYear" - value-format="yyyy" - > - </el-date-picker> - </div> - </div> - <infoMsg ref="infoMsg"></infoMsg> - </div> - <!-- 基础信息 --> - <div class="baseMsg" style="margin-top: 8px" ref="baseMsg"> - <div class="userHeaderBox"> - <div class="userText"> - <div>基础信息</div> - </div> - </div> - <div class="baseMsgFooterBox"> - <baseMsg :inspectorId="inspectorId"></baseMsg> - </div> - </div> - <!-- 教育背景 --> - <div class="schoolBack" style="margin-top: 8px" ref="schoolBack"> - <div class="userHeaderBox"> - <div class="userText"> - <div>教育背景(从大学开始填写)</div> - </div> - <div @click.stop="addBackground()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:educationBacAdd:s']" - >新增</el-button - > - </div> - </div> - <div class="schoolBackFooterBox"> - <schoolMsg ref="teach" :inspectorId="inspectorId"></schoolMsg> - </div> - </div> - <!-- 聘任信息 --> - <div class="schoolBack" style="margin-top: 8px" ref="toAppointment"> - <div class="userHeaderBox"> - <div class="userText"> - <div>聘任信息</div> - </div> - <el-button - type="success" - icon="el-icon-edit-outline" - size="mini" - @click="exportAppointmentMsg()" - v-hasPermi="['inspector:global:trainExport:s']" - >导出</el-button - > - <!-- <div @click.stop="addBackground()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:educationBacAdd']" - >新增</el-button - > - </div> --> - </div> - <div class="schoolBackFooterBox"> - <appointmentMsg - ref="appointmentMsgRefs" - :inspectorId="inspectorId" - ></appointmentMsg> - </div> - </div> - <!-- 工作经历 --> - <div class="schoolBack" style="margin-top: 8px" ref="work"> - <div class="userHeaderBox"> - <div class="userText"> - <div>工作经历</div> - </div> - <div @click="addWork()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:workAdd:s']" - >新增</el-button - > - </div> - </div> - <div class="schoolBackFooterBox"> - <work ref="workA" :inspectorId="inspectorId"></work> - </div> - </div> - <!-- 检查员特质 --> - <div class="traits" style="margin-top: 8px" ref="traitsType"> - <div class="userHeaderBox"> - <div class="userText"> - <div>检查员特质</div> - </div> - <div> - <el-button - type="primary" - icon="el-icon-edit" - size="mini" - @click="updateTraits()" - v-hasPermi="['inspector:global:traitsEdit:s']" - >编辑</el-button - > - </div> - </div> - <div class="traitsFooter"> - <examine ref="examine" :inspectorId="inspectorId"></examine> - </div> - </div> - <!-- 参加培训情况 --> - <div class="traits" style="margin-top: 8px" ref="traitsSituation"> - <div class="userHeaderBox"> - <div class="userText"> - <div>参加培训情况</div> - </div> - <div class="footerBoxEnd"> - <el-button - type="success" - icon="el-icon-edit-outline" - size="mini" - @click="exportTrain()" - v-hasPermi="['inspector:global:trainExport:s']" - >导出</el-button - > - <el-button - type="primary" - icon="el-icon-edit" - size="mini" - @click="addTraining()" - v-hasPermi="['inspector:global:trainAdd:s']" - >新增</el-button - > - </div> - </div> - <div class="traitsFooter"> - <trainingMsg - ref="trainingMsgA" - :inspectorId="inspectorId" - ></trainingMsg> - </div> - </div> - <!-- 检查情况表 --> - <div class="traits" style="margin-top: 8px" ref="traitsTable"> - <div class="userHeaderBox"> - <div class="userText"> - <div>检查情况表</div> - </div> - <div class="footerBoxEnd"> - <el-button - type="success" - icon="el-icon-edit-outline" - size="mini" - v-hasPermi="['inspector:global:examineExport:s']" - >导出</el-button - > - </div> - </div> - <div class="traitsFooter"> - <examineTable></examineTable> - </div> - </div> - <!-- 年度考核情况 --> - <div class="traits" style="margin-top: 8px" ref="traitsMsg"> - <div class="userHeaderBox"> - <div class="userText"> - <div>年度考核情况</div> - </div> - <div class="footerBoxEnd"> - <el-button - @click="exportYear" - type="success" - icon="el-icon-edit-outline" - size="mini" - v-hasPermi="['inspector:global:checkExport:s']" - >导出</el-button - > - </div> - </div> - <div class="traitsFooter"> - <yearAssess ref="yearAssess" :inspectorId="inspectorId"></yearAssess> - </div> - </div> - <!-- 奖惩信息 --> - <div class="schoolBack" style="margin-top: 8px" ref="toIncentive"> - <div class="userHeaderBox"> - <div class="userText"> - <div>奖惩信息</div> - </div> - <div> - <el-button - type="success" - icon="el-icon-edit-outline" - size="mini" - @click="exportIncentiveMsg()" - v-hasPermi="['inspector:global:trainExport:s']" - >导出</el-button - > - </div> - </div> - <div class="schoolBackFooterBox"> - <incentiveMsg - ref="incentiveMsgRefs" - :inspectorId="inspectorId" - ></incentiveMsg> - </div> - </div> - <!-- 调派信息 --> - <div class="schoolBack" style="margin-top: 8px" ref="toDeployed"> - <div class="userHeaderBox"> - <div class="userText"> - <div>调派信息</div> - </div> - <!-- <div @click.stop="addBackground()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:educationBacAdd']" - >新增</el-button - > - </div> --> - </div> - <div class="schoolBackFooterBox"> - <deployedMsg - ref="deployedMsgRefs" - :inspectorId="inspectorId" - ></deployedMsg> - </div> - </div> - <!-- 调派记录 --> - <div class="schoolBack" style="margin-top: 8px" ref="toDispatchRecords"> - <div class="userHeaderBox"> - <div class="userText"> - <div>调派记录</div> - </div> - <!-- <div @click.stop="addBackground()"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - v-hasPermi="['inspector:global:educationBacAdd']" - >新增</el-button - > - </div> --> - </div> - <div class="schoolBackFooterBox"> - <dispatchRecords - ref="dispatchRecordsRefs" - :inspectorId="inspectorId" - ></dispatchRecords> - </div> - </div> - - <div class="backTop" @click="backTop()" id="backTop" v-show="scrollShow"> - <i class="el-icon-caret-top"></i> - </div> - </div> - </div> -</template> - -<script> -//个人情况统计 -import infoMsg from "../censor/components/infoMsg.vue"; -//基础信息 -import baseMsg from "../censor/components/baseMsg.vue"; -//教育背景 -import schoolMsg from "../censor/components/schoolMsg.vue"; -//聘任信息 -import appointmentMsg from "../censor/components/appointmentMsg.vue"; -//工作经历 -import work from "../censor/components/work.vue"; -//检查员特质 -import examine from "../censor/components/examine.vue"; -//参加培训情况 -import trainingMsg from "../censor/components/trainingMsg.vue"; -//检查情况表 -import examineTable from "../censor/components/examineTable.vue"; -//年度考核情况 -import yearAssess from "../censor/components/yearAssess.vue"; -//奖惩信息 -import incentiveMsg from "../censor/components/incentiveMsg.vue"; -//调派信息 -import deployedMsg from "../censor/components/deployedMsg.vue"; -//调派记录 -import dispatchRecords from "../censor/components/dispatchRecords.vue"; -export default { - name: "Notice", - data() { - return { - scrollShow: false, - isdisabled: false, - allRefs: [ - { - index: 0, - name: "userInfo", - }, - { - index: 1, - name: "baseMsg", - }, - { - index: 2, - name: "schoolBack", - }, - { - index: 3, - name: "toAppointment", - }, - { - index: 4, - name: "work", - }, - { - index: 5, - name: "traitsType", - }, - { - index: 6, - name: "traitsSituation", - }, - { - index: 7, - name: "traitsTable", - }, - { - index: 8, - name: "traitsMsg", - }, - { - index: 9, - name: "toIncentive", - }, - { - index: 10, - name: "toDeployed", - }, - { - index: 11, - name: "toDispatchRecords", - }, - ], - changeNum: 0, - asideDate: [ - { - name: "个人信息统计", - }, - { - name: "基本信息", - }, - { - name: "教育背景", - }, - { - name: "聘任信息", - }, - { - name: "工作经历", - }, - { - name: "检查员特质", - }, - { - name: "参加培训情况", - }, - { - name: "检查情况", - }, - { - name: "年度考核情况", - }, - { - name: "奖惩信息", - }, - { - name: "调派信息", - }, - { - name: "调派记录", - }, - ], - options: [ - { - value: "选项1", - label: "2022", - }, - { - value: "选项2", - label: "2023", - }, - ], - refsList: [ - "userInfo", - "baseMsg", - "schoolBack", - "work", - "traitsType", - "traitsSituation", - "traitsTable", - "traitsMsg", - ], - value: "", - year: new Date(), - a1: 0, - // previous: 0, - yearParams: { - begainYear: null, - endBegainYear: null, - }, - }; - }, - props: { - showBack: { - type: Boolean, - default: false, - }, - inspectorId: { - type: Number, - default: null, - }, - }, - components: { - infoMsg, - baseMsg, - schoolMsg, - work, - examine, - trainingMsg, - examineTable, - yearAssess, - appointmentMsg, - incentiveMsg, - deployedMsg, - dispatchRecords, - }, - - methods: { - backTop() { - // 滚动页面至顶部 - this.$refs.rightBox.scrollTo({ - top: 0, - behavior: "smooth", // 使用平滑滚动效果 - }); - }, - setInspectorId(id) { - this.inspectorId = id; - }, - /**年变化 */ - changeYear(e) { - if (e) { - if (!this.yearParams.begainYear) { - this.$modal.msgError("请选择开始年份!"); - return; - } else if (this.yearParams.begainYear > this.yearParams.endBegainYear) { - this.$modal.msgError("开始年不能大于结束年!"); - } else { - this.$refs.infoMsg.getinfoData(this.yearParams); - } - } - }, - //新增培训情况 - addTraining() { - this.$refs.trainingMsgA.handleAdd(); - }, - //新增教育背景 - addBackground() { - this.$refs.teach.openDialog(); - }, - //新增工作经历 - addWork() { - this.$refs.workA.workAddList(); - }, - //编辑检查员特质 - updateTraits() { - this.$refs.examine.examineUpdate(); - }, - //导出培训情况 - exportTrain() { - this.$refs.trainingMsgA.exportTrain(); - }, - //年度考核导出 - exportYear() { - this.$refs.yearAssess.exportTrain(); - }, - exportIncentiveMsg() { - this.$refs.incentiveMsgRefs.exportTrain(); - }, - exportAppointmentMsg() { - this.$refs.appointmentMsgRefs.exportExcel(); - }, - backIndex() { - this.$emit("getSonData", { isShow: false }); - }, - /**单击左侧tab */ - handleIndex(index) { - this.changeNum = index; - this.$refs[this.allRefs[index].name].scrollIntoView({ - behavior: "smooth", - block: "start", - }); - this.isdisabled = true; - setTimeout(() => { - this.isdisabled = false; - }, 1000); - }, - /**容器滚动 */ - handScroll(e) { - if (this.isdisabled == true) return; - let scrollData = e.target.scrollTop; - if (scrollData > 0) { - this.scrollShow = true; - } else { - this.scrollShow = false; - } - var data = []; - this.allRefs.forEach((value) => { - data.push(this.$refs[value.name].offsetHeight); - }); - let addData = 0; - let count = 0; - for (let i = 0; i < this.asideDate.length; i++) { - if ( - scrollData >= addData + 8 * count && - scrollData < addData + data[i] + 8 * count + 8 - ) { - this.changeNum = i; - break; - } - count += 1; - addData += data[i]; - } - }, - }, - mounted() {}, - beforeDestroy() {}, -}; -</script> -<style lang="scss" scoped> -//按钮的样式 -::v-deep .el-button--mini { - padding: 6px 8px; - border-radius: 5px; -} -::v-deep .el-button--success { - background-color: #52cd80; - border-color: #52cd80; -} -::v-deep .el-button--primary { - background-color: #1e80eb; - border-color: #1e80eb; -} -.changeMgPx { - padding: 0 !important; - height: 100% !important; -} -::v-deep .el-backtop { - width: 45px; - height: 45px; - font-size: 16px; -} - -.child-container { - height: 100%; - background-color: rgb(242, 242, 242); - display: flex; - .leftAside { - height: 100%; - background-color: white; - width: 180px; - padding: 20px; - border-radius: 8px; - .asideHeader { - font-size: 16px; - font-weight: bold; - line-height: 30px; - letter-spacing: 0.045em; - color: #323233; - footer { - width: 50px; - width: 34px; - height: 3px; - border-radius: 4px; - background-color: #1e80eb; - } - } - .asideItemBox { - user-select: none; - width: 100%; - margin-top: 15px; - cursor: pointer; - #asideFooter { - width: 100%; - height: 38px; - border-bottom: 1px solid #dee2ee; - font-size: 14px; - line-height: 14px; - letter-spacing: 0.045em; - display: flex; - align-items: center; - padding-left: 12px; - } - .activeColor { - background-color: #1e80eb; - color: white; - } - } - } - .rightBox { - flex: 1; - margin-left: 10px; - overflow: auto; - position: relative; - border-radius: 6px; - - .userInfo { - height: 340px; - border-radius: 8px; - background: white; - } - .baseMsg { - // margin-top: 10px; - // height: 1430px; - border-radius: 8px; - background: white; - .baseMsgFooterBox { - padding: 10px 15px 20px; - } - } - .schoolBack { - // margin-top: 10px; - border-radius: 8px; - background: white; - .schoolBackFooterBox { - padding: 20px 15px; - } - } - .traits { - // margin-top: 10px; - border-radius: 8px; - background: white; - .traitsFooter { - padding: 20px 15px; - } - } - } -} -//头部公用样式 -.userHeaderBox { - height: 50px; - border-bottom: 1px solid #e8ebea; - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 18px 0 35px; - position: relative; - .absiluteBox { - // height: 100%; - // position: absolute; - // right: 140px; - // display: flex; - // align-items: center; - // justify-content: center; - } - .userText { - font-size: 16px; - letter-spacing: -0.018000000000000002em; - &::before { - content: ""; - position: absolute; - top: 17px; - left: 20px; - width: 4px; - height: 17px; - background: linear-gradient(180deg, #8bc2ff 0%, #1e80eb 100%); - border-radius: 3px; - } - } - .userOption { - cursor: pointer; - display: flex; - align-items: center; - .absiluteBox { - margin-right: 15px; - } - } -} -::v-deep .el-date-editor { - width: 135px; -} -.year-middle { - margin: 0 10px; -} -.back-icon { - font-weight: bold; - border: 1px solid red; -} -.backTop { - position: fixed; - right: 35px; - bottom: 30px; - height: 40px; - text-align: center; - line-height: 40px; - width: 40px; - z-index: 100; - background: #fff; - border-radius: 6px; - box-shadow: 0 0 6px rgba(0, 0, 0, 0.12); - color: #409eff; - font-size: 20px; - cursor: pointer; -} -</style>