coys 2 년 전
부모
커밋
c54c990da9
4개의 변경된 파일539개의 추가작업 그리고 2개의 파일을 삭제
  1. 2 2
      .env.development
  2. 27 0
      src/api/core/evalulateTask.js
  3. 244 0
      src/views/resumption/evaluatePlan/editPlanEvaluate.vue
  4. 266 0
      src/views/resumption/evaluatePlan/index.vue

+ 2 - 2
.env.development

@@ -10,11 +10,11 @@ ENV = 'development'
 #罗俊
 #VUE_APP_BASE_API = 'http://10.87.10.49:8080'
 #罗伟
-#VUE_APP_BASE_API = 'http://10.87.10.47:8080'
+VUE_APP_BASE_API = 'http://10.87.10.47:8080'
 #高雄
 #VUE_APP_BASE_API = 'http://10.87.11.94:8080'
 #dev
-VUE_APP_BASE_API = 'http://10.87.10.55:8080'
+# VUE_APP_BASE_API = 'http://10.87.10.55:8080'
 #贾武先
 #VUE_APP_BASE_API = 'http://10.87.10.42:8080'
 #景远超

+ 27 - 0
src/api/core/evalulateTask.js

@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+// 查询评价列表
+export function getEvaluatePage(query) {
+  return request({
+    url: '/core/task/list',
+    method: 'get',
+    params: query
+  })
+}
+// 获取详情
+export function getEvaluateById(id) {
+  return request({
+    url: `/core/task/${id}`,
+    method: 'get',
+    
+  })
+}
+// 修改
+export function editEvaluate(data) {
+  return request({
+    url: `/core/task`,
+    method: 'put',
+    data
+  })
+}
+

+ 244 - 0
src/views/resumption/evaluatePlan/editPlanEvaluate.vue

