Browse Source

Merge branch 'iteration_0802' into test

lex-xin 3 years ago
parent
commit
b02c081457

+ 18 - 0
src/api/appTenant.js

@@ -127,3 +127,21 @@ export function employeeUpdate(data) {
     data
   })
 }
+
+// 新增回访记录
+export function insertVisit(data) {
+  return request({
+    method: 'post',
+    url: '/api-web/employeeInfo/insertVisit',
+    data
+  })
+}
+
+// 回访记录
+export function employeeQueryDetail(data) {
+  return request({
+    method: 'get',
+    url: '/api-web/employeeInfo/queryDetail',
+    params: data
+  })
+}

+ 1 - 0
src/utils/vueFilter.js

@@ -644,6 +644,7 @@ Vue.filter('hrStatus', value => {
     'PART_TIME': "兼职",
     'FULL_TIME': "全职",
     'DIMISSION': "离职",
+    'BLACK_LIST': "黑名单",
   }
   return template[value]
 })

+ 87 - 0
src/views/HumanResources/createRecord.vue

@@ -0,0 +1,87 @@
+<!--  -->
+<template>
+    <div>
+        <el-form :model="form"
+                :rules="rules"
+                ref="ruleForm">
+            <el-form-item label="沟通结论" label-width="120PX"
+                        prop="content">
+                <el-input type="textarea" :rows="3" v-model.trim="form.content"
+                        autocomplete="off"
+                        maxlength="255"
+                        show-word-limit
+                        placeholder="请输入沟通结论"></el-input>
+            </el-form-item>
+            <el-form-item label="下次沟通日期" label-width="120PX"
+                        prop="nextVisitDate">
+                <el-date-picker
+                    type="date"
+                    style="width: 100% !important"
+                    placeholder="请选择下次沟通日期"
+                    v-model="form.nextVisitDate"
+                  />
+            </el-form-item>
+        </el-form>
+        <div class="dialog-footer">
+            <el-button @click="onClose('ruleForm')">取 消</el-button>
+            <el-button type="primary" @click="onSubmit('ruleForm')">确 定</el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+import Tooltip from '@/components/Tooltip/index'
+import { insertVisit } from '@/api/appTenant'
+export default {
+    components: { Tooltip, },
+    props: ['close', 'employeeInfoId'],
+    data () {
+        return {
+            form: {
+                nextVisitDate: null,
+                content: null,
+            },
+            rules: {
+                content: [{required: true, message:'请输入沟通结论', trigger: 'blur'}],
+                nextVisitDate: [{required: true, message:'请选择下次沟通日期', trigger: 'change'}]
+            }
+        };
+    },
+    //生命周期 - 挂载完成(可以访问DOM元素)
+    mounted () {
+        console.log(this.employeeInfoId)
+    },
+    methods: {
+        onSubmit(formName) {
+            this.$refs[formName].validate(item => {
+                if(item) {
+                    let { ...res } = this.form
+                    let params = {
+                        ...res,
+                        employeeInfoId: this.employeeInfoId
+                    }
+                    insertVisit(params).then(res => {
+                        if (res.code === 200) {
+                            this.$message.success('创建成功')
+                            this.onClose('ruleForm')
+                            this.$listeners.getList()
+                        } else {
+                            this.$message.error(res.msg)
+                        }
+                    })
+                }
+            })
+        },
+        onClose(formName) {
+            this.$refs[formName].resetFields()
+            this.$listeners.close()
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.dialog-footer {
+    width: 100%;
+    text-align: right;
+}
+</style>

+ 361 - 186
src/views/HumanResources/form.vue

@@ -8,13 +8,45 @@
         <table class="description-table">
           <tbody>
             <tr class="description-tr">
-              <th class="description-label">姓名</th>
+              <th class="description-label"><i class="requiredStar">*</i>姓名</th>
               <td class="description-content">
-                <el-form-item prop="realName">
+                <el-form-item prop="realName" :rules="[
+                  { required: true, message: '请输入姓名', trigger: 'blur' }
+                ]">
                   <el-input v-model="form.realName" size="mini" placeholder="请输入姓名"/>
                 </el-form-item>
               </td>
-              <th class="description-label">手机号</th>
+              <th class="description-label"><i class="requiredStar">*</i>年龄</th>
+              <td class="description-content">
+                <el-form-item
+                  prop="age"
+                  :rules="[
+                    { required: true, message: '请输入年龄', trigger: 'blur' }
+                  ]"
+                >
+                  <el-input v-model="form.age" size="mini" type="number" min="1" step="1" placeholder="请输入年龄"/>
+                </el-form-item>
+              </td>
+              <th class="description-label"><i class="requiredStar">*</i>性别</th>
+              <td class="description-content">
+                <el-form-item
+                  prop="gender"
+                  :rules="{ required: true, message: '请选择性别', trigger: 'change' }"
+                >
+                  <el-select size="mini" v-model.trim="form.gender"
+                              clearable
+                              filterable
+                              placeholder="请选择性别">
+                    <el-option label="男"
+                                :value="true"></el-option>
+                    <el-option label="女"
+                                :value="false"></el-option>
+                  </el-select>
+                </el-form-item>
+              </td>
+            </tr>
+            <tr class="description-tr">
+              <th class="description-label"><i class="requiredStar">*</i>手机号</th>
               <td class="description-content">
                 <el-form-item
                   prop="mobileNo"
@@ -37,73 +69,148 @@
               <td class="description-content">
                 <el-form-item
                   prop="wechatNo"
-                  :rules="[
-                    { required: !(form.mobileNo), message: '请输入微信号', trigger: 'blur' },
-                  ]"
                 >
                   <el-input
                     size="mini"
                     v-model="form.wechatNo"
