Administrator
2021-07-08 96cf0b3e2d552a10ed090e0f07dc5d219eb4f68c
src/views/securityGuard/securityGuardRegistration.vue
@@ -1,342 +1,399 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-07-07 18:01:57
 * menu-name 保安详细资料
 */
<template>
    <el-row class="morpheus-box">
        <el-col :span="24">
            <el-card>
                <div class="card-body">
                    <el-tabs v-model="activeName"
                             @tab-click="handleClick">
                        <el-tab-pane label="基本信息"
                                     name="first">
                            <el-form :model="form"
                                     label-position="right"
                                     size="mini"
                                     label-width="100px">
                                <el-row>
                                    <el-col span="12">
                                        <el-form-item label="姓名">
                                            <el-input disabled="true"
                                                      v-model="form.realName"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                    <el-col span="12">
                                        <el-form-item label="性别">
                                            <el-input disabled="true"
                                                      :value="form.sex == 1 ? '男' : '女'"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                </el-row>
                                <el-row>
                                    <el-col span="12">
                                        <el-col span="12">
                                            <el-form-item label="电子邮箱">
                                                <el-input disabled="true"
                                                          v-model="form.emails"
                                                          autocomplete="off"></el-input>
                                            </el-form-item>
                                        </el-col>
                                    </el-col>
                                    <el-col span="12">
                                        <el-form-item label="联系方式">
                                            <el-input disabled="true"
                                                      v-model="form.phone"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                </el-row>
                                <el-row>
                                    <el-col span="12">
                                        <el-form-item label="身高">
                                            <el-input disabled="true"
                                                      v-model="form.height"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                    <el-col span="12">
                                        <el-form-item label="联系地址">
                                            <el-input disabled="true"
                                                      v-model="form.address"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                </el-row>
                                <el-row>
                                    <el-col span="12">
                                        <el-form-item label="籍贯">
                                            <el-input disabled="true"
                                                      v-model="form.nativePlace"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                    <el-col span="12">
                                        <el-form-item label="户口所在地">
                                            <el-input disabled="true"
                                                      v-model="form.registered"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                </el-row>
                                <el-row>
                                    <el-col span="12">
                                        <el-form-item label="政治面貌">
                                            <el-input disabled="true"
                                                      v-model="form.politicaloutlook"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                    <el-col span="12">
                                        <el-form-item label="身份证号">
                                            <el-input disabled="true"
                                                      v-model="form.cardid"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                </el-row>
                                <el-row>
                                    <el-col span="12">
                                        <el-form-item label="所属角色">
                                            <el-input disabled="true"
                                                      v-model="form.roleName"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                    <el-col span="12">
                                        <el-form-item label="所属公司">
                                            <el-input disabled="true"
                                                      v-model="form.deptName"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                </el-row>
                                <el-row>
                                    <el-col span="12">
                                        <el-form-item label="入职时间">
                                            <el-input disabled="true"
                                                      v-model="form.rtime"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                    <el-col span="12">
                                        <el-form-item label="是否在职">
                                            <el-input disabled="true"
                                                      :value="form.sex == 1 ? '是' : '否'"
                                                      autocomplete="off"></el-input>
                                        </el-form-item>
                                    </el-col>
                                </el-row>
                            </el-form>
                        </el-tab-pane>
                        <el-tab-pane label="人员表现"
                                     name="second">
                            <el-table :data="manifestationData"
                                      style="width: 100%">
                                <el-table-column prop="name"
                                                 label="姓名"
                                                 align="center">
                                </el-table-column>
                                <el-table-column prop="securityid"
                                                 label="身份证号"
                                                 align="center">
                                </el-table-column>
                                <el-table-column prop="workingattitude"
                                                 align="center"
                                                 label="工作态度">
                                </el-table-column>
                                <el-table-column prop="workingability"
                                                 align="center"
                                                 label="工作能力">
                                </el-table-column>
                                <el-table-column prop="achievements"
                                                 align="center"
                                                 label="工作成效">
                                </el-table-column>
                                <el-table-column prop="score"
                                                 align="center"
                                                 label="评分">
                                </el-table-column>
                                <el-table-column prop="time"
                                                 align="center"
                                                 label="时间">
                                </el-table-column>
                            </el-table>
                        </el-tab-pane>
                        <el-tab-pane label="派遣记录"
                                     name="third">
                            <el-table :data="dispatchData"
                                      style="width: 100%">
                                <el-table-column prop="name"
                                                 label="姓名"
                                                 align="center">
                                </el-table-column>
                                <el-table-column prop="cardid"
                                                 label="身份证号"
                                                 align="center">
                                </el-table-column>
                                <el-table-column prop="dispatcher"
                                                 align="center"
                                                 label="派遣人">
                                </el-table-column>
                                <el-table-column prop="dispatchertime"
                                                 align="center"
                                                 label="派遣时间">
                                </el-table-column>
                                <el-table-column prop="dispatcheraddress"
                                                 align="center"
                                                 label="派遣地址">
                                </el-table-column>
                            </el-table>
                        </el-tab-pane>
                        <el-tab-pane label="相关荣誉"
                                     name="fourth">
                            <el-table :data="honorchData"
                                      style="width: 100%">
                                <el-table-column prop="name"
                                                 label="姓名"
                                                 align="center">
                                </el-table-column>
                                <el-table-column prop="cardid"
                                                 label="身份证号"
                                                 align="center">
                                </el-table-column>
                                <el-table-column prop="honor"
                                                 align="center"
                                                 label="荣誉">
                                </el-table-column>
                                <el-table-column prop="honortime"
                                                 align="center"
                                                 label="获取时间">
                                </el-table-column>
                            </el-table>
                        </el-tab-pane>
                    </el-tabs>
                </div>
            </el-card>
        </el-col>
    </el-row>
  <el-row>
    <el-col>
      <basic-container>
        <avue-form :option="option" v-model="form" @submit="update">
            <template slot-scope="{row}" slot="input">
                <el-tag>{{row}}</el-tag>
            </template>
        </avue-form>
      </basic-container>
    </el-col>
  </el-row>
