提交 8a54810c authored 作者: lidongxu's avatar lidongxu

Merge branch 'ldx' into dev

...@@ -170,8 +170,7 @@ import PickerBelong from '../components/PickerBelong' ...@@ -170,8 +170,7 @@ import PickerBelong from '../components/PickerBelong'
const myForm = ref({}) const myForm = ref({})
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const employeeNo = computed(() => userStore().employeeNo) const employeeNo = computed(() => userStore().employeeNo)
const employeeName = computed(() => userStore().employeeName) const empInfo = userStore().empInfo
const employeeInfo = computed(() => userStore().employeeInfo)
const isCityManager = ref(userStore().promotionIdentity) const isCityManager = ref(userStore().promotionIdentity)
const form = reactive({}) const form = reactive({})
const router = useRouter(); const router = useRouter();
...@@ -216,9 +215,9 @@ const validatorIncidentals = (value, obj) => { ...@@ -216,9 +215,9 @@ const validatorIncidentals = (value, obj) => {
} }
} }
const onSubmit = async () => { const onSubmit = async () => {
for (let key in employeeInfo.value) { form.operNo = empInfo.empNo
form[key] = employeeInfo.value[key] form.operName = empInfo.empName
} form.operId = empInfo.empId
if (planId) { if (planId) {
const res = await updatePlanByWebAPI(form) const res = await updatePlanByWebAPI(form)
...@@ -297,9 +296,9 @@ const selEmployee = () => { ...@@ -297,9 +296,9 @@ const selEmployee = () => {
onMounted(() => { onMounted(() => {
// 如果当前是城市经理,自动填入归属人信息 // 如果当前是城市经理,自动填入归属人信息
if (isCityManager.value) { if (isCityManager.value) {
form.employeeName = employeeName.value form.employeeName = empInfo.empName
form.employeeNo = employeeNo.value form.employeeNo = empInfo.empNo
form.employeeId = userStore().employeeId form.employeeId = empInfo.empId
} }
}) })
......
...@@ -99,7 +99,7 @@ const router = useRouter() ...@@ -99,7 +99,7 @@ const router = useRouter()
const route = useRoute() const route = useRoute()
const promotionIdentity = computed(() => userStore().promotionIdentity) const promotionIdentity = computed(() => userStore().promotionIdentity)
const employeeNo = computed(() => userStore().employeeNo) const employeeNo = computed(() => userStore().employeeNo)
const employeeName = computed(() => userStore().employeeName) const empInfo = userStore().empInfo
// 搜索弹窗 // 搜索弹窗
const showSearch = ref(false) const showSearch = ref(false)
...@@ -183,8 +183,9 @@ const onRefresh = () => { ...@@ -183,8 +183,9 @@ const onRefresh = () => {
} }
const clickDetail = (row) => { const clickDetail = (row) => {
if (showSelect.value) return // 当前处于长按状态,点击详情不做任何操作 // 当前处于长按状态 / 查看已删除列表,点击详情不做任何操作
router.push(`/m/promotion_plan_detail/${row.id}`) if (showSelect.value || query.isDeleted) return
router.push(`/m/promotion_plan_detail/${row.id}?isDeleted=${query.isDeleted}`)
} }
// 搜索表单 // 搜索表单
...@@ -277,7 +278,7 @@ const confirmPickerBelong = async (val) => { ...@@ -277,7 +278,7 @@ const confirmPickerBelong = async (val) => {
// 循环判断计划是否含有以前和执行中的 // 循环判断计划是否含有以前和执行中的
await batchUpdatePlanAPI({ await batchUpdatePlanAPI({
employeeId: val.selectedOptions[0]?.value, // 选择的归属人 id employeeId: val.selectedOptions[0]?.value, // 选择的归属人 id
operName: employeeName.value, operName: empInfo.empName,
planIds: planList.value.filter(item => item.checked).map(item => item.id) planIds: planList.value.filter(item => item.checked).map(item => item.id)
}) })
......
...@@ -111,24 +111,9 @@ export default defineStore( ...@@ -111,24 +111,9 @@ export default defineStore(
empName: state.userInfo.nickName, // 员工昵称名字 empName: state.userInfo.nickName, // 员工昵称名字
} }
}, },
// 操作人员工工号,姓名,id
employeeInfo(state) {
return {
operNo: state.userInfo.userName,
operName: state.userInfo.nickName,
operId: state.userInfo.userId
}
},
// 获取员工工号 // 获取员工工号
employeeNo(state) { employeeNo(state) {
return state.userInfo.userName return state.userInfo.userName
},
// 获取员工姓名
employeeName(state) {
return state.userInfo.nickName
} }
} }
}) })
......
...@@ -3,10 +3,19 @@ ...@@ -3,10 +3,19 @@
<div class="app-container"> <div class="app-container">
<div class="container"> <div class="container">
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true"> <el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true">
<el-form-item label="用户名称" prop="userName"> <el-form-item label="用户工号" prop="userName">
<el-input <el-input
v-model="queryParams.userName" v-model="queryParams.userName"
placeholder="请输入用户名称" placeholder="请输入用户工号"
clearable
style="width: 240px"
@input="handleQuery"
/>
</el-form-item>
<el-form-item label="用户昵称" prop="nickName">
<el-input
v-model="queryParams.nickName"
placeholder="请输入用户昵称"
clearable clearable
style="width: 240px" style="width: 240px"
@input="handleQuery" @input="handleQuery"
...@@ -36,7 +45,7 @@ ...@@ -36,7 +45,7 @@
v-hasPermi="['system:role:add']" v-hasPermi="['system:role:add']"
>添加用户</el-button> >添加用户</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button
type="danger" type="danger"
plain plain
...@@ -53,13 +62,13 @@ ...@@ -53,13 +62,13 @@
icon="Close" icon="Close"
@click="handleClose" @click="handleClose"
>关闭</el-button> >关闭</el-button>
</el-col> </el-col> -->
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" /> <el-table-column label="用户工号" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" /> <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" /> <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" /> <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
...@@ -73,11 +82,11 @@ ...@@ -73,11 +82,11 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="CircleClose" @click="cancelAuthUser(scope.row)" v-hasPermi="['system:role:remove']">取消授权</el-button> <el-button link type="primary" icon="CircleClose" @click="cancelAuthUser(scope.row)" v-hasPermi="['system:role:remove']">取消授权</el-button>
</template> </template>
</el-table-column> </el-table-column> -->
</el-table> </el-table>
<pagination <pagination
......
<template> <template>
<!-- 授权用户 --> <!-- 授权用户 -->
<el-dialog title="选择用户" v-model="visible" width="800px" top="5vh" append-to-body> <el-dialog title="选择用户"
<el-form :model="queryParams" ref="queryRef" :inline="true"> v-model="visible"
<el-form-item label="用户名称" prop="userName"> top="5vh"
<el-input append-to-body>
v-model="queryParams.userName" <el-form :model="queryParams"
placeholder="请输入用户名称" ref="queryRef"
clearable :inline="true">
style="width: 180px" <el-form-item label="用户工号"
@keyup.enter="handleQuery" prop="userName">
/> <el-input v-model="queryParams.userName"
</el-form-item> placeholder="请输入用户工号"
<el-form-item label="手机号码" prop="phonenumber"> clearable
<el-input style="width: 180px"
v-model="queryParams.phonenumber" @input="handleQuery" />
placeholder="请输入手机号码" </el-form-item>
clearable <el-form-item label="用户昵称"
style="width: 180px" prop="nickName">
@keyup.enter="handleQuery" <el-input v-model="queryParams.nickName"
/> placeholder="请输入用户昵称"
</el-form-item> clearable
<el-form-item> style="width: 180px"
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> @input="handleQuery" />
<el-button icon="Refresh" @click="resetQuery">重置</el-button> </el-form-item>
</el-form-item> <el-form-item label="手机号码"
</el-form> prop="phonenumber">
<el-row> <el-input v-model="queryParams.phonenumber"
<el-table @row-click="clickRow" ref="refTable" :data="userList" @selection-change="handleSelectionChange" height="260px"> placeholder="请输入手机号码"
<el-table-column type="selection" width="55"></el-table-column> clearable
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" /> style="width: 180px"
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" /> @input="handleQuery" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" /> </el-form-item>
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" /> <el-form-item>
<el-table-column label="状态" align="center" prop="status"> <el-button icon="Refresh"
<template #default="scope"> @click="resetQuery">重置</el-button>
<dict-tag :options="sys_normal_disable" :value="scope.row.status" /> </el-form-item>
</template> </el-form>
</el-table-column> <el-row>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table @row-click="clickRow"
<template #default="scope"> ref="refTable"
<span>{{ parseTime(scope.row.createTime) }}</span> :data="userList"
</template> @selection-change="handleSelectionChange">
</el-table-column> <el-table-column type="selection"
</el-table> width="55"></el-table-column>
<pagination <el-table-column label="用户工号"
v-show="total > 0" prop="userName"
:total="total" :show-overflow-tooltip="true" />
v-model:page="queryParams.pageNum" <el-table-column label="用户昵称"
v-model:limit="queryParams.pageSize" prop="nickName"
@pagination="getList" :show-overflow-tooltip="true" />
/> <el-table-column label="邮箱"
</el-row> prop="email"
<template #footer> :show-overflow-tooltip="true" />
<div class="dialog-footer"> <el-table-column label="手机"
<el-button type="primary" @click="handleSelectUser">确 定</el-button> prop="phonenumber"
<el-button @click="visible = false">取 消</el-button> :show-overflow-tooltip="true" />
</div> <el-table-column label="状态"
</template> align="center"
</el-dialog> prop="status">
<template #default="scope">
<dict-tag :options="sys_normal_disable"
:value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="创建时间"
align="center"
prop="createTime"
width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<div class="pagination-wrap">
<pagination v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList" />
</div>
</el-row>
<template #footer>
<div class="dialog-footer">
<el-button type="primary"
@click="handleSelectUser">确 定</el-button>
<el-button @click="visible = false">取 消</el-button>
</div>
</template>
</el-dialog>
</template> </template>
<script setup name="SelectUser"> <script setup
import { authUserSelectAll, unallocatedUserList } from "@/api"; name="SelectUser">
import { authUserSelectAll, unallocatedUserList } from "@/api";
const props = defineProps({ const props = defineProps({
roleId: { roleId: {
type: [Number, String] type: [Number, String]
} }
}); });
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { sys_normal_disable } = proxy.useDict("sys_normal_disable"); const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
const userList = ref([]); const userList = ref([]);
const visible = ref(false); const visible = ref(false);
const total = ref(0); const total = ref(0);
const userIds = ref([]); const userIds = ref([]);
const queryParams = reactive({ const queryParams = reactive({
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
roleId: undefined, roleId: undefined,
userName: undefined, userName: undefined,
phonenumber: undefined phonenumber: undefined
}); });
// 显示弹框 // 显示弹框
function show() { function show() {
queryParams.roleId = props.roleId; queryParams.roleId = props.roleId;
getList(); getList();
visible.value = true; visible.value = true;
} }
/**选择行 */ /**选择行 */
function clickRow(row) { function clickRow(row) {
proxy.$refs["refTable"].toggleRowSelection(row); proxy.$refs["refTable"].toggleRowSelection(row);
} }
// 多选框选中数据 // 多选框选中数据
function handleSelectionChange(selection) { function handleSelectionChange(selection) {
userIds.value = selection.map(item => item.userId); userIds.value = selection.map(item => item.userId);
} }
// 查询表数据 // 查询表数据
function getList() { function getList() {
unallocatedUserList(queryParams).then(res => { unallocatedUserList(queryParams).then(res => {
userList.value = res.rows; userList.value = res.data.rows;
total.value = res.total; total.value = res.data.total;
}); });
} }
/** 搜索按钮操作 */ /** 搜索按钮操作 */
function handleQuery() { function handleQuery() {
queryParams.pageNum = 1; queryParams.pageNum = 1;
getList(); getList();
} }
/** 重置按钮操作 */ /** 重置按钮操作 */
function resetQuery() { function resetQuery() {
proxy.resetForm("queryRef"); proxy.resetForm("queryRef");
handleQuery(); handleQuery();
} }
const emit = defineEmits(["ok"]); const emit = defineEmits(["ok"]);
/** 选择授权用户操作 */ /** 选择授权用户操作 */
function handleSelectUser() { function handleSelectUser() {
const roleId = queryParams.roleId; const roleId = queryParams.roleId;
const uIds = userIds.value.join(","); const uIds = userIds.value.join(",");
if (uIds == "") { if (uIds == "") {
proxy.$modal.msgError("请选择要分配的用户"); proxy.$modal.msgError("请选择要分配的用户");
return; return;
}
authUserSelectAll({ roleId: roleId, userIds: uIds }).then(res => {
proxy.$modal.msgSuccess(res.msg);
visible.value = false;
emit("ok");
});
} }
authUserSelectAll({ roleId: roleId, userIds: uIds }).then(res => {
proxy.$modal.msgSuccess(res.msg);
visible.value = false;
emit("ok");
});
}
defineExpose({ defineExpose({
show, show,
}); });
</script> </script>
<style scoped
style="scss">
.pagination-wrap {
width: 100%;
display: flex;
justify-content: flex-end;
}
</style>
\ No newline at end of file
...@@ -28,6 +28,14 @@ ...@@ -28,6 +28,14 @@
style="width: 240px" style="width: 240px"
@input="handleQuery" /> @input="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="用户昵称"
prop="nickName">
<el-input v-model="queryParams.nickName"
placeholder="请输入用户工号"
clearable
style="width: 240px"
@input="handleQuery" />
</el-form-item>
<el-form-item label="手机号码" <el-form-item label="手机号码"
prop="phonenumber"> prop="phonenumber">
<el-input v-model="queryParams.phonenumber" <el-input v-model="queryParams.phonenumber"
...@@ -309,13 +317,13 @@ ...@@ -309,13 +317,13 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="角色" <el-form-item label="角色"
prop="roleId"> prop="roleIds">
<!-- multiple <el-select v-model="form.roleIds"
placeholder="请选择"
multiple
clearable clearable
collapse-tags collapse-tags
collapse-tags-tooltip --> collapse-tags-tooltip>
<el-select v-model="form.roleId"
placeholder="请选择">
<el-option v-for="item in roleOptions" <el-option v-for="item in roleOptions"
:key="item.roleId" :key="item.roleId"
:label="item.roleName" :label="item.roleName"
...@@ -344,9 +352,9 @@ ...@@ -344,9 +352,9 @@
</el-col> </el-col>
</el-row> </el-row>
<!-- 促销权限配置 --> <!-- 促销权限配置 -->
<el-row v-show="form.proStatus"> <el-row v-if="form.proStatus">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="促销角色"> <el-form-item label="促销角色" prop="privilegeId">
<el-radio-group v-model="form.privilegeId"> <el-radio-group v-model="form.privilegeId">
<el-radio :value="1" <el-radio :value="1"
label="城市经理"></el-radio> label="城市经理"></el-radio>
...@@ -500,7 +508,8 @@ ...@@ -500,7 +508,8 @@
email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }], email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }], phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
postId: [{ required: true, message: "请选择岗位", trigger: "change" }], postId: [{ required: true, message: "请选择岗位", trigger: "change" }],
roleId: [{ required: true, message: "请选择角色", trigger: "change" }], roleIds: [{ required: true, message: "请选择角色", trigger: "change" }],
privilegeId: [{ required: true, message: "请选择促销角色", trigger: "change" }]
} }
}); });
...@@ -692,7 +701,7 @@ ...@@ -692,7 +701,7 @@
status: "0", status: "0",
remark: undefined, remark: undefined,
postId: null, postId: null,
roleId: [], roleIds: [],
proStatus: false, // 促销权限 proStatus: false, // 促销权限
privilegeId: undefined, privilegeId: undefined,
workCityList: [] // 工作城市 workCityList: [] // 工作城市
...@@ -713,6 +722,7 @@ ...@@ -713,6 +722,7 @@
postOptions.value = response.posts; postOptions.value = response.posts;
roleOptions.value = response.roles; roleOptions.value = response.roles;
open.value = true; open.value = true;
title.value = "添加用户"; title.value = "添加用户";
form.value.password = initPassword.value; form.value.password = initPassword.value;
}) })
...@@ -739,7 +749,7 @@ ...@@ -739,7 +749,7 @@
// 促销权限 0 开 1 关 // 促销权限 0 开 1 关
response.data.proStatus = response.data.proStatus == 1 || response.data.proStatus == undefined ? false : true; response.data.proStatus = response.data.proStatus == 1 || response.data.proStatus == undefined ? false : true;
// 后台空角色不知道为啥返回 0 不是 null // 后台空角色不知道为啥返回 0 不是 null
response.data.roleId = response.data.roleId == 0 ? [] : response.data.roleId; // response.data.roleIds = response.data.roleId == 0 ? [] : response.data.roleId;
form.value = response.data; form.value = response.data;
postOptions.value = response.posts; postOptions.value = response.posts;
roleOptions.value = response.roles; roleOptions.value = response.roles;
...@@ -759,27 +769,19 @@ ...@@ -759,27 +769,19 @@
form.value.workCityNum = form.value.workCityList && form.value.workCityList[1] form.value.workCityNum = form.value.workCityList && form.value.workCityList[1]
// 促销开关 true 转 0,false 转 1 // 促销开关 true 转 0,false 转 1
form.value.proStatus = form.value.proStatus == true ? 0 : 1; form.value.proStatus = form.value.proStatus == true ? 0 : 1;
if (form.value.userId != undefined) { await form.value.userId ? updateUser(form.value) : addUser(form.value);
updateUser(form.value).then(response => { proxy.$modal.msgSuccess(`${form.value.userId ? '修改' : '新增'}修改成功`);
proxy.$modal.msgSuccess("修改成功"); open.value = false;
open.value = false; getList();
getList();
});
} else {
addUser(form.value).then(response => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
});
}
// 同步促销角色权限,给另外一个系统 // 同步促销角色权限,给另外一个系统
await openPromotionSystemAPI({ if (form.value.privilegeId === null) return
await openPromotionSystemAPI({
loginName: form.value.userName, loginName: form.value.userName,
privilegeId: form.value.privilegeId, privilegeId: form.value.privilegeId,
status: form.value.proStatus status: form.value.proStatus
}) })
reset() reset()
} }
}); });
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论