-                    @blur="mobileOrWechatValidate"
                     placeholder="请输入微信号"
                   />
                 </el-form-item>
               </td>
-            </tr>
-            <tr class="description-tr" v-for="(item, index) in form.educations" :key="index">
-              <th class="description-label desc-item">
-                <span class="close">
-                  <i v-if="index === 0" @click="addEducation" class="el-icon-circle-plus-outline"/>
-                  <i v-else @click="removeEducation(index)" class="el-icon-remove-outline"/>
-                </span>学历</th>
+              <th class="description-label">身份证号</th>
               <td class="description-content">
                 <el-form-item
-                  :prop="'educations.' + index + '.level'"
-                  :rules="{ required: true, message: '请输入学历', trigger: 'blur' }"
+                  prop="idCard"
                 >
-                  <el-input v-model="form.educations[index].level" size="mini" placeholder="请输入学历"/>
+                  <el-input size="mini" v-model="form.idCard" placeholder="请输入身份证号"/>
                 </el-form-item>
               </td>
-              <th class="description-label">学校</th>
+            </tr>
+          </tbody>
+        </table>
+      </div>
+
+      <div class="description-title" style="margin-top: 20px">
+        <span>教育信息</span>
+      </div>
+      <div class="description-view">
+        <table class="description-table">
+          <tbody>
+            <tr class="description-tr" v-for="(item, index) in form.educations" :key="index">
+                <th class="description-label desc-item">
+                  <span class="close">
+                    <i v-if="index === 0" @click="addEducation" class="el-icon-circle-plus-outline"/>
+                    <i v-else @click="removeEducation(index)" class="el-icon-remove-outline"/>
+                  </span><i class="requiredStar">*</i>学历</th>
+                <td class="description-content">
+                  <el-form-item
+                    :prop="'educations.' + index + '.level'"
+                    :rules="{ required: true, message: '请输入学历', trigger: 'blur' }"
+                  >
+                    <el-input v-model="form.educations[index].level" size="mini" placeholder="请输入学历"/>
+                  </el-form-item>
+                </td>
+                <th class="description-label"><i class="requiredStar">*</i>学校</th>
+                <td class="description-content">
+                  <el-form-item
+                    :prop="'educations.' + index + '.school'"
+                    :rules="{ required: true, message: '请输入学校', trigger: 'blur' }"
+                  >
+                    <el-input size="mini" v-model="form.educations[index].school" placeholder="请输入学校"/>
+                  </el-form-item>
+                </td>
+                <th class="description-label"><i class="requiredStar">*</i>专业</th>
+                <td class="description-content">
+                  <el-form-item
+                    :prop="'educations.' + index + '.subject'"
+                    :rules="{ required: true, message: '请输入专业', trigger: 'blur' }"
+                  >
+                    <el-input size="mini" v-model="form.educations[index].subject" placeholder="请输入专业"/>
+                  </el-form-item>
+                </td>
+                <th class="description-label"><i class="requiredStar">*</i>毕业时间</th>
+                <td class="description-content">
+                  <el-form-item
+                    :prop="'educations.' + index + '.year'"
+                    :rules="{ required: true, message: '请选择毕业时间', trigger: 'blur' }"
+                  >
+                    <el-date-picker
+                      type="month"
+                      placeholder="请选择毕业时间"
+                      size="mini"
+                      v-model="form.educations[index].year"
+                    />
+                  </el-form-item>
+                </td>
+              </tr>
+          </tbody>
+        </table>
+      </div>
+
+      <div class="description-title" style="margin-top: 20px">
+        <span>招聘信息</span>
+      </div>
+      <div class="description-view">
+        <table class="description-table">
+          <tbody>
+             <tr class="description-tr">
+              <th class="description-label"><i class="requiredStar">*</i>所在城市</th>
               <td class="description-content">
