¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="page-header"> |
| | | <view class="header-left"> |
| | | <up-icon |
| | | name="arrow-left" |
| | | size="20" |
| | | color="#333" |
| | | @click="handleBack" |
| | | ></up-icon> |
| | | </view> |
| | | <view class="header-center"> |
| | | <text class="page-title">{{ title }}</text> |
| | | </view> |
| | | <view class="header-right" v-if="$slots.right"> |
| | | <slot name="right"></slot> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { defineProps, defineEmits } from 'vue'; |
| | | |
| | | // å®ä¹ç»ä»¶å±æ§ |
| | | const props = defineProps({ |
| | | // 页颿 é¢ |
| | | title: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºè¿åæé® |
| | | showBack: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // èªå®ä¹è¿åäºä»¶ |
| | | customBack: { |
| | | type: Function, |
| | | default: null |
| | | } |
| | | }); |
| | | |
| | | // å®ä¹äºä»¶ |
| | | const emit = defineEmits(['back']); |
| | | |
| | | // å¤çè¿åäºä»¶ |
| | | const handleBack = () => { |
| | | if (props.customBack) { |
| | | props.customBack(); |
| | | } else { |
| | | emit('back'); |
| | | uni.navigateBack(); |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .page-header { |
| | | background: #ffffff; |
| | | padding: 16px 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1px solid #f0f0f0; |
| | | position: sticky; |
| | | /* å
¼å®¹ iOS åæµ·/çµå¨å²å®å
¨åº */ |
| | | padding-top: calc(env(safe-area-inset-top)); |
| | | top: 0; |
| | | z-index: 100; |
| | | position: relative; |
| | | } |
| | | |
| | | .header-left { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | min-width: 30px; /* ç¡®ä¿ç¹å»åºåè¶³å¤å¤§ */ |
| | | } |
| | | |
| | | .header-center { |
| | | flex: 1; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | pointer-events: none; |
| | | } |
| | | |
| | | .page-title { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: #333; |
| | | pointer-events: auto; |
| | | } |
| | | |
| | | .header-right { |
| | | display: flex; |
| | | align-items: center; |
| | | min-width: 44px; /* ç¡®ä¿å³ä¾§åºåæè¶³å¤ç©ºé´ */ |
| | | justify-content: flex-end; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // å
¨å±ç»ä»¶æ³¨å |
| | | import PageHeader from './PageHeader.vue' |
| | | |
| | | // ç»ä»¶å表 |
| | | const components = [ |
| | | { |
| | | name: 'PageHeader', |
| | | component: PageHeader |
| | | } |
| | | ] |
| | | |
| | | // å®è£
彿° |
| | | export function setupGlobalComponents(app) { |
| | | components.forEach(({ name, component }) => { |
| | | app.component(name, component) |
| | | }) |
| | | } |
| | | |
| | | // 导åºç»ä»¶ |
| | | export { |
| | | PageHeader |
| | | } |
| | |
| | | import uviewPlus from 'uview-plus' |
| | | import Vant from 'vant'; |
| | | import 'vant/lib/index.css'; |
| | | import { setupGlobalComponents } from './components' |
| | | |
| | | |
| | | import { createSSRApp } from 'vue' |
| | |
| | | app.use(uviewPlus) |
| | | app.use(plugins) |
| | | app.use(Vant) |
| | | |
| | | // 注åå
¨å±ç»ä»¶ |
| | | setupGlobalComponents(app) |
| | | |
| | | // #ifndef MP-WEIXIN |
| | | // 微信å°ç¨åºä¸ä¸æ¯æèªå®ä¹æä»¤ |
| | |
| | | { |
| | | "path": "pages/sales/invoiceLedger/index", |
| | | "style": { |
| | | "navigationBarTitleText": "å¼ç¥¨å°è´¦", |
| | | "navigationBarTitleText": "", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | |
| | | justify-content: space-between; |
| | | padding: 10px 20px; |
| | | background-color: #f5f5f5; |
| | | position: relative; |
| | | } |
| | | .header-left { |
| | | display: flex; |
| | |
| | | } |
| | | .header-center { |
| | | flex: 1; |
| | | text-align: center; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | pointer-events: none; |
| | | } |
| | | .page-title { |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | pointer-events: auto; |
| | | } |
| | | </style> |
| | | |
| | |
| | | // 审æ¹ç®¡çä¸»é¡µé¢ |
| | | <template> |
| | | <view class="sales-account"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <view class="page-header"> |
| | | <view class="header-left"> |
| | | <up-icon name="arrow-left" size="20" color="#333" @click="goBack"></up-icon> |
| | | </view> |
| | | <view class="header-center"> |
| | | <text class="page-title">审æ¹ç®¡ç</text> |
| | | </view> |
| | | </view> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="审æ¹ç®¡ç" @back="goBack" /> |
| | | |
| | | <!-- æç´¢åçéåºå --> |
| | | <view class="search-filter-section"> |
| | |
| | | import { |
| | | ledgerListPage |
| | | } from "@/api/cooperativeOffice/collaborativeApproval"; |
| | | import PageHeader from "@/components/PageHeader.vue"; |
| | | |
| | | // æç´¢å
³é®è¯ |
| | | const searchKeyword = ref(""); |
| | |
| | | position: relative; |
| | | } |
| | | |
| | | .page-header { |
| | | background: #ffffff; |
| | | padding: 16px 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1px solid #f0f0f0; |
| | | position: sticky; |
| | | /* å
¼å®¹ iOS åæµ·/çµå¨å²å®å
¨åº */ |
| | | padding-top: env(safe-area-inset-top); |
| | | top: 0; |
| | | z-index: 100; |
| | | } |
| | | |
| | | .header-left { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | } |
| | | |
| | | .nav-icon { |
| | | width: 24px; |
| | | height: 24px; |
| | | background: #2979ff; |
| | | border-radius: 4px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .nav-text { |
| | | font-size: 14px; |
| | | color: #2979ff; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .header-center { |
| | | flex: 1; |
| | | text-align: center; |
| | | } |
| | | |
| | | .page-title { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: #333; |
| | | } |
| | | |
| | | .header-right { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .status-bar { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 4px; |
| | | } |
| | | |
| | | .signal, |
| | | .wifi, |
| | | .battery { |
| | | width: 16px; |
| | | height: 8px; |
| | | background: #333; |
| | | border-radius: 2px; |
| | | } |
| | | |
| | | .search-filter-section { |
| | | padding: 10px 20px; |
| | |
| | | <up-text type="primary" :text="userStore.currentFactoryName" @click="show = true" size="18" |
| | | class="factoryName" suffixIcon="arrow-right" :iconStyle="iconStyle"></up-text> |
| | | </view> |
| | | <up-picker :show="show" :columns="factoryList" @confirm="changeFactory"></up-picker> |
| | | <up-picker :show="show" :columns="factoryList" @confirm="changeFactory" @cancel="show = false"></up-picker> |
| | | </view> |
| | | |
| | | <view class="hero-section"> |
| | |
| | | <template> |
| | | <view class="account-detail"> |
| | | <van-nav-bar |
| | | title="ç¼è¾å¼ç¥¨å°è´¦" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="ç¼è¾å¼ç¥¨å°è´¦" @back="goBack" /> |
| | | |
| | | <van-form @submit="submitForm" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center"> |
| | | <van-cell-group title="åºæ¬ä¿¡æ¯" inset> |
| | |
| | | <template> |
| | | <view class="sales-account"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="å¼ç¥¨å°è´¦" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="å¼ç¥¨å°è´¦" @back="goBack" /> |
| | | |
| | | <!-- æç´¢åçéåºåï¼ä¿æä¸éå®å°è´¦é£æ ¼ä¸è´ï¼ --> |
| | | <view class="search-filter-section"> |
| | |
| | | <van-button |
| | | type="danger" |
| | | size="small" |
| | | plain |
| | | class="action-btn" |
| | | :disabled="item.invoicePerson !== userStore.nickName" |
| | | @click="handleDelete(item)" |
| | |
| | | <van-button |
| | | type="default" |
| | | size="small" |
| | | plain |
| | | class="action-btn" |
| | | v-if="item.invoiceFileName" |
| | | @click="openFileActions(item.commonFiles || [])" |
| | |
| | | <van-button |
| | | type="primary" |
| | | size="small" |
| | | plain |
| | | class="action-btn" |
| | | v-else |
| | | :disabled="item.invoicePerson !== userStore.nickName" |
| | |
| | | <template> |
| | | <view class="account-detail"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="æ°å¢å¼ç¥¨ç»è®°" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="æ°å¢å¼ç¥¨ç»è®°" @back="goBack" /> |
| | | |
| | | <!-- 表åå
容 --> |
| | | <van-form @submit="submitForm" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center"> |
| | |
| | | <template> |
| | | <view class="sales-account"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="å¼ç¥¨ç»è®°" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="å¼ç¥¨ç»è®°" @back="goBack" /> |
| | | |
| | | <!-- æç´¢åçéåºå --> |
| | | <view class="search-filter-section"> |
| | |
| | | |
| | | .header-center { |
| | | flex: 1; |
| | | text-align: center; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | pointer-events: none; |
| | | } |
| | | |
| | | .page-title { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: #333; |
| | | pointer-events: auto; |
| | | } |
| | | |
| | | .header-right { |
| | |
| | | <template> |
| | | <view class="account-view"> |
| | | <!-- 顶鍿 颿 --> |
| | | <van-nav-bar |
| | | title="å¼ç¥¨ç»è®°è¯¦æ
" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="å¼ç¥¨ç»è®°è¯¦æ
" @back="goBack" /> |
| | | |
| | | <!-- åºæ¬ä¿¡æ¯å±ç¤º --> |
| | | <view class="info-section"> |
| | |
| | | <template> |
| | | <view class="account-detail"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="æ°å¢å款" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="onClickLeft" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="æ°å¢å款" @back="onClickLeft" /> |
| | | |
| | | <!-- 表åå
容 --> |
| | | <van-form @submit="onSubmit" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center"> |
| | |
| | | <template> |
| | | <view class="receipt-payment"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="忬¾ç»è®°" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="忬¾ç»è®°" @back="goBack" /> |
| | | |
| | | <!-- æç´¢åçéåºå --> |
| | | <view class="search-filter-section"> |
| | |
| | | <template> |
| | | <view class="receipt-payment-history"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="忬¾åå²" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="忬¾åå²" @back="goBack" /> |
| | | |
| | | <!-- æç´¢åºå --> |
| | | <view class="search-section"> |
| | |
| | | |
| | | .item-tag { |
| | | border-radius: 4px; |
| | | padding: 2px 8px; |
| | | padding: 2px 8px; |
| | | } |
| | | |
| | | .tag-electric { |
| | |
| | | } |
| | | |
| | | .tag-text { |
| | | font-size: 11px; |
| | | font-size: 14px; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | } |
| | |
| | | <template> |
| | | <view class="receipt-payment-detail"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="客æ·å¾æ¥è¯¦æ
" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="客æ·å¾æ¥è¯¦æ
" @back="goBack" /> |
| | | |
| | | <!-- ç»è®¡ä¿¡æ¯ --> |
| | | <view class="summary-info" v-if="tableData.length > 0"> |
| | |
| | | <template> |
| | | <view class="receipt-payment-ledger"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="客æ·å¾æ¥" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="客æ·å¾æ¥" @back="goBack" /> |
| | | |
| | | <!-- æç´¢åºå --> |
| | | <view class="search-section"> |
| | |
| | | <template> |
| | | <view class="account-detail"> |
| | | <!-- 顶鍿 颿 --> |
| | | <van-nav-bar |
| | | title="å°è´¦è¯¦æ
" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="å°è´¦è¯¦æ
" @back="goBack" /> |
| | | |
| | | <!-- 表ååºå --> |
| | | <van-form @submit="onSubmit" label-width="110px" input-align="right" style="margin-top: 10px" error-message-align="right" scroll-to-error scroll-to-error-position="center"> |
| | |
| | | font-weight: 600; |
| | | color: #333; |
| | | } |
| | | .add-btn { |
| | | border-radius: 0.25rem; |
| | | } |
| | | .product-card { |
| | | background: #FFFFFF; |
| | | box-shadow: 0 0 1.25rem 0 rgba(0,57,117,0.08); |
| | |
| | | } |
| | | .product-form { |
| | | margin-bottom: 1rem; |
| | | } |
| | | .del-btn { |
| | | border-radius: 0.25rem; |
| | | } |
| | | .footer-btns { |
| | | position: fixed; |
| | |
| | | <template> |
| | | <view class="sales-account"> |
| | | <!-- 页é¢å¤´é¨ --> |
| | | <van-nav-bar |
| | | title="éå®å°è´¦" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="éå®å°è´¦" @back="goBack" /> |
| | | |
| | | <!-- æç´¢åçéåºå --> |
| | | <view class="search-filter-section"> |
| | |
| | | import { onShow } from '@dcloudio/uni-app'; |
| | | import {ledgerListPage} from "@/api/salesManagement/salesLedger"; |
| | | import useUserStore from "@/store/modules/user"; |
| | | import PageHeader from "@/components/PageHeader.vue"; |
| | | const userStore = useUserStore() |
| | | |
| | | // æç´¢å
³é®è¯ |
| | |
| | | position: relative; |
| | | } |
| | | |
| | | .page-header { |
| | | background: #ffffff; |
| | | padding: 16px 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1px solid #f0f0f0; |
| | | position: sticky; |
| | | /* å
¼å®¹ iOS åæµ·/çµå¨å²å®å
¨åº */ |
| | | padding-top: env(safe-area-inset-top); |
| | | top: 0; |
| | | z-index: 100; |
| | | } |
| | | |
| | | .header-left { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | } |
| | | |
| | | .nav-icon { |
| | | width: 24px; |
| | | height: 24px; |
| | | background: #2979ff; |
| | | border-radius: 4px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .nav-text { |
| | | font-size: 14px; |
| | | color: #2979ff; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .header-center { |
| | | flex: 1; |
| | | text-align: center; |
| | | } |
| | | |
| | | .page-title { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: #333; |
| | | } |
| | | |
| | | .header-right { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .status-bar { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 4px; |
| | | } |
| | | |
| | | .signal, .wifi, .battery { |
| | | width: 16px; |
| | | height: 8px; |
| | | background: #333; |
| | | border-radius: 2px; |
| | | } |
| | | |
| | | .search-filter-section { |
| | | padding: 10px 20px; |
| | |
| | | |
| | | .fab-button { |
| | | position: fixed; |
| | | bottom: 30px; |
| | | bottom: calc(30px + env(safe-area-inset-bottom)); |
| | | right: 30px; |
| | | width: 56px; |
| | | height: 56px; |
| | |
| | | justify-content: center; |
| | | box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3); |
| | | z-index: 1000; |
| | | /* ç¡®ä¿æµ®å¨æé®ä¸è¢«åºé¨å®å
¨åºå鮿¡ */ |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <view class="account-view"> |
| | | <!-- 顶鍿 颿 --> |
| | | <van-nav-bar |
| | | title="å°è´¦è¯¦æ
" |
| | | left-text="è¿å" |
| | | left-arrow |
| | | @click-left="goBack" |
| | | fixed |
| | | placeholder |
| | | /> |
| | | <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> |
| | | <PageHeader title="å°è´¦è¯¦æ
" @back="goBack" /> |
| | | |
| | | <!-- åºæ¬ä¿¡æ¯å±ç¤º --> |
| | | <view class="info-section"> |
| | |
| | | text-align: center; |
| | | } |
| | | |
| | | /* ç§»å¨ç«¯å¯é çå±
䏿¹æ³ */ |
| | | .center-absolute { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | pointer-events: none; |
| | | } |
| | | |
| | | .center-absolute > * { |
| | | pointer-events: auto; |
| | | } |
| | | |
| | | .font-13 { |
| | | font-size: 13px; |
| | | } |