提交 2579f150 authored 作者: lidongxu's avatar lidongxu

refactor(task): 梳理促销任务中代码

同上
上级 e0f1672b
import { parseTime } from '@/utils'
/** /**
* 判断计划是否可编辑/删除 * 判断计划是否可编辑/删除
* @param {*} row 计划信息对象 * @param {*} row 计划信息对象
...@@ -11,3 +12,15 @@ export const checkPlanExpire = (row) => { ...@@ -11,3 +12,15 @@ export const checkPlanExpire = (row) => {
// 2. 计划状态已经开始了,不可编辑/删除 // 2. 计划状态已经开始了,不可编辑/删除
return !(rowDate < date || row.planStatus === 1) return !(rowDate < date || row.planStatus === 1)
} }
/**
* 判断任务是否可删除
* @param {*} row 计划信息对象
* @returns boolean true 展示删除按钮,false 不展示删除按钮
*/
export const checkTaskExpire = (row) => {
// 上报日期不是当月则隐藏按钮
const date = parseTime(row.createDate, '{y}-{m}')
const currentDate = parseTime(new Date(), '{y}-{m}')
return date === currentDate
}
\ No newline at end of file
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
查看照片 查看照片
</el-button> </el-button>
<el-button type="danger" <el-button type="danger"
v-if="showDelete(scope.row)" v-if="checkTaskExpire(scope.row)"
@click="deleteView(scope.row)" @click="deleteView(scope.row)"
text> text>
删除 删除
...@@ -128,8 +128,8 @@ ...@@ -128,8 +128,8 @@
</template> </template>
<script setup> <script setup>
import { useDatePickerOptions } from '@/hooks' import { useDatePickerOptions, checkTaskExpire } from '@/hooks'
import { getWarZoneListAPI, getChargeListAPI, getTaskListAPI, getProCityAPI, deletePromotionSystemAPI, getPromotionSystemAPI, getPromotionActivityAPI } from '@/api' import { getWarZoneListAPI, getChargeListAPI, getTaskListAPI, deletePromotionSystemAPI, getPromotionSystemAPI, getPromotionActivityAPI } from '@/api'
import { parseTime } from '@/utils' import { parseTime } from '@/utils'
import { PROMOTION_TASK_STATUS_LIST } from '@/dicts' import { PROMOTION_TASK_STATUS_LIST } from '@/dicts'
import userStore from '@/store/modules/user' import userStore from '@/store/modules/user'
...@@ -141,52 +141,8 @@ const { recentPickerOptions: pickerOptions, todayDate } = useDatePickerOptions(0 ...@@ -141,52 +141,8 @@ const { recentPickerOptions: pickerOptions, todayDate } = useDatePickerOptions(0
const isCityManager = userStore().promotionIdentity const isCityManager = userStore().promotionIdentity
const empInfo = userStore().empInfo const empInfo = userStore().empInfo
/****************** 任务搜索 ******************/ /****************** 搜索参数 ******************/
const queryParams = reactive({ const taskStatusList = ref(PROMOTION_TASK_STATUS_LIST) // 任务状态
taskStatus: '',
region: '全国',
provinceId: undefined,
cityId: undefined,
zoneId: undefined,
managerId: undefined,
storeName: undefined,
page: 1,
pageSize: 10,
date: todayDate
})
const taskStatusList = ref(PROMOTION_TASK_STATUS_LIST)
const photoDialogVisible = ref(false)
const photoDialogList = ref([])
const photoLookInfoObj = ref({})
const total = ref(0)
// 区域查询
const provinceList = ref([])
const cityList = ref([])
const getProCity = async () => {
const { data } = await getProCityAPI(queryParams)
if (queryParams.provinceId) {
queryParams.cityId = undefined
cityList.value = data.map(item => ({
label: item.name,
value: item.num
}))
} else {
provinceList.value = data.map(item => ({
label: item.name,
value: item.num
}))
}
getTaskList()
}
getProCity()
// 战区列表 // 战区列表
const zoneList = ref([]) const zoneList = ref([])
const getZoneList = async () => { const getZoneList = async () => {
...@@ -197,8 +153,9 @@ const getZoneList = async () => { ...@@ -197,8 +153,9 @@ const getZoneList = async () => {
value: item.qcId value: item.qcId
} }
}) })
// 如果是城市经理,默认设置战区为当前登录的城市经理
isCityManager && (queryParams.zoneId = managerList.value.find(item => item.employeeNo === empInfo.empNo)?.deptQcId)
} }
getZoneList()
// 负责人列表 // 负责人列表
const managerList = ref([]) const managerList = ref([])
...@@ -213,10 +170,25 @@ const getManagerList = async () => { ...@@ -213,10 +170,25 @@ const getManagerList = async () => {
deptQcId: item.deptQcId deptQcId: item.deptQcId
} }
}) })
// 如果是城市经理,默认设置负责人为当前登录的城市经理
isCityManager && (queryParams.managerId = managerList.value.find(item => item.employeeNo === empInfo.empNo)?.value)
} }
getManagerList()
// 任务列表 /****************** 任务列表 ******************/
const queryParams = reactive({
taskStatus: '',
region: '全国',
provinceId: undefined,
cityId: undefined,
zoneId: undefined,
managerId: undefined,
storeName: undefined,
page: 1,
pageSize: 10,
date: todayDate
})
const total = ref(0)
const tableList = ref([]) const tableList = ref([])
const columns = ref([ const columns = ref([
{ {
...@@ -302,41 +274,17 @@ const columns = ref([ ...@@ -302,41 +274,17 @@ const columns = ref([
prop: 'manageName', prop: 'manageName',
width: 120 width: 120
} }
]) ]) // 任务列表
// 删除任务列表
const deleteView = async (row) => {
await proxy.$modal.confirm('确认删除该记录吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
await deletePromotionSystemAPI(row.id)
// 提示删除成功
getTaskList()
proxy.$modal.msgSuccess('删除成功')
}
// 获取任务列表 // 获取任务列表
const getTaskList = async () => { const getTaskList = async () => {
const { data: { records, totalRecord } } = await getTaskListAPI({
// 后台省市不要 id,自己查个名字给后台 ...queryParams,
queryParams.province = provinceList.value.find(item => item.value === queryParams.provinceId)?.label province: queryParams.provinceName,
queryParams.city = cityList.value.find(item => item.value === queryParams.cityId)?.label city: queryParams.cityName
// 城市经理查自己,职能角色查所有(需要的是促销系统 id) })
if (isCityManager) {
// 城市经理
await getManagerList()
queryParams.managerId = managerList.value.find(item => item.employeeNo === empInfo.empNo)?.value
// 先从归属人查询当前登录用户的战区 ID
queryParams.zoneId = managerList.value.find(item => item.employeeNo === empInfo.empNo)?.deptQcId
}
const { data: { records, totalRecord } } = await getTaskListAPI(queryParams)
tableList.value = records tableList.value = records
total.value = totalRecord total.value = totalRecord
} }
getTaskList()
const formatter = (row, columns, value) => { const formatter = (row, columns, value) => {
// 判断有值再转换 // 判断有值再转换
if (columns.property === 'clockDto.clockInTime' && value) { if (columns.property === 'clockDto.clockInTime' && value) {
...@@ -350,31 +298,35 @@ const formatter = (row, columns, value) => { ...@@ -350,31 +298,35 @@ const formatter = (row, columns, value) => {
} else if (columns.property === 'week') { } else if (columns.property === 'week') {
return parseTime(row['createDate'], '周{a}') return parseTime(row['createDate'], '周{a}')
} else if (columns.property === 'approveStatus' && value) { } else if (columns.property === 'approveStatus' && value) {
const obj = { return taskStatusList.value.find(item => item.value === value)?.label
SUBMITTED: '未审批',
APPROVED: '已审批'
}
return obj[value]
} }
return value return value
} }
// 区域查询切换 // 删除任务
const regionChange = (val) => { const deleteView = async (row) => {
if (val === '全国') { await proxy.$modal.confirm('确认删除该记录吗?', '提示', {
queryParams.provinceId = undefined confirmButtonText: '确定',
queryParams.cityId = undefined cancelButtonText: '取消',
} else if (val === '省') { type: 'warning'
queryParams.cityId = undefined })
} else if (val === '省-市') { await deletePromotionSystemAPI(row.id)
cityList.value = []
getProCity()
}
getTaskList() getTaskList()
proxy.$modal.msgSuccess('删除成功')
} }
// 查看照片 onMounted(async () => {
const lookPhoto = async (row) => { await getManagerList()
await getZoneList()
getTaskList()
})
/***************** 查看图片弹窗 *****************/
const photoDialogVisible = ref(false)
const photoDialogList = ref([]) // 图片数据集合
const photoLookInfoObj = ref({})
const lookPhoto = async (row) => { // 查看照片
photoDialogVisible.value = true photoDialogVisible.value = true
photoLookInfoObj.value = row photoLookInfoObj.value = row
const result = await getPromotionActivityAPI(row.id) const result = await getPromotionActivityAPI(row.id)
...@@ -448,18 +400,7 @@ const lookPhoto = async (row) => { ...@@ -448,18 +400,7 @@ const lookPhoto = async (row) => {
}] }]
} }
const currentChange = (page) => {
queryParams.page = page
getTaskList()
}
// 是否展示删除按钮
const showDelete = (row) => {
// 上报日期不是当月则隐藏按钮
const date = parseTime(row.createDate, '{y}-{m}')
const currentDate = parseTime(new Date(), '{y}-{m}')
return date === currentDate
}
</script> </script>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论