-                <el-form-item
-                  :prop="'educations.' + index + '.school'"
-                  :rules="{ required: true, message: '请选择毕业时间', trigger: 'blur' }"
+                <el-form-item prop="liveCity"
+                  :rules="[{ required: true, message: '请输入所在城市', trigger: 'blur' }]"
                 >
-                  <el-input size="mini" v-model="form.educations[index].school" placeholder="请输入学校"/>
+                  <el-input size="mini" v-model.trim="form.liveCity" placeholder="请输入所在城市"/>
+                </el-form-item>
+              </td>
+              <th class="description-label"><i class="requiredStar">*</i>意向城市</th>
+              <td class="description-content"
+                :rules="[{ required: true, message: '请输入意向城市', trigger: 'blur' }]"
+              >
+                <el-form-item prop="intentionCity">
+                  <el-input size="mini" v-model.trim="form.intentionCity" placeholder="请输入意向城市"/>
                 </el-form-item>
               </td>
-              <th class="description-label">毕业时间</th>
+              <th class="description-label"><i class="requiredStar">*</i>意向合作模式</th>
               <td class="description-content">
-                <el-form-item
-                  :prop="'educations.' + index + '.year'"
-                  :rules="{ required: true, message: '请选择毕业时间', trigger: 'blur' }"
+                <el-form-item prop="jobNature"
+                  :rules="[{ required: true, message: '请选择意向合作模式', trigger: 'blur' }]"
                 >
-                  <el-date-picker
-                    type="month"
-                    placeholder="请选择毕业时间"
-                    size="mini"
-                    v-model="form.educations[index].year"
-                  />
+                  <el-select size="mini" v-model.trim="form.jobNature"
+                              clearable
+                              filterable
+                              placeholder="请选择意向合作模式">
+                    <el-option label="兼职"
+                                value="PART_TIME"></el-option>
+                    <el-option label="全职"
+                                value="FULL_TIME"></el-option>
+                  </el-select>
                 </el-form-item>
               </td>
             </tr>
             <tr class="description-tr">
-              <th class="description-label">所在城市</th>
-              <td class="description-content">
-                <el-form-item prop="liveCity">
-                  <el-input size="mini" v-model.trim="form.liveCity" placeholder="请输入所在城市"/>
-                </el-form-item>
-              </td>
-              <th class="description-label">工作意向</th>
+              <th class="description-label"><i class="requiredStar">*</i>岗位类别</th>
               <td class="description-content">
-                <el-form-item prop="intentionCity">
-                  <el-input size="mini" v-model.trim="form.intentionCity" placeholder="请输入工作意向"/>
+                <el-form-item prop="jobType"
+                  :rules="[{ required: true, message: '请选择岗位类别', trigger: 'blur' }]"
+                >
+                  <el-select size="mini" v-model.trim="form.jobType"
+                              clearable
+                              filterable
+                              placeholder="请选择岗位类别">
+                    <el-option label="指导老师"
+                              value="ADVISER"></el-option>
+                    <el-option label="乐团主管"
+                              value="ACADEMIC"></el-option>
+                    <el-option label="乐队指导"
+                              value="TEACHING"></el-option>
+                  </el-select>
                 </el-form-item>
               </td>
-              <th class="description-label">声部</th>
+              <th class="description-label"><i class="requiredStar">*</i>声部</th>
               <td class="description-content">
-                <el-form-item prop="subjectIdList">
+                <el-form-item prop="subjectIdList"
+                  :rules="[{ required: true, message: '请选择声部', trigger: 'blur' }]"
+                >
                   <el-select
                   size="mini"
                     v-model.trim="form.subjectIdList"
