fix add fail
This commit is contained in:
+11
-1
@@ -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> {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user