merge(scope): merge code

This commit is contained in:
lukaijie
2026-04-30 23:53:06 +08:00
parent fd5fab10b2
commit f89773c888
23 changed files with 98 additions and 99 deletions

View File

@@ -1,7 +1,15 @@
## 最近一次变更2026-04-27
## 本次变更总结
**一句话概括**: fix: 跑马灯默认文案改为 i18n 翻译值
**时间**: 2026-04-14
**要点**: `wgt_marquees``dataText` 默认值由 key 字符串改为 `i18n.t('8fc92d38.cbc608')`,新建/初始化挂件时可直接显示多语言文案。
**涉及文件**:
- `src/view/mall/goods/physical/list.vue` (修改)
- `src/i18n/locales/zh-CN.json` (修改)
- `src/i18n/locales/en.json` (修改)
- `src/i18n/locales/ar.json` (修改)
详见: `.cursor/commit-summary/2026-04-27-marquees-default-i18n.md`
**主要改动**:
- **审核状态列**:驳回原因展示条件由未定义的 `loginType == 'supplier'` 改为 **`IS_SUPPLIER()`**,消除 `ReferenceError: loginType is not defined`,避免表格渲染失败。
- **批量提交审核**`$confirm` 正文不再使用与「自定义运费」冲突的 **`d41d8cd9.b2c3d4`**;新增专用键 **`d41d8cd9.b1a2c3`**(中/英/阿),并删除 zh-CN 中重复的 `b2c3d4` 条目,保留「自定义运费」定义。
**一句话概括**: fix: 自营商品列表审核列 loginType 与批量审核确认文案

View File