@@ -124,9 +231,11 @@
               </td>
             </tr>
             <tr class="description-tr">
-              <th class="description-label">信息来源</th>
+              <th class="description-label"><i class="requiredStar">*</i>信息来源</th>
               <td class="description-content">
-                <el-form-item prop="sourceFrom">
+                <el-form-item prop="sourceFrom"
+                  :rules="[{ required: true, message: '请选择信息来源', trigger: 'blur' }]"
+                >
                   <el-select v-model.trim="form.sourceFrom"
                               clearable
                               filterable
@@ -136,20 +245,16 @@
                                 value="BOSS"></el-option>
                     <el-option label="转介绍"
                                 value="转介绍"></el-option>
+                    <el-option label="其它"
+                                value="其它"></el-option>
                   </el-select>
                 </el-form-item>
               </td>
-              <th class="description-label">评估结果</th>
-              <td class="description-content" colspan="3">
-                <el-form-item prop="assessmentResult">
-                  <el-input size="mini" v-model.trim="form.assessmentResult" placeholder="请输入评估结果"/>
-                </el-form-item>
-              </td>
-            </tr>
-            <tr class="description-tr">
-              <th class="description-label">人员状态</th>
+              <th class="description-label"><i class="requiredStar">*</i>人员状态</th>
               <td class="description-content">
-                <el-form-item prop="status">
+                <el-form-item prop="status"
+                  :rules="[{ required: true, message: '请选择人员状态', trigger: 'blur' }]"
+                >
                   <el-select size="mini" v-model.trim="form.status"
                               clearable
                               filterable
@@ -166,13 +271,17 @@
                                 value="FULL_TIME"></el-option>
                     <el-option label="离职"
                                 value="DIMISSION"></el-option>
+                    <el-option label="黑名单"
+                                value="BLACK_LIST"></el-option>
                   </el-select>
                 </el-form-item>
               </td>
-              <th class="description-label">其他综合情况</th>
-              <td class="description-content" colspan="3">
-                <el-form-item prop="otherComment">
-                  <el-input size="mini" v-model.trim="form.otherComment" placeholder="请输入其他综合情况"/>
+              <th class="description-label"><i class="requiredStar">*</i>HRBP</th>
+              <td class="description-content">
+                <el-form-item prop="hrbp"
+                  :rules="[{ required: true, message: '请输入HRBP', trigger: 'blur' }]"
+                >
+                  <el-input size="mini" v-model.trim="form.hrbp" placeholder="请输入HRBP"/>
                 </el-form-item>
               </td>
             </tr>
@@ -187,11 +296,11 @@
         <table class="description-table">
           <tbody>
             <tr class="description-tr">
-              <th class="description-label">入职日期</th>
+              <th class="description-label"><i class="requiredStar" v-if="propRequred">*</i>入职日期</th>
               <td class="description-content">
                 <el-form-item
                   prop="entryDate"
-                  :rules="{ required: propRequred, message: '请输入入职日期', trigger: 'change' }"
+                  :rules="{ required: propRequred, message: '请选择入职日期', trigger: 'change' }"
                 >
                   <el-date-picker
                     type="date"
@@ -201,31 +310,36 @@
                   />
                 </el-form-item>
               </td>
-              <th class="description-label">职位</th>
+              <th class="description-label"><i class="requiredStar" v-if="form.status === 'DIMISSION'">*</i>离职日期</th>
               <td class="description-content">
                 <el-form-item
-                  prop="position"
-                  :rules="{ required: propRequred, message: '请输入职位', trigger: 'change' }"
+                  prop="resignationDate"
+                  :rules="[{ required: form.status === 'DIMISSION', message: '请选择离职日期', trigger: 'change' }]"
                 >
-                  <el-select v-model.trim="form.position"
-                            clearable
-                            filterable
-                            size="mini"
-                            placeholder="请选择职位">
-                    <el-option label="指导老师"
-                              value="ADVISER"></el-option>
-                    <el-option label="乐团主管"
-                              value="ACADEMIC"></el-option>
-                    <el-option label="乐队指导"
-                              value="TEACHING"></el-option>
-                  </el-select>
+                  <el-date-picker
+                    type="date"
+                    placeholder="选择离职日期"
+                    size="mini"
+                    v-model="form.resignationDate"
+                  />
                 </el-form-item>
               </td>
