Przeglądaj źródła

Merge branch 'master' of http://114.55.67.98:8070/Natural_p1/zjugis_OA

songxy 11 miesięcy temu
rodzic
commit
503d40d41f

+ 2 - 2
client/src/views/OaSystem/marketCenter/contractSubOut/applyIndex.vue

@@ -128,8 +128,8 @@
               scope.row.contractSubFlowStatus != 90 && isSignType[scope.row.isSign] === '是'
                 ? '未签'
                 : scope.row.contractAmount - (scope.row.payAmount ?? 0) === 0
-                ? '已付清'
-                : '未付清'
+                  ? '已付清'
+                  : '未付清'
             }}</template>
           </el-table-column>
           <el-table-column label="操作" fixed="right" align="center" width="200">

+ 2 - 2
client/src/views/OaSystem/marketCenter/khglPage/CustomerTable.vue

@@ -142,8 +142,8 @@ const newCustomer = (isAdd: boolean, row?) => {
   const params = !isAdd
     ? `/editCustomer?id=${row.id}&edit=true`
     : row
-    ? `/newCustomer?id=${row.id}`
-    : '/newCustomer'
+      ? `/newCustomer?id=${row.id}`
+      : '/newCustomer'
   push(params)
 }
 // 查看客户详情

+ 2 - 2
client/src/views/OaSystem/personnelManagement/ygdaPage/index.ts

