pull/2/head
siontion 9 months ago
commit 766a5d97ba

@ -25,6 +25,9 @@ public class UserPageReqVO extends PageParam {
@Schema(description = "昵称,模糊匹配", example = "mes") @Schema(description = "昵称,模糊匹配", example = "mes")
private String nickname; private String nickname;
@Schema(description = "用户账号或昵称", example = "mes")
private String userNickName;
@Schema(description = "手机号码,模糊匹配", example = "mes") @Schema(description = "手机号码,模糊匹配", example = "mes")
private String mobile; private String mobile;

@ -6,6 +6,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.module.system.controller.admin.user.vo.user.UserPageReqVO; import com.chanko.yunxi.mes.module.system.controller.admin.user.vo.user.UserPageReqVO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.springframework.util.StringUtils;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -26,14 +27,18 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
} }
default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds) { default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>() LambdaQueryWrapperX<AdminUserDO> query = new LambdaQueryWrapperX<AdminUserDO>()
.likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername()) .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
.likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname()) .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())
.likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile()) .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
.eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus()) .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
.betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
.inIfPresent(AdminUserDO::getDeptId, deptIds) .inIfPresent(AdminUserDO::getDeptId, deptIds)
.orderByDesc(AdminUserDO::getId)); .orderByDesc(AdminUserDO::getId);
if(!StringUtils.isEmpty(reqVO.getUserNickName())){
query.like(AdminUserDO::getUsername, reqVO.getUserNickName()).or().like(AdminUserDO::getNickname, reqVO.getUserNickName());
}
return selectPage(reqVO, query);
} }
default List<AdminUserDO> selectListByNickname(String nickname) { default List<AdminUserDO> selectListByNickname(String nickname) {

@ -4,6 +4,7 @@ export interface UserVO {
id: number id: number
username: string username: string
nickname: string nickname: string
userNickName:string
deptId: number deptId: number
postIds: string[] postIds: string[]
email: string email: string

@ -249,3 +249,9 @@
border: none; border: none;
color: var(--el-table-text-color); color: var(--el-table-text-color);
} }
.fou {
background-color: #f7fbfd;
border: 1px solid #d4d6e3;
color: #77838C;
}

@ -34,23 +34,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="leaderUserId"> <el-form-item label="负责人" prop="leaderUserId">
<el-select v-model="formData.leaderUserId" <UserSelect v-model="formData.leaderUserId" :leaderUserId="formData.leaderUserId" @update:newValue="handleSelectedUser" />
placeholder="请输入负责人"
:remote-method="remoteUserSearch"
remote-show-suffix
remote
clearable
reserve-keyword
filterable
:loading="userSelectLoading"
>
<el-option
v-for="item in userSelectList"
:key="item.id"
:label="item.username + ' ' + item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="班组描述" prop="description"> <el-form-item label="班组描述" prop="description">
<el-input type="textarea" v-model="formData.description" height="150px" show-word-limit maxlength="200" /> <el-input type="textarea" v-model="formData.description" height="150px" show-word-limit maxlength="200" />
@ -79,7 +63,7 @@ import * as UserApi from "@/api/system/user";
import * as WorkshopApi from "@/api/heli/workshop"; import * as WorkshopApi from "@/api/heli/workshop";
import {DICT_TYPE, getIntDictOptions} from "@/utils/dict"; import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
import {getWorkshopPage} from "@/api/heli/workshop"; import {getWorkshopPage} from "@/api/heli/workshop";
import UserSelect from '../hlvuestyle/userSelect.vue'
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -219,4 +203,9 @@ const resetForm = () => {
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
const handleSelectedUser = (newValue: any) => {
// console.log(':', newValue)
formData.value.leaderUserId = newValue.id
}
</script> </script>

@ -24,7 +24,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="leaderUserId"> <el-form-item label="负责人" prop="leaderUserId">
<UserSelect v-model="formData.leaderUserId" :leaderUserId="formData.leaderUserId" @update:newValue="handleSelectedUser" /> <UserSelect v-model="formData.leaderUserId" @update:newValue="handleSelectedUser" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="联系电话" prop="phone"> <!-- <el-form-item label="联系电话" prop="phone">
<el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" /> <el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" />

@ -2,7 +2,7 @@
<!-- 负责人选择 --> <!-- 负责人选择 -->
<el-select <el-select
v-model="valueName" v-model="valueName"
placeholder="请输入负责人" placeholder="请选择相关人员"
:remote-method="remoteMethod" :remote-method="remoteMethod"
remote-show-suffix remote-show-suffix
remote remote
@ -11,6 +11,7 @@
filterable filterable
:loading="userSelectLoading" :loading="userSelectLoading"
@change="onSelectChange" @change="onSelectChange"
@visible-change="onVisibleChange"
> >
<el-option <el-option
v-for="item in userSelectList" v-for="item in userSelectList"
@ -25,13 +26,8 @@
import { ref, onMounted, toRefs, computed } from 'vue' import { ref, onMounted, toRefs, computed } from 'vue'
import * as UserApi from '@/api/system/user' import * as UserApi from '@/api/system/user'
interface UserVO {
id: number
username: string
nickname: string
}
const props = defineProps({ const props = defineProps({
leaderUserId: { modelValue: {
type: [Number, String], type: [Number, String],
required: true // true required: true // true
} }
@ -41,7 +37,8 @@ const userParams = {
pageSize: 10, pageSize: 10,
status: undefined, // status: undefined, //
username: undefined, username: undefined,
nickname: undefined nickname: undefined,
userNickName: undefined
} }
const valueName: any = ref() // const valueName: any = ref() //
const valueNameObject: any = ref() // const valueNameObject: any = ref() //
@ -50,27 +47,30 @@ const emit = defineEmits(['update:newValue'])
const userList = ref<UserApi.UserVO[]>([]) // const userList = ref<UserApi.UserVO[]>([]) //
const userSelectList = ref<UserApi.UserVO[]>([]) const userSelectList = ref<UserApi.UserVO[]>([])
const userSelectLoading = ref(false) const userSelectLoading = ref(false)
const leaderUserId = toRefs(props).leaderUserId // props leaderUserId const propsmodelValue = toRefs(props).modelValue // props modelValue
const initialValue: any = ref(null) // ID const initialValue: any = ref(null) // ID
const gitlist = async () => { const gitlist = async () => {
const data = await UserApi.getUserPage(userParams) const data = await UserApi.getUserPage(userParams)
userList.value = data.list userList.value = data.list
// //
if (leaderUserId.value) { if (propsmodelValue.value) {
valueName.value = leaderUserId.value valueName.value = propsmodelValue.value
const initialUser = await UserApi.getUser(valueName.value) const initialUser = await UserApi.getUser(valueName.value)
// userList // userList
let foundInitialUserInList = false let foundInitialUserInList = false
for (const user of userList.value) { for (const user of userList.value) {
if (user.id === initialUser.id) { if (user.id === initialUser.id) {
userSelectList.value = []
userList.value = []
foundInitialUserInList = true foundInitialUserInList = true
break break
} }
} }
// //
if (!foundInitialUserInList && !userSelectList.value.length) { if (!foundInitialUserInList && !userSelectList.value.length) {
userSelectList.value = []
userList.value = [] userList.value = []
userList.value.unshift(initialUser) userList.value.unshift(initialUser)
} }
@ -81,31 +81,11 @@ const gitlist = async () => {
const remoteMethod = async (query: any) => { const remoteMethod = async (query: any) => {
userSelectLoading.value = true userSelectLoading.value = true
userSelectList.value = [] userSelectList.value = []
try { try {
if (query) { if (query) {
// username userParams.userNickName = query
userParams.username = query const data = await UserApi.getUserPage(userParams)
const dataByUsername = await UserApi.getUserPage(userParams) userSelectList.value = data.list
// username
let tempUserList = [...dataByUsername.list]
// nickname nickname username
userParams.username = undefined
userParams.nickname = query
const dataByNickname = await UserApi.getUserPage(userParams)
// nickname
tempUserList = [
...tempUserList,
...dataByNickname.list.filter(
(item) => !tempUserList.some((selectItem) => selectItem.id === item.id)
)
]
//
userSelectList.value = tempUserList
} else { } else {
// //
const data = await UserApi.getUserPage({ ...userParams, pageNo: 1 }) const data = await UserApi.getUserPage({ ...userParams, pageNo: 1 })
@ -127,6 +107,15 @@ onMounted(async () => {
} }
}) })
const onVisibleChange = (isVisible: boolean) => {
if (!isVisible) {
//
userParams.userNickName = undefined
userList.value = []
userSelectList.value = []
}
}
const onSelectChange = (newValue: any) => { const onSelectChange = (newValue: any) => {
valueNameObject.value = userList.value.find((user) => user.id === newValue) // valueNameObject.value = userList.value.find((user) => user.id === newValue) //
emit('update:newValue', valueNameObject.value) emit('update:newValue', valueNameObject.value)

@ -14,27 +14,11 @@
<el-input v-model="formData.whName" placeholder="请输入仓库名称" class="!w-500px" /> <el-input v-model="formData.whName" placeholder="请输入仓库名称" class="!w-500px" />
</el-form-item> </el-form-item>
<el-form-item label="联系人" prop="contact"> <el-form-item label="联系人" prop="contact">
<!-- <el-input v-model="formData.contact" placeholder="请输入联系人" class="!w-500px" /> --> <UserSelect class="!w-500px"
<el-select
v-model="formData.contact" v-model="formData.contact"
placeholder="请输入联系人" :leaderUserId="formData.contact"
:remote-method="remoteUserSearch" @update:newValue="handleSelectedUser"
remote-show-suffix
remote
clearable
reserve-keyword
filterable
:loading="userSelectLoading"
class="!w-500px"
@change="handleContact"
>
<el-option
v-for="item in userSelectList"
:key="item.id"
:label="item.username + ' ' + item.nickname"
:value="item.id"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="联系电话" prop="telephone"> <el-form-item label="联系电话" prop="telephone">
<el-input v-model="formData.telephone" placeholder="请输入联系电话" class="!w-500px" /> <el-input v-model="formData.telephone" placeholder="请输入联系电话" class="!w-500px" />
@ -62,7 +46,7 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import * as WarehouseApi from '@/api/heli/warehouse' import * as WarehouseApi from '@/api/heli/warehouse'
import * as UserApi from '@/api/system/user' import * as UserApi from '@/api/system/user'
import { fromPairs } from 'lodash-es' import { fromPairs } from 'lodash-es'
import UserSelect from '../hlvuestyle/userSelect.vue'
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -179,4 +163,9 @@ const resetForm = () => {
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
const handleSelectedUser = (newValue: any) => {
// console.log(':', newValue)
formData.value.contact = newValue.id
}
</script> </script>

@ -25,7 +25,12 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="leaderUserId"> <el-form-item label="负责人" prop="leaderUserId">
<el-select v-model="formData.leaderUserId" <UserSelect
v-model="formData.leaderUserId"
:leaderUserId="formData.leaderUserId"
@update:newValue="handleSelectedUser"
/>
<!-- <el-select v-model="formData.leaderUserId"
placeholder="请输入负责人" placeholder="请输入负责人"
:remote-method="remoteUserSearch" :remote-method="remoteUserSearch"
remote-show-suffix remote-show-suffix
@ -41,7 +46,7 @@
:label="item.username + ' ' + item.nickname" :label="item.username + ' ' + item.nickname"
:value="item.id" :value="item.id"
/> />
</el-select> </el-select> -->
</el-form-item> </el-form-item>
<el-form-item label="描述信息" prop="description"> <el-form-item label="描述信息" prop="description">
<el-input type="textarea" v-model="formData.description" height="150px" show-word-limit maxlength="200"/> <el-input type="textarea" v-model="formData.description" height="150px" show-word-limit maxlength="200"/>
@ -70,7 +75,7 @@ import * as WorkshopApi from '@/api/heli/workshop'
import {defaultProps, handleTree} from "@/utils/tree"; import {defaultProps, handleTree} from "@/utils/tree";
import * as DeptApi from '@/api/system/dept' import * as DeptApi from '@/api/system/dept'
import * as UserApi from "@/api/system/user"; import * as UserApi from "@/api/system/user";
import UserSelect from '../hlvuestyle/userSelect.vue'
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -179,4 +184,9 @@ const resetForm = () => {
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
const handleSelectedUser = (newValue: any) => {
// console.log(':', newValue)
formData.value.leaderUserId = newValue.id
}
</script> </script>

Loading…
Cancel
Save