-              <th class="description-label">分部</th>
+              <th class="description-label"><i class="requiredStar" v-if="form.status === 'DIMISSION'">*</i>离职原因</th>
+              <td class="description-content">
+                <el-form-item
+                  prop="resignationReason"
+                  :rules="[{ required: form.status === 'DIMISSION', message: '请输入离职原因', trigger: 'blur' }]"
+                >
+                  <el-input size="mini" v-model.trim="form.resignationReason" placeholder="请输入离职原因"/>
+                </el-form-item>
+              </td>
+            </tr>
+            <tr class="description-tr">
+              <th class="description-label"><i class="requiredStar" v-if="propRequred">*</i>分部</th>
               <td class="description-content">
                 <el-form-item
                   prop="organId"
-                  :rules="{ required: propRequred, message: '请选择分部', trigger: 'change' }"
+                  :rules="[{ required: propRequred, message: '请选择分部', trigger: 'change' }]"
                 >
                   <el-select v-model.trim="form.organId"
                       placeholder='请选择分部'
@@ -242,101 +356,52 @@
                     </el-select>
                   </el-form-item>
               </td>
-            </tr>
-            <tr class="description-tr">
-              <th class="description-label">是否试用期</th>
-              <td class="description-content">
-                <el-form-item
-                  prop="isProbationPeriod"
-                  :rules="{ required: propRequred, message: '请选择是否试用期', trigger: 'change' }"
-                >
-                  <el-select size="mini" v-model.trim="form.isProbationPeriod"
-                              clearable
-                              filterable
-                              placeholder="请选择是否试用期">
-                    <el-option label="是"
-                                :value="true"></el-option>
-                    <el-option label="否"
-                                :value="false"></el-option>
-                  </el-select>
-                </el-form-item>
-              </td>
-              <th class="description-label">证件号码</th>
-              <td class="description-content" colspan="3">
-                <el-form-item
-                  prop="idCard"
-                  :rules="{ required: propRequred, message: '请输入证件号码', trigger: 'blur' }"
-                >
-                  <el-input size="mini" v-model="form.idCard" placeholder="请输入证件号码"/>
-                </el-form-item>
-              </td>
-            </tr>
-            <tr class="description-tr">
-              <th class="description-label">年龄</th>
-              <td class="description-content">
-                <el-form-item
-                  prop="age"
-                  :rules="[
-                    { required: propRequred, message: '请输入年龄', trigger: 'blur' }
-                  ]"
-                >
-                  <el-input v-model="form.age" size="mini" type="number" min="1" step="1" placeholder="请输入年龄"/>
-                </el-form-item>
-              </td>
-              <th class="description-label">性别</th>
+              <th class="description-label"><i class="requiredStar" v-if="propRequred">*</i>职位</th>
               <td class="description-content">
                 <el-form-item
-                  prop="gender"
-                  :rules="{ required: propRequred, message: '请选择性别', trigger: 'change' }"
+                  prop="position"
+                  :rules="[{ required: propRequred, message: '请输入职位', trigger: 'change' }]"
                 >
-                  <el-select size="mini" v-model.trim="form.gender"
-                              clearable
-                              filterable
-                              placeholder="请选择性别">
-                    <el-option label="男"
-                                :value="true"></el-option>
-                    <el-option label="女"
-                                :value="false"></el-option>
+                  <el-select v-model.trim="form.position"
+                            clearable
+                            filterable
+                            size="mini"
+                            placeholder="请选择职位">
+                    <el-option label="指导老师"
+                              value="ADVISER"></el-option>
+                    <el-option label="乐团主管"
+                              value="ACADEMIC"></el-option>
+                    <el-option label="乐队指导"
+                              value="TEACHING"></el-option>
                   </el-select>
                 </el-form-item>
               </td>
-              <th class="description-label">离职日期</th>
+              <th class="description-label"><i class="requiredStar" v-if="propRequred">*</i>声部</th>
               <td class="description-content">
-                <el-form-item
-                  prop="resignationDate"
-                  :rules="{ required: form.status === 'DIMISSION', message: '请选择离职日期', trigger: 'change' }"
+                <el-form-item prop="jobSubjectIdList"
+                  :rules="[{ required: propRequred, message: '请选择声部', trigger: 'change' }]"
                 >