@@ -0,0 +1,244 @@
+<template>
+  <div class="rule-type">
+    <DialogCom
+      @colse="onHide"
+      :title="`外包评价${isEvaluate ? '查看' : '评价'}`"
+      :visible.sync="isShow"
+      width="1500px"
+    >
+      <!-- :visible.sync="isShow" -->
+      <div class="page-body">
+        <el-form
+          :model="formData"
+          size="small"
+          ref="form"
+          label-position="right"
+          label-width="130px"
+          label-prefix=":"
+        >
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="外包评价名称:">
+                {{ formData.evaluateName }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="评价机构:">
+                {{ formData.orgName }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="评价计划时间:">
+                {{ formData.startTime + "-" }}{{ formData.endTime }}
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="评价人:">
+                {{ formData.evaluateBy }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="评价时间:">
+                {{ formData.completeTime }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="状态:">
+                {{ formData.status | filterStatus }}
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="评价周期:">
+                {{ formData.evaluateCycle }}
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+
+        <!-- tableData -->
+        <div class="line_box">
+          <div class="line"></div>
+          <div class="titleEvaluate">评价内容</div>
+        </div>
+
+        <el-form label-width="130px">
+          <el-row v-for="(item, index) in tableData" :key="item.id">
+            <el-col :span="24">
+              <el-form-item
+                class="formItemTitle"
+                :label="`${index + 1}.${item.content}`"
+              >
+              </el-form-item>
+            </el-col>
+            <!-- 文本 -->
+            <el-col :span="24" v-if="item.contentType == 1">
+              <el-form-item label=" ">
+                <el-input
+                  type="textarea"
+                  :rows="2"
+                  :disabled="isEvaluate=='1'"
+                  placeholder="请输入内容"
+                  v-model="item.score"
+                >
+                </el-input>
+              </el-form-item>
+            </el-col>
+            <!-- 评分 -->
+            <el-col :span="24" v-else>
+              <el-form-item label=" ">
+                <el-rate
+                  :max="10"
+                  :disabled="isEvaluate=='1'"
+                  v-model="item.score"
+                  text-color="#ff9900"
+                  show-score
+                  score-template="{value}星"
+                ></el-rate>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHide">取消</el-button>
+        <el-button type="primary" @click="onSubmit" v-if="isEvaluate=='0'">确定</el-button>
+      </div>
+    </DialogCom>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+import { getEvaluateById,editEvaluate } from "@/api/core/evalulateTask.js";
+export default {
+  data() {
+    return {
+      isEvaluate: "",
+      tableData: [],
+      id: null,
+      isShow: false,
+      formData: {},
+    };
+  },
+
+  filters: {
+    filterStatus(val) {
+      switch (val) {
+        case "0":
+          return "待完成";
+          break;
+        case "1":
+          return "进行中";
+          break;
+        case "2":
+          return "已完成";
+          break;
+        case "3":
+          return "已超期";
+          break;
+      }
+    },
+  },
+  computed: {
+    ...mapGetters(["orgId", "orgName"]),
+  },
+  mounted() {},
+
+  methods: {
+    async show(id = "", isEvaluate) {
+      this.id = id;
+      this.tableData = [];
+      this.isEvaluate = isEvaluate+'';
+
+      // isEvaluate 1 查看 0 评价
+
+      await getEvaluateById(id).then((res) => {
+        let { code, msg, data } = res;
+        if (code == 200) {
+          Object.assign(this.formData, data);
+
+          this.tableData = data.coreEvaluateContentList;
+          delete this.formData.coreEvaluateContentList;
+        } else {
+          this.$message.error(msg);
+        }
+      });
+
+      this.isShow = true;
+    },
+
+    // 事件
+    onHide() {
+      this.$refs.form.resetFields();
+      this.isShow = false;
+      this.formData = {};
+
+      this.tableData = [];
+    },
+
+    onSubmit() {
+      console.log(this.tableData);
+      let falg = false;
+      this.tableData.forEach((item) => {
+        if (!item.score) {
+          falg = true;
+        }
+      });
+      if(falg){
+        return this.$message.error('存在未评价的项,请检查!')
+      }
+      let obj = {
+        id: this.formData.id,
+        coreEvaluateTaskContentList: this.tableData,
+      };
+      editEvaluate(obj).then(res=>{
+        let {code}=res
+        if(code==200){
+
+          this.$emit('success')
+          this.onHide()
+        }
+      })
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.brand_info {
+  .el-form {
+    width: 600px;
+    padding-top: 40px;
+  }
+}
+.line_box {
+  display: flex;
+  height: 20px;
+  .titleEvaluate {
+    color: #008cd6;
+    vertical-align: middle;
+  }
+  .line {
+    height: 100%;
+    width: 4px;
+    margin-right: 10px;
+    background-color: #008cd6;
+  }
+}
+::v-deep.formItemTitle {
+  .el-form-item__label {
+    font-size: 20px !important;
+    color: black;
+  }
+}
+.form-item-comment {
+  font-size: 12px;
+  color: #999;
+  height: 10px;
+}
+</style>

+ 266 - 0
src/views/resumption/evaluatePlan/index.vue

@@ -0,0 +1,266 @@
+<template>
+  <div class="app-container">
+    <layoutCom>
+      <org-tree
+        slot="leftBar"
+        v-model="queryParams.orgId"
+        @defaultKey="getDefaultKey"
+        @checkChange="checkChange"
+        @click="clickTreeNode"
+      ></org-tree>
+      <el-row slot="rightBar">
+        <!--用户数据-->
+        <el-col>
+          <!--    搜索条件    -->
+          <el-form
+            :model="queryParams"
+            ref="queryForm"
+            size="small"
+            :inline="true"
+            v-show="showSearch"
+            label-width="100px"
+          >
+            <el-form-item label="外包评价名称" prop="evaluateName">
+              <el-input
+                :maxlength="20"
+                v-model="queryParams.evaluateName"
+                placeholder="请输入外包评价名称"
+                clearable
+                @keyup.enter.native="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="状态" prop="status">
+              <el-select
+                v-model="queryParams.status"
+                placeholder="请选择状态"
+                clearable
+              >
+                <el-option
+                  v-for="dict in dict.type.evaluate_task_status"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
+              </el-select>
+            </el-form-item>
+
+            <el-form-item>
+              <el-form-item prop="roleId" label="计划时间">
+                <el-date-picker
+                  v-model="queryParams.dataTime"
+                  type="daterange"
+                  range-separator="至"
+                  start-placeholder="开始日期"
+                  end-placeholder="结束日期"
+                  format="yyyy-MM-DD"
+                  value-format="yyyy-MM-DD"
+                >
+                </el-date-picker>
+              </el-form-item>
+              <el-button
+                type="primary"
+                icon="el-icon-search"
+                size="mini"
+                @click="handleQuery"
+                >搜索</el-button
+              >
+              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+                >重置</el-button
+              >
+            </el-form-item>
+          </el-form>
+
+          <el-table
+            border
+            height="650"
+            size="small"
+            v-loading="loading"
+            :data="dataList"
+            align="center"
+            fixed
+            @selection-change="handleSelectionChange"
+          >
+            <el-table-column
+              label="序号"
+              type="index"
+              width="50"
+            ></el-table-column>
+            <el-table-column label="评价机构" prop="orgName" />
+            <el-table-column label="评价角色" prop="roleName" />
+            <el-table-column label="外包评价名称" prop="evaluateName" />
+            <el-table-column label="计划开始时间" prop="startTime" />
+            <el-table-column label="计划结束时间" prop="endTime" />
+            <el-table-column label="评价人" prop="createBy" />
+            <el-table-column label="评价时间" prop="createTime" />
+            <el-table-column
+              label="状态"
+              prop="status"
+              :formatter="statusChange"
+            />
+
+            <el-table-column
+              label="操作"
+              width="180"
+              fixed="right"
+              class-name="small-padding fixed-width"
+            >
+              <template slot-scope="{ row }">
+                <el-button
+                  size="mini"
+                  v-if="isEvaluateHandler(row)"
+                  @click="evaluateHandler(row)"
+                  type="text"
+                  icon="el-icon-plus"
+                  >评价</el-button
+                >
+                <el-button
+                  size="mini"
+                  @click="editHandler(row)"
+                  type="text"
+                  icon="el-icon-plus"
+                  >详情</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+
+          <pagination
+            v-show="total > 0"
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </el-col>
+      </el-row>
+    </layoutCom>
+    <editEvaluate ref="Evaluate" @success="getList()"></editEvaluate>
+  </div>
+</template>
+<script>
+import { mapGetters } from "vuex";
+
+import { getEvaluatePage } from "@/api/core/evalulateTask.js";
+import OrgTree from "@/components/orgTree";
+import editEvaluate from "./editPlanEvaluate.vue";
+export default {
+  name: "SocWebIndex",
+  dicts: ["sys_org_type", "evaluate_task_status"],
+  components: {
+    OrgTree,
+    editEvaluate,
+  },
+  data() {
+    return {
+      loading: false,
+
+      queryParams: {
+        orgId: null,
+        checkSub: true,
+        status: null,
+        dataTime: [],
+        evaluateName:'',
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 显示搜索条件
+      showSearch: true,
+      total: 0,
+      dataList: [],
+    };
+  },
+  created() {},
+  mounted() {},
+  computed: {
+    ...mapGetters(["orgId",'roles']),
+  },
+  methods: {
+    statusChange(row) {
+      switch (row.status) {
+        case "0":
+          return "待完成";
+          break;
+        case "1":
+          return "进行中";
+          break;
+        case "2":
+          return "已完成";
+          break;
+        case "3":
+          return "已超期";
+          break;
+      }
+    },
+    //获取列表
+    getList() {
+      this.loading = true;
+      let obj = JSON.parse(JSON.stringify(this.queryParams));
+      if (this.queryParams.dataTime.length > 0) {
+        obj.startTime = this.queryParams.dataTime[0];
+        obj.endTime = this.queryParams.dataTime[1];
+      }
+      delete obj.dataTime;
+      getEvaluatePage(obj).then((res) => {
+        this.dataList = res?.rows || [];
+        this.total = res?.total || [];
+        this.loading = false;
+      });
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {},
+
+    editHandler(row) {
+      this.$refs.Evaluate.show(row.id,1);
+    },
+    //判断是否能评价
+    isEvaluateHandler(row){
+      let falg=false
+      row.roleName?.split(',').forEach(item => {
+        this.roles.forEach(i=>{
+          if(i==item){
+            falg=true
+          }
+        })
+      });
+     return falg
+      // row
+    },
+    evaluateHandler(row){
+      this.$refs.Evaluate.show(row.id,0);
+    },
+
+    //单选框状态改变
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.getList();
+    },
+    // 节点单击事件
+    clickTreeNode(data) {
+      this.queryParams.orgId = data.id;
+      this.getList();
+    },
+
+    cleanExecOrgList() {
+      this.execOrgIds = null;
+      this.queryParams.execOrgList = [];
+    },
+
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.queryParams.onlyManager = false;
+      this.handleQuery();
+    },
+  },
+};
+</script>
+<style lang="scss" scoped></style>