From cfdafcf22dbd868c9876d37efbd92b97ba014bef Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 26 三月 2025 09:17:01 +0800
Subject: [PATCH] 优化

---
 company/src/components/enterprise/addEmployeeWithDu.vue |  204 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 204 insertions(+), 0 deletions(-)

diff --git a/company/src/components/enterprise/addEmployeeWithDu.vue b/company/src/components/enterprise/addEmployeeWithDu.vue
new file mode 100644
index 0000000..7565552
--- /dev/null
+++ b/company/src/components/enterprise/addEmployeeWithDu.vue
@@ -0,0 +1,204 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <el-form :inline="true" class="demo-form-inline">
+            <div v-for="(item, index) in list" :key="index">
+                <el-form-item label="濮撳悕" required>
+                    <el-input v-model="item.memberName" placeholder="璇疯緭鍏�"></el-input>
+                </el-form-item>
+                <el-form-item label="韬唤璇佸彿" required>
+                    <el-input v-model="item.idCard" maxlength="18" placeholder="璇疯緭鍏�"></el-input>
+                </el-form-item>
+              <el-form-item label="娲鹃仯鍗曚綅" >
+                <el-select v-model="item.duId" @change="selectChange(index)" placeholder="璇烽�夋嫨" clearable>
+                  <el-option
+                      v-for="item in dispatching"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="鎵�灞炲伐绉�" >
+                <el-select v-model="item.worktypeId" @change="selectChangeWT(index)"  placeholder="璇烽�夋嫨" clearable>
+                  <el-option
+                      v-for="item1 in item.options"
+                      :key="item1.id"
+                      :label="item1.name"
+                      :value="item1.id">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" v-if="index === 0" @click="add">娣诲姞</el-button>
+                    <el-button type="danger" v-else @click="dele(index)">鍒犻櫎</el-button>
+                </el-form-item>
+            </div>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { findListByDTO } from '@/api/business/dispatchUnit'
+import { findListByDTO as worktype } from '@/api/business/worktype'
+export default {
+  name: 'addEmployee',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      tempIndex: -1,
+      dispatching: [],
+      solutionId: null,
+      list: [
+        {
+          memberName: '',
+          idCard: '',
+          workTypeName: '',
+          worktypeId: '',
+          duName: '',
+          options: [],
+          duId: '',
+          fee: ''
+        }
+      ],
+      price: 0,
+      arr: []
+    }
+  },
+  methods: {
+    open (title, obj, tempIndex) {
+      this.title = title
+      this.visible = true
+      this.tempIndex = tempIndex
+      this.solutionId = obj.solutionId
+      this.dispatching = []
+      this.list = [
+        {
+          memberName: '',
+          idCard: '',
+          workTypeName: '',
+          worktypeId: '',
+          duName: '',
+          options: [],
+          duId: '',
+          fee: ''
+        }
+      ]
+      this.arr = obj.arr
+      this.price = obj.price
+      this.getFindListByDTO()
+    },
+    getFindListByDTO () {
+      findListByDTO({
+        solutionId: this.solutionId
+        // dataType: 0
+      }).then(res => {
+        this.dispatching = res
+      })
+    },
+    selectChange (index) {
+      this.list[index].options = []
+      let duSolutionId = ''
+      this.list[index].duName = null
+      this.dispatching.forEach(item => {
+        if (item.id === this.list[index].duId) {
+          duSolutionId = item.duSolutionId
+          this.list[index].duName = item.name
+        }
+      })
+      worktype({ id: duSolutionId, queryType: 1 })
+        .then(res => {
+          this.list[index].options = res
+        })
+    },
+    selectChangeWT (index) {
+      this.list[index].workTypeName = null
+      this.list[index].options.forEach(item => {
+        if (item.id === this.list[index].worktypeId) {
+          this.list[index].workTypeName = item.name
+        }
+      })
+    },
+    add () {
+      this.list.push({
+        memberName: '',
+        idCard: '',
+        workTypeName: '',
+        worktypeId: '',
+        duName: '',
+        duId: '',
+        options: [],
+        fee: '',
+        id: this.tempIndex - 1
+      })
+    },
+    dele (index) {
+      this.list.splice(index, 1)
+    },
+    hasDuplicates (arr) {
+      return arr.some((value, index) => arr.indexOf(value) !== index)
+    },
+    confirm () {
+      // 鍒ゆ柇鍒楄〃鍚︽槸鏈夌┖鍊�
+      // for (let i = 0; this.list.length; i++) {
+      //     if (!this.list[i].memberName || !this.list[i].idCard) {
+      //         this.$message.warning('璇峰厛瀹屽杽淇℃伅鍚庡啀鎻愪氦')
+      //         return
+      //     }
+      // }
+      // 鍒ゆ柇鏂板綍鍏ユ暟鎹韩浠借瘉鏄惁鏈夐噸澶�
+      const idcardList = this.list.map(item => item.idCard)
+      if (this.hasDuplicates(idcardList)) {
+        this.$message.warning('韬唤璇佹湁閲嶅')
+        return
+      }
+      // 鍒ゆ柇韬唤璇佹槸鍚︽湁鏁�
+      for (let i = 0; i < this.list.length; i++) {
+        const regExp = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
+        if (!regExp.test(this.list[i].idCard)) {
+          this.$message.warning(`绗�${i + 1}椤瑰憳宸ヨ韩浠借瘉涓嶅悎娉昤)
+          return
+        }
+        const s=parseInt(this.list[i].idCard.substring(16,17))
+        // const s = parseInt(this.list[i].idCard.slice(16, 1))
+        if (s % 2 === 0) {
+          this.list[i].sex = 1
+        } else {
+          this.list[i].sex = 0
+        }
+      }
+      // 鍒ゆ柇璇︽儏鍒楄〃鏁版嵁韬唤璇佹槸鍚︽湁閲嶅
+      let next = true
+      this.list.forEach(item => {
+        this.arr.forEach(child => {
+          if (item.idCard === child.idCard) {
+            next = false
+          }
+        })
+      })
+      if (next) {
+        this.list.forEach(item => {
+          item.fee = this.price
+        })
+        console.log(this.list)
+        this.$emit('result', this.list)
+        this.visible = false
+      } else {
+        this.$message.warning('韬唤璇佸彿涓嶈兘閲嶅锛�')
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

--
Gitblit v1.9.3