对接’我的布控的增删查改‘,布控审核送审

This commit is contained in:
jy
2025-05-26 21:03:06 +08:00
parent 64bbcd2a06
commit 65947c2eb4
18 changed files with 3332 additions and 890 deletions

View File

@ -44,7 +44,11 @@
style="width: 100%"
height="450"
>
<el-table-column type="selection" width="55" :reserve-selection="true" />
<el-table-column
type="selection"
width="55"
:reserve-selection="true"
/>
<el-table-column
prop="loginName"
align="center"
@ -131,7 +135,7 @@ const props = defineProps({
roleIds: {
type: Array,
default: []
},
}
});
const total = ref(0);
const listQuery = ref({
@ -163,16 +167,17 @@ const keyid = (row) => {
// 为用户分配角色
const onComfirm = () => {
const userList = multipleSelectionUser.value;
let list = []
let listId = []
userList.forEach(val=>{
if(listId.indexOf(val.id) == -1) {
let list = [];
let listId = [];
userList.forEach((val) => {
if (listId.indexOf(val.id) == -1) {
list.push(val);
listId.push(val.id);
}
})
});
emits("choosedUsers", list);
let data = { type: props.LeaderType, userList: userList };
emits("choosedUsersLeader", data);
closed();
};
@ -193,20 +198,20 @@ const handleCurrentChange = (currentPage) => {
};
const getListData = () => {
const params = listQuery.value;
selectUserDeptPage(params).then(res=>{
selectUserDeptPage(params).then((res) => {
tableData.value = res?.records;
total.value = Number(res.total);
multipleUser()
multipleUser();
});
};
//列表回显
function multipleUser() {
tableData.value.forEach(item=>{
if(props.roleIds.some(id=>id == item.id)){
tableData.value.forEach((item) => {
if (props.roleIds.some((id) => id == item.id)) {
multipleUserRef.value.toggleRowSelection(item, true);
}
})
});
}
const handleFilter = () => {
@ -226,7 +231,6 @@ const handleSelectionChange = (val) => {
} else {
multipleSelectionUser.value = val;
}
};
</script>
@ -241,10 +245,8 @@ const handleSelectionChange = (val) => {
.tabBoxRadio .el-table__header-wrapper .el-checkbox {
display: none;
}
.el-dialog{
background: #050e33;
}
.el-dialog__title{
color: #fff;
.el-dialog__title {
color: #fff;
}
</style>

View File

@ -1,46 +1,155 @@
<template>
<el-form ref="elform" :model="listQuery" :label-width="props.labelWidth" :rules="props.rules" :inline="true" label-position="right">
<el-form-item v-for="item in props.formList" :style="{ width: item.width }" :prop="item.prop" :label="item.label" :label-width="item.labelWidth" :key="item">
<el-form
ref="elform"
:model="listQuery"
:label-width="props.labelWidth"
:rules="props.rules"
:inline="true"
label-position="right"
>
<el-form-item
v-for="item in props.formList"
:style="item.width && { width: item.width }"
:prop="item.prop"
:label="item.label"
:label-width="item.labelWidth"
:key="item"
>
<!-- input表单 input-->
<MOSTY.Other v-if="item.type == 'input'" width="100%" clearable v-model="listQuery[item.prop]" :placeholder="`请输入${item.label}`"/>
<el-input v-model="listQuery[item.prop]" v-else-if="item.type == 'textarea'" type="textarea" :rows="3" :placeholder="`请输入${item.label}`" />
<MOSTY.Other
v-if="item.type == 'input'"
width="100%"
clearable
v-model="listQuery[item.prop]"
:placeholder="`请输入${item.label}`"
/>
<el-input
v-model="listQuery[item.prop]"
v-else-if="item.type == 'textarea'"
type="textarea"
:rows="3"
:placeholder="`请输入${item.label}`"
/>
<!-- 数值 inputNumber-->
<el-input type="number" v-model="listQuery[item.prop]" v-else-if="item.type == 'inputNumber'" :placeholder="`请输入${item.label}`" />
<el-input
type="number"
v-model="listQuery[item.prop]"
v-else-if="item.type == 'inputNumber'"
:placeholder="`请输入${item.label}`"
/>
<!-- 数值 number-->
<el-input-number v-model="listQuery[item.prop]" v-else-if="item.type == 'number'" style="width:100%" :min="item.min || 0" :max="item.max || 1000" />
<el-input-number
v-model="listQuery[item.prop]"
v-else-if="item.type == 'number'"
style="width: 100%"
:min="item.min || 0"
:max="item.max || 1000"
/>
<!--选择 select-->
<MOSTY.Select v-else-if="item.type == 'select'" filterable :multiple="item.multiple" v-model="listQuery[item.prop]" :dictEnum="item.options" width="100%" clearable :placeholder="`请选择${item.label}`"/>
<!-- 部门department -->
<MOSTY.Select
v-else-if="item.type == 'select'"
filterable
:multiple="item.multiple"
v-model="listQuery[item.prop]"
:dictEnum="item.options"
width="100%"
clearable
:placeholder="`请选择${item.label}`"
/>
<!-- 部门department -->
<template v-else-if="item.type === 'department'">
<MOSTY.Department clearable v-model="listQuery[item.prop]" />
</template>
<!-- 上传 upload -->
<MOSTY.Upload v-else-if="item.type == 'upload'" width="100%" v-model="listQuery[item.prop]"/>
<MOSTY.Upload
v-else-if="item.type == 'upload'"
width="100%"
v-model="listQuery[item.prop]"
:isImg="item.isImg"
/>
<!--选择checkbox -->
<MOSTY.CheckBox v-else-if="item.type == 'checkbox'" width="100%" clearable v-model="listQuery[item.prop]" :checkList="item.options" :placeholder="`请选择${item.label}`"/>
<MOSTY.CheckBox
v-else-if="item.type == 'checkbox'"
width="100%"
clearable
v-model="listQuery[item.prop]"
:checkList="item.options"
:placeholder="`请选择${item.label}`"
/>
<!-- 单选radio -->
<el-radio-group v-model="listQuery[item.prop]" v-else-if="item.type == 'radio'">
<el-radio v-for="obj in item.options" :key="obj.value" :label="obj.value" >{{ obj.label }}</el-radio>
<el-radio-group
v-model="listQuery[item.prop]"
v-else-if="item.type == 'radio'"
>
<el-radio
v-for="obj in item.options"
:key="obj.value"
:label="obj.value"
>{{ obj.label }}</el-radio
>
</el-radio-group>
<!-- 时间选择 -->
<el-time-picker v-else-if="item.type == 'time'" v-model="listQuery[item.prop]" placeholder="选择时间" style="width:100%;" />
<el-date-picker v-else-if="item.type == 'date'" v-model="listQuery[item.prop]" type="date" value-format="YYYY-MM-DD" placeholder="请选择日期" style="width:100%;" />
<el-date-picker v-else-if="item.type == 'datetime'" v-model="listQuery[item.prop]" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择时间" style="width:100%;" />
<el-date-picker v-else-if="item.type == 'datetimerange'" v-model="listQuery[item.prop]" type="datetimerange" :shortcuts="shortcuts" range-separator="To" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="选择开始时间" end-placeholder="选择结束时间" style="width:100%;" />
<el-date-picker v-else-if="item.type == 'daterange'" v-model="listQuery[item.prop]" type="daterange" range-separator="To" value-format="YYYY-MM-DD" start-placeholder="选择开始日期" end-placeholder="选择开始日期" style="width:100%;" />
<el-switch v-else-if="item.type == 'switch'" v-model="listQuery[item.prop]" class="ml-2" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"/>
<el-time-picker
v-else-if="item.type == 'time'"
v-model="listQuery[item.prop]"
placeholder="选择时间"
style="width: 100%"
/>
<el-date-picker
v-else-if="item.type == 'date'"
v-model="listQuery[item.prop]"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择日期"
style="width: 100%"
/>
<el-date-picker
v-else-if="item.type == 'datetime'"
v-model="listQuery[item.prop]"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择时间"
style="width: 100%"
/>
<el-date-picker
v-else-if="item.type == 'datetimerange'"
v-model="listQuery[item.prop]"
type="datetimerange"
:shortcuts="shortcuts"
range-separator="To"
value-format="YYYY-MM-DD HH:mm:ss"
start-placeholder="选择开始时间"
end-placeholder="选择结束时间"
style="width: 100%"
/>
<el-date-picker
v-else-if="item.type == 'daterange'"
v-model="listQuery[item.prop]"
type="daterange"
range-separator="To"
value-format="YYYY-MM-DD"
start-placeholder="选择开始日期"
end-placeholder="选择开始日期"
style="width: 100%"
/>
<el-switch
v-else-if="item.type == 'switch'"
v-model="listQuery[item.prop]"
class="ml-2"
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
/>
<template v-else-if="item.type === 'slot'">
<slot :name="item.prop"></slot>
</template>
</el-form-item>
</el-form>
</template>
<script setup>
<script setup>
import * as MOSTY from "@/components/MyComponents/index";
import { ref, defineProps, defineEmits, defineExpose, watch } from "vue";
const props = defineProps({
@ -60,7 +169,7 @@ const props = defineProps({
modelValue: {
type: Object,
default: {}
},
}
});
const elform = ref();
const listQuery = ref({});
@ -73,16 +182,24 @@ const submit = (resfun) => {
});
};
watch(() => listQuery.value,(newVal) => {
emits('update:modelValue', newVal)
},{ immediate: true, deep: true }
watch(
() => listQuery.value,
(newVal) => {
emits("update:modelValue", newVal);
},
{ immediate: true, deep: true }
);
watch(() => props.modelValue,(newVal) => {
listQuery.value = newVal; //赋值
},{ immediate: true, deep: true }
watch(
() => props.modelValue,
(newVal) => {
// 只有在新值确实变化时才更新(避免空值覆盖)
if (newVal && Object.keys(newVal).length > 0) {
listQuery.value = { ...newVal };
}
},
{ immediate: true, deep: true }
);
defineExpose({ submit });
</script>