@@ -3,7 +3,7 @@ import { cloneDeep } from 'lodash-es'
 export const getDictList = () => {
   const dictOptionsObj: any = {}
   // 性别
-  // const sex = getDictOptions('system_user_sex')
+  const sex = getDictOptions('system_user_sex')
   // 状态
   const state = getDictOptions('staff_state_type')
   // 在岗职位
@@ -23,7 +23,7 @@ export const getDictList = () => {
   // 紧急联系人关系
   const jjlxrgx = getDictOptions('contact_type')
 
-  // dictOptionsObj.sex = sex
+  dictOptionsObj.sex = sex
   dictOptionsObj.state = state
   dictOptionsObj.drzw = drzw
   dictOptionsObj.nation = nation

+ 192 - 0
client/src/views/OaSystem/personnelManagement/ygdaPage/performanceTable.vue

@@ -0,0 +1,192 @@
+<template>
+  <div class="casually-name">
+    <div class="star-title">
+      <i></i>
+      <span>绩效考核</span>
+    </div>
+    <el-tag
+      class="add-tag"
+      type="primary"
+      effect="plain"
+      v-if="!tableData.length && !onlyRead"
+      @click="onAddItem(-1)"
+      >+ 新增</el-tag
+    >
+    <el-table
+      class="detail-table"
+      :header-cell-style="{
+        background: '#F2F4F8',
+        color: '#000000'
+      }"
+      :data="tableData"
+      v-else
+    >
+      <el-table-column prop="year" label="年份" width="300">
+        <template #default="scope">
+          <el-date-picker
+            v-model="scope.row.year"
+            type="year"
+            value-format="YYYY"
+            v-if="scope.row.isEdit"
+          />
+          <span v-else>{{ scope.row.year }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="season" label="季度" width="300">
+        <template #default="scope">
+          <el-select v-if="scope.row.isEdit" v-model="scope.row.season" style="width: 100%">
+            <el-option
+              v-for="item in seasonData"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+          <span v-else>{{ scope.row.season }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="detail" label="奖惩情况(嘉奖、处罚)">
+        <template #default="scope">
+          <el-input v-model="scope.row.detail" v-if="scope.row.isEdit" />
+          <span v-else>{{ scope.row.detail }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column fixed="right" label="操作" width="140">
+        <template #default="scope">
+          <el-button
+            link
+            type="primary"
+            size="small"
+            @click="onSaveItem(scope.$index)"
+            v-if="scope.row.isEdit"
+          >
+            保存
+          </el-button>
+          <el-button link type="primary" size="small" @click="onEditItem(scope.$index)" v-else>
+            编辑
+          </el-button>
+          <el-button link type="primary" size="small" @click="deleteRow(scope.$index)">
+            删除
+          </el-button>
+          <el-button link type="primary" size="small" @click="onAddItem(scope.$index)">
+            新增
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+<script lang="ts" setup>
+/**
+ * @description 绩效考核
+ */
+
+import { cloneDeep } from 'lodash-es'
+
+interface ITable {
+  id?: string
+  userId?: string
+  year?: string // 年份
+  season?: string // 季度
+  detail?: string // 奖惩情况
+  isEdit?: boolean // 是否可编辑
+}
+const tableData = ref<ITable[]>([])
+
+const $emit = defineEmits<{
+  (e: 'onSave', v: any): void
+}>()
+
+interface IProps {
+  defaultData: any[]
+  onlyRead?: boolean
+}
+const props = defineProps<IProps>()
+const { defaultData, onlyRead } = props
+onMounted(() => {
+  if (defaultData && defaultData.length) {
+    tableData.value = defaultData.map((item: any) => {
+      return {
+        ...item,
+        isEdit: false
+      }
+    })
+  }
+})
+
+const seasonData = [
+  { label: '第一季度', value: '第一季度' },
+  { label: '第二季度', value: '第二季度' },
+  { label: '第三季度', value: '第三季度' },
+  { label: '第四季度', value: '第四季度' }
+]
+
+// 新增行
+const onAddItem = (index: number) => {
+  tableData.value.splice(index + 1, 0, {
+    year: '',
+    season: '',
+    detail: '',
+    isEdit: true
+  })
+}
+
+// 保存行
+const onSaveItem = (index: number) => {
+  tableData.value.forEach((item: any, num: number) => {
+    if (num == index) {
+      item.isEdit = false
+    }
+  })
+  const changeData = cloneDeep(tableData.value).map((item: any) => {
+    delete item.isEdit
+    return item
+  })
+  $emit('onSave', changeData)
+}
+
+// 编辑行
+const onEditItem = (index: number) => {
+  tableData.value[index].isEdit = true
+}
+
+// 删除
+const deleteRow = (index: number) => {
+  tableData.value.splice(index, 1)
+}
+</script>
+<style scoped lang="scss">
+.casually-name {
+  position: relative;
+}
+.star-title {
+  display: flex;
+  align-items: center;
+  margin-bottom: 8px;
+
+  i {
+    display: block;
+    width: 16px;
+    height: 16px;
+    margin-right: 9px;
+    background: url('../../../../assets/imgs/OA/mine/star.png') center no-repeat;
+    background-size: 100%;
+  }
+
+  span {
+    font-size: 18px;
+    font-weight: bold;
+    color: #000000;
+  }
+}
+.add-tag {
+  position: absolute;
+  top: 2px;
+  left: 120px;
+  cursor: pointer;
+}
+.detail-table {
+  width: 100%;
+  min-height: 100px;
+}
+</style>

+ 13 - 1
client/src/views/OaSystem/personnelManagement/ygdaPage/staffDetail.vue

@@ -9,6 +9,7 @@ import { useQuery, useMutation } from '@tanstack/vue-query'
 import { getRecordsDetail, editRecordsDetail, generateStaffNum } from '@/api/oa/staffRecords'
 import { getConfigDict } from './index'
 import { ElRow, FormInstance } from 'element-plus'
+import moment from 'moment'
 // import TechCertificate from './TechCertificate.vue'
 import avatarImg from '@/assets/imgs/avatar.jpg'
 import DeptSelect from '@/components/DeptSelect/index.vue'
@@ -16,7 +17,7 @@ import { createImageViewer } from '@/components/ImageViewer'
 import WorkTable from './WorkTable.vue'
 import FamilyTable from './familyTable.vue'
 import SchoolTable from './SchoolTable.vue'
-import moment from 'moment'
+import PerformanceTable from './performanceTable.vue'
 
 const formConfigList = getConfigDict()
 
@@ -139,6 +140,11 @@ const saveSchoolList = (data: any[]) => {
   // console.log('data', data)
   formData.value['schoolList'] = data
 }
+// 修改并保存绩效考核记录
+const savePerformanceList = (data: any[]) => {
+  // console.log('data', data)
+  formData.value['performanceList'] = data
+}
 </script>
 <template>
   <div class="staff-files-wrap">
@@ -230,6 +236,12 @@ const saveSchoolList = (data: any[]) => {
         <div class="my-portrait-item">
           <SchoolTable :defaultData="formData['schoolList']" @onSave="saveSchoolList" />
         </div>
+        <div class="my-portrait-item">
+          <PerformanceTable
+            :defaultData="formData['performanceList']"
+            @onSave="savePerformanceList"
+          />
+        </div>
         <el-row justify="end">
           <el-form-item v-if="isEdit">
             <el-button color="#1B80EB" type="primary" @click="submitForm(formRef)">保存</el-button>

+ 4 - 4
client/src/views/OaSystem/projectCenter/projectDetail/projectDetail.vue

@@ -297,10 +297,10 @@ const { mutate: startProjectStatusAndProcess } = useMutation(projectStatusAndPro
       sfysType.value === 'ys'
         ? '验收'
         : sfysType.value === 'jx'
-        ? '结项'
-        : sfysType.value === 'zz'
-        ? '中止'
-        : ''
+          ? '结项'
+          : sfysType.value === 'zz'
+            ? '中止'
+            : ''
     openFlow(router, data, `项目${subTitle}`)
   }
 })

+ 5 - 1
zjugis-business/src/main/java/com/zjugis/business/controller/ProjectController.java

@@ -182,7 +182,11 @@ public class ProjectController{
     public CommonResult<List<zTree>> materialTree(@RequestParam("projectId") String projectId) {
        // Project project = projectService.selectDOById(projectId);
         ProjectStatusDO projectStatusDO=projectStatusService.findByProjectId(projectId);
-        return workflowClient.getTree(projectStatusDO!=null?projectStatusDO.getInstanceId():"");
+        if(projectStatusDO!=null){
+            return workflowClient.getTree(projectStatusDO.getInstanceId());
+        }else{
+            return workflowClient.getTree("");
+        }
     }
 
     @PostMapping("/project-material-upload")

+ 2 - 3
zjugis-business/src/main/java/com/zjugis/business/flow/projectStatus/dao/ProjectStatusDao.java

@@ -16,7 +16,6 @@ public interface ProjectStatusDao extends BaseMapperX<ProjectStatusDO> {
         return selectOne(new LambdaQueryWrapperX<ProjectStatusDO>().eqIfPresent(ProjectStatusDO::getInstanceId, flowInstanceId).eqIfPresent(ProjectStatusDO::getIsvalid, "1"));
     }
 
-    default ProjectStatusDO findByProjectId(String projectId) {
-        return selectOne(new LambdaQueryWrapperX<ProjectStatusDO>().eqIfPresent(ProjectStatusDO::getProjectId, projectId).eqIfPresent(ProjectStatusDO::getIsvalid, "1"));
-    }
+
+    ProjectStatusDO findByProjectId(String projectId);
 }

+ 2 - 1
zjugis-business/src/main/java/com/zjugis/business/flow/projectStatus/entity/ProjectStatusDO.java

@@ -77,7 +77,8 @@ public class ProjectStatusDO extends BaseEntity {
      */
     @TableField(exist = false)
     private BigDecimal contractAmount;
-
+    @TableField(exist = false)
+    private BigDecimal rownum;
     /**
      * 流程类型
      */

+ 18 - 0
zjugis-business/src/main/resources/mapper/oracle/ProjectStatusMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zjugis.business.flow.projectStatus.dao.ProjectStatusDao">
+
+
+    <select id="findByProjectId" resultType="com.zjugis.business.flow.projectStatus.entity.ProjectStatusDO">
+        SELECT *
+         from  PROJECT_STATUS
+        <where>
+            ISVALID = 1  and type='ys'
+           AND project_id = #{projectId} and rownum=1
+        </where>
+        order  by
+        accept_time desc
+    </select>
+
+</mapper>
+

+ 5 - 0
zjugis-workflow/src/main/java/com/zjugis/z_workflow/service/IFlowMaterialsTreeService.java

@@ -46,6 +46,8 @@ public class IFlowMaterialsTreeService {
 	private PersionKeyValueService persionKeyValueService;
 	@Autowired
 	private CallInterfaceService callInterfaceService;
+    @Autowired
+    private TFlowMaterialsCatalogService TFlowMaterialsCatalogService;
 
 	public List<zTree> getTree(String flowInstanceId, String activityInstanceId) throws Exception {
 		List<zTree> rtnList = null;
@@ -64,6 +66,9 @@ public class IFlowMaterialsTreeService {
 	}
 
     public List<zTree> getAllTree(String flowInstanceId) throws Exception {
+        if("".equals(flowInstanceId)){
+            return TFlowMaterialsCatalogService.GetTreeData("019023d16d51000196de8ff219e54853");
+        }
         List<zTree> rtnList = null;
         Comm comm = buildComm(flowInstanceId);
         buildCatalogNode(comm);