@@ -142,9 +142,7 @@ export default {
if (w) return w
if (String(this.scene) === '1005' && key === 'goods') {
return (
this.widgets.find(
(item) => String(item.config?.name || '').toLowerCase() === 'goodscard'
) ||
this.widgets.find((item) => String(item.config?.name || '').toLowerCase() === 'goodscard') ||
this.widgets.find((item) => (item.name || '').toLowerCase() === 'goods') ||
null
)

View File

@@ -7618,6 +7618,7 @@
"d41d8cd9.b09ce9": "مكون",
"d41d8cd9.fedbca": "إضافة علامات",
"d41d8cd9.298be1": "إرسال دفعي للمراجعة",
"d41d8cd9.b1a2c3": "تقديم المنتجات المحددة للمراجعة دفعة واحدة؟",
"d41d8cd9.86a83b": "تعيين كهدية",
"d41d8cd9.389203": "تعيين كغير هدية",
"d41d8cd9.965407": "إيقاف البيع",

View File

@@ -7618,6 +7618,7 @@
"d41d8cd9.b09ce9": "Component",
"d41d8cd9.fedbca": "Add tags",
"d41d8cd9.298be1": "Batch submit for review",
"d41d8cd9.b1a2c3": "Submit the selected products for batch review?",
"d41d8cd9.86a83b": "Set as gift",
"d41d8cd9.389203": "Set as non-gift",
"d41d8cd9.965407": "Stop selling",

View File

@@ -7635,6 +7635,7 @@
"d41d8cd9.b09ce9": "组件式",
"d41d8cd9.fedbca": "打标签",
"d41d8cd9.298be1": "批量提交审核",
"d41d8cd9.b1a2c3": "确认将所选商品批量提交审核吗?",
"d41d8cd9.86a83b": "设为赠品",
"d41d8cd9.389203": "设为非赠品",
"d41d8cd9.965407": "停售",
@@ -7699,7 +7700,6 @@
"d41d8cd9.v6w7x8": "所有商品, 是否继续?",
"d41d8cd9.y9z0a1": "是否将所有商品的都同步至店铺?",
"6f19b2ab.6b3d7e": "是否将所有商品同步至店铺?",
"d41d8cd9.b2c3d4": "确认是否批量提交?",
"d41d8cd9.e5f6g7": "已加入执行队列,请在设置-导出列表中下载",
"d41d8cd9.h8i9j0": "导出失败",
"d41d8cd9.k1l2m3": "商品【",

View File

@@ -163,7 +163,10 @@ export default {
computed: {
needsOfficialRawId() {
const { linkPage, id } = this.localValue
return linkPage === 'customer_service' && (id === 'officialProfile' || id === 'officialChat')
return (
linkPage === 'customer_service' &&
(id === 'officialProfile' || id === 'officialChat')
)
},
needsOfficialArticleLink() {
const { linkPage, id } = this.localValue
@@ -208,7 +211,8 @@ export default {
const needRaw =
res?.linkPage === 'customer_service' &&
(res?.id === 'officialProfile' || res?.id === 'officialChat')
const needArticle = res?.linkPage === 'customer_service' && res?.id === 'official'
const needArticle =
res?.linkPage === 'customer_service' && res?.id === 'official'
if (needRaw) {
next.officialAccountRawId = this.localValue.officialAccountRawId || ''
next.officialArticleLink = ''

View File

@@ -365,9 +365,7 @@ export default {
if (w) return w
if (String(this.localScene) === '1005' && key === 'goods') {
return (
this.widgets.find(
(item) => String(item.config?.name || '').toLowerCase() === 'goodscard'
) ||
this.widgets.find((item) => String(item.config?.name || '').toLowerCase() === 'goodscard') ||
this.widgets.find((item) => (item.name || '').toLowerCase() === 'goods') ||
null
)

View File

@@ -194,12 +194,8 @@
<template>
<div class="wgt-page" :style="headerStyle" @click="handleClickHeader">
<div class="wgt-page-content" :style="contentStyle">
<div
v-if="value"
class="header-container"
:class="{ 'has-nearby': showFunctionArea && functionAreaType === 'nearby' }"
:style="containerStyle"
>
<div v-if="value" class="header-container"
:class="{ 'has-nearby': showFunctionArea && functionAreaType === 'nearby' }" :style="containerStyle">
<div class="header-content-left">
<!-- 功能区热区图 -->
<div

View File

@@ -45,9 +45,7 @@
{{ getLabelName() }}
</div>
<div v-if="needsOfficialRawId" style="margin-top: 8px">
<div style="font-size: 12px; color: #333; margin-bottom: 4px">
{{ i18n.t('cc5110aa.d10654') }}
</div>
<div style="font-size: 12px; color: #333; margin-bottom: 4px">{{ i18n.t('cc5110aa.d10654') }}</div>
<el-input
v-model="localValue.officialAccountRawId"
size="small"
@@ -56,9 +54,7 @@
/>
</div>
<div v-if="needsOfficialArticleLink" style="margin-top: 8px">
<div style="font-size: 12px; color: #333; margin-bottom: 4px">
{{ i18n.t('cc5110aa.f30876') }}
</div>
<div style="font-size: 12px; color: #333; margin-bottom: 4px">{{ i18n.t('cc5110aa.f30876') }}</div>
<el-input
v-model="localValue.officialArticleLink"
size="small"
@@ -116,7 +112,10 @@ export default {
...mapGetters(['lang']),
needsOfficialRawId() {
const { linkPage, id } = this.localValue
return linkPage === 'customer_service' && (id === 'officialProfile' || id === 'officialChat')
return (
linkPage === 'customer_service' &&
(id === 'officialProfile' || id === 'officialChat')
)
},
needsOfficialArticleLink() {
const { linkPage, id } = this.localValue
@@ -174,7 +173,8 @@ export default {
const needRaw =
res?.linkPage === 'customer_service' &&
(res?.id === 'officialProfile' || res?.id === 'officialChat')
const needArticle = res?.linkPage === 'customer_service' && res?.id === 'official'
const needArticle =
res?.linkPage === 'customer_service' && res?.id === 'official'
if (needRaw) {
next.officialAccountRawId = this.localValue.officialAccountRawId || ''
next.officialArticleLink = ''

View File

@@ -110,7 +110,7 @@ export default {
}
}
const effectiveDataCount = this.value?.dataCount ?? 4
const effectiveDataCount = this.value?.dataCount ?? 4
let params = {
data_type: dataType,
data_value: this.value.data?.id || '',

View File

@@ -49,7 +49,7 @@
<template>
<div
:class="{
'wgt-goods-card': true
'wgt-goods-card': true,
}"
:style="outerStyle"
>

View File

@@ -45,9 +45,7 @@
{{ getLabelName() }}
</div>
<div v-if="needsOfficialRawId" style="margin-top: 8px">
<div style="font-size: 12px; color: #333; margin-bottom: 4px">
{{ i18n.t('cc5110aa.d10654') }}
</div>
<div style="font-size: 12px; color: #333; margin-bottom: 4px">{{ i18n.t('cc5110aa.d10654') }}</div>
<el-input
v-model="localValue.officialAccountRawId"
size="small"
@@ -56,9 +54,7 @@
/>
</div>
<div v-if="needsOfficialArticleLink" style="margin-top: 8px">
<div style="font-size: 12px; color: #333; margin-bottom: 4px">
{{ i18n.t('cc5110aa.f30876') }}
</div>
<div style="font-size: 12px; color: #333; margin-bottom: 4px">{{ i18n.t('cc5110aa.f30876') }}</div>
<el-input
v-model="localValue.officialArticleLink"
size="small"
@@ -116,7 +112,10 @@ export default {
...mapGetters(['lang']),
needsOfficialRawId() {
const { linkPage, id } = this.localValue
return linkPage === 'customer_service' && (id === 'officialProfile' || id === 'officialChat')
return (
linkPage === 'customer_service' &&
(id === 'officialProfile' || id === 'officialChat')
)
},
needsOfficialArticleLink() {
const { linkPage, id } = this.localValue
@@ -174,7 +173,8 @@ export default {
const needRaw =
res?.linkPage === 'customer_service' &&
(res?.id === 'officialProfile' || res?.id === 'officialChat')
const needArticle = res?.linkPage === 'customer_service' && res?.id === 'official'
const needArticle =
res?.linkPage === 'customer_service' && res?.id === 'official'
if (needRaw) {
next.officialAccountRawId = this.localValue.officialAccountRawId || ''
next.officialArticleLink = ''

View File

@@ -110,7 +110,11 @@
<div>{{ scope.row.sort }}</div>
</template>
</el-table-column>
<el-table-column :label="$t('0e7dabe2.e8f9a1')" width="120" align="center">
<el-table-column
:label="$t('0e7dabe2.e8f9a1')"
width="120"
align="center"
>
<template slot-scope="scope">
<el-switch
:value="scope.row.is_show_front"
@@ -192,9 +196,7 @@ export default {
{
label: this.$t('0e7dabe2.e8f9a1'),
key: 'is_show_front',
component: ({ key }, value) => (
<el-switch v-model={value[key]} active-value='1' inactive-value='0' />
)
component: ({ key }, value) => <el-switch v-model={value[key]} active-value="1" inactive-value="0"/>,
},
{
label: this.$t('0e7dabe2.dc1eed'),

View File

@@ -1154,7 +1154,7 @@ export default {
render: (h, scope) => (
<div>
<span>{GOODS_APPLY_STATUS[scope.row.audit_status]}</span>
{scope.row.audit_status == 'rejected' && loginType == 'supplier' && (
{scope.row.audit_status == 'rejected' && IS_SUPPLIER() && (
<div class='physical-cell-reason'>
{this.$t('d41d8cd9.a36d88')}
{scope.row.audit_reason}
@@ -1913,7 +1913,7 @@ export default {
this.$message.error(this.$t('dc9cefd6.ace302'))
return
}
await this.$confirm(this.$t('d41d8cd9.b2c3d4'), this.$t('d41d8cd9.298be1'), {
await this.$confirm(this.$t('d41d8cd9.b1a2c3'), this.$t('d41d8cd9.298be1'), {
confirmButtonText: this.$t('d41d8cd9.aa7527'),
cancelButtonText: this.$t('d41d8cd9.625fb2')
})

View File

@@ -444,17 +444,17 @@ export default {
},
{
label: this.$t('77050e4f.d64589'),
component: () => <span>{this.addForm.bank_name || '-'}</span>
component: () => <span>{this.addForm.bank_name || '-'}</span>,
},
{
label: this.$t('77050e4f.27d6ee'),
key: 'bank_name',
component: () => <span>{this.addForm.bank_account_no || '-'}</span>
component: () => <span>{this.addForm.bank_account_no || '-'}</span>,
},
{
label: this.$t('77050e4f.efce56'),
key: 'china_ums_no',
component: () => <span>{this.addForm.china_ums_no || '-'}</span>
component: () => <span>{this.addForm.china_ums_no || '-'}</span>,
},
{

View File

@@ -228,7 +228,11 @@
</el-table-column>
<el-table-column width="120" :label="$t('9cc0c982.eb4307')">
<template slot-scope="scope">
{{ scope.row.use_all_shops == 1 ? $t('9cc0c982.77678b') : $t('9cc0c982.fcf7d8') }}
{{
scope.row.use_all_shops == 1
? $t('9cc0c982.77678b')
: $t('9cc0c982.fcf7d8')
}}
</template>
</el-table-column>
</el-table>

View File

@@ -167,7 +167,10 @@
>
{{ $t('ff141a64.3ae7e4') }}
</el-button>
<span v-if="scope.row.status == 'waiting'" class="pluspricebuy-waiting-actions">
<span
v-if="scope.row.status == 'waiting'"
class="pluspricebuy-waiting-actions"
>
<i
class="el-icon-edit-outline"
@click="editActivityAction(scope.$index, scope.row)"

View File

@@ -42,7 +42,11 @@
<div v-if="hasRegisterJumpPath" class="link-content border px-2">
<span @click="handleGoodsChange()">{{ registerJumpPathSummary }}</span>
<span style="margin-left: 10px">
<i style="color: #f56c6c" class="el-icon-delete" @click.stop="clear_pic_url" />
<i
style="color: #f56c6c"
class="el-icon-delete"
@click.stop="clear_pic_url"
/>
</span>
</div>
<div

View File

@@ -39,8 +39,10 @@
<template slot-scope="scope">
<div>
<el-tag v-if="isTemplateEnabled(scope.row.status)" type="success">
{{ $t('8b0d1458.7854b5') }}
</el-tag>
{{
$t('8b0d1458.7854b5')
}}
</el-tag>
<el-tag v-else type="info">{{ $t('8b0d1458.463776') }}</el-tag>
</div>
</template>

View File

@@ -6,45 +6,22 @@
<template>
<SpPage>
<SpRouterView>
<SpFormPlus
v-model="formData"
form-type="searchForm"
:form-items="formItems"
@submit="onSearch"
@reset="onSearch"
:inline="true"
/>
<SpFormPlus v-model="formData" form-type="searchForm" :form-items="formItems" @submit="onSearch" @reset="onSearch"
:inline="true" />
<div class="action-container mt-5">
<el-button type="primary" icon="plus" @click="showEditModal('')">
{{ $t('f06fa37c.66ab5e') }}
{{
$t('f06fa37c.66ab5e')
}}
</el-button>
</div>
<SpFinder
ref="finder"
url="/wxexternalconfig/list"
no-selection
:setting="setting"
:hooks="{ beforeSearch: beforeSearch }"
border
/>
<SpFinder ref="finder" url="/wxexternalconfig/list" no-selection :setting="setting"
:hooks="{ beforeSearch: beforeSearch }" border />
<el-dialog
class="modal"
width="30%"
:title="modalTitle"
:visible="showModal"
@close="closeModal"
>
<el-form
ref="editForm"
label-suffix=":"
label-width="120px"
class="form"
:rules="rules"
:model="editInfo"
>
<el-dialog class="modal" width="30%" :title="modalTitle" :visible="showModal" @close="closeModal">
<el-form ref="editForm" label-suffix=":" label-width="120px" class="form" :rules="rules" :model="editInfo">
<el-form-item :label="$t('f06fa37c.d34f1f')" prop="app_name">
<el-input v-model="editInfo.app_name" />
</el-form-item>
@@ -52,15 +29,8 @@
<el-input v-model="editInfo.app_id" />
</el-form-item>
<el-form-item :label="$t('f06fa37c.3bdd08')">
<el-input
v-model="editInfo.app_desc"
type="textarea"
:placeholder="$t('f06fa37c.d51187')"
resize="none"
maxlength="30"
show-word-limit
:rows="3"
/>
<el-input v-model="editInfo.app_desc" type="textarea" :placeholder="$t('f06fa37c.d51187')" resize="none"
maxlength="30" show-word-limit :rows="3" />
</el-form-item>
</el-form>
<div class="btns">

View File

@@ -5,7 +5,13 @@
<template>
<SpPage>
<SpPlatformTip v-if="!VERSION_SHUYUN()" h5 app alipay :text-val="$t('20f6ad88.c5d4d8')" />
<SpPlatformTip
v-if="!VERSION_SHUYUN()"
h5
app
alipay
:text-val="$t('20f6ad88.c5d4d8')"
/>
<SpFormPlus
ref="form"
v-model="form"

View File

@@ -166,11 +166,7 @@ export default {
EMAIL_SENDER: this.strField(d, 'EMAIL_SENDER'),
EMAIL_USER: this.strField(d, 'EMAIL_USER'),
EMAIL_PASSWORD: this.strField(d, 'EMAIL_PASSWORD'),
EMAIL_ACTIVATION_H5_DOMAIN: this.strField(
d,
'EMAIL_ACTIVATION_H5_DOMAIN',
'EMAIL_H5_ACTIVATE_DOMAIN'
),
EMAIL_ACTIVATION_H5_DOMAIN: this.strField(d, 'EMAIL_ACTIVATION_H5_DOMAIN', 'EMAIL_H5_ACTIVATE_DOMAIN'),
EMAIL_ACTIVATION_PC_DOMAIN: this.strField(d, 'EMAIL_ACTIVATION_PC_DOMAIN')
}
},

View File

@@ -6,7 +6,13 @@
<template>
<SpPage>
<div v-loading="loading">
<SpPlatformTip v-if="!VERSION_SHUYUN()" h5 app alipay :text-val="$t('59579ae2.c5d4d8')" />
<SpPlatformTip
v-if="!VERSION_SHUYUN()"
h5
app
alipay
:text-val="$t('59579ae2.c5d4d8')"
/>
<SpFormPlus
ref="form"
v-model="form"