fix add fail

This commit is contained in:
Timi
2026-09-25 23:41:48 +08:00
parent a0beee43cb
commit e4fe775819
3 changed files with 40 additions and 30 deletions
+11 -1
View File
@@ -1,6 +1,7 @@
import { axios } from "timi-web-api"; import { axios } from "timi-web-api";
import type { Page, PageResult } from "timi-web-api"; import type { Page, PageResult } from "timi-web-api";
import type { Tag, TagApply, TagBizType } from "@/types/Tag"; import type { Tag, TagApply, TagBizType } from "@/types/Tag";
import { getCurrentStoreId } from "@/utils/store";
const BASE_URI = "/gao/tag"; const BASE_URI = "/gao/tag";
@@ -15,7 +16,16 @@ async function detail(id: string): Promise<Tag> {
} }
async function create(tag: Tag): Promise<Tag> { async function create(tag: Tag): Promise<Tag> {
return await axios.post(`${BASE_URI}/create`, tag); const ownerId = tag.ownerId || getCurrentStoreId();
if (!ownerId) {
throw new Error("无法确定标签所属门店");
}
return await axios.post(`${BASE_URI}/create`, {
...tag,
ownerType: tag.ownerType || "GAO_STORE",
ownerId
});
} }
async function update(tag: Tag): Promise<void> { async function update(tag: Tag): Promise<void> {
+27 -26
View File
@@ -9,11 +9,11 @@
@right-button-click="confirmSelection" @right-button-click="confirmSelection"
> >
<div class="tag-selector"> <div class="tag-selector">
<div class="search-row"> <div class="filters glass">
<t-input <t-input
class="input" class="input"
size="small" size="small"
v-model.trim="keyword" v-model="keyword"
borderless borderless
clearable clearable
placeholder="搜索标签" placeholder="搜索标签"
@@ -22,7 +22,7 @@
<t-input <t-input
class="input" class="input"
size="small" size="small"
v-model.trim="newTagName" v-model="newTagName"
borderless borderless
clearable clearable
placeholder="新增标签名称" placeholder="新增标签名称"
@@ -32,24 +32,27 @@
size="small" size="small"
:loading="isCreating" :loading="isCreating"
:disabled="isCreating" :disabled="isCreating"
content="新增"
@click="createTag" @click="createTag"
>新增</t-button> />
</template> </template>
</div> </div>
<div class="list"> <div class="list-wrap">
<t-tag <div class="list">
v-for="(item, index) in visibleTagList" <t-tag
:key="item.id" v-for="(item, index) in visibleTagList"
class="item" :key="item.id"
:theme="isSelected(item) ? 'primary' : 'default'" class="item"
size="large" :theme="isSelected(item) ? 'primary' : 'default'"
:variant="isSelected(item) ? 'dark' : 'light-outline'" size="large"
v-entrance-transition="index * 10" :variant="isSelected(item) ? 'dark' : 'light-outline'"
@click="toggleTag(item)" v-entrance-transition="index * 10"
> @click="toggleTag(item)"
<span v-text="getTagName(item)" /> >
</t-tag> <span v-text="getTagName(item)" />
<div v-if="!visibleTagList.length" class="center-tips" v-text="emptyText" /> </t-tag>
<div v-if="!visibleTagList.length" class="center-tips" v-text="emptyText" />
</div>
</div> </div>
</div> </div>
</bottom-popup> </bottom-popup>
@@ -202,15 +205,16 @@ watch(() => props.visible, async (value) => {
<style scoped lang="less"> <style scoped lang="less">
.tag-selector { .tag-selector {
display: flex;
height: 100%; height: 100%;
overflow: auto;
min-height: 0; min-height: 0;
flex-direction: column;
.search-row { .filters {
gap: .5rem; gap: .5rem;
top: 0;
display: flex; display: flex;
padding: 1rem; padding: .5rem 1rem;
position: sticky;
align-items: center; align-items: center;
.input { .input {
@@ -223,13 +227,10 @@ watch(() => props.visible, async (value) => {
.list { .list {
gap: .75rem; gap: .75rem;
flex: 1;
overflow: auto;
min-height: 0;
display: flex; display: flex;
padding: 0 1rem 1rem;
flex-wrap: wrap; flex-wrap: wrap;
align-content: flex-start; align-content: flex-start;
padding: 0 1rem 1rem;
.item { .item {
flex: 1 1 auto; flex: 1 1 auto;
+2 -3
View File
@@ -1,6 +1,6 @@
<template> <template>
<div v-can="corePermissionCodes.tag.read" class="tag-list"> <div v-can="corePermissionCodes.tag.read" class="tag-list">
<div class="header bg-white"> <div class="filters glass">
<t-input <t-input
v-model.trim="keyword" v-model.trim="keyword"
class="search" class="search"
@@ -274,12 +274,11 @@ onUnmounted(() => {
.tag-list { .tag-list {
padding: var(--app-nav-height) 0 2rem 0; padding: var(--app-nav-height) 0 2rem 0;
.header { .filters {
top: var(--app-nav-height); top: var(--app-nav-height);
z-index: 10; z-index: 10;
padding: .5rem; padding: .5rem;
position: sticky; position: sticky;
box-shadow: var(--td-shadow-1);
.search { .search {
border: 1px solid var(--td-component-border); border: 1px solid var(--td-component-border);