开通新人特权
This commit is contained in:
@@ -48,3 +48,19 @@ export function parseLbPurchaseApplyFromOrderInfo(data) {
|
||||
timeout: 120000
|
||||
})
|
||||
}
|
||||
|
||||
/** 按申请日期区间与租户同步 hxrd 用户 VIP(可能较慢,依赖外部管理端) */
|
||||
export function syncHxrAdminUserVip(params) {
|
||||
return request({
|
||||
url: '/lbPurchaseApply/syncHxrAdminUserVip',
|
||||
method: 'get',
|
||||
params: {
|
||||
applyDateStart: params.applyDateStart,
|
||||
applyDateEnd: params.applyDateEnd,
|
||||
tenantId: params.tenantId,
|
||||
max_order: params.maxOrder
|
||||
},
|
||||
timeout: 120000,
|
||||
skipResponseNormalize: true
|
||||
})
|
||||
}
|
||||
|
||||
@@ -45,6 +45,9 @@
|
||||
<el-button type="warning" icon="el-icon-view" :loading="privilegeLoading" @click="handleViewPrivilege">
|
||||
查看特权
|
||||
</el-button>
|
||||
<el-button type="success" icon="el-icon-present" style="margin-left: 12px" @click="openNewcomerVipDialog">
|
||||
开通新人特权
|
||||
</el-button>
|
||||
</el-card>
|
||||
|
||||
<el-card class="table-container" shadow="never">
|
||||
@@ -52,6 +55,7 @@
|
||||
<el-table-column label="申请人" prop="applyUser" min-width="120" />
|
||||
<el-table-column label="申请电话" prop="applyPhone" min-width="130" />
|
||||
<el-table-column label="同事姓名" prop="colleagueName" min-width="120" />
|
||||
<el-table-column label="同事电话" prop="colleaguePhone" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column label="组长姓名" prop="teamLeader" min-width="120" />
|
||||
<el-table-column label="申请日期" prop="applyDate" min-width="120" />
|
||||
<el-table-column label="创建时间" prop="createTime" min-width="170">
|
||||
@@ -184,6 +188,47 @@
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="开通新人特权"
|
||||
:visible.sync="newcomerVipDialogVisible"
|
||||
width="520px"
|
||||
@close="resetNewcomerVipDialog"
|
||||
>
|
||||
<el-form label-width="120px">
|
||||
<el-form-item label="申请日期" required>
|
||||
<el-date-picker
|
||||
v-model="newcomerVipApplyDateRange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="max_order" required>
|
||||
<el-input-number
|
||||
v-model="newcomerVipMaxOrder"
|
||||
:min="1"
|
||||
:max="999999"
|
||||
:step="1"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
placeholder="最大订单数"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="租户ID">
|
||||
<el-input :value="newcomerVipTenantIdDisplay" disabled placeholder="未获取到租户ID" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="newcomerVipDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="newcomerVipSubmitLoading" @click="handleConfirmNewcomerVip">
|
||||
确认
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="特权推荐人列表" :visible.sync="privilegeDialogVisible" width="760px" @close="resetPrivilegeDialog">
|
||||
<el-table v-loading="privilegeLoading" :data="privilegeList" style="width: 100%">
|
||||
<el-table-column type="index" label="#" width="60" />
|
||||
@@ -209,6 +254,7 @@ import {
|
||||
getLbPurchaseApplyList,
|
||||
needPrivilegeRecommenders,
|
||||
parseLbPurchaseApplyFromOrderInfo,
|
||||
syncHxrAdminUserVip,
|
||||
updateLbPurchaseApply
|
||||
} from '@/api/lb-purchase-apply'
|
||||
import { getBusinessHeaders } from '@/utils/business-headers'
|
||||
@@ -218,6 +264,11 @@ export default {
|
||||
data() {
|
||||
const today = this.getCurrentDate()
|
||||
return {
|
||||
newcomerVipDialogVisible: false,
|
||||
newcomerVipSubmitLoading: false,
|
||||
newcomerVipApplyDateRange: [today, today],
|
||||
newcomerVipMaxOrder: null,
|
||||
newcomerVipTenantIdDisplay: '',
|
||||
loading: false,
|
||||
submitLoading: false,
|
||||
parseAiLoading: false,
|
||||
@@ -562,6 +613,75 @@ export default {
|
||||
resetPrivilegeDialog() {
|
||||
this.privilegeList = []
|
||||
},
|
||||
openNewcomerVipDialog() {
|
||||
const today = this.getCurrentDate()
|
||||
this.newcomerVipTenantIdDisplay = this.getTenantIdFromBusinessHeaders()
|
||||
if (
|
||||
Array.isArray(this.privilegeDateRange) &&
|
||||
this.privilegeDateRange.length === 2 &&
|
||||
this.privilegeDateRange[0] &&
|
||||
this.privilegeDateRange[1]
|
||||
) {
|
||||
this.newcomerVipApplyDateRange = [...this.privilegeDateRange]
|
||||
} else {
|
||||
this.newcomerVipApplyDateRange = [today, today]
|
||||
}
|
||||
if (this.newcomerVipMaxOrder == null || this.newcomerVipMaxOrder === '') {
|
||||
this.newcomerVipMaxOrder = 1
|
||||
}
|
||||
this.newcomerVipDialogVisible = true
|
||||
},
|
||||
resetNewcomerVipDialog() {
|
||||
const today = this.getCurrentDate()
|
||||
this.newcomerVipApplyDateRange = [today, today]
|
||||
this.newcomerVipMaxOrder = null
|
||||
this.newcomerVipTenantIdDisplay = ''
|
||||
this.newcomerVipSubmitLoading = false
|
||||
},
|
||||
handleConfirmNewcomerVip() {
|
||||
const tenantId = this.getTenantIdFromBusinessHeaders()
|
||||
if (!tenantId) {
|
||||
this.$message.error('未获取到租户ID,请先登录或配置业务请求头中的租户')
|
||||
return
|
||||
}
|
||||
this.newcomerVipTenantIdDisplay = tenantId
|
||||
if (!Array.isArray(this.newcomerVipApplyDateRange) || this.newcomerVipApplyDateRange.length !== 2) {
|
||||
this.$message.warning('请选择申请开始日期与结束日期')
|
||||
return
|
||||
}
|
||||
const [applyDateStart, applyDateEnd] = this.newcomerVipApplyDateRange
|
||||
if (!applyDateStart || !applyDateEnd) {
|
||||
this.$message.warning('请选择申请开始日期与结束日期')
|
||||
return
|
||||
}
|
||||
const maxOrder = this.newcomerVipMaxOrder
|
||||
if (maxOrder == null || maxOrder === '' || Number(maxOrder) < 1) {
|
||||
this.$message.warning('请输入有效的 max_order(正整数)')
|
||||
return
|
||||
}
|
||||
this.newcomerVipSubmitLoading = true
|
||||
syncHxrAdminUserVip({
|
||||
applyDateStart,
|
||||
applyDateEnd,
|
||||
tenantId,
|
||||
maxOrder: Number(maxOrder)
|
||||
})
|
||||
.then((res) => {
|
||||
const ok = res && (res.success === true || res.code === 200 || res.code === 20000)
|
||||
if (ok) {
|
||||
this.$message.success((res && res.message) || '同步成功')
|
||||
this.newcomerVipDialogVisible = false
|
||||
} else {
|
||||
this.$message.error((res && (res.message || res.msg)) || '同步失败')
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
// 错误提示由 @/utils/request 响应拦截器统一展示
|
||||
})
|
||||
.finally(() => {
|
||||
this.newcomerVipSubmitLoading = false
|
||||
})
|
||||
},
|
||||
formatDateTime(dateTime) {
|
||||
if (!dateTime) return '-'
|
||||
const date = new Date(String(dateTime).replace('T', ' '))
|
||||
|
||||
Reference in New Issue
Block a user