15179599649
2024-01-04 0cc01c2e0ca79fe901151b83d14eae32463d8f0a
'完善考核模块'
14 files modified
3 files added
909 ■■■■ changed files
public/images/jqqd.png patch | view | raw | blame | history
src/App.vue 1 ●●●● patch | view | raw | blame | history
src/api/hfiveget/index.js 22 ●●●● patch | view | raw | blame | history
src/router/page/index.js 26 ●●●●● patch | view | raw | blame | history
src/store/index.js 4 ●●●● patch | view | raw | blame | history
src/views/Appraising/index.vue 92 ●●●●● patch | view | raw | blame | history
src/views/Checkandassess/index.vue 22 ●●●● patch | view | raw | blame | history
src/views/discrimination/index.vue 17 ●●●●● patch | view | raw | blame | history
src/views/examine/index.vue 57 ●●●●● patch | view | raw | blame | history
src/views/layout/index.vue 5 ●●●● patch | view | raw | blame | history
src/views/login/index.vue 6 ●●●● patch | view | raw | blame | history
src/views/message/index.vue 28 ●●●● patch | view | raw | blame | history
src/views/toAppraising/index.vue 136 ●●●●● patch | view | raw | blame | history
src/views/toAppraising/toAppraisingfirst.vue 241 ●●●●● patch | view | raw | blame | history
src/views/toAppraising/toAppraisingtwo.vue 202 ●●●●● patch | view | raw | blame | history
src/views/toexamine/index.vue 45 ●●●●● patch | view | raw | blame | history
vue.config.js 5 ●●●●● patch | view | raw | blame | history
public/images/jqqd.png
src/App.vue
@@ -45,4 +45,5 @@
    color: #a8a8a8;
  }
}
</style>
src/api/hfiveget/index.js
@@ -25,8 +25,8 @@
//登录
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: {
@@ -38,7 +38,8 @@
// 考核任务列表
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: {
@@ -82,24 +83,23 @@
};
//进行评分提交
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,
        },
    });
