14 files modified
3 files added
| | |
| | | color: #a8a8a8; |
| | | } |
| | | } |
| | | |
| | | </style> |
| | |
| | | //登录 |
| | | export const Loginto = (params) => { |
| | | return request({ |
| | | url: "/api/blade-auth/oauth/token", |
| | | // url: '/api/blade-auth/oauth/token?tenantId=000000&username=' + params + '&password=21232f297a57a5a743894a0e4a801fc3&grant_type=password&scope=all&type=account', |
| | | // url: "/api/blade-auth/oauth/token", |
| | | url: '/api/blade-auth/oauth/token?tenantId=000000&username=' + params + '&password=94e8cde4612b3fd390677d42e7b22002&grant_type=password&scope=all&type=account', |
| | | method: "post", |
| | | apiKey: true, |
| | | params: { |
| | |
| | | // 考核任务列表 |
| | | export const assessmentTask = (params) => { |
| | | return request({ |
| | | url: "/api/assessment/assessmentTask/list", |
| | | // url: "/api/assessment/assessmentTask/list", |
| | | url: '/api/assessment/assessmentSetAssessor/listByAssessor', |
| | | method: "get", |
| | | apiKey: true, |
| | | params: { |
| | |
| | | }; |
| | | |
| | | |
| | | //进行评分提交 |
| | | export const assessmentScore = (params) => { |
| | | //考核进行评分提交 |
| | | export const assessmentScore = (data) => { |
| | | return request({ |
| | | url: "/api/assessment/assessmentScore/submit", |
| | | method: "post", |
| | | apiKey: true, |
| | | data: { |
| | | ...params, |
| | | }, |
| | | data |
| | | }); |
| | | }; |
| | | // 评优任务列表 |
| | | export const evaluateTask = (params) => { |
| | | return request({ |
| | | url: "/api/evaluate/evaluateTask/taskList/" + params.dept_id + "/" + params.user_id, |
| | | // url: "/api/evaluate/evaluateTask/taskList/" + params.dept_id + "/" + params.user_id, |
| | | url: "/api/evaluate/evaluateCandidateAssessor/listByAssessor", |
| | | method: "get", |
| | | apiKey: true, |
| | | data: { |
| | | params: { |
| | | ...params, |
| | | }, |
| | | }); |
| | |
| | | // 提交评优结果 |
| | | export const evaluateResult = (params) => { |
| | | return request({ |
| | | url: "/api/evaluate/evaluateResult/submit ", |
| | | url: "/api/evaluate/evaluateResult/submit", |
| | | method: "post", |
| | | apiKey: true, |
| | | data: { |
| | |
| | | path: "/login", |
| | | component: () => import("../../views/login/index.vue"), |
| | | }, |
| | | |
| | | //留言 |
| | | { |
| | | path: "/message", |
| | | component: () => import("../../views/message/index.vue"), |
| | | }, |
| | | //添加留言 |
| | | { |
| | | path: "/Addmessage", |
| | | component: () => import("../../views/Addmessage/index.vue"), |
| | | }, |
| | | //评分 |
| | | { |
| | | path: "/examine", |
| | | component: () => import("../../views/examine/index.vue"), |
| | | }, |
| | | //去评分 |
| | | { |
| | | path: "/toexamine", |
| | | component: () => import("../../views/toexamine/index.vue"), |
| | | }, |
| | | // 评优页面 |
| | | { |
| | | path: "/Appraising", |
| | | component: () => import("../../views/Appraising/index.vue"), |
| | | }, |
| | | // 去评优 |
| | | { |
| | | path: "/toAppraising", |
| | | component: () => import("../../views/toAppraising/index.vue"), |
| | | }, |
| | | //员工评优 |
| | | { |
| | | path: '/toAppraisingfirst', |
| | | component: () => import("../../views/toAppraising/toAppraisingfirst.vue"), |
| | | }, |
| | | //部门评优 |
| | | { |
| | | path: '/toAppraisingtwo', |
| | | component: () => import("../../views/toAppraising/toAppraisingtwo.vue"), |
| | | } |
| | | ]; |
| | | |
| | | const router = new VueRouter({ |
| | |
| | | }, |
| | | state: { |
| | | overlayshow: false, |
| | | logintopath: '', |
| | | infoone: { index: 0, num: 0 }, |
| | | }, |
| | | mutations: { |
| | |
| | | reoverlayshow(state) { |
| | | state.overlayshow = false |
| | | }, |
| | | updatelogintopath(state, router) { |
| | | state.logintopath = router |
| | | } |
| | | }, |
| | | getters |
| | | }) |
| | |
| | | >{{item.isEvaluateOk==false?'待完成 ':'已完成'}}</span> |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>评优对象:</span> |
| | | <span>{{item.type == 0 ? "个人" :item.type == 1 ? "部门" :item.type == 2 ? "个人" : ""}}</span> |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>评优级别:</span> |
| | | <span>{{item.type == 0 ? "部门级评优" :item.type == 1 ? "部门评优" :item.type == 2 ? "公司评优" : ""}}</span> |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>评优类别:</span> |
| | | <span>{{item.taskType}}</span> |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>截止日期:</span> |
| | |
| | | <img src="images/notdata.png" /> |
| | | <p>暂无数据</p> |
| | | </div> |
| | | <img src="images/outlogin.png" class="Addmessage" @click="OutLogin()" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { evaluateTask, evaluateTasktop } from "@/api/hfiveget/index.js"; |
| | | import store from "../../store/index"; |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | |
| | | computed: {}, |
| | | created() { |
| | | if (localStorage.getItem("tokensave") == null) { |
| | | this.$router.push("/discrimination"); |
| | | } |
| | | store.commit("updatelogintopath", "/Appraising"); |
| | | if (localStorage.getItem("tokensave") != "111") { |
| | | this.evaluateTaskData(); |
| | | } |
| | |
| | | // 评优任务列表 |
| | | evaluateTaskData() { |
| | | let data = { |
| | | user_id: localStorage.getItem("tokensave"), |
| | | dept_id: localStorage.getItem("dept_id") |
| | | userId: localStorage.getItem("tokensave") |
| | | // dept_id: localStorage.getItem("dept_id") |
| | | }; |
| | | evaluateTask(data).then(res => { |
| | | this.ViewData = res.data.data.records; |
| | | evaluateTasktop(data).then(res_new => { |
| | | res_new.data.data.records.forEach(item => { |
| | | item.type = 2; |
| | | this.ViewData.push(item); |
| | | }); |
| | | this.ViewData.sort((a, b) => { |
| | | if (a.isEvaluateOk && !b.isEvaluateOk) { |
| | | return 1; // a排在b之前 |
| | | } else if (!a.isEvaluateOk && b.isEvaluateOk) { |
| | | return -1; // b排在a之前 |
| | | } else { |
| | | return 0; // 顺序不变 |
| | | if ( |
| | | localStorage.getItem("tokensave") != null && |
| | | localStorage.getItem("tokensave") != "111" |
| | | ) { |
| | | evaluateTask(data).then(res => { |
| | | console.log(res.data.data.records); |
| | | this.ViewData = res.data.data.records; |
| | | this.ViewData = [ |
| | | { |
| | | dept_name: "技术部", |
| | | taskName: "2024年元旦评优", |
| | | type: 0, |
| | | candidateCutoffTime: "2024-01-09", |
| | | isEvaluateOk: false, |
| | | RecommendData: [] |
| | | }, |
| | | { |
| | | dept_name: "技术部", |
| | | taskName: "2024年元旦评优", |
| | | type: 1, |
| | | evaluateCutoffTime: "2024-01-09", |
| | | isEvaluateOk: false, |
| | | RecommendData: [] |
| | | } |
| | | }); |
| | | ]; |
| | | }); |
| | | }); |
| | | } |
| | | }, |
| | | OutLogin() { |
| | | localStorage.clear(); |
| | | setTimeout(() => { |
| | | this.$router.push({ |
| | | path: "/discrimination" |
| | | }); |
| | | }, 1000); |
| | | this.$toast.success("请重新登录"); |
| | | }, |
| | | toAppraising(item) { |
| | | this.$router.push({ |
| | | path: "/toAppraising", |
| | | query: { info: JSON.stringify(item) } |
| | | }); |
| | | if (item.type == 1) { |
| | | this.$router.push({ |
| | | path: "/toAppraisingtwo", |
| | | query: { info: JSON.stringify(item) } |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/toAppraisingfirst", |
| | | query: { info: JSON.stringify(item) } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .Addmessage { |
| | | position: absolute; |
| | | right: 10px; |
| | | bottom: 110px; |
| | | width: 70px; |
| | | height: 70px; |
| | | } |
| | | .Appraising { |
| | | padding: 20px; |
| | | height: 100%; |
| | | height: 100vh; |
| | | overflow: auto; |
| | | background: #f5f5f5; |
| | | .view { |
| | |
| | | <!--查考核--> |
| | | <template> |
| | | <div class="Checkandassess"> |
| | | <div class="view" v-for="(item,index) in ViewData" :key="index"> |
| | | <div class="view" v-for="(item, index) in ViewData" :key="index"> |
| | | <p class="TaskNumber"> |
| | | <span>考核任务编号:{{item.assessmentTaskVO.assessmentNo}}</span> |
| | | <span>考核任务编号:{{ item.assessmentTaskVO.assessmentNo }}</span> |
| | | <span |
| | | :class="item.isAssessmentOk==true?'number':'evaluation'" |
| | | >{{item.isAssessmentOk==true?item.scoreVal:'评估中'}}</span> |
| | | :class="item.scoreVal !=0 ? 'number' : 'evaluation'" |
| | | >{{ item.scoreVal!=0 ? item.scoreVal : "评估中" }}</span> |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>发起日期:</span> |
| | | <span>{{item.assessmentTaskVO.createTime}}</span> |
| | | <span>{{ item.assessmentTaskVO.createTime }}</span> |
| | | </p> |
| | | </div> |
| | | <div class="not" v-show="ViewData.length==0"> |
| | | <div class="not" v-show="ViewData.length == 0"> |
| | | <img src="images/notdata.png" /> |
| | | <p>暂无数据</p> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { listGroupByTask } from "@/api/hfiveget/index.js"; |
| | | export default { |
| | |
| | | }, |
| | | methods: { |
| | | getTaskData() { |
| | | if (localStorage.getItem("tokensave") != "111") { |
| | | if ( |
| | | localStorage.getItem("tokensave") != null && |
| | | localStorage.getItem("tokensave") != "111" |
| | | ) { |
| | | let toUserId = localStorage.getItem("tokensave"); |
| | | listGroupByTask(toUserId).then(res => { |
| | | this.ViewData = res.data.data; |
| | |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | |
| | | <style scoped lang="scss"> |
| | | .Checkandassess { |
| | | padding: 20px; |
| | |
| | | } |
| | | } |
| | | </style> |
| | | |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import store from "../../store/index"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | checkinis: true |
| | | checkinis: true, |
| | | topath: "" |
| | | }; |
| | | }, |
| | | |
| | | computed: {}, |
| | | created() { |
| | | if (localStorage.getItem("tokensave") != null) { |
| | | this.$router.push("/"); |
| | | } |
| | | }, |
| | | // created() { |
| | | // if (localStorage.getItem("tokensave") != null) { |
| | | // this.$router.push("/"); |
| | | // } |
| | | // }, |
| | | // beforeRouteEnter(to, from, next) { |
| | | // // store.commit("updatelogintopath", from.path); |
| | | // }, |
| | | methods: { |
| | | // 身份切换选择 |
| | | checkin(key) { |
| | |
| | | <p class="TaskNumber"> |
| | | <span>考核任务编号:{{item.assessmentTaskVO.assessmentNo}}</span> |
| | | <span |
| | | :class="item.assessmentScoreVO==null?'evaluation':'evaluationget'" |
| | | >{{item.assessmentScoreVO==null?'待完成':'已完成'}}</span> |
| | | :class="item.isAssessmentOk==false?'evaluation':'evaluationget'" |
| | | >{{item.isAssessmentOk==false?'待完成':'已完成'}}</span> |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>考核种类:</span> |
| | |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>考核对象:</span> |
| | | <span>{{item.userId!=undefined?"个人":"部门"}}</span> |
| | | <span>{{item.assessmentTaskVO.type==0?"个人":"部门"}}</span> |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>截止日期:</span> |
| | |
| | | </p> |
| | | <p class="Tasktime"> |
| | | <span>考核任务:</span> |
| | | <span>对({{item.assessmentTaskVO.type==0?item.userName:item.deptName}})进行评分</span> |
| | | <span>对({{item.assessmentTaskVO.type==0?item.assessmentSetVO.deptName+':'+item.assessmentSetVO.userName+'':item.assessmentSetVO.deptName}})进行评分</span> |
| | | </p> |
| | | <van-button @click="toexamine(item)" v-show="item.assessmentScoreVO==null">去评分</van-button> |
| | | <p class="read" v-show="item.assessmentScoreVO!=null" @click="toexamine(item)">查看详情</p> |
| | | <van-button @click="toexamine(item)" v-show="item.isAssessmentOk==false">去评分</van-button> |
| | | <p class="read" v-show="item.isAssessmentOk==true" @click="toexamine(item)">查看详情</p> |
| | | </div> |
| | | </div> |
| | | <div v-show="tabbarindex==1"> |
| | |
| | | assessmentSetDept |
| | | } from "@/api/hfiveget/index.js"; |
| | | import Checkandassess from "../Checkandassess/index.vue"; |
| | | import store from "../../store/index"; |
| | | export default { |
| | | components: { |
| | | Checkandassess |
| | |
| | | mounted() {}, |
| | | computed: {}, |
| | | created() { |
| | | store.commit("updatelogintopath", "/examine"); |
| | | if (localStorage.getItem("tokensave") == null) { |
| | | this.$router.push("/discrimination"); |
| | | } |
| | | this.assessmentTaskData(); |
| | | }, |
| | | methods: { |
| | |
| | | }, |
| | | // 考核任务列表 |
| | | assessmentTaskData() { |
| | | if (localStorage.getItem("tokensave") != "111") { |
| | | if ( |
| | | localStorage.getItem("tokensave") != null && |
| | | localStorage.getItem("tokensave") != "111" |
| | | ) { |
| | | let toUserId = localStorage.getItem("tokensave"); |
| | | assessmentSet({ toUserId: toUserId }).then(res_peo => { |
| | | if (res_peo.data.data.records != undefined) { |
| | | res_peo.data.data.records.forEach(items => { |
| | | if (items.assessmentTaskVO !== null) { |
| | | this.ViewData.push(items); |
| | | } |
| | | if (items.assessmentScoreVO !== null) { |
| | | items.condition = 1; |
| | | } else { |
| | | items.condition = 0; |
| | | } |
| | | }); |
| | | } |
| | | assessmentSetDept({ toUserId: toUserId }).then(res_dept => { |
| | | if (res_dept.data.data.records != undefined) { |
| | | res_dept.data.data.records.forEach(items_dept => { |
| | | if (items_dept.assessmentTaskVO !== null) { |
| | | this.ViewData.push(items_dept); |
| | | } |
| | | if (items_dept.assessmentScoreVO !== null) { |
| | | items_dept.condition = 1; |
| | | } else { |
| | | items_dept.condition = 0; |
| | | } |
| | | }); |
| | | } |
| | | this.ViewData.sort((a, b) => a.condition - b.condition); |
| | | }); |
| | | assessmentTask({ userId: toUserId }).then(res => { |
| | | this.ViewData = res.data.data.records||[]; |
| | | this.ViewData = this.ViewData.sort( |
| | | (a, b) => a.isAssessmentOk - b.isAssessmentOk |
| | | ); |
| | | }); |
| | | } |
| | | }, |
| | |
| | | .Checkandassess { |
| | | overflow: auto; |
| | | box-sizing: border-box; |
| | | height: calc(100% - 60px); |
| | | height: calc(100vh - 60px); |
| | | background: #f5f5f5; |
| | | .view { |
| | | width: 90%; |
| | |
| | | if (localStorage.getItem("Appraising") != null) { |
| | | this.comName = localStorage.getItem("Appraising"); |
| | | } |
| | | if (localStorage.getItem("tokensave") != "111") { |
| | | if ( |
| | | localStorage.getItem("tokensave") != null && |
| | | localStorage.getItem("tokensave") != "111" |
| | | ) { |
| | | let toUserId = localStorage.getItem("tokensave"); |
| | | assessmentSet({ toUserId: toUserId }).then(res_peo => { |
| | | if (res_peo.data.data.records != undefined) { |
| | |
| | | const usernameyeno = /^1[3-9]\d{9}$/.test(key); |
| | | if (usernameyeno == false) { |
| | | this.$toast.fail("用户名错误"); |
| | | return false; |
| | | return true; |
| | | } else { |
| | | return true; |
| | | } |
| | |
| | | phone: this.username, |
| | | code: this.Code |
| | | }; |
| | | Loginto(Data).then(res => { |
| | | Loginto(Data.phone).then(res => { |
| | | if (res.data.code == 400) { |
| | | this.$toast.fail(res.data.msg); |
| | | } else if (res.data.code == 500) { |
| | | this.$toast.fail("登录失败"); |
| | | } else { |
| | | setTimeout(() => { |
| | | this.$router.push("/"); |
| | | this.$router.push(this.$store.state.logintopath); |
| | | }, 1000); |
| | | localStorage.setItem("Appraising", "examine"); |
| | | localStorage.setItem("tokensave", res.data.user_id); //用户id |
| | |
| | | <img src="images/notdata.png" /> |
| | | <p>暂无数据</p> |
| | | </div> |
| | | <img src="images/outlogin.png" class="Addmessage_out" @click="OutLogin()" v-show="!isshownotnm" /> |
| | | <img src="images/outlogin.png" class="Addmessage_out" @click="OutLogin()" /> |
| | | <img src="images/Addmessage.png" class="Addmessage" @click="Addmessage()" /> |
| | | <div class="Stay"> |
| | | <img src="images/jqqd.png" v-show="messageData.length!=0" /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { endpoint, leaveWordslist, leaveWords } from "@/api/hfiveget/index.js"; |
| | | import { ImagePreview } from "vant"; |
| | | import store from "../../store/index"; |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | |
| | | computed: {}, |
| | | created() { |
| | | if (localStorage.getItem("tokensave") == null) { |
| | | this.$router.push("/discrimination"); |
| | | } |
| | | store.commit("updatelogintopath", "/message"); |
| | | this.isshownotnm = |
| | | localStorage.getItem("tokensave") == "111" ? false : true; |
| | | this.getmessagelist(); |
| | | if (localStorage.getItem("tokensave") != null) { |
| | | this.getmessagelist(); |
| | | } |
| | | }, |
| | | mounted() {}, |
| | | methods: { |
| | |
| | | event.target.scrollHeight - |
| | | event.target.scrollTop - |
| | | event.target.clientHeight; |
| | | if (scrollBottom < 1) { |
| | | if (scrollBottom < 200) { |
| | | this.pageswitch.size += 10; |
| | | this.current.current += 1; |
| | | this.getmessagelist(this.pageswitch); |
| | | } |
| | | }, |
| | | // 获取数据 |
| | | getmessagelist() { |
| | | leaveWordslist(this.pageswitch).then(res => { |
| | | this.messageData = res.data.data.records; |
| | | const mergedArray = this.messageData.concat(res.data.data.records); |
| | | this.messageData = mergedArray; |
| | | this.messageData.forEach((item, indexto) => { |
| | | if (item.imageUrls != "") { |
| | | item.imageUrls = item.imageUrls.split(","); |
| | |
| | | .boxliuyan { |
| | | height: 100%; |
| | | overflow: auto; |
| | | padding-bottom: 200px; |
| | | .Stay { |
| | | width: 100%; |
| | | img { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | .Addmessage { |
| | | position: absolute; |
| | |
| | | <template> |
| | | <div class="toAppraising"> |
| | | <div class="Beingevaluated"> |
| | | <p class="title">{{this.poepleinfo.taskName}}</p> |
| | | <p class="title">{{ this.poepleinfo.taskName }}</p> |
| | | <p class="info"> |
| | | <span>所在部门:</span> |
| | | <span>{{ this.poepleinfo.dept_name}}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>评优类别:</span> |
| | | <span>{{this.poepleinfo.taskType}}</span> |
| | | <span>{{ this.poepleinfo.dept_name }}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>评优级别:</span> |
| | | <span>{{this.poepleinfo.type == 0 ? "部门级评优" :this.poepleinfo.type == 1 ? "部门评优" :this.poepleinfo.type == 2 ? "公司评优" : ""}}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>评优标准:</span> |
| | | <span>{{this.poepleinfo.remark}}</span> |
| | | <span> |
| | | {{ |
| | | this.poepleinfo.type == 0 |
| | | ? "部门级评优" |
| | | : this.poepleinfo.type == 1 |
| | | ? "部门评优" |
| | | : this.poepleinfo.type == 2 |
| | | ? "公司评优" |
| | | : "" |
| | | }} |
| | | </span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>截止日期:</span> |
| | | <span>{{this.poepleinfo.type==0?this.poepleinfo.candidateCutoffTime:this.poepleinfo.evaluateCutoffTime}}</span> |
| | | <span> |
| | | {{ |
| | | this.poepleinfo.type == 0 |
| | | ? this.poepleinfo.candidateCutoffTime |
| | | : this.poepleinfo.evaluateCutoffTime |
| | | }} |
| | | </span> |
| | | </p> |
| | | <div v-if="poepleinfo.isEvaluateOk == false"> |
| | | <div class="toin"> |
| | |
| | | v-model="currentValue" |
| | | is-link |
| | | readonly |
| | | :label="this.poepleinfo.type==1?'推荐部门':'推荐人员'" |
| | | :label="this.poepleinfo.type == 1 ? '推荐部门' : '推荐人员'" |
| | | placeholder="请选择" |
| | | @click="showPicker = true" |
| | | class="van-hairline" |
| | |
| | | <p class="Reasons">推荐理由:</p> |
| | | <van-field |
| | | class="van-borderline" |
| | | v-model="toData.remark" |
| | | v-model="remark" |
| | | rows="5" |
| | | type="textarea" |
| | | placeholder="请输入推荐理由..." |
| | | /> |
| | | </div> |
| | | <van-button type="primary" block @click="SubmitTo()" :disabled="disabledsubmit">提交</van-button> |
| | | <van-button type="primary" block @click="SubmitTo()" :disabled="disabledsubmit">确定</van-button> |
| | | </div> |
| | | <div class="showdetails" v-else> |
| | | <p> |
| | | <span class="title">评选{{this.poepleinfo.type==1?"部门":"人"}}:</span> |
| | | <span class="fraction">{{toshow.name}}</span> |
| | | <span class="title">评选{{ this.poepleinfo.type == 1 ? "部门" : "人" }}:</span> |
| | | <span class="fraction">{{ toshow.name }}</span> |
| | | </p> |
| | | <p> |
| | | <span class="title">评选说明:</span> |
| | | <span class="instruct">{{toshow.remark==''?'无':toshow.remark}}</span> |
| | | <span class="instruct"> |
| | | {{ |
| | | toshow.remark == "" ? "无" : toshow.remark |
| | | }} |
| | | </span> |
| | | </p> |
| | | </div> |
| | | </div> |
| | |
| | | </van-popup> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { Picker } from "vant"; |
| | | import { deptlistAll, evaluateResult } from "@/api/hfiveget/index.js"; |
| | |
| | | showPicker: false, |
| | | pickerkey: "", |
| | | currentValue: "", // 用于绑定选择结果的变量 |
| | | columns: [], // 选择器的选项列表 |
| | | poepleinfo: { type: -1 }, |
| | | remark: "", //推荐理由 |
| | | columns: ["张三", "李四", "王五"], // 选择器的选项列表 |
| | | poepleinfo: {}, |
| | | toData: {}, |
| | | toshow: {}, |
| | | disabledsubmit: false |
| | |
| | | }, |
| | | created() { |
| | | this.poepleinfo = JSON.parse(this.$route.query.info); |
| | | this.toData.scoreUserId = localStorage.getItem("tokensave"); |
| | | this.toData.evaluateTaskId = this.poepleinfo.id; //任务id |
| | | this.toData.type = this.poepleinfo.type; |
| | | this.poepleinfo.dept_name = localStorage.getItem("dept_name"); |
| | | // 部门候选人评定进行选择 |
| | | if (this.poepleinfo.type == 0 || this.poepleinfo.type == 2) { |
| | | if (this.poepleinfo.type == 0) { |
| | | let index = this.poepleinfo.selfCandidate.findIndex( |
| | | item => item.id === localStorage.getItem("tokensave") |
| | | ); |
| | | if (index !== -1) { |
| | | this.poepleinfo.selfCandidate.splice(index, 1); |
| | | } |
| | | } |
| | | this.pickerkey = "name"; |
| | | this.columns = this.poepleinfo.selfCandidate; |
| | | if (this.poepleinfo.isEvaluateOk == true) { |
| | | this.columns.forEach(item => { |
| | | if (item.id == this.poepleinfo.evaluateResultVO.beId) { |
| | | this.toshow = { |
| | | name: item.name, |
| | | remark: this.poepleinfo.evaluateResultVO.remark |
| | | }; |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | //对部门进行选择评优 |
| | | else if (this.poepleinfo.type == 1) { |
| | | deptlistAll().then(res => { |
| | | this.pickerkey = "deptName"; |
| | | this.columns = res.data.data; |
| | | if (this.poepleinfo.isEvaluateOk == true) { |
| | | this.columns.forEach(item => { |
| | | if (item.id == this.poepleinfo.evaluateResultVO.beId) { |
| | | this.toshow = { |
| | | name: item.deptName, |
| | | remark: this.poepleinfo.evaluateResultVO.remark |
| | | }; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | console.log(this.poepleinfo); |
| | | }, |
| | | methods: { |
| | | onConfirm(select) { |
| | | // 选择评选人或评选部门 |
| | | if (this.pickerkey == "deptName") { |
| | | this.currentValue = select.deptName; |
| | | } else if (this.pickerkey == "name") { |
| | | this.currentValue = select.name; |
| | | } |
| | | this.toData.beId = select.id; |
| | | this.currentValue = select; |
| | | this.showPicker = false; |
| | | this.poepleinfo.RecommendData.forEach(element => { |
| | | if (element.efereename == select) { |
| | | this.$toast.fail("该人员已推荐"); |
| | | this.currentValue = ""; |
| | | } |
| | | }); |
| | | }, |
| | | //提交 |
| | | SubmitTo() { |
| | | if (this.toData.beId == undefined) { |
| | | if (this.currentValue == "") { |
| | | this.$toast.fail( |
| | | this.poepleinfo.type == 1 ? "请选择推荐部门" : "请选择推荐人员" |
| | | ); |
| | | } else if (this.toData.remark == undefined || this.toData.remark == "") { |
| | | } else if (this.remark == "") { |
| | | this.$toast.fail("请输入推荐理由"); |
| | | } else { |
| | | this.disabledsubmit = true; |
| | | evaluateResult(this.toData).then(res => { |
| | | setTimeout(() => { |
| | | this.$router.push("/"); |
| | | }, 1000); |
| | | this.$toast.success("评选完成"); |
| | | this.poepleinfo.RecommendData.push({ |
| | | remark: this.remark, |
| | | efereename: this.currentValue |
| | | }); |
| | | setTimeout(() => { |
| | | this.$router.push({ |
| | | path: "/toAppraisingfirst", |
| | | query: { info: JSON.stringify(this.poepleinfo) } |
| | | }); |
| | | }, 1000); |
| | | this.$toast.success("推荐成功"); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | |
| | | <style scoped lang="scss"> |
| | | .toAppraising { |
| | | padding: 20px; |
| | |
| | | } |
| | | } |
| | | </style> |
| | | |
| New file |
| | |
| | | <!--去评优--> |
| | | <template> |
| | | <div class="toAppraising"> |
| | | <div class="Beingevaluated"> |
| | | <p class="title">{{this.poepleinfo.taskName}}</p> |
| | | <p class="info"> |
| | | <span>所在部门:</span> |
| | | <span>{{ this.poepleinfo.dept_name}}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>评优级别:</span> |
| | | <span>{{this.poepleinfo.type == 0 ? "部门级评优" :this.poepleinfo.type == 1 ? "部门评优" :this.poepleinfo.type == 2 ? "公司评优" : ""}}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>截止日期:</span> |
| | | <span>{{this.poepleinfo.type==0?this.poepleinfo.candidateCutoffTime:this.poepleinfo.evaluateCutoffTime}}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>说明:</span> |
| | | <table border="1" align="center" bordercolor="gray"> |
| | | <thead> |
| | | <tr> |
| | | <th>类别</th> |
| | | <th>认定标准</th> |
| | | <th>名额</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | <tr> |
| | | <td>优秀先锋</td> |
| | | <td>优秀技术人员</td> |
| | | <td>2</td> |
| | | </tr> |
| | | <tr> |
| | | <td>优秀经理</td> |
| | | <td>优秀部门领导</td> |
| | | <td>1</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </p> |
| | | <p class="info"> |
| | | <span class="tuijian">推荐人员:<van-button type="primary" block @click="Gotovote()" >添加推荐人员</van-button></span> |
| | | <table border="1" align="center" bordercolor="gray" class="tuijiaantable"> |
| | | <thead> |
| | | <tr> |
| | | <th>姓名</th> |
| | | <th>评选理由</th> |
| | | <th>操作</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | <tr v-for="(item,index) of this.poepleinfo.RecommendData" :key="index"> |
| | | <td>{{item.efereename}}</td> |
| | | <td>{{item.remark}}</td> |
| | | <td><van-button type="danger" size="mini" @click="deleteRecommend(index)">删除</van-button></td> |
| | | </tr> |
| | | <tr v-show="this.poepleinfo.RecommendData.length==0"> |
| | | <td colspan="3">暂无数据</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </p> |
| | | <div> |
| | | <van-button type="primary" block @click="SubmitTo()">提交</van-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { Picker } from "vant"; |
| | | import { deptlistAll, evaluateResult } from "@/api/hfiveget/index.js"; |
| | | import store from "../../store/index"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | infoData:JSON.parse(this.$route.query.info) |
| | | }; |
| | | }, |
| | | computed:{ |
| | | poepleinfo(){ |
| | | return this.infoData |
| | | } |
| | | }, |
| | | mounted() { |
| | | localStorage.setItem("Appraising", "Appraising"); |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | //添加推荐人员 |
| | | Gotovote() { |
| | | this.$router.push({ |
| | | path: "/toAppraising", |
| | | query: { info: JSON.stringify(this.poepleinfo) } |
| | | }); |
| | | }, |
| | | //删除推荐人员 |
| | | deleteRecommend(index){ |
| | | this.infoData.RecommendData.splice(index,1) |
| | | }, |
| | | //提交 |
| | | SubmitTo(){ |
| | | console.log(this.infoData) |
| | | this.$router.push({ |
| | | path: "/Appraising", |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .toAppraising { |
| | | padding: 20px; |
| | | height: 100vh; |
| | | overflow: auto; |
| | | background: #f5f5f5; |
| | | .Beingevaluated { |
| | | background: white; |
| | | padding: 20px; |
| | | height: 100%; |
| | | .title { |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | line-height: 35px; |
| | | } |
| | | .info { |
| | | font-size: 16px; |
| | | line-height: 30px; |
| | | span:nth-child(1) { |
| | | color: #8894a8; |
| | | } |
| | | span:nth-child(2) { |
| | | color: #313d51; |
| | | } |
| | | table{ |
| | | width: 100%; |
| | | margin: 3px 0px 20px; |
| | | font-weight: none; |
| | | font-size: 16px; |
| | | color: #313d51; |
| | | border-collapse: collapse; |
| | | text-align: center; |
| | | tr{ |
| | | height: 50px; |
| | | } |
| | | } |
| | | .tuijiaantable{ |
| | | margin: 10px 0px 20px; |
| | | .van-button{ |
| | | background: red; |
| | | height: 30px; |
| | | margin:0px; |
| | | width: 50px; |
| | | .van-button__text{ |
| | | color: white; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | } |
| | | } |
| | | .tuijian{ |
| | | display: flex; |
| | | align-items: center; |
| | | .van-button{ |
| | | display: inline; |
| | | margin: 0; |
| | | padding: 0; |
| | | width: 110px; |
| | | background: green; |
| | | height: 32px; |
| | | font-size: 14px; |
| | | .van-button__text{ |
| | | color: white; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | .toin { |
| | | margin-top: 20px; |
| | | [class*="van-hairline"]::after { |
| | | border: none; |
| | | } |
| | | .van-field { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | padding: 10px 0px; |
| | | } |
| | | .Reasons { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | color: #646566; |
| | | margin-bottom: 10px; |
| | | } |
| | | .van-borderline { |
| | | border: 1px solid #dee1e7; |
| | | font-weight: 100; |
| | | border-radius: 8px; |
| | | padding: 5px; |
| | | } |
| | | } |
| | | .van-button { |
| | | margin: 30px 0px 0px auto; |
| | | width: 120px; |
| | | color: white; |
| | | font-size: 20px; |
| | | align-items: center; |
| | | text-align: center; |
| | | justify-content: center; |
| | | background: linear-gradient(163deg, #01bdfc 0%, #017bfc 100%); |
| | | border-radius: 8px; |
| | | } |
| | | .showdetails { |
| | | margin-top: 20px; |
| | | p { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .title { |
| | | font-size: 16px; |
| | | color: #8894a8; |
| | | } |
| | | .fraction { |
| | | font-size: 18px; |
| | | text-align: center; |
| | | line-height: 30px; |
| | | } |
| | | .instruct { |
| | | font-size: 18px; |
| | | text-align: center; |
| | | line-height: 30px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | |
| New file |
| | |
| | | <!--去评优--> |
| | | <template> |
| | | <div class="toAppraising"> |
| | | <div class="Beingevaluated"> |
| | | <p class="title">{{this.poepleinfo.taskName}}</p> |
| | | <p class="info"> |
| | | <span>所在部门:</span> |
| | | <span>{{ this.poepleinfo.dept_name}}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>评优级别:</span> |
| | | <span>{{this.poepleinfo.type == 0 ? "部门级评优" :this.poepleinfo.type == 1 ? "部门评优" :this.poepleinfo.type == 2 ? "公司评优" : ""}}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>截止日期:</span> |
| | | <span>{{this.poepleinfo.type==0?this.poepleinfo.candidateCutoffTime:this.poepleinfo.evaluateCutoffTime}}</span> |
| | | </p> |
| | | <p class="info"> |
| | | <span>推荐部门:</span> |
| | | <span> |
| | | <van-checkbox-group v-model="checked" shape="square" direction="horizontal"> |
| | | <van-checkbox :name="item" v-for="item in deptData" :key="item" class="vantitle"> |
| | | <span>{{item}}</span> |
| | | </van-checkbox> |
| | | </van-checkbox-group> |
| | | </span> |
| | | </p> |
| | | <div> |
| | | <van-button type="primary" block @click="SubmitTo()">提交</van-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { Picker } from "vant"; |
| | | import { deptlistAll, evaluateResult } from "@/api/hfiveget/index.js"; |
| | | import store from "../../store/index"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | checked: [], |
| | | deptData: ["技术部", "人事部", "财务部", "总经办"], |
| | | infoData: JSON.parse(this.$route.query.info) |
| | | }; |
| | | }, |
| | | computed: { |
| | | poepleinfo() { |
| | | return this.infoData; |
| | | } |
| | | }, |
| | | mounted() { |
| | | localStorage.setItem("Appraising", "Appraising"); |
| | | }, |
| | | created() {}, |
| | | methods: { |
| | | //提交 |
| | | SubmitTo() { |
| | | this.$router.push({ |
| | | path: "/Appraising" |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .toAppraising { |
| | | padding: 20px; |
| | | height: 100vh; |
| | | overflow: auto; |
| | | background: #f5f5f5; |
| | | .Beingevaluated { |
| | | background: white; |
| | | padding: 20px; |
| | | height: 100%; |
| | | .title { |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | line-height: 35px; |
| | | } |
| | | .info { |
| | | font-size: 16px; |
| | | line-height: 30px; |
| | | span:nth-child(1) { |
| | | color: #8894a8; |
| | | } |
| | | span:nth-child(2) { |
| | | color: #313d51; |
| | | } |
| | | .van-checkbox-group { |
| | | .van-checkbox { |
| | | margin: 4px 10px 4px 0px; |
| | | span { |
| | | margin-left: -4px; |
| | | } |
| | | } |
| | | } |
| | | .van-checkbox__label { |
| | | margin-left: 0px; |
| | | } |
| | | table { |
| | | width: 100%; |
| | | margin: 3px 0px 20px; |
| | | font-weight: none; |
| | | font-size: 16px; |
| | | color: #313d51; |
| | | border-collapse: collapse; |
| | | text-align: center; |
| | | tr { |
| | | height: 50px; |
| | | } |
| | | } |
| | | .tuijiaantable { |
| | | margin: 10px 0px 20px; |
| | | .van-button { |
| | | background: red; |
| | | height: 30px; |
| | | margin: 0px; |
| | | width: 50px; |
| | | .van-button__text { |
| | | color: white; |
| | | font-size: 14px; |
| | | } |
| | | } |
| | | } |
| | | .tuijian { |
| | | display: flex; |
| | | align-items: center; |
| | | .van-button { |
| | | display: inline; |
| | | margin: 0; |
| | | padding: 0; |
| | | width: 110px; |
| | | background: green; |
| | | height: 32px; |
| | | font-size: 14px; |
| | | .van-button__text { |
| | | color: white; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .toin { |
| | | margin-top: 20px; |
| | | [class*="van-hairline"]::after { |
| | | border: none; |
| | | } |
| | | .van-field { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | padding: 10px 0px; |
| | | } |
| | | .Reasons { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | color: #646566; |
| | | margin-bottom: 10px; |
| | | } |
| | | .van-borderline { |
| | | border: 1px solid #dee1e7; |
| | | font-weight: 100; |
| | | border-radius: 8px; |
| | | padding: 5px; |
| | | } |
| | | } |
| | | .van-button { |
| | | margin: 30px 0px 0px auto; |
| | | width: 120px; |
| | | color: white; |
| | | font-size: 20px; |
| | | align-items: center; |
| | | text-align: center; |
| | | justify-content: center; |
| | | background: linear-gradient(163deg, #01bdfc 0%, #017bfc 100%); |
| | | border-radius: 8px; |
| | | } |
| | | .showdetails { |
| | | margin-top: 20px; |
| | | p { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .title { |
| | | font-size: 16px; |
| | | color: #8894a8; |
| | | } |
| | | .fraction { |
| | | font-size: 18px; |
| | | text-align: center; |
| | | line-height: 30px; |
| | | } |
| | | .instruct { |
| | | font-size: 18px; |
| | | text-align: center; |
| | | line-height: 30px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | |
| | |
| | | /> |
| | | </div> |
| | | <div class="Info"> |
| | | <p v-show="this.poepleinfo.userId!=undefined"> |
| | | <p v-show="this.poepleinfo.assessmentTaskVO.type==0"> |
| | | <span>被考核人:</span> |
| | | <span>{{this.poepleinfo.userName}}</span> |
| | | <span>{{this.poepleinfo.assessmentSetVO.userName}}</span> |
| | | </p> |
| | | <p v-show="this.poepleinfo.userId==undefined"> |
| | | <p v-show="this.poepleinfo.assessmentTaskVO.type==1"> |
| | | <span>被考核部门:</span> |
| | | <span>{{this.poepleinfo.deptName}}</span> |
| | | <span>{{this.poepleinfo.assessmentSetVO.deptName}}</span> |
| | | </p> |
| | | <p v-show="this.poepleinfo.userId!=undefined"> |
| | | <p v-show="this.poepleinfo.assessmentTaskVO.type==0"> |
| | | <span>所在部门:</span> |
| | | <span>{{this.poepleinfo.deptName}}</span> |
| | | <span>{{this.poepleinfo.assessmentSetVO.deptName}}</span> |
| | | </p> |
| | | <p v-show="this.poepleinfo.userId!=undefined"> |
| | | <p v-show="this.poepleinfo.assessmentTaskVO.type==0"> |
| | | <span>职务:</span> |
| | | <span>{{this.poepleinfo.postName}}</span> |
| | | <span>{{this.poepleinfo.assessmentSetVO.postName}}</span> |
| | | </p> |
| | | <!-- <p v-show="this.poepleinfo.userId!=undefined"> |
| | | <span>人员类型:</span> |
| | | <span>经营</span> |
| | | </p> |
| | | <p v-show="this.poepleinfo.userId!=undefined"> |
| | | <span>合伙人级别:</span> |
| | | <span>重要合伙人</span> |
| | | </p>--> |
| | | </div> |
| | | <p class="illustrate">说明:对当前评分,权重占{{this.poepleinfo.weight}}%,评分范围(100分制)±50</p> |
| | | <div v-if="this.poepleinfo.assessmentScoreVO==null" class="todetails"> |
| | | <p class="illustrate">说明:对当前评分,权重占{{this.poepleinfo.weight}}%,评分范围(100分制)±50</p> |
| | | <div v-if="this.poepleinfo.isAssessmentOk==false" class="todetails"> |
| | | <p class="title">评分</p> |
| | | <van-field |
| | | v-model="score" |
| | |
| | | <van-field v-model="instructions" rows="3" type="textarea" placeholder="请描述" /> |
| | | <van-button type="primary" block @click="submit()" :disabled="disabledsubmit">提交</van-button> |
| | | </div> |
| | | <div v-if="this.poepleinfo.assessmentScoreVO!=null" class="showdetails"> |
| | | <div v-if="this.poepleinfo.isAssessmentOk==true" class="showdetails"> |
| | | <p> |
| | | <span class="title">评分值:</span> |
| | | <span class="fraction">{{this.poepleinfo.assessmentScoreVO.scoreVal}}</span> |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | poepleinfo: { |
| | | name: this.$route.query.name |
| | | }, |
| | | poepleinfo: {}, |
| | | score: null, |
| | | show: false, |
| | | instructions: "", |
| | |
| | | } else if (parseFloat(this.score) < 50) { |
| | | this.$toast.fail("低于评分范围"); |
| | | } else { |
| | | if (this.poepleinfo.userId != undefined) { |
| | | beId = this.poepleinfo.userId; |
| | | if (this.poepleinfo.assessmentTaskVO.type == 0) { |
| | | beId = this.poepleinfo.assessmentSetVO.userId; |
| | | } else { |
| | | beId = this.poepleinfo.deptId; |
| | | beId = this.poepleinfo.assessmentSetVO.deptId; |
| | | } |
| | | let Data = { |
| | | scoreUserId: localStorage.getItem("tokensave"), |
| | |
| | | type: this.poepleinfo.assessmentTaskVO.type, |
| | | assessmentTaskId: this.poepleinfo.assessmentTaskVO.id, |
| | | beId: beId, |
| | | weight: this.poepleinfo.weight, |
| | | rangeVal: this.poepleinfo.rangeVal |
| | | weight: this.poepleinfo.weight |
| | | }; |
| | | if (Data.scoreVal == "") { |
| | | this.$toast.fail("请输入评分"); |
| | |
| | | this.disabledsubmit = true; |
| | | assessmentScore(Data).then(res => { |
| | | setTimeout(() => { |
| | | this.$router.push("/"); |
| | | this.$router.push("/examine"); |
| | | }, 1000); |
| | | this.$toast.success("评分成功"); |
| | | }); |
| | |
| | | proxy: { |
| | | "/api": { |
| | | // target用于配置你允许访问数据的计算机名称,即是你的api接口的服务器地址 |
| | | // target: "http://127.0.0.1", |
| | | target: "http://127.0.0.1:8111", |
| | | // target: "https://132v69t077.yicp.fun", |
| | | target: "http://139.196.94.172:8111", |
| | | // target: "http://139.196.94.172:8111", |
| | | // target: 'http://192.168.1.83:2888', |
| | | changeOrigin: true, |
| | | pathRewrite: { |
| | | "^/api": "/" |