</template>
<script>
// import {
//     manifestationList,
//     dispatchList,
//     honorchList
// } from "@/api/management/peopleDetails";
  import {
    getUser,
    update,
    getUserPractitionersInfo,
    saveOrUpdateUserPractitionersInfo
  } from "@/api/system/user";
  import {getDeptLazyTree} from "@/api/system/dept";
export default {
    data () {
        return {
            activeName: 'first',
            form: {},
            manifestationData: [],
            dispatchData: [],
            honorchData: [],
        }
    },
    created () {
        var flag = false, i = 0, ind = null
        this.$store.state.tags.tagList.forEach((item, index) => {
            if (item.label == "保安详细资料") {
                if (flag == false) {
                    ind = index
                    flag = true
  export default {
    data() {
      return {
        loading: true,
        userId:"",
        init: {
          deptTree: [],
        },
        props: {
          label: "title",
          value: "key"
        },
        roleGrantList: [],
        roleTreeObj: [],
        treeDeptId: '',
        treeData: [],
        form:{
            UserPractitionersInfo:[]
        },
        treeOption: {
          nodeKey: 'id',
          lazy: true,
          treeLoad: function (node, resolve) {
            const parentId = (node.level === 0) ? 0 : node.data.id;
            getDeptLazyTree(parentId).then(res => {
              resolve(res.data.data.map(item => {
                return {
                  ...item,
                  leaf: !item.hasChildren
                }
                i++
              }))
            });
          },
          addBtn: false,
          menu: false,
          size: 'small',
          props: {
            labelText: '标题',
            label: 'title',
            value: 'value',
            children: 'children'
          }
        },
        option: {
          height: 'auto',
          calcHeight: 54,
          tip: false,
          searchShow: true,
          searchMenuSpan: 6,
          border: false,
          stripe: true,
          index: true,
          selection: true,
          dialogClickModal: false,
          group: [
            {
              label: '基础信息',
              labelWidth:"110",
              prop: 'baseInfo',
              icon: 'el-icon-user-solid',
              column: [
                {
                  label: "所属保安单位",
                  prop: "tenantId",
                  type: "tree",
                  dicUrl: "/api/blade-system/tenant/select",
                  props: {
                    label: "tenantName",
                    value: "tenantId"
                  },
                  disabled:true,
                  span: 24,
                },
                {
                  label: "登录账号",
                  prop: "account",
                  disabled:true
                },
                {
                  label: "用户姓名",
                  prop: "realName",
                  rules: [{
                    required: true,
                    message: "请输入用户姓名",
                    trigger: "blur"
                  }, {
                    min: 2,
                    max: 5,
                    message: '姓名长度在2到5个字符'
                  }]
                },
                {
                  label: "用户昵称",
                  prop: "name"
                },
                {
                  label: "手机号码",
                  prop: "phone",
                  overHidden: true,
                  rules: [{
                    required: true,
                    message: "请输入手机号",
                    trigger: "blur"
                  }]
                },
                {
                  label: "电子邮箱",
                  prop: "email"
                },
                {
                  label: "身份证号",
                  prop: "cardid",
                  hide: true,
                  overHidden: true,
                  rules: [{
                    required: true,
                    message: "请输入身份证号",
                    trigger: "blur"
                  }]
                },
                {
                  label: "籍贯",
                  prop: "nativeplace"
                },
                {
                  label: "民族",
                  prop: "nation"
                },
                {
                  label: "最高学历",
                  prop: "education",
                  type: "select",
                  dicUrl: "/api/blade-system/dict-biz/dictionary?code=educationType",
                  props: {
                    label: "dictValue",
                    value: "dictKey"
                  },
                  dataType: "number",
                  slot: true,
                  rules: [{
                    required: true,
                    message: "请选择学历",
                    trigger: "blur"
                  }]
                },
                {
                  label: "政治面貌",
                  prop: "politicaloutlook"
                },
                {
                  label: "身高",
                  prop: "height"
                },
                {
                  label: "联系地址",
                  prop: "address"
                },
                {
                  label: "户口所在地",
                  prop: "registered"
                },
                {
                  label: "入职时间",
                  prop: "rtime",
                  type:'date',
                  format: "yyyy-MM-dd",
                  valueFormat: "yyyy-MM-dd"
                },
                {
                  label: "用户性别",
                  prop: "sex",
                  type: "select",
                  dicData: [
                    {
                      label: "男",
                      value: 1
                    },
                    {
                      label: "女",
                      value: 2
                    },
                    {
                      label: "未知",
                      value: 3
                    }
                  ]
                },
                {
                  label: "用户生日",
                  type: "date",
                  prop: "birthday"
                }
              ]
            },
            {
              label: '从业信息',
              prop: 'detailInfo',
              icon: 'el-icon-s-order',
              column: [
                    {
                    prop: 'UserPractitionersInfo',
                    type: 'dynamic',
                    border: false,
                    span:24,
                    children: {
                        align: 'left',
                        headerAlign: 'center',
                        type:'form',
                        rowAdd:(done)=>{
                            console.log(done,111);
                            done({
                                input:'默认值'
                            });
                        },
                        rowDel:(row,done)=>{
                            console.log(row,222);
                            done();
                        },
                        column: [
                                {
                                    width: 200,
                                    label: '单位名称',
                                    prop: "companyname",
                                    formslot: true,
                                }, {
                                    width: 200,
                                    label: '部门',
                                    prop: "department",
                                    formslot: true,
                                }, {
                                    width: 200,
                                    label: '岗位',
                                    prop: "post",
                                    formslot: true,
                                },  {
                                    width: 200,
                                    label: '岗位职责',
                                    prop: "responsibilities",
                                    formslot: true,
                                },  {
                                    width: 200,
                                    label: '入职时间',
                                    type:'date',
                                    format: "yyyy-MM-dd",
                                    valueFormat: "yyyy-MM-dd",
                                    prop: "entryTime",
                                    formslot: true,
                                },  {
                                    width: 200,
                                    label: '离职时间',
                                    type:'date',
                                    format: "yyyy-MM-dd",
                                    valueFormat: "yyyy-MM-dd",
                                    prop: "departureTime",
                                    formslot: true,
                                },  {
                                    width: 200,
                                    label: '离职原因',
                                    prop: "leaving",
                                    formslot: true,
                                }
                            ]
                        }
                    },
                ]
            }
        })
        if (i > 1) {
            this.$store.state.tags.tagList.splice(ind, 1)
        }
        this.form = this.$route.query;
          ]
        },
        data: []
      };
    },
    mounted () {
        // this.$store.state.tags.tag.label = '保安详细资料'
    watch: {
      'form.tenantId'() {
        if (this.form.tenantId !== '' && this.initFlag) {
          this.initData(this.form.tenantId);
        }
      },
      'excelForm.isCovered'() {
        if (this.excelForm.isCovered !== '') {
          const column = this.findObject(this.excelOption.column, "excelFile");
          column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;
        }
      }
    },
    computed: {
    },
    mounted() {
      //获取userId
      this.userId = JSON.parse(window.localStorage.getItem("saber-userInfo")).content.user_id;
      //获取用户信息
      this.getUserDetail();
    },
    methods: {
        handleClick (tab) {
            if (tab.index == 1) {
                this.getManifestationData()
            } else if (tab.index == 2) {
                this.getDispatchData()
            } else if (tab.index == 3) {
                this.getHonorchData()
      //获取用户信息
      getUserDetail(){
         var that = this;
          //获取用户基本信息
         getUser(this.userId).then(res => {
            this.form = res.data.data;
            var userInfo = res.data.data;
            //获取用户从业信息
            getUserPractitionersInfo(userInfo.cardid).then(res1 =>{
               that.form.UserPractitionersInfo = res1.data.data;
            })
            if (this.form.hasOwnProperty("deptId")) {
              this.form.deptId = this.form.deptId.split(",");
            }
        },
        getManifestationData () {
            manifestationList(this.form.cardid).then(res => {
                this.manifestationData = res.data.data.records
                this.manifestationData.forEach(item => {
                    item.name = this.form.realName
                    item.time = item.time.substring(0, 10)
                })
            })
        },
        getDispatchData () {
            dispatchList(this.form.cardid).then(res => {
                this.dispatchData = res.data.data.records
            })
        },
        getHonorchData () {
            honorchList(this.form.cardid).then(res => {
                this.honorchData = res.data.data.records
            })
            if (this.form.hasOwnProperty("postId")) {
              this.form.postId = this.form.postId.split(",");
            }
         });
      },
      //新增用户信息(包含从业信息)
      update(row, index, done, loading) {
        const userPractitionersList = [];
        var userPractitionersInfo = row.UserPractitionersInfo;
        if(userPractitionersInfo.length>0){
            userPractitionersInfo.forEach(item => {
                const info = {
                    companyname: item.companyname,
                    department: item.department,
                    departureTime: item.departureTime,
                    entryTime: item.entryTime,
                    name:row.realName,
                    leaving: item.leaving,
                    cardid:row.cardid,
                    post: item.post,
                    responsibilities: item.responsibilities
                }
                userPractitionersList.push(info);
            });
        }
        var IdCardNo = row.cardid;
        row.deptId = row.deptId.join(",");
        row.postId = row.postId.join(",");
        update(row).then(() => {
           const experience = {
               cardid:IdCardNo,
               userPractitionersInfo:userPractitionersList
           }
           //更新从业信息
            saveOrUpdateUserPractitionersInfo(experience).then(()=>{
                this.$message({
                    type: "success",
                    message: "操作成功!"
                 });
            })
           this.loading = false;
          done();
        }, error => {
          window.console.log(error,111);
          loading();
        });
      }
    }
}
  };
</script>
<style lang="scss" scoped>
<style>
  .box {
    height: 800px;
  }
  .el-scrollbar {
    height: 100%;
  }
  .box .el-scrollbar__wrap {
    overflow: scroll;
  }
  /* .el-form-item__content{
      margin-left: 0px !important;
  } */
</style>