@@ -120,7 +120,7 @@
// 提交评优结果
export const evaluateResult = (params) => {
    return request({
        url: "/api/evaluate/evaluateResult/submit ",
        url: "/api/evaluate/evaluateResult/submit",
        method: "post",
        apiKey: true,
        data: {
src/router/page/index.js
@@ -27,22 +27,46 @@
    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({
src/store/index.js
@@ -13,6 +13,7 @@
    },
    state: {
        overlayshow: false,
        logintopath: '',
        infoone: { index: 0, num: 0 },
    },
    mutations: {
@@ -22,6 +23,9 @@
        reoverlayshow(state) {
            state.overlayshow = false
        },
        updatelogintopath(state, router) {
            state.logintopath = router
        }
    },
    getters
})
src/views/Appraising/index.vue
@@ -9,16 +9,8 @@
        >{{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>
@@ -31,11 +23,13 @@
      <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 {
@@ -45,6 +39,10 @@
  computed: {},
  created() {
    if (localStorage.getItem("tokensave") == null) {
      this.$router.push("/discrimination");
    }
    store.commit("updatelogintopath", "/Appraising");
    if (localStorage.getItem("tokensave") != "111") {
      this.evaluateTaskData();
    }
@@ -54,42 +52,74 @@
    // 评优任务列表
    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 {
src/views/Checkandassess/index.vue
@@ -1,25 +1,25 @@
<!--查考核-->
<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 {
@@ -35,7 +35,10 @@
  },
  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;
@@ -45,7 +48,7 @@
  }
};
</script>
<style scoped lang="scss">
.Checkandassess {
  padding: 20px;
@@ -101,4 +104,3 @@
  }
}
</style>
src/views/discrimination/index.vue
@@ -23,19 +23,24 @@
</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) {
src/views/examine/index.vue
@@ -17,8 +17,8 @@
          <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>
@@ -26,7 +26,7 @@
          </p>
          <p class="Tasktime">
            <span>考核对象:</span>
            <span>{{item.userId!=undefined?"个人":"部门"}}</span>
            <span>{{item.assessmentTaskVO.type==0?"个人":"部门"}}</span>
          </p>
          <p class="Tasktime">
            <span>截止日期:</span>
@@ -34,10 +34,10 @@
          </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">
@@ -60,6 +60,7 @@
  assessmentSetDept
} from "@/api/hfiveget/index.js";
import Checkandassess from "../Checkandassess/index.vue";
import store from "../../store/index";
export default {
  components: {
    Checkandassess
@@ -73,6 +74,10 @@
  mounted() {},
  computed: {},
  created() {
    store.commit("updatelogintopath", "/examine");
    if (localStorage.getItem("tokensave") == null) {
      this.$router.push("/discrimination");
    }
    this.assessmentTaskData();
  },
  methods: {
@@ -90,36 +95,16 @@
    },
    // 考核任务列表
    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
          );
        });
      }
    },
@@ -172,7 +157,7 @@
.Checkandassess {
  overflow: auto;
  box-sizing: border-box;
  height: calc(100% - 60px);
  height: calc(100vh - 60px);
  background: #f5f5f5;
  .view {
    width: 90%;
src/views/layout/index.vue
@@ -129,7 +129,10 @@
    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) {
src/views/login/index.vue
@@ -53,7 +53,7 @@
      const usernameyeno = /^1[3-9]\d{9}$/.test(key);
      if (usernameyeno == false) {
        this.$toast.fail("用户名错误");
        return false;
        return true;
      } else {
        return true;
      }
@@ -98,14 +98,14 @@
          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
src/views/message/index.vue
@@ -66,14 +66,18 @@
      <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 {
@@ -85,9 +89,15 @@
  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: {
@@ -96,14 +106,17 @@
        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(",");
@@ -215,7 +228,12 @@
.boxliuyan {
  height: 100%;
  overflow: auto;
  padding-bottom: 200px;
  .Stay {
    width: 100%;
    img {
      width: 100%;
    }
  }
}
.Addmessage {
  position: absolute;
src/views/toAppraising/index.vue
@@ -2,26 +2,34 @@
<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">
@@ -29,7 +37,7 @@
            v-model="currentValue"
            is-link
            readonly
            :label="this.poepleinfo.type==1?'推荐部门':'推荐人员'"
            :label="this.poepleinfo.type == 1 ? '推荐部门' : '推荐人员'"
            placeholder="请选择"
            @click="showPicker = true"
            class="van-hairline"
@@ -37,22 +45,26 @@
          <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>
@@ -68,7 +80,7 @@
    </van-popup>
  </div>
</template>
<script>
import { Picker } from "vant";
import { deptlistAll, evaluateResult } from "@/api/hfiveget/index.js";
@@ -79,8 +91,9 @@
      showPicker: false,
      pickerkey: "",
      currentValue: "", // 用于绑定选择结果的变量
      columns: [], // 选择器的选项列表
      poepleinfo: { type: -1 },
      remark: "", //推荐理由
      columns: ["张三", "李四", "王五"], // 选择器的选项列表
      poepleinfo: {},
      toData: {},
      toshow: {},
      disabledsubmit: false
@@ -92,84 +105,46 @@
  },
  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;
@@ -254,4 +229,3 @@
  }
}
</style>
src/views/toAppraising/toAppraisingfirst.vue
New file
@@ -0,0 +1,241 @@
<!--去评优-->
<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>
src/views/toAppraising/toAppraisingtwo.vue
New file
@@ -0,0 +1,202 @@
<!--去评优-->
<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>
src/views/toexamine/index.vue
@@ -7,33 +7,25 @@
      />
    </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"
@@ -47,7 +39,7 @@
      <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>
@@ -68,9 +60,7 @@
export default {
  data() {
    return {
      poepleinfo: {
        name: this.$route.query.name
      },
      poepleinfo: {},
      score: null,
      show: false,
      instructions: "",
@@ -92,10 +82,10 @@
      } 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"),
@@ -104,8 +94,7 @@
          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("请输入评分");
@@ -115,7 +104,7 @@
          this.disabledsubmit = true;
          assessmentScore(Data).then(res => {
            setTimeout(() => {
              this.$router.push("/");
              this.$router.push("/examine");
            }, 1000);
            this.$toast.success("评分成功");
          });
vue.config.js
@@ -127,9 +127,10 @@
    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": "/"