-                  <el-date-picker
-                    type="date"
-                    placeholder="选择离职日期"
+                  <el-select
                     size="mini"
-                    v-model="form.resignationDate"
-                  />
-                </el-form-item>
-              </td>
-            </tr>
-            <tr class="description-tr">
-              <th class="description-label">开户行</th>
-              <td class="description-content">
-                <el-form-item
-                  prop="bankAddress"
-                  :rules="{ required: propRequred, message: '请输入开户行', trigger: 'blur' }"
-                >
-                  <el-input size="mini" v-model="form.bankAddress" placeholder="请输入开户行"/>
-                </el-form-item>
-              </td>
-              <th class="description-label">银行卡号</th>
-              <td class="description-content" colspan="3">
-                <el-form-item
-                  prop="bankCardNo"
-                  :rules="{ required: propRequred, message: '请输入银行卡号', trigger: 'blur' }"
-                >
-                  <el-input size="mini" v-model="form.bankCardNo" placeholder="请输入银行卡号"/>
+                    v-model.trim="form.jobSubjectIdList"
+                    clearable
+                    filterable
+                    multiple
+                    collapse-tags
+                    placeholder='请选择声部'
+                  >
+                    <el-option v-for='(item,index) in subjectList'
+                      :key="index"
+                      :value="String(item.id)"
+                      :label="item.name"
+                    >
+                    </el-option>
+                  </el-select>
                 </el-form-item>
               </td>
             </tr>
             <tr class="description-tr">
-              <th class="description-label">紧急联系人姓名</th>
+              <th class="description-label"><i class="requiredStar" v-if="propRequred">*</i>紧急联系人姓名</th>
               <td class="description-content">
                 <el-form-item
                   prop="emergencyContactName"
@@ -345,7 +410,7 @@
                   <el-input size="mini" v-model.trim="form.emergencyContactName" placeholder="请输入紧急联系人姓名"/>
                 </el-form-item>
               </td>
-              <th class="description-label">紧急联系人关系</th>
+              <th class="description-label"><i class="requiredStar" v-if="propRequred">*</i>紧急联系人关系</th>
               <td class="description-content">
                 <el-form-item
                   prop="emergencyContactRelation"
@@ -354,7 +419,7 @@
                   <el-input size="mini" v-model.trim="form.emergencyContactRelation" placeholder="请输入紧急联系人关系"/>
                 </el-form-item>
               </td>
-              <th class="description-label">紧急联系人电话</th>
+              <th class="description-label"><i class="requiredStar" v-if="propRequred">*</i>紧急联系人电话</th>
               <td class="description-content">
                 <el-form-item
                   prop="emergencyContactPhone"
@@ -367,30 +432,96 @@
                 </el-form-item>
               </td>
             </tr>
+            <tr class="description-tr">
+              <th class="description-label">开户行</th>
+              <td class="description-content">
+                <el-form-item
+                  prop="bankAddress">
+                  <el-input size="mini" v-model="form.bankAddress" placeholder="请输入开户行"/>
+                </el-form-item>
+              </td>
+              <th class="description-label">银行卡号</th>
+              <td class="description-content" colspan="3">
+                <el-form-item
+                  prop="bankCardNo">
+                  <el-input size="mini" v-model="form.bankCardNo" placeholder="请输入银行卡号"/>
+                </el-form-item>
+              </td>
+            </tr>
           </tbody>
         </table>
       </div>
     </el-form>
+
+    <div class="tableWrap" style="margin-top: 20px;" v-if="formActionTitle == 'update'">
+      <div class="description-title head_title">
+        <span>在职信息</span>
+        <span class="createRecord" @click="onCreateRecord" v-if="$helpers.permission('employeeInfo/insertVisit')">新增沟通记录 >></span>
+      </div>
+      <el-table
+        style="width: 100% !important"
+        :data="tableList"
+        :header-cell-style="{ background: '#fafafa', color: '#444', borderTop: '1px solid #ebeef5' }"
+      >
+        <el-table-column
+          align="center"
+          prop="createTime"
+          label="沟通时间"
+        ></el-table-column>
+        <el-table-column align="center" prop="operatorName" label="沟通人">
+        </el-table-column>
+        <el-table-column align="center" prop="content" label="沟通结论" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <!-- <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.content"
+              placement="top"
+            > -->
+              {{ scope.row.content }}
+            <!-- </el-tooltip> -->
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="nextVisitDate" label="下次沟通时间">
+        </el-table-column>
+      </el-table>
+    </div>
+
     <span class="dialog-footer">
       <el-button @click="close('ruleForm')">取 消</el-button>
       <el-button type="primary" class="main-button" @click="onTypeSubmit('ruleForm')">确 定</el-button>
     </span>
