fix style
This commit is contained in:
@@ -37,6 +37,7 @@
|
|||||||
v-model:visible="photoViewerVisible"
|
v-model:visible="photoViewerVisible"
|
||||||
:images="photoViewerImages"
|
:images="photoViewerImages"
|
||||||
:items="photoViewerItems"
|
:items="photoViewerItems"
|
||||||
|
:viewer-z-index="props.viewerZIndex"
|
||||||
:show-actions="showViewerActions === true"
|
:show-actions="showViewerActions === true"
|
||||||
:submitting="isSubmitting"
|
:submitting="isSubmitting"
|
||||||
@change-type="changePhotoType"
|
@change-type="changePhotoType"
|
||||||
@@ -75,6 +76,7 @@ interface Props {
|
|||||||
showTypeLabel?: boolean;
|
showTypeLabel?: boolean;
|
||||||
submit?: (photoItems: PhotoItem[]) => Promise<void>;
|
submit?: (photoItems: PhotoItem[]) => Promise<void>;
|
||||||
title?: string;
|
title?: string;
|
||||||
|
viewerZIndex?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = withDefaults(defineProps<Props>(), {
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<t-image-viewer
|
<t-image-viewer
|
||||||
v-model:visible="viewerVisible"
|
v-model:visible="viewerVisible"
|
||||||
:images="images"
|
:images="images"
|
||||||
|
:style="{ zIndex: props.viewerZIndex }"
|
||||||
show-index
|
show-index
|
||||||
@close="handleClose"
|
@close="handleClose"
|
||||||
@index-change="handleIndexChange"
|
@index-change="handleIndexChange"
|
||||||
@@ -103,6 +104,7 @@ interface Props {
|
|||||||
showActions: boolean;
|
showActions: boolean;
|
||||||
submitting: boolean;
|
submitting: boolean;
|
||||||
visible: boolean;
|
visible: boolean;
|
||||||
|
viewerZIndex?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = defineProps<Props>();
|
const props = defineProps<Props>();
|
||||||
|
|||||||
@@ -87,7 +87,7 @@
|
|||||||
variant="outline"
|
variant="outline"
|
||||||
size="extra-small"
|
size="extra-small"
|
||||||
:content="deliveredAtText || '此刻'"
|
:content="deliveredAtText || '此刻'"
|
||||||
@click="pickerVisible = true"
|
@click="openDeliveredAtPicker"
|
||||||
/>
|
/>
|
||||||
<t-button
|
<t-button
|
||||||
v-if="deliveredAtText"
|
v-if="deliveredAtText"
|
||||||
@@ -136,6 +136,7 @@
|
|||||||
import SalesOrderAPI from "@/api/SalesOrderAPI";
|
import SalesOrderAPI from "@/api/SalesOrderAPI";
|
||||||
import FulfillmentAPI from "@/api/FulfillmentAPI";
|
import FulfillmentAPI from "@/api/FulfillmentAPI";
|
||||||
import ProductAPI from "@/api/ProductAPI";
|
import ProductAPI from "@/api/ProductAPI";
|
||||||
|
import { Time } from "timi-web";
|
||||||
import MediaSelector from "@/components/mediaSelector/MediaSelector.vue";
|
import MediaSelector from "@/components/mediaSelector/MediaSelector.vue";
|
||||||
import ProductSkuTags from "@/components/ProductSkuTags.vue";
|
import ProductSkuTags from "@/components/ProductSkuTags.vue";
|
||||||
import ProductStockPreview from "@/components/ProductStockPreview.vue";
|
import ProductStockPreview from "@/components/ProductStockPreview.vue";
|
||||||
@@ -383,6 +384,11 @@ function confirmTime(value: string | number): void {
|
|||||||
pickerVisible.value = false;
|
pickerVisible.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function openDeliveredAtPicker(): void {
|
||||||
|
draftTime.value = deliveredAtText.value || Time.formatDateTime(new Date());
|
||||||
|
pickerVisible.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
function resetDeliveredAt(): void {
|
function resetDeliveredAt(): void {
|
||||||
deliveredAtText.value = "";
|
deliveredAtText.value = "";
|
||||||
draftTime.value = "";
|
draftTime.value = "";
|
||||||
|
|||||||
@@ -458,7 +458,6 @@ onUnmounted(() => {
|
|||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
min-height: 70vh;
|
min-height: 70vh;
|
||||||
padding-top: 1rem;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.items {
|
.items {
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
<span v-text="getProductQuantityText(record.onHandBefore)" />
|
<span v-text="getProductQuantityText(record.onHandBefore)" />
|
||||||
<t-icon name="arrow-right" />
|
<t-icon name="arrow-right" />
|
||||||
<span :class="getDeltaClass(record.onHandDelta)" v-text="getProductQuantityText(record.onHandAfter)" />
|
<span :class="getDeltaClass(record.onHandDelta)" v-text="getProductQuantityText(record.onHandAfter)" />
|
||||||
<span class="unit">基础单位</span>
|
<span class="unit" v-text="baseUnitName || '基础单位'" />
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</t-cell>
|
</t-cell>
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
<span v-text="getProductQuantityText(record.reservedBefore)" />
|
<span v-text="getProductQuantityText(record.reservedBefore)" />
|
||||||
<t-icon name="arrow-right" />
|
<t-icon name="arrow-right" />
|
||||||
<span :class="getDeltaClass(record.reservedDelta)" v-text="getProductQuantityText(record.reservedAfter)" />
|
<span :class="getDeltaClass(record.reservedDelta)" v-text="getProductQuantityText(record.reservedAfter)" />
|
||||||
<span class="unit">基础单位</span>
|
<span class="unit" v-text="baseUnitName || '基础单位'" />
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</t-cell>
|
</t-cell>
|
||||||
@@ -157,6 +157,7 @@ const navBarStore = useNavBarStore();
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const record = ref<StockRecord>();
|
const record = ref<StockRecord>();
|
||||||
|
const baseUnitName = ref("");
|
||||||
const isLoading = ref(false);
|
const isLoading = ref(false);
|
||||||
const isOperating = ref(false);
|
const isOperating = ref(false);
|
||||||
const revokeVisible = ref(false);
|
const revokeVisible = ref(false);
|
||||||
@@ -299,6 +300,15 @@ async function loadData(): Promise<void> {
|
|||||||
try {
|
try {
|
||||||
const result = await ProductAPI.recordDetail(id);
|
const result = await ProductAPI.recordDetail(id);
|
||||||
record.value = result;
|
record.value = result;
|
||||||
|
baseUnitName.value = "";
|
||||||
|
if (result.skuId) {
|
||||||
|
try {
|
||||||
|
const sku = await ProductAPI.skuDetail(result.skuId);
|
||||||
|
baseUnitName.value = sku.unitList?.find(unit => unit.isBase)?.name || sku.unitList?.[0]?.name || "";
|
||||||
|
} catch {
|
||||||
|
baseUnitName.value = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
Message.error(getErrorMessage(error, "库存流水加载失败"));
|
Message.error(getErrorMessage(error, "库存流水加载失败"));
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -82,6 +82,7 @@
|
|||||||
v-model:photo-items="sku.photoItemList"
|
v-model:photo-items="sku.photoItemList"
|
||||||
title="SKU 图片(选填)"
|
title="SKU 图片(选填)"
|
||||||
:edit-mode="true"
|
:edit-mode="true"
|
||||||
|
:viewer-z-index="skuEditorZIndex + 1"
|
||||||
:upload="uploadPhotoList"
|
:upload="uploadPhotoList"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -577,7 +577,21 @@ async function handleCustomerChange(): Promise<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function toDetail(item: SalesOrder): Promise<void> {
|
async function toDetail(item: SalesOrder): Promise<void> {
|
||||||
if (item.id) await router.push(`/management/sales-orders/${item.id}`);
|
if (item.id) await router.push({
|
||||||
|
path: `/management/sales-orders/${item.id}`,
|
||||||
|
query: { transitionDepth: String(getCurrentRouteDepth() + 1) }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCurrentRouteDepth(): number {
|
||||||
|
const transitionDepth = Array.isArray(route.query.transitionDepth)
|
||||||
|
? route.query.transitionDepth[0]
|
||||||
|
: route.query.transitionDepth;
|
||||||
|
const depth = Number(transitionDepth);
|
||||||
|
if (transitionDepth && Number.isInteger(depth) && 0 <= depth && depth <= 20) {
|
||||||
|
return depth;
|
||||||
|
}
|
||||||
|
return Number(route.meta.depth ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function toPayment(item: SalesOrder): Promise<void> {
|
async function toPayment(item: SalesOrder): Promise<void> {
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ onUnmounted(() => {
|
|||||||
.filters {
|
.filters {
|
||||||
top: var(--app-nav-height);
|
top: var(--app-nav-height);
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
padding: .5rem;
|
padding: .5rem 1rem;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
|
|||||||
Reference in New Issue
Block a user