|
|
@@ -109,7 +109,7 @@
|
|
109
|
109
|
<el-col :span="12">
|
|
110
|
110
|
<el-form-item label="资质等级" prop="qualificationLevel"
|
|
111
|
111
|
:rules="(form.roleIds || []).includes(101) || (form.roleIds || []).includes(102) ? [{ required: true, message: '请选择资质等级', trigger: 'blur' }] : []">
|
|
112
|
|
- <el-select v-model="form.qualificationLevel" placeholder="请选择资质等级">
|
|
|
112
|
+ <el-select v-model="form.qualificationLevel" placeholder="请选择资质等级" @change="handleQualificationLevelChange">
|
|
113
|
113
|
<el-option v-for="item in sys_user_qualification_level" :key="item.value" :label="item.label"
|
|
114
|
114
|
:value="item.value" />
|
|
115
|
115
|
</el-select>
|
|
|
@@ -118,7 +118,7 @@
|
|
118
|
118
|
<el-col :span="12">
|
|
119
|
119
|
<el-form-item label="岗位类型" prop="postIds"
|
|
120
|
120
|
:rules="(form.roleIds || []).includes(101) || (form.roleIds || []).includes(102) ? [{ required: true, message: '请选择岗位类型', trigger: 'blur' }] : []">
|
|
121
|
|
- <el-cascader v-model="form.postIds" :options="treeData" :props="treeNodeProps" filterable
|
|
|
121
|
+ <el-cascader v-model="form.postIds" :options="filteredTreeData" :props="treeNodeProps" filterable
|
|
122
|
122
|
style="width: 100%" />
|
|
123
|
123
|
</el-form-item>
|
|
124
|
124
|
</el-col>
|
|
|
@@ -152,7 +152,7 @@
|
|
152
|
152
|
</el-form-item>
|
|
153
|
153
|
</el-col>
|
|
154
|
154
|
<el-col :span="24">
|
|
155
|
|
- <el-form-item label="身体健康情况" prop="physicalHealthStatus">
|
|
|
155
|
+ <el-form-item label="健康异常情况" prop="physicalHealthStatus">
|
|
156
|
156
|
<el-input v-model="form.physicalHealthStatus" type="textarea" placeholder="请输入内容"></el-input>
|
|
157
|
157
|
</el-form-item>
|
|
158
|
158
|
</el-col>
|
|
|
@@ -162,12 +162,14 @@
|
|
162
|
162
|
<el-row :gutter="16">
|
|
163
|
163
|
<el-col :span="12">
|
|
164
|
164
|
<el-form-item label="开始工作时间" prop="startWorkingDate">
|
|
165
|
|
- <el-date-picker v-model="form.startWorkingDate" type="date" placeholder="请选择开始工作时间" value-format="YYYY-MM-DD" style="width: 100%;" />
|
|
|
165
|
+ <el-date-picker v-model="form.startWorkingDate" type="date" placeholder="请选择开始工作时间"
|
|
|
166
|
+ value-format="YYYY-MM-DD" style="width: 100%;" />
|
|
166
|
167
|
</el-form-item>
|
|
167
|
168
|
</el-col>
|
|
168
|
169
|
<el-col :span="12">
|
|
169
|
170
|
<el-form-item label="开始安检工作时间" prop="securityCheckStartDate" label-width="140px">
|
|
170
|
|
- <el-date-picker v-model="form.securityCheckStartDate" type="date" placeholder="请选择开始安检工作时间" value-format="YYYY-MM-DD" style="width: 100%;" />
|
|
|
171
|
+ <el-date-picker v-model="form.securityCheckStartDate" type="date" placeholder="请选择开始安检工作时间"
|
|
|
172
|
+ value-format="YYYY-MM-DD" style="width: 100%;" />
|
|
171
|
173
|
</el-form-item>
|
|
172
|
174
|
</el-col>
|
|
173
|
175
|
<el-col :span="12">
|
|
|
@@ -373,7 +375,7 @@
|
|
373
|
375
|
</template>
|
|
374
|
376
|
|
|
375
|
377
|
<script setup>
|
|
376
|
|
-import { onMounted, reactive, computed } from 'vue';
|
|
|
378
|
+import { onMounted, reactive, computed, watch, nextTick, ref } from 'vue';
|
|
377
|
379
|
import { useDict } from '@/utils/dict'
|
|
378
|
380
|
import { listAllTree } from '@/api/system/post'
|
|
379
|
381
|
import UserSelect from '@/components/UserSelect/index.vue'
|
|
|
@@ -427,7 +429,7 @@ const rules = computed(() => ({
|
|
427
|
429
|
nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
|
|
428
|
430
|
password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }, { pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }],
|
|
429
|
431
|
email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
|
|
430
|
|
- phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
|
|
|
432
|
+ phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
|
|
431
|
433
|
emergencyContactPhone: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
|
|
432
|
434
|
roleIds: [{ required: true, message: '请选择角色', trigger: "blur" }],
|
|
433
|
435
|
status: [{ required: true, message: '请选择账号状态', trigger: "blur" }]
|
|
|
@@ -435,6 +437,52 @@ const rules = computed(() => ({
|
|
435
|
437
|
|
|
436
|
438
|
const treeNodeProps = { multiple: true, expandTrigger: 'hover', label: 'postName', value: 'postId', emitPath: false, checkOnClickNode: true }
|
|
437
|
439
|
const treeData = ref([])
|
|
|
440
|
+
|
|
|
441
|
+// 过滤后的岗位类型选项
|
|
|
442
|
+const filteredTreeData = computed(() => {
|
|
|
443
|
+ if (!treeData.value || treeData.value.length === 0) {
|
|
|
444
|
+ return []
|
|
|
445
|
+ }
|
|
|
446
|
+
|
|
|
447
|
+ // 如果资质等级为五级,过滤掉value为9或10的选项
|
|
|
448
|
+ // 其他级别显示完整的选项列表
|
|
|
449
|
+ if (form.value.qualificationLevel === 'LEVEL_FIVE') {
|
|
|
450
|
+ return filterTreeData(JSON.parse(JSON.stringify(treeData.value)))
|
|
|
451
|
+ }
|
|
|
452
|
+
|
|
|
453
|
+ // 其他级别返回完整的选项列表
|
|
|
454
|
+ return treeData.value
|
|
|
455
|
+})
|
|
|
456
|
+
|
|
|
457
|
+// 递归过滤树形数据
|
|
|
458
|
+const filterTreeData = (data) => {
|
|
|
459
|
+ return data.filter(item => {
|
|
|
460
|
+
|
|
|
461
|
+ // 过滤掉value为9或10的选项
|
|
|
462
|
+ if (item.postId == 9 || item.postId == 10) {
|
|
|
463
|
+
|
|
|
464
|
+ return false
|
|
|
465
|
+ }
|
|
|
466
|
+
|
|
|
467
|
+ // 如果有子节点,递归过滤
|
|
|
468
|
+ if (item.children && item.children.length > 0) {
|
|
|
469
|
+ item.children = filterTreeData(item.children)
|
|
|
470
|
+ }
|
|
|
471
|
+
|
|
|
472
|
+ return true
|
|
|
473
|
+ })
|
|
|
474
|
+}
|
|
|
475
|
+
|
|
|
476
|
+// 资质等级变化处理函数
|
|
|
477
|
+const handleQualificationLevelChange = (newVal) => {
|
|
|
478
|
+ console.log('资质等级变化', newVal)
|
|
|
479
|
+ form.value.postIds = []
|
|
|
480
|
+ // 触发验证
|
|
|
481
|
+ nextTick(() => {
|
|
|
482
|
+ userRef.value && userRef.value.validateField('postIds')
|
|
|
483
|
+ })
|
|
|
484
|
+}
|
|
|
485
|
+
|
|
438
|
486
|
onMounted(() => {
|
|
439
|
487
|
listAllTree().then(res => {
|
|
440
|
488
|
treeData.value = res.data || []
|