Commit e51523a1 by yuzhenWang

Merge branch 'wyz' into 'test'

出账检核加出账年月实

See merge request !169
parents a80f9154 4d237a20
import request from '@/utils/request'
// 获取制作薪资单列表
export function getSalaryList(data) {
return request({
url: '/csf/api/salary/page',
method: 'post',
data: data
})
}
// 批量新增薪资单
export function batchAddSalary(data) {
return request({
url: '/csf/api/salary/batch/add',
method: 'post',
data: data
})
}
// 计算实发金额
export function calculatePaidAmount(data) {
return request({
url: '/csf/api/salary/calculate/paidAmount',
method: 'post',
data: data
})
}
// 计算汇率
export function getExchangeRate(data) {
return request({
url: '/csf/api/salary/get/exchangeRate',
method: 'post',
data: data
})
}
// 计算实发金额
export function grossAmountApi(data) {
return request({
url: '/csf/api/salary/get/grossAmount',
method: 'post',
data: data
})
}
// 获取制作薪资单详情
export function updateSalaryDetail(salaryBizId) {
return request({
url: '/csf/api/salary/detail?salaryBizId=' + salaryBizId,
method: 'get'
})
}
// 计算信息汇款明细总金额
export function calculateTotalAmountApi(data) {
return request({
url: '/csf/api/salary/calculate/totalAmount',
method: 'post',
data: data
})
}
// 修改单个薪资单
export function editSingleSalaryApi(data) {
return request({
url: '/csf/api/salary/edit',
method: 'put',
data: data
})
}
// 新增单个薪资单
export function addSingleSalaryApi(data) {
return request({
url: '/csf/api/salary/add',
method: 'post',
data: data
})
}
// 取消薪资单
export function cancelSalaryApi(data) {
return request({
url: '/csf/api/salary/cancel',
method: 'put',
data: data
})
}
//删除银行
export function delSalaryApi(salaryRemittanceBizId) {
return request({
url: `/csf/api/salary/delSalaryRemittance?salaryRemittanceBizId=${salaryRemittanceBizId}`,
method: 'delete'
})
}
// 电子薪资单列表
export function electronicSalaryListApi(data) {
return request({
url: '/csf/api/salary/push/page',
method: 'post',
data: data
})
}
//提交核对
export function submitCheckApi(data) {
return request({
url: '/csf/api/salary/submit/check',
method: 'put',
data: data
})
}
//推送电子薪资单
export function pushSalaryApi(data) {
return request({
url: '/csf/api/salary/push',
method: 'put',
data: data
})
}
//核对/退回电子薪资单
export function checkSalaryApi(data) {
return request({
url: '/csf/api/salary/check',
method: 'put',
data: data
})
}
// 下载选中的发佣数据
export function downloadPolicyFortune(data) {
return request({
url: '/csf/api/fortune/download/raw',
method: 'post',
data: data,
responseType: 'blob'
})
}
// 应收款导出
export function exportReceivedFortune(data) {
return request({
url: '/csf/api/CommissionExpected/export',
method: 'post',
data: data,
responseType: 'blob'
})
}
...@@ -42,29 +42,6 @@ ...@@ -42,29 +42,6 @@
" "
:parser="value => value.replace(/\$\s?|(,*)/g, '')" :parser="value => value.replace(/\$\s?|(,*)/g, '')"
/> />
<!-- Select (支持 dictType / api / options) -->
<!-- <el-select
v-else-if="item.type === 'select'"
v-model="localModel[item.prop]"
:multiple="!!item.multiple"
:placeholder="item.placeholder || `请选择${item.label}`"
:clearable="true"
filterable
:disabled="item.disabled"
:loading="remoteLoading[item.prop] || false"
@change="val => handleModelChange(val, item)"
@focus="() => loadRemoteOptions(item)"
@filter-change="keyword => handleFilterChange(keyword, item)"
>
<el-option
v-for="opt in getSelectOptions(item)"
:key="opt.value"
:label="opt.label"
:value="opt.value"
/>
</el-select> -->
<!-- @focus="() => loadRemoteOptions(item, '')" -->
<el-select <el-select
v-else-if="item.type === 'select'" v-else-if="item.type === 'select'"
:ref=" :ref="
...@@ -630,10 +607,15 @@ function syncModelFromProps(newModelValue, newConfig) { ...@@ -630,10 +607,15 @@ function syncModelFromProps(newModelValue, newConfig) {
if (idValue && typeof idValue === 'object') { if (idValue && typeof idValue === 'object') {
sourceObj = idValue sourceObj = idValue
} else if (Array.isArray(item.options) && idValue !== undefined && idValue !== null) { } else if (idValue !== undefined && idValue !== null) {
const opts = getSelectOptions(item)
const valueKey = item.valueKey || 'value' const valueKey = item.valueKey || 'value'
sourceObj = item.options.find(opt => opt[valueKey] === idValue) sourceObj = opts.find(opt => opt[valueKey] === idValue)
} }
// else if (Array.isArray(item.options) && idValue !== undefined && idValue !== null) {
// const valueKey = item.valueKey || 'value'
// sourceObj = item.options.find(opt => opt[valueKey] === idValue)
// }
if (sourceObj && typeof sourceObj === 'object') { if (sourceObj && typeof sourceObj === 'object') {
for (const [targetKey, subPath] of Object.entries(extraMap)) { for (const [targetKey, subPath] of Object.entries(extraMap)) {
...@@ -764,24 +746,53 @@ async function loadDictOptions(dictType) { ...@@ -764,24 +746,53 @@ async function loadDictOptions(dictType) {
} }
// ==================== 获取 select 选项 ==================== // ==================== 获取 select 选项 ====================
// function getSelectOptions(item) {
// const key = item.prop
// if (item.dictType || item.api) {
// return (remoteOptions.value[key] || []).map(opt => ({
// value: opt.value,
// label: opt.label,
// raw: opt.raw
// }))
// } else if (item.options) {
// return item.options.map(opt => ({
// value: opt.value,
// label: opt.label,
// raw: opt.raw
// }))
// }
// return []
// }
// 替换原有的 getSelectOptions 函数
function getSelectOptions(item) { function getSelectOptions(item) {
const key = item.prop const key = item.prop
if (item.dictType || item.api) { if (item.dictType || item.api) {
// 远程或字典选项
return (remoteOptions.value[key] || []).map(opt => ({ return (remoteOptions.value[key] || []).map(opt => ({
value: opt.value, value: opt.value,
label: opt.label, label: opt.label,
raw: opt.raw raw: opt.raw
})) }))
} else if (item.options) { } else if (item.options) {
// 静态选项或函数选项
if (typeof item.options === 'function') {
// 传入当前表单数据(localModel.value)作为 row
const opts = item.options(localModel.value)
return opts.map(opt => ({
value: opt.value,
label: opt.label,
raw: opt.raw || opt
}))
} else if (Array.isArray(item.options)) {
return item.options.map(opt => ({ return item.options.map(opt => ({
value: opt.value, value: opt.value,
label: opt.label, label: opt.label,
raw: opt.raw raw: opt.raw || opt
})) }))
} }
}
return [] return []
} }
// 初始化加载远程 API 选项(无搜索词) // 初始化加载远程 API 选项(无搜索词)
async function loadRemoteOptionsForInit(item) { async function loadRemoteOptionsForInit(item) {
const { prop, api, requestParams } = item const { prop, api, requestParams } = item
...@@ -821,41 +832,35 @@ async function loadRemoteOptionsForInit(item) { ...@@ -821,41 +832,35 @@ async function loadRemoteOptionsForInit(item) {
} }
} }
// 加载远程 API 选项(focus 时调用,无搜索词) // 修改原有的 loadRemoteOptions,使其支持关键词参数
// async function loadRemoteOptions(item) { // async function loadRemoteOptions(item, keyword = '') {
// const { prop, api, requestParams } = item // const { prop, api, requestParams, keywordField = 'keyword' } = item
// if (!api) return // if (!api) return
// // 如果已经有选项且不是强制刷新,可跳过;但为了保证初次加载,remoteOptions[prop] 为空时才加载
// if (remoteOptions.value[prop] && remoteOptions.value[prop].length > 0) return
// try { // try {
// remoteLoading.value[prop] = true // remoteLoading.value[prop] = true
// const payload = { // let params = typeof requestParams === 'function' ? requestParams() : requestParams || {}
// ...(typeof requestParams === 'function' ? requestParams() : requestParams || {}) // if (keyword) {
// params = { ...params, [keywordField]: keyword }
// } else {
// // 可选:重置分页参数为第一页
// params = { ...params, pageNo: 1 }
// } // }
// const res = await request({ // const res = await request({ url: api, method: 'post', data: params })
// url: api,
// method: 'post',
// data: payload
// })
// const list = // const list =
// typeof item.transform === 'function' // typeof item.transform === 'function'
// ? item.transform(res) // ? item.transform(res)
// : res.data?.records || res.data || [] // : res.data?.records || res.data || []
// const newOptions = list.map(i => ({ // remoteOptions.value[prop] = list.map(i => ({
// value: String(i[item.valueKey || 'value']), // value: String(i[item.valueKey || 'value']),
// label: i[item.labelKey || 'label'], // label: i[item.labelKey || 'label'],
// raw: i // raw: i
// })) // }))
// remoteOptions.value[prop] = newOptions
// markDictLoaded(prop) // markDictLoaded(prop)
// // 同步 extra 字段
// const currentVal = localModel.value[prop] // const currentVal = localModel.value[prop]
// if (currentVal !== undefined && currentVal !== null && currentVal !== '') { // if (currentVal !== undefined && currentVal !== null && currentVal !== '') {
// syncExtraFieldsForProp(prop, currentVal) // syncExtraFieldsForProp(prop, currentVal)
...@@ -867,9 +872,9 @@ async function loadRemoteOptionsForInit(item) { ...@@ -867,9 +872,9 @@ async function loadRemoteOptionsForInit(item) {
// remoteLoading.value[prop] = false // remoteLoading.value[prop] = false
// } // }
// } // }
// 修改原有的 loadRemoteOptions,使其支持关键词参 // 修改 loadRemoteOptions 函
async function loadRemoteOptions(item, keyword = '') { async function loadRemoteOptions(item, keyword = '') {
const { prop, api, requestParams, keywordField = 'keyword' } = item const { prop, api, requestParams, keywordField = 'keyword', method = 'post' } = item
if (!api) return if (!api) return
try { try {
...@@ -879,11 +884,22 @@ async function loadRemoteOptions(item, keyword = '') { ...@@ -879,11 +884,22 @@ async function loadRemoteOptions(item, keyword = '') {
if (keyword) { if (keyword) {
params = { ...params, [keywordField]: keyword } params = { ...params, [keywordField]: keyword }
} else { } else {
// 可选:重置分页参数为第一页
params = { ...params, pageNo: 1 } params = { ...params, pageNo: 1 }
} }
const res = await request({ url: api, method: 'post', data: params }) // 根据 method 决定参数位置
const requestConfig = {
url: api,
method: method
}
if (method.toLowerCase() === 'get') {
requestConfig.params = params
} else {
requestConfig.data = params
}
const res = await request(requestConfig)
const list = const list =
typeof item.transform === 'function' typeof item.transform === 'function'
? item.transform(res) ? item.transform(res)
...@@ -1045,9 +1061,10 @@ onMounted(async () => { ...@@ -1045,9 +1061,10 @@ onMounted(async () => {
} else if (item.type === 'select' && item.api) { } else if (item.type === 'select' && item.api) {
apiPromises.push(loadRemoteOptions(item, '')) apiPromises.push(loadRemoteOptions(item, ''))
} else if (item.type === 'select' && item.options) { } else if (item.type === 'select' && item.options) {
remoteOptions.value[key] = [...item.options] // 支持 options 为数组或函数(函数调用时传入当前表单数据)
remoteOptions.value[key] = getSelectOptions(item)
markDictLoaded(key) markDictLoaded(key)
} }
} }
if (Object.keys(initialData).length > 0) { if (Object.keys(initialData).length > 0) {
...@@ -1100,42 +1117,6 @@ defineExpose({ ...@@ -1100,42 +1117,6 @@ defineExpose({
formRef.value?.clearValidate() formRef.value?.clearValidate()
}) })
}, },
// resetForm() {
// const resetData = {}
// internalConfig.value.forEach(item => {
// const key = item.prop
// if (['checkbox-group', 'daterange', 'monthrange'].includes(item.type) || item.multiple) {
// resetData[key] = item.defaultValue ?? []
// } else if (item.type === 'upload') {
// resetData[key] = item.defaultValue ?? []
// } else {
// resetData[key] = item.defaultValue ?? ''
// }
// })
// localModel.value = { ...resetData }
// nextTick(() => formRef.value?.clearValidate())
// },
// async refreshRemoteOptions(targetProp) {
// const item = internalConfig.value.find(i => i.prop === targetProp)
// if (!item) {
// console.warn(`[SearchForm] 未找到 prop 为 ${targetProp} 的配置项`)
// return
// }
// if (item.type !== 'select' || !item.api) {
// console.warn(`[SearchForm] 字段 ${targetProp} 不是远程 Select 或没有 API`)
// return
// }
// remoteOptions.value[targetProp] = []
// remoteLoading.value[targetProp] = true
// try {
// await loadRemoteOptions(item)
// } catch (error) {
// console.error(`[SearchForm] ${targetProp} 加载失败`, error)
// throw error
// } finally {
// remoteLoading.value[targetProp] = false
// }
// }
async refreshRemoteOptions(targetProp) { async refreshRemoteOptions(targetProp) {
const item = internalConfig.value.find(i => i.prop === targetProp) const item = internalConfig.value.find(i => i.prop === targetProp)
if (!item || item.type !== 'select' || !item.api) return if (!item || item.type !== 'select' || !item.api) return
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
</template> </template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<!-- 可编辑列:始终显示编辑组件 -->
<div v-if="col.editable !== false"> <div v-if="col.editable !== false">
<el-form-item <el-form-item
:rules="getColumnRules(col)" :rules="getColumnRules(col)"
...@@ -57,10 +56,9 @@ ...@@ -57,10 +56,9 @@
:loading="remoteLoading[col.prop]" :loading="remoteLoading[col.prop]"
:disabled="col.disabled" :disabled="col.disabled"
@update:model-value="val => handleSelectChange(row, col, val, $index)" @update:model-value="val => handleSelectChange(row, col, val, $index)"
@focus="() => loadRemoteOptions(col)"
> >
<el-option <el-option
v-for="opt in getSelectOptions(col)" v-for="opt in getSelectOptions(col, row)"
:key="opt.value" :key="opt.value"
:label="opt.label" :label="opt.label"
:value="opt.value" :value="opt.value"
...@@ -174,7 +172,7 @@ ...@@ -174,7 +172,7 @@
<div v-else> <div v-else>
<slot :name="`column-${col.prop}`" :row="row" :column="col" :value="row[col.prop]"> <slot :name="`column-${col.prop}`" :row="row" :column="col" :value="row[col.prop]">
<span v-if="col.editType === 'select'"> <span v-if="col.editType === 'select'">
{{ getSelectLabel(col, row[col.prop]) }} {{ getSelectLabel(col, row[col.prop], row) }}
</span> </span>
<span v-else-if="col.editType === 'upload' && row[col.prop]"> <span v-else-if="col.editType === 'upload' && row[col.prop]">
<span v-for="(file, idx) in getFileListDisplay(row[col.prop])" :key="idx"> <span v-for="(file, idx) in getFileListDisplay(row[col.prop])" :key="idx">
...@@ -333,7 +331,7 @@ function getColumnRules(col) { ...@@ -333,7 +331,7 @@ function getColumnRules(col) {
} }
// 获取 Select 选项列表 // 获取 Select 选项列表
function getSelectOptions(col) { function getSelectOptions(col, row) {
const key = col.prop const key = col.prop
if (col.dictType) { if (col.dictType) {
const dictStore = useDictStore() const dictStore = useDictStore()
...@@ -348,14 +346,24 @@ function getSelectOptions(col) { ...@@ -348,14 +346,24 @@ function getSelectOptions(col) {
})) }))
} }
if (col.options) { if (col.options) {
if (typeof col.options === 'function') {
// 传入当前行数据,返回选项数组(可以是原始对象数组,也可以是 {value, label} 数组)
const result = col.options(row)
return result.map(opt => ({
value: opt.value ?? opt,
label: opt.label ?? opt,
raw: opt.raw ?? opt
}))
} else {
return col.options.map(opt => ({ value: opt.value, label: opt.label, raw: opt.raw })) return col.options.map(opt => ({ value: opt.value, label: opt.label, raw: opt.raw }))
} }
}
return [] return []
} }
// 获取 Select 选中项的 label // 获取 Select 选中项的 label
function getSelectLabel(col, value) { function getSelectLabel(col, value, row) {
const options = getSelectOptions(col) const options = getSelectOptions(col, row)
if (value === undefined || value === null) return '-' if (value === undefined || value === null) return '-'
if (col.multiple && Array.isArray(value)) { if (col.multiple && Array.isArray(value)) {
return value.map(v => options.find(opt => opt.value === v)?.label || v).join(', ') return value.map(v => options.find(opt => opt.value === v)?.label || v).join(', ')
...@@ -543,10 +551,9 @@ function handleCellChange(row, col, newValue, rowIndex) { ...@@ -543,10 +551,9 @@ function handleCellChange(row, col, newValue, rowIndex) {
function handleSelectChange(row, col, value, rowIndex) { function handleSelectChange(row, col, value, rowIndex) {
const newTableData = [...props.tableData] const newTableData = [...props.tableData]
const updatedRow = { ...row, [col.prop]: value } const updatedRow = { ...row, [col.prop]: value }
// 处理额外字段赋值 // 处理额外字段赋值
if (col.onChangeExtraFields) { if (col.onChangeExtraFields) {
const options = getSelectOptions(col) const options = getSelectOptions(col, row)
const opt = options.find(o => o.value === value) const opt = options.find(o => o.value === value)
if (opt?.raw) { if (opt?.raw) {
for (const [targetProp, sourceKey] of Object.entries(col.onChangeExtraFields)) { for (const [targetProp, sourceKey] of Object.entries(col.onChangeExtraFields)) {
...@@ -557,7 +564,7 @@ function handleSelectChange(row, col, value, rowIndex) { ...@@ -557,7 +564,7 @@ function handleSelectChange(row, col, value, rowIndex) {
newTableData[rowIndex] = updatedRow newTableData[rowIndex] = updatedRow
emit('update:tableData', newTableData) emit('update:tableData', newTableData)
emit('selectChange', col.prop, value, col) emit('selectChange', { prop: col.prop, value, col, rowIndex })
validateField(updatedRow, col.prop) validateField(updatedRow, col.prop)
} }
...@@ -679,8 +686,32 @@ async function loadDictOptions(dictType) { ...@@ -679,8 +686,32 @@ async function loadDictOptions(dictType) {
} }
} }
// async function loadRemoteOptions(col) {
// const { prop, api, requestParams } = col
// if (!api) return
// if (remoteOptions.value[prop]?.length > 0) return
// try {
// remoteLoading.value[prop] = true
// const payload = {
// ...(typeof requestParams === 'function' ? requestParams() : requestParams || {})
// }
// const res = await request({ url: api, method: 'post', data: payload })
// const list =
// typeof col.transform === 'function' ? col.transform(res) : res.data?.records || res.data || []
// remoteOptions.value[prop] = list.map(i => ({
// value: String(i[col.valueKey || 'value']),
// label: i[col.labelKey || 'label'],
// raw: i
// }))
// } catch (err) {
// ElMessage.error(`加载 ${col.label} 失败`)
// remoteOptions.value[prop] = []
// } finally {
// remoteLoading.value[prop] = false
// }
// }
async function loadRemoteOptions(col) { async function loadRemoteOptions(col) {
const { prop, api, requestParams } = col const { prop, api, requestParams, method = 'post' } = col
if (!api) return if (!api) return
if (remoteOptions.value[prop]?.length > 0) return if (remoteOptions.value[prop]?.length > 0) return
try { try {
...@@ -688,7 +719,17 @@ async function loadRemoteOptions(col) { ...@@ -688,7 +719,17 @@ async function loadRemoteOptions(col) {
const payload = { const payload = {
...(typeof requestParams === 'function' ? requestParams() : requestParams || {}) ...(typeof requestParams === 'function' ? requestParams() : requestParams || {})
} }
const res = await request({ url: api, method: 'post', data: payload }) const config = {
url: api,
method: method.toLowerCase()
}
// GET 请求参数放在 params,其他放在 data
if (config.method === 'get') {
config.params = payload
} else {
config.data = payload
}
const res = await request(config)
const list = const list =
typeof col.transform === 'function' ? col.transform(res) : res.data?.records || res.data || [] typeof col.transform === 'function' ? col.transform(res) : res.data?.records || res.data || []
remoteOptions.value[prop] = list.map(i => ({ remoteOptions.value[prop] = list.map(i => ({
...@@ -703,20 +744,63 @@ async function loadRemoteOptions(col) { ...@@ -703,20 +744,63 @@ async function loadRemoteOptions(col) {
remoteLoading.value[prop] = false remoteLoading.value[prop] = false
} }
} }
let searchTimeouts = {} let searchTimeouts = {}
// async function handleRemoteSearch(keyword, col) {
// const { prop, api, requestParams, keywordField = 'keyword', debounceWait = 300 } = col
// if (!api) return
// clearTimeout(searchTimeouts[prop])
// searchTimeouts[prop] = setTimeout(async () => {
// try {
// remoteLoading.value[prop] = true
// const payload = {
// ...(typeof requestParams === 'function' ? requestParams() : requestParams || {}),
// [keywordField]: keyword
// }
// const res = await request({ url: api, method: 'post', data: payload })
// const list =
// typeof col.transform === 'function'
// ? col.transform(res)
// : res.data?.records || res.data || []
// remoteOptions.value[prop] = list.map(i => ({
// value: String(i[col.valueKey || 'value']),
// label: i[col.labelKey || 'label'],
// raw: i
// }))
// } catch (err) {
// ElMessage.error(`搜索 ${col.label} 失败`)
// } finally {
// remoteLoading.value[prop] = false
// }
// }, debounceWait)
// }
async function handleRemoteSearch(keyword, col) { async function handleRemoteSearch(keyword, col) {
const { prop, api, requestParams, keywordField = 'keyword', debounceWait = 300 } = col const {
prop,
api,
requestParams,
keywordField = 'keyword',
debounceWait = 300,
method = 'post'
} = col
if (!api) return if (!api) return
clearTimeout(searchTimeouts[prop]) clearTimeout(searchTimeouts[prop])
searchTimeouts[prop] = setTimeout(async () => { searchTimeouts[prop] = setTimeout(async () => {
try { try {
remoteLoading.value[prop] = true // remoteLoading.value[prop] = true
const payload = { const payload = {
...(typeof requestParams === 'function' ? requestParams() : requestParams || {}), ...(typeof requestParams === 'function' ? requestParams() : requestParams || {}),
[keywordField]: keyword [keywordField]: keyword
} }
const res = await request({ url: api, method: 'post', data: payload }) const config = {
url: api,
method: method.toLowerCase()
}
if (config.method === 'get') {
config.params = payload
} else {
config.data = payload
}
const res = await request(config)
const list = const list =
typeof col.transform === 'function' typeof col.transform === 'function'
? col.transform(res) ? col.transform(res)
...@@ -733,7 +817,6 @@ async function handleRemoteSearch(keyword, col) { ...@@ -733,7 +817,6 @@ async function handleRemoteSearch(keyword, col) {
} }
}, debounceWait) }, debounceWait)
} }
function getDisabledDateFn(col) { function getDisabledDateFn(col) {
const { minDate, maxDate } = col const { minDate, maxDate } = col
if (minDate == null && maxDate == null) return () => false if (minDate == null && maxDate == null) return () => false
...@@ -879,9 +962,10 @@ onMounted(async () => { ...@@ -879,9 +962,10 @@ onMounted(async () => {
dictLoaded.value.add(col.prop) dictLoaded.value.add(col.prop)
} else if (col.api && col.preload !== false) { } else if (col.api && col.preload !== false) {
await loadRemoteOptions(col) await loadRemoteOptions(col)
} else if (col.options) {
remoteOptions.value[col.prop] = [...col.options]
} }
// else if (col.options) {
// remoteOptions.value[col.prop] = [...col.options]
// }
} }
} }
}) })
......
...@@ -445,6 +445,13 @@ const searchConfig = ref([ ...@@ -445,6 +445,13 @@ const searchConfig = ref([
}, },
{ {
type: 'monthrange', type: 'monthrange',
prop: 'actualPayoutDate',
label: '出账月(实)',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间'
},
{
type: 'monthrange',
prop: 'payoutDate', prop: 'payoutDate',
label: '出账月(估)', label: '出账月(估)',
startPlaceholder: '开始时间', startPlaceholder: '开始时间',
...@@ -1044,9 +1051,6 @@ const addSpiltRecord = () => { ...@@ -1044,9 +1051,6 @@ const addSpiltRecord = () => {
if (selectedRow.value.originalCurrency && selectedRow.value.originalCurrency == 'HKD') { if (selectedRow.value.originalCurrency && selectedRow.value.originalCurrency == 'HKD') {
newRow.originalToHkdRate = '1' newRow.originalToHkdRate = '1'
} }
console.log('====================================')
console.log('newRow', newRow)
console.log('====================================')
// 插入到表格数据最前面 // 插入到表格数据最前面
splitTableData.value.push(newRow) splitTableData.value.push(newRow)
} }
...@@ -1376,6 +1380,9 @@ const loadTableData = async (searchParams = {}) => { ...@@ -1376,6 +1380,9 @@ const loadTableData = async (searchParams = {}) => {
...searchParams, ...searchParams,
payoutDateStart: searchParams.payoutDate?.[0] || undefined, payoutDateStart: searchParams.payoutDate?.[0] || undefined,
payoutDateEnd: searchParams.payoutDate?.[1] || undefined, payoutDateEnd: searchParams.payoutDate?.[1] || undefined,
actualPayoutDateStart: searchParams.actualPayoutDate?.[0] || undefined,
actualPayoutDateEnd: searchParams.actualPayoutDate?.[1] || undefined,
actualPayoutDate: undefined,
payoutDate: undefined payoutDate: undefined
} }
const res = await getPolicyFortuneList(params) const res = await getPolicyFortuneList(params)
......
...@@ -42,21 +42,21 @@ ...@@ -42,21 +42,21 @@
:border="true" :border="true"
> >
<el-table-column type="selection" width="55" :reserve-selection="true" /> <el-table-column type="selection" width="55" :reserve-selection="true" />
<el-table-column prop="businessNo" label="业务编号" min-width="120" /> <el-table-column prop="businessNo" label="业务编号" min-width="150" />
<!-- <el-table-column prop="fortuneAccountBizId" label="业务ID" min-width="120" sortable /> --> <!-- <el-table-column prop="fortuneAccountBizId" label="业务ID" min-width="120" sortable /> -->
<el-table-column prop="broker" label="转介人" min-width="120" sortable /> <el-table-column prop="broker" label="转介人" min-width="100" sortable />
<el-table-column prop="team" label="所属团队" min-width="120" sortable /> <el-table-column prop="team" label="所属团队" min-width="100" sortable />
<el-table-column prop="hkdAmount" label="港币金额" width="120" sortable> <el-table-column prop="hkdAmount" label="港币金额" width="150" sortable>
<template #default="scope"> <template #default="scope">
{{ formatCurrency(scope.row.hkdAmount, '', 4) }} {{ formatCurrency(scope.row.hkdAmount, '', 4) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="payoutCurrency" label="发放币种" width="120" sortable> <el-table-column prop="payoutCurrency" label="发放币种" width="110" sortable>
<template #default="scope"> <template #default="scope">
<dict-tag :options="currencyTypeOptions" :value="scope.row.payoutCurrency" /> <dict-tag :options="currencyTypeOptions" :value="scope.row.payoutCurrency" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="payoutAmount" label="发放金额" width="120" sortable> <el-table-column prop="payoutAmount" label="发放金额" width="150" sortable>
<template #default="scope"> <template #default="scope">
{{ formatCurrency(scope.row.payoutAmount, '', 4) }} {{ formatCurrency(scope.row.payoutAmount, '', 4) }}
</template> </template>
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<el-table-column <el-table-column
prop="fortuneAccountMonth" prop="fortuneAccountMonth"
label="出账年月" label="出账年月"
min-width="150" min-width="100"
show-overflow-tooltip show-overflow-tooltip
/> />
<!-- <el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip /> --> <!-- <el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip /> -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment