feat(api): 添加 hasOnlyUserId 判断并更新导出组件的禁用逻辑

- 在 api.js 中新增 hasOnlyUserId 方法,用于检测 URL 中是否仅包含 userId 参数
- 在 main.js 里通过计算属性引入 hasOnlyUserId 状态
- 修改 index.html 中导出订单数据创建者选择框的禁用条件,从 hasUserId 改为 hasOnlyUserId
- 优化了导出表单组件对用户 ID 参数的判断逻辑,提高交互准确性
This commit is contained in:
zhouyonggao 2025-12-18 22:28:41 +08:00
parent f8c7140fb0
commit d9a8f67c88
3 changed files with 16 additions and 3 deletions

View File

@ -262,7 +262,7 @@
<el-row :gutter="8" v-if="isOrder && exportForm.datasource==='ymt'"> <el-row :gutter="8" v-if="isOrder && exportForm.datasource==='ymt'">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="订单数据创建者" prop="ymtCreatorId"> <el-form-item label="订单数据创建者" prop="ymtCreatorId">
<el-select v-model.number="exportForm.ymtCreatorId" :disabled="hasUserId" clearable filterable :teleported="false" placeholder="请选择创建者" style="width:100%"> <el-select v-model.number="exportForm.ymtCreatorId" :disabled="hasOnlyUserId" clearable filterable :teleported="false" placeholder="请选择创建者" style="width:100%">
<el-option v-for="opt in ymtCreatorOptions" :key="opt.value" :label="opt.label" :value="opt.value" /> <el-option v-for="opt in ymtCreatorOptions" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -285,7 +285,7 @@
<el-row :gutter="8" v-if="isOrder && exportForm.datasource==='marketing'"> <el-row :gutter="8" v-if="isOrder && exportForm.datasource==='marketing'">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="订单数据创建者" prop="creator"> <el-form-item label="订单数据创建者" prop="creator">
<el-select v-model="exportForm.creatorIds" multiple clearable filterable :disabled="hasUserId" :teleported="false" placeholder="请选择创建者" style="width:100%"> <el-select v-model="exportForm.creatorIds" multiple clearable filterable :disabled="hasOnlyUserId" :teleported="false" placeholder="请选择创建者" style="width:100%">
<el-option v-for="opt in creatorOptions" :key="opt.value" :label="opt.label" :value="opt.value" /> <el-option v-for="opt in creatorOptions" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>

View File

@ -23,6 +23,7 @@ const app = createApp({
// ==================== 计算属性 ==================== // ==================== 计算属性 ====================
const hasUserId = Vue.computed(() => !!Api.getUserId()); const hasUserId = Vue.computed(() => !!Api.getUserId());
const hasOnlyUserId = Vue.computed(() => Api.hasOnlyUserId());
const currentUserId = Vue.computed(() => { const currentUserId = Vue.computed(() => {
const userId = Api.getUserId(); const userId = Api.getUserId();
return userId ? Number(userId) : null; return userId ? Number(userId) : null;
@ -1019,6 +1020,7 @@ const app = createApp({
isOrder, isOrder,
exportTitle, exportTitle,
hasUserId, hasUserId,
hasOnlyUserId,
currentUserId, currentUserId,
hasCreators, hasCreators,
hasReseller, hasReseller,

View File

@ -20,7 +20,7 @@ const getApiBase = () => {
const API_BASE = getApiBase(); const API_BASE = getApiBase();
/** /**
* URL 参数中获取用户 ID * URL 参数中获取用户 ID
* @returns {string} 用户 ID不存在返回空字符串 * @returns {string} 用户 ID不存在返回空字符串
*/ */
const getUserId = () => { const getUserId = () => {
@ -29,6 +29,16 @@ const getUserId = () => {
return value && String(value).trim() ? String(value).trim() : ''; return value && String(value).trim() ? String(value).trim() : '';
}; };
/**
* 检查 URL 中是否有 userId 参数不包含 current_user_id
* @returns {boolean}
*/
const hasOnlyUserId = () => {
const params = new URLSearchParams(window.location.search || '');
const value = params.get('userId') || params.get('userid') || params.get('user_id');
return !!(value && String(value).trim());
};
/** /**
* URL 参数中获取商户 ID * URL 参数中获取商户 ID
* @returns {string} 商户 ID不存在返回空字符串 * @returns {string} 商户 ID不存在返回空字符串
@ -399,6 +409,7 @@ window.ApiService = {
// 基础方法 // 基础方法
API_BASE, API_BASE,
getUserId, getUserId,
hasOnlyUserId,
getMerchantId, getMerchantId,
buildUserQueryString, buildUserQueryString,
get, get,