+
+    <el-dialog
+      title="新增沟通记录"
+      :visible.sync="recordStatus"
+      destroy-on-close
+      :close-on-click-modal="false"
+      width="500px"
+      append-to-body
+    >
+      <create-record
+        v-if="recordStatus"
+        :employeeInfoId="detail.id"
+        @close="recordStatus = false"
+        @getList="getRecordList"
+      ></create-record>
+    </el-dialog>
   </div>
 </template>
 <script>
 // import Vue from 'vue'
-import { employeeCreate, employeeUpdate } from '@/api/appTenant'
-import Descriptions from '@/components/Descriptions'
-
-// Vue.use(Descriptions)
+import { employeeCreate, employeeUpdate, employeeQueryDetail } from '@/api/appTenant'
+import CreateRecord from './createRecord.vue'
 export default {
   name: 'hrform',
-  props: ['detail', 'subjectList', 'organList', 'close', 'getList'],
+  props: ['detail', 'subjectList', 'organList', 'close', 'getList', 'formActionTitle'],
   components: {
-    descriptions: Descriptions
+    CreateRecord
   },
   data() {
     return {
+      recordStatus: false,
       realName: '',
       form: {
         age: '',
@@ -448,7 +579,8 @@ export default {
         subjectIdList: [
           { required: true, message: '请选择声部', trigger: 'change' },
         ],
-      }
+      },
+      tableList: []
     }
   },
   watch: {
@@ -458,6 +590,9 @@ export default {
   },
   mounted() {
     this.updateData()
+    if(this.formActionTitle == 'update') {
+      this.getRecordList()
+    }
   },
   computed: {
     propRequred() {
@@ -477,23 +612,23 @@ export default {
           this.detail.age = ''
         }
         this.form = Object.assign({
-          educations: [{level: '', school: '', year: ''}]
+          educations: [{level: '', school: '', year: '', subject: ''}]
         }, this.detail)
         try {
           this.form.educations = JSON.parse(this.detail.educationalBackground)
           if (this.form.educations.length < 1) {
-            this.form.educations = [{level: '', school: '', year: ''}]
+            this.form.educations = [{level: '', school: '', year: '', subject: ''}]
           }
           this.form = {...this.form}
         } catch (error) {}
       } else {
-        this.form.educations = [{level: '', school: '', year: ''}]
+        this.form.educations = [{level: '', school: '', year: '', subject: ''}]
         this.form = {...this.form}
       }
       this.$refs['ruleForm'].resetFields()
     },
     addEducation() {
-      this.form.educations = [...this.form.educations, {level: '', school: '', year: ''}]
+      this.form.educations = [...this.form.educations, {level: '', school: '', year: '', subject: ''}]
       this.form = {...this.form}
     },
     removeEducation(index) {
@@ -530,8 +665,17 @@ export default {
       })
     },
     mobileOrWechatValidate() {
-      this.$refs['ruleForm'].validateField('wechatNo')
       this.$refs['ruleForm'].validateField('mobileNo')
+    },
+    onCreateRecord() {
+      // 新增沟通记录
+      this.recordStatus = true
+    },
+    getRecordList() {
+      employeeQueryDetail({ id: this.detail.id }).then(res => {
+        let result = res.data.employeeVisitList || []
+        this.tableList = result
+      })
     }
   }
 }
