|
|
|
|
<!--
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2024-09-12 14:41:53
|
|
|
|
|
@ 备注: 获取行政组织数据
|
|
|
|
|
-->
|
|
|
|
|
<script lang='ts' setup>
|
|
|
|
|
import { getgovcont } from '@/api/hr/org/index'
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
orgid:{
|
|
|
|
|
type: String,
|
|
|
|
|
default:""
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
const orgName = ref("")
|
|
|
|
|
|
|
|
|
|
/* const orgName = computed(()=>{
|
|
|
|
|
return str.value
|
|
|
|
|
}) */
|
|
|
|
|
|
|
|
|
|
//let str = ref("")
|
|
|
|
|
|
|
|
|
|
//选择行政组织
|
|
|
|
|
const pickOrgVal = (val:any) => {
|
|
|
|
|
|
|
|
|
|
if(val != "" && val != null){
|
|
|
|
|
if(hasComma(val)){
|
|
|
|
|
|
|
|
|
|
let arr = commaStringToNumberArray(val)
|
|
|
|
|
let str= ''
|
|
|
|
|
arr.forEach((element, index, array) => {
|
|
|
|
|
// 判断当前是否是最后一个元素
|
|
|
|
|
const isLast = index === array.length - 1;
|
|
|
|
|
str = ''
|
|
|
|
|
|
|
|
|
|
let item = element+""
|
|
|
|
|
getgovcont({id:element*1,idstr:item})
|
|
|
|
|
.then(({data}) =>{
|
|
|
|
|
str+=data.name+","
|
|
|
|
|
})
|
|
|
|
|
.finally(()=>{
|
|
|
|
|
if(isLast){
|
|
|
|
|
//alert(1)
|
|
|
|
|
str = removeLastChar(str)
|
|
|
|
|
orgName.value = str
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
getgovcont({id:val*1,idstr:val})
|
|
|
|
|
.then(({data}) =>{
|
|
|
|
|
// console.log("选择行政组织-3->",data,data.name)
|
|
|
|
|
orgName.value = data.name
|
|
|
|
|
})
|
|
|
|
|
.finally(()=>{})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function removeLastChar(str: string | any[]) {
|
|
|
|
|
// 检查输入是否为字符串
|
|
|
|
|
if (typeof str !== 'string') {
|
|
|
|
|
throw new Error('输入必须是字符串类型');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理空字符串情况
|
|
|
|
|
if (str.length === 0) {
|
|
|
|
|
return str; // 空字符串返回自身
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 截取从开始到倒数第二个字符的部分
|
|
|
|
|
return str.slice(0, -1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function hasComma(str: any) {
|
|
|
|
|
// 检查输入是否为字符串类型
|
|
|
|
|
if (typeof str !== 'string') {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 使用indexOf检查是否包含逗号
|
|
|
|
|
// 如果存在逗号,返回true;否则返回false
|
|
|
|
|
return str.indexOf(',') !== -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function commaStringToNumberArray(str: string) {
|
|
|
|
|
// 检查输入是否为字符串
|
|
|
|
|
if (typeof str !== 'string') {
|
|
|
|
|
throw new Error('输入必须是字符串');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理空字符串的情况
|
|
|
|
|
if (str.trim() === '') {
|
|
|
|
|
return [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 按逗号分割字符串,处理可能的空格,并转换为数字
|
|
|
|
|
return str.split(',').map(item => {
|
|
|
|
|
// 去除前后空格
|
|
|
|
|
const trimmed = item.trim();
|
|
|
|
|
// 转换为数字
|
|
|
|
|
const number = Number(trimmed);
|
|
|
|
|
|
|
|
|
|
// 检查是否为有效数字
|
|
|
|
|
if (isNaN(number)) {
|
|
|
|
|
throw new Error(`无法将 "${trimmed}" 转换为有效数字`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return number;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onBeforeMount(() => {
|
|
|
|
|
pickOrgVal(props.orgid)
|
|
|
|
|
})
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
pickOrgVal(props.orgid)
|
|
|
|
|
});
|
|
|
|
|
watch(() =>props.orgid,(val:string) => {
|
|
|
|
|
// console.log("选择行政组织-4->",val)
|
|
|
|
|
pickOrgVal(val)
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
<template>
|
|
|
|
|
<div>{{ orgName }}</div>
|
|
|
|
|
</template>
|
|
|
|
|
<style lang='scss' scoped>
|
|
|
|
|
|
|
|
|
|
</style>
|