From 96cf0b3e2d552a10ed090e0f07dc5d219eb4f68c Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 08 Jul 2021 23:45:58 +0800
Subject: [PATCH] 保安员入职登记实现

---
 src/views/securityGuard/securityGuardRegistration.vue |  709 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 383 insertions(+), 326 deletions(-)

diff --git a/src/views/securityGuard/securityGuardRegistration.vue b/src/views/securityGuard/securityGuardRegistration.vue
index 76a2fa4..a87668a 100644
--- a/src/views/securityGuard/securityGuardRegistration.vue
+++ b/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>
\ No newline at end of file

--
Gitblit v1.9.3