@@ -555,7 +699,7 @@ export default {
     margin-top: 20px;
   }
   .description-title {
-    margin-bottom: 20px;
+    margin-bottom: 10px;
     color: rgba(0,0,0,.85);
     font-weight: 700;
     font-size: 16px;
@@ -581,21 +725,22 @@ export default {
   .description-view .description-label {
     border-right: 1px solid #e8e8e8;
     background-color: #fafafa;
-    color: rgba(0, 0, 0, 0.85);
+    color: #000;
     font-weight: 400;
     font-size: 14px;
     line-height: 22px;
     /* margin-right: 8px; */
-    padding: 12px 16px;
+    // padding: 0 16px;
+    width: 140px;
     white-space: nowrap;
     display: table-cell;
   }
-  .description-view .description-label:after {
-    content: ""; /** content: ":" */
-    margin: 0 8px 0 2px;
-    position: relative;
-    top: -0.5px;
-  }
+  // .description-view .description-label:after {
+    // content: ""; /** content: ":" */
+    // margin: 0 8px 0 2px;
+    // position: relative;
+    // top: -0.5px;
+  // }
   .description-view .description-content {
     white-space: nowrap;
     overflow: hidden;
@@ -603,8 +748,8 @@ export default {
     border-right: 1px solid #e8e8e8;
     font-size: 14px;
     line-height: 1.5;
-    padding: 12px 16px;
-    padding-bottom: 0;
+    // padding: 12px 16px;
+    // padding-bottom: 0;
     color: rgba(0, 0, 0, 0.65);
     display: table-cell;
   }
@@ -613,10 +758,40 @@ export default {
   }
   .form{
     /deep/ .el-form-item{
-      margin-bottom: 12px;
+      margin-bottom: 0;
+      &.is-error {
+        input::-webkit-input-placeholder {
+          color: red;
+        }
+        input::-moz-placeholde{
+          color: red;
+        }
+        input::-ms-input-placeholder {
+          color: red;
+        }
+      }
     }
     /deep/ .el-form-item__error{
       display: none;
     }
+    /deep/.el-input__inner {
+      border: 0;
+    }
+
+  }
+  .requiredStar {
+    padding-right: 3px;
+    font-style: normal;
+    color: red;
+  }
+  .head_title {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .createRecord {
+      font-size: 14px;
+      font-weight: 400;
+      color: #14928a;
+    }
   }
 </style>

+ 12 - 5
src/views/HumanResources/index.vue

@@ -214,7 +214,7 @@
               </el-tooltip>
             </template>
           </el-table-column>
-          <el-table-column
+          <!-- <el-table-column
             align="center"
             prop="assessmentResult"
             label="评估结果"
@@ -247,7 +247,7 @@
                 <span>{{ scope.row.otherComment }}</span>
               </el-tooltip>
             </template>
-          </el-table-column>
+          </el-table-column> -->
           <el-table-column
             align="center"
             prop="sourceFrom"
@@ -255,6 +255,12 @@
           ></el-table-column>
           <el-table-column
             align="center"
+            prop="nextVisitDate"
+            label="下次沟通时间"
+            width="150px"
+          ></el-table-column>
+          <el-table-column
+            align="center"
             prop="entryDate"
             label="入职时间"
             width="150px"
@@ -273,7 +279,7 @@
             prop="organName"
             label="分部"
           ></el-table-column>
-          <el-table-column
+          <!-- <el-table-column
             align="center"
             prop="isProbationPeriod"
             label="是否试用期"
@@ -287,7 +293,7 @@
                   : ""
               }}
             </template>
-          </el-table-column>
+          </el-table-column> -->
           <el-table-column align="center" prop="status" label="人员状态">
             <template slot-scope="scope">
               {{ scope.row.status | hrStatus }}
@@ -396,7 +402,7 @@
       destroy-on-close
       :close-on-click-modal="false"
       @close="onFormClose('ruleForm')"
-      width="1050px"
+      width="1150px"
     >
       <hrform
         :detail.sync="rowDetail"
@@ -404,6 +410,7 @@
         :organList="organList"
         :subjectList="subjectList"
         :close="onFormClose"
+        :formActionTitle="formActionTitle"
         :getList="getList"
       />
     </el-dialog>

+ 3 - 3
vue.config.js

@@ -19,8 +19,8 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.148:8000' //邹璇
 // let target = 'http://192.168.3.112:8000' //勇哥
-// let target = 'http://dev.dayaedu.com' // 开发环境
-let target = 'https://test.dayaedu.com' //测试环境
+let target = 'http://dev.dayaedu.com' // 开发环境
+// let target = 'https://test.dayaedu.com' //测试环境
 // let target = 'http://192.168.3.134' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
@@ -54,7 +54,7 @@ module.exports = {
     //   warnings: false,
     //   errors: true
     // },
-    https: true,
+    https: false,
     proxy: {
       // change xxx-api/login => mock/login
       // detail: https://cli.vuejs.org/config/#devserver-proxy