| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087 |
- <template>
- <view>
- <block v-if="loginStyle == 0">
- <view style="width:100vw;text-align: center;">
- <!-- #ifdef MP-WEIXIN -->
- <view style="margin-top:50upx;font-size:34upx;margin-bottom:30upx;">个人买花</view>
- <view><button class="admin-button-com big blue" style="width:240upx;" @click="buyItem">去买花</button></view>
- <!-- #endif -->
- <view style="margin-top:100upx;font-size:34upx;margin-bottom:30upx;">花店登录</view>
- <view><button class="admin-button-com big blue" style="width:240upx;" @click="pageTo({url:'/admin/home/login'})">去登录</button></view>
- <view style="font-size:40upx;color:green;text-decoration: underline;margin-top:60upx;" @click="pageTo({url:'/pagesClient/official/apply'})">花店注册</view>
- </view>
- </block>
- <block v-else>
- <view class="app-main app-content" v-if="loginStyle == 2">
- <template v-if="lookMoney == 1">
- <view class="today-overview-card">
- <view class="bubble-header">
- <view class="bubble-title">📊 数据看板</view>
- <view class="message-btn" @click="pageTo({url:'/admin/chat/list'})">
- <view class="msg-icon">💬</view>
- <view class="red-mind" v-if="unReadMsgNum>0">{{ unReadMsgNum>9?'9+':unReadMsgNum }}</view>
- </view>
- </view>
- <view class="bubble-grid">
- <!-- 今日收入 - 主气泡 -->
- <view class="bubble bubble-primary" @click.stop="pageTo({url:'/admin/stat/kdIncome'})">
- <view class="bubble-inner">
- <view class="bubble-label">今日收入</view>
- <view class="bubble-value">{{ $util.numberFormat(data.todayData.income) }}</view>
- </view>
- </view>
- <!-- 访客 -->
- <view class="bubble bubble-secondary" @click.stop="pageTo({url:'/admin/custom/visit'})">
- <view class="bubble-inner">
- <view class="bubble-label">访客</view>
- <view class="bubble-value">{{ $util.numberFormat(data.todayData.visit) || 0 }}</view>
- </view>
- </view>
- <!-- 订单 -->
- <navigator
- url="/admin/home/order"
- open-type="switchTab"
- class="bubble bubble-secondary"
- @click.stop="pageTo({url:'/admin/home/order'})"
- >
- <view class="bubble-inner">
- <view class="bubble-label">订单</view>
- <view class="bubble-value">{{ $util.numberFormat(data.todayData.order) || 0 }}</view>
- </view>
- </navigator>
- <!-- 昨日收入 -->
- <view class="bubble bubble-secondary" @click.stop="">
- <view class="bubble-inner">
- <view class="bubble-label">昨日收入</view>
- <view class="bubble-value">{{ $util.numberFormat(data.yesterdayIncome) || 0 }}</view>
- </view>
- </view>
- </view>
- </view>
- </template>
- <template v-else>
- <view class="today-overview-card">
- <view class="today-header">
- <view class="today-title">今日概况</view>
- <zui-svg-icon icon="home-message" color="#FFFFFF" :width="32" :height="29" @click.native="pageTo({url:'/admin/chat/list'})" />
- <view class="red-mind" v-if="unReadMsgNum>0">{{ unReadMsgNum>9?'9+':unReadMsgNum }}</view>
- </view>
- <view class="today-stats" @click="pageTo({url:'/admin/custom/visit'})">
- <view class="stat-item">
- <view class="stat-content">
- <view class="stat-label">访客</view>
- <view class="stat-value">{{ $util.numberFormat(data.todayData.visit) || 0 }}</view>
- </view>
- </view>
- </view>
- </view>
- </template>
- <view class="module-com news-wrap">
- <view class="news-list" v-for="(item, index) in data.notice" :key="index" @click="noticeFn(item)" >
- <view class="news-left">
- <i class="iconfont iconxiaoxi2 ling"></i>
- <span>{{ item.title }}</span>
- </view>
- <view class="news-right">
- <span>{{ item.action }}</span>
- <i class="iconfont iconxiangyou"></i>
- </view>
- </view>
- </view>
- <view v-if="!$util.isEmpty(data.warning)" class="alert-card alert-card-error">
- <view class="alert-content">
- <view class="alert-text">{{ data.warning }}</view>
- </view>
- </view>
- <view class="module-com flower-module">
- <!-- 花束 -->
- <view class="flower-section">
- <view class="section-header">
- <view class="header-title">🌹 绿植花束</view>
- </view>
- <view class="icon-grid">
- <view class="icon-item" @click="goPage({url: '/admin/cg/mall'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">🏪</view>
- </view>
- <view class="icon-text">商城</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/work/list'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">✅</view>
- </view>
- <view class="icon-text">任务</view>
- </view>
- <view class="icon-item" @click="goHsKd">
- <view class="icon-wrapper">
- <view class="icon-emoji">📝</view>
- </view>
- <view class="icon-text">开单</view>
- </view>
- <view class="icon-item" @click="goHsKjKd">
- <view class="icon-wrapper">
- <view class="icon-emoji">⚡</view>
- </view>
- <view class="icon-text">快捷开单</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/goods/category'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">📂</view>
- </view>
- <view class="icon-text">分类</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/goods/categorySort'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">↕️</view>
- </view>
- <view class="icon-text">排序</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/goods/list'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">🌸</view>
- </view>
- <view class="icon-text">绿植花束</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/goods/add'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">➕</view>
- </view>
- <view class="icon-text">新增</view>
- </view>
- </view>
- </view>
- <!-- 花材 -->
- <view class="flower-section">
- <view class="section-header">
- <view class="header-title">🌿 花材</view>
- </view>
- <view class="icon-grid">
- <view class="icon-item" @click="goPage({url: '/admin/cg/item'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">🏪</view>
- </view>
- <view class="icon-text">商城</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/item/list2'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">🌿</view>
- </view>
- <view class="icon-text">花材</view>
- </view>
- <view class="icon-item" @click="goItemKd()">
- <view class="icon-wrapper">
- <view class="icon-emoji">📝</view>
- </view>
- <view class="icon-text">开单</view>
- </view>
- <view class="icon-item" @click="goItemKjKd()">
- <view class="icon-wrapper">
- <view class="icon-emoji">⚡</view>
- </view>
- <view class="icon-text">快捷开单</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/part/list'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">✂️</view>
- </view>
- <view class="icon-text">拆散</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/changePrice/list2'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">💰</view>
- </view>
- <view class="icon-text">改价</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/pagesPurchase/shopping'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">📊</view>
- </view>
- <view class="icon-text">买花记录</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/pagesPurchase/order'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">🛍️</view>
- </view>
- <view class="icon-text">买花</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/breakage/list'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">🗑️</view>
- </view>
- <view class="icon-text">报损</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/itemClass/list'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">📂</view>
- </view>
- <view class="icon-text">分类</view>
- </view>
- </view>
- </view>
- <!-- 更多 -->
- <view class="flower-section">
- <view class="section-header">
- <view class="header-title">⚙️ 更多功能</view>
- </view>
- <view class="icon-grid">
- <view class="icon-item" @click="goPage({url: '/admin/order/expend'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">💰</view>
- </view>
- <view class="icon-text">支出</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/staff/list'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">👥</view>
- </view>
- <view class="icon-text">员工</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/stat/profit'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">📈</view>
- </view>
- <view class="icon-text">利润表</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/picText/picTextList'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">🖼️</view>
- </view>
- <view class="icon-text">图文</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/order/scanPay'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">📱</view>
- </view>
- <view class="icon-text">收款码流水</view>
- </view>
- <view class="icon-item" @click="goPage({url: '/admin/cg/code'})">
- <view class="icon-wrapper">
- <view class="icon-emoji">💳</view>
- </view>
- <view class="icon-text">收款码</view>
- </view>
- </view>
- </view>
- </view>
- <template v-if="lookMoney == 1">
- <view class="module-com overview-module">
- <view class="overview-header">
- <view class="overview-title">📊 数据总览</view>
- </view>
- <view class="overview-grid">
- <view class="overview-item" v-for="(item, index) in overview" :key="index" @click="pageTo(item)">
- <view class="item-value">{{ $util.numberFormat(item.value) }}</view>
- <view class="item-label">{{ item.name }}</view>
- </view>
- </view>
- </view>
- </template>
- </view>
- <!-- ========== 简化功能界面 ========== -->
- <view class="order-page" v-else>
- <view class="ghs_list_page flex-col">
- <view class="profile-section">
- <view class="profile-header">
- <view class="avatar-container">
- <button
- class="avatar-button"
- open-type="chooseAvatar"
- @chooseavatar="onChooseAvatar"
- >
- <image
- class="avatar"
- :src="shopAvatar()"
- mode="aspectFill"
- />
- </button>
- </view>
- <view class="user-info">
- <text class="username">{{ (shopInfo && shopInfo.shopName == '首店') ? (shopInfo.merchantName || '') : (((shopInfo && shopInfo.merchantName) ? shopInfo.merchantName : '') + (shopInfo && shopInfo.shopName ? (' ' + shopInfo.shopName) : '')) }}</text>
- <text class="user-id">ID {{ shopInfo && shopInfo.id ? shopInfo.id : '' }}</text>
- </view>
- <view class="more-icon">
- <zui-svg-icon icon="home-more" :width="26" color="#FFFFFF" />
- </view>
- </view>
- <view class="function-grid function-grid--overlay" style="padding: 25upx 0upx 30upx 0upx; display: flex; justify-content: space-around; gap: 12upx;">
- <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/shop/myShop'})">
- <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
- 🏪
- </view>
- <text class="function-text function-text--overlay" style="font-size: 22upx;">店铺管理</text>
- </view>
- <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/staff/list'})">
- <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
- 👥
- </view>
- <text class="function-text function-text--overlay" style="font-size: 22upx;">我的员工</text>
- </view>
- <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/shop/add?id='+loginInfo.shopId})">
- <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
- 📍
- </view>
- <text class="function-text function-text--overlay" style="font-size: 22upx;">我的地址</text>
- </view>
- <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/stat/cgItem'})">
- <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
- 📊
- </view>
- <text class="function-text function-text--overlay" style="font-size: 22upx;">采购统计</text>
- </view>
- <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="goMore()">
- <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
- ⋯
- </view>
- <text class="function-text function-text--overlay" style="font-size: 22upx;">更多</text>
- </view>
- </view>
- </view>
- <view style="text-align:center;font-size:28upx;color:#666;padding:16upx 30upx;margin:0 20upx;background:white;border-radius:30upx;">
- <view style="display:inline-flex;align-items:center;background:#fff;padding:10upx 25upx;border-radius:20upx;box-shadow:0 2upx 8upx rgba(0,0,0,0.05);">
- <text style="color:#333;font-weight:500;font-size:28upx;">{{ loginInfo.admin && loginInfo.admin.name ? loginInfo.admin.name : '' }}</text>
- <text style="margin:0 15upx;color:#eee;">|</text>
- <text style="color:#666;font-size:28upx;">{{ loginInfo.admin && loginInfo.admin.mobile ? loginInfo.admin.mobile : '' }}</text>
- </view>
- </view>
- <view v-if="!$util.isEmpty(data.warning)" class="warning-banner">{{ data.warning }}</view>
- <template v-if="!$util.isEmpty(ad)">
- <block v-for="(adInfo, adIndex) in ad" :key="adIndex">
- <view style="text-align:center;" @click.stop="pageTo({url:adInfo.url})">
- <image :src="adInfo.banner" mode="widthFix" style="width:97%;margin:0 auto;"></image>
- </view>
- </block>
- </template>
- <template v-if="!$util.isEmpty(supplierList)">
- <view class="ghs_list_area flex-col justify-end">
- <view class="ghs_box flex-col justify-end" v-for="(ghsInfo, index) in supplierList" :key="index">
- <view class="image-text_7 flex-row justify-between">
- <view class="section_1 flex-col">
- <image class="logo" :src="ghsInfo.smallAvatar" @click="enterShop(ghsInfo)" />
- </view>
- <view class="text-group_7 flex-col justify-between" @click="enterShop(ghsInfo)">
- <text class="text_8">{{ghsInfo.name}}</text>
- <text class="text_9">
- <block v-if="ghsInfo.cutStyle && ghsInfo.cutStyle == 1">
- <block v-if="ghsInfo.meetNum == 1 || ghsInfo.meetAmount == 1">
- <block v-if="ghsInfo.meetNum && ghsInfo.meetNum>0 && ghsInfo.cutAmount>0">
- <text style="color:red;font-weight:bold;">
- 全场{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
- </text>
- </block>
- <block v-else>
- <text v-if="ghsInfo.meetAmount && ghsInfo.meetAmount>0 && ghsInfo.cutAmount>0" style="color:red;font-weight:bold;">
- 全场{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
- </text>
- </block>
- </block>
- <block v-else>
- <block v-if="ghsInfo.meetNum && ghsInfo.meetNum>0 && ghsInfo.cutAmount>0">
- <text style="color:red;font-weight:bold;">
- 满{{ghsInfo.meetNum?ghsInfo.meetNum:0}}扎{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
- </text>
- </block>
- <block v-else>
- <text v-if="ghsInfo.meetAmount && ghsInfo.meetAmount>0 && ghsInfo.cutAmount>0" style="color:red;font-weight:bold;">
- 满{{ghsInfo.meetAmount?ghsInfo.meetAmount:0}}元{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
- </text>
- </block>
- </block>
- </block>
- <block v-else>
- <block v-if="ghsInfo.meetNum && ghsInfo.meetNum>0 && ghsInfo.cutAmount>0">
- <text style="color:red;font-weight:bold;">
- 满{{ghsInfo.meetNum?ghsInfo.meetNum:0}}扎优惠{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount):0}}元
- </text>
- </block>
- <block v-else>
- <text v-if="ghsInfo.meetAmount && ghsInfo.meetAmount>0 && ghsInfo.cutAmount>0" style="color:red;font-weight:bold;">
- 满{{ghsInfo.meetAmount?ghsInfo.meetAmount:0}}元优惠{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount):0}}元
- </text>
- </block>
- </block>
- </text>
- </view>
- </view>
- <view class="box_4 flex-col"></view>
- <view class="box_9">
- <view class="tag_2" @click="pageTo({ url: '/admin/ghs/debtChange?ghsId='+ghsInfo.id})"> <text>欠款变动记录</text> </view>
- <view class="tag_2" @click="pageTo({ url: '/admin/clear/list?ghsId='+ghsInfo.id})"> <text>结账记录</text> </view>
- <view class="tag_2" @click="pageTo({url:'/pagesPurchase/shopping?ghsId='+ghsInfo.id+'&ghsName='+ghsInfo.name})"> <text>买花记录</text> </view>
- <view class="tag_2" @click.stop="callUp(ghsInfo)" style="color:green;font-weight:bold;"> <text>联系我们</text> </view>
- </view>
- <view class="box_6 flex-row" @click="settleAccounts(ghsInfo)" v-if="Number(ghsInfo.debtAmount)>0">
- <view class="show_clear_area flex-row justify-between">
- <text class="waite_clear_order">
- 待结订单 {{ghsInfo.debtNum}}笔 合计¥{{ghsInfo.debtAmount?parseFloat(ghsInfo.debtAmount):0}}
- <text style="margin-left:30upx;" v-if="ghsInfo.remainDebtAmount>0">选订单结 》</text>
- </text>
- </view>
- </view>
- <block v-if="Number(ghsInfo.balance)>0">
- <view class="box_6 flex-row" v-if="ghsInfo.remainDebtAmount>0" @click.stop="recharge(ghsInfo)">
- <view class="show_clear_area flex-row justify-between">
- <text class="waite_clear_order" style="color:#3385ff;">
- <text v-if="Number(ghsInfo.balance)>0">减去余额¥{{ ghsInfo.balance ? parseFloat(ghsInfo.balance) : 0 }}</text>
- <text v-if="ghsInfo.remainDebtAmount>0" style="margin-left:15upx;">实欠¥{{ ghsInfo.remainDebtAmount }}</text>
- <text style="margin-left:30upx;">按金额结 》</text>
- </text>
- </view>
- </view>
- <view class="box_6 flex-row" v-if="ghsInfo.remainDebtAmount<0" @click.stop="recharge(ghsInfo)">
- <view class="show_clear_area flex-row justify-between">
- <text class="waite_clear_order" style="color:#3385ff;">
- <text>账户余额¥{{ Math.abs(ghsInfo.remainDebtAmount) }}</text>
- <text style="margin-left:30upx;">已结清</text>
- </text>
- </view>
- </view>
- </block>
- <block v-if="ghsInfo.live == 1">
- <view class="button_7 flex-col" @click.stop="goKmCg(ghsInfo)" v-if="ghsInfo.openKmCg && ghsInfo.openKmCg == 1"><text class="text_13">昆明直采</text></view>
- <view class="button_4 flex-col" v-if="ghsInfo.isOpen == 1" @click="enterShop(ghsInfo)"><text class="text_13">买花</text></view>
- <view class="button_5 flex-col" v-else @click="enterShop(ghsInfo)"><text class="text_13">买花</text></view>
- </block>
- <block v-else>
- <view class="button_6 flex-col" @click="fillCg(ghsInfo)"><text class="text_13">买花</text></view>
- </block>
- <text style="position:absolute;left:677upx;top:17upx;color:#CCCCCC;" @click.stop="getMore(ghsInfo)">更多</text>
- </view>
- </view>
- </template>
- <block v-else>
- <view style="margin:60upx auto 40upx auto;font-weight:bold;font-size:36upx;text-align: center;">暂无供货商</view>
- </block>
- <view style="text-align:center;margin-top:50upx;margin-bottom:182upx;color:#827171;font-size:30upx;">
- <text style="margin-right:20upx;" @click="toPhone()">厦门中花汇技术支持</text>
- <text style="margin-right:20upx;">|</text>
- <text @click="toPhone()">联系软件公司</text>
- </view>
- </view>
- </view>
- </block>
- <uni-popup ref="toShowMore" background-color="#fff" type="center" :animation="true" class="class-popup-style">
- <view style="display:flex;width:100vw;padding:20upx 20upx 40upx 20upx;height:auto;justify-content: space-between;align-items:center;flex-wrap:wrap;max-height:100vh;overflow:auto;">
- <view style="width:100vw;margin-top:8upx;"><button @click="rechargeChange()">充值记录</button></view>
- <view style="width:100vw;margin-top:8upx;"><button @click="balanceChange()">余额变动</button></view>
- <view style="width:100vw;margin-top:8upx;"><button @click="bpSj()">删除</button></view>
- <view style="width:100vw;margin-top:30upx;"><button @click="closeToShow()">取消</button></view>
- </view>
- </uni-popup>
- <!-- 多供货商提示弹框 -->
- <uni-popup ref="supplierNoticePopup" background-color="#fff" type="center" :animation="true" class="supplier-notice-popup">
- <view class="supplier-notice-container">
- <!-- 头部 -->
- <view class="supplier-notice-header">
- <text class="supplier-notice-title">您已有多个供货商</text>
- </view>
-
- <!-- 中间供货商列表 -->
- <view class="supplier-notice-content">
- <view class="supplier-list">
- <view class="supplier-item" v-for="(supplier, index) in displaySupplierList" :key="index">
- <view class="supplier-icon">🏪</view>
- <text class="supplier-name">{{ supplier.name }}</text>
- </view>
- </view>
- </view>
-
- <!-- 底部提示 -->
- <view class="supplier-notice-footer">
- <text class="supplier-notice-tip">买花时注意区分,避免下错</text>
- <view class="supplier-notice-buttons">
- <button class="admin-button-com default" @click="remindLater">下次提醒</button>
- <button class="admin-button-com blue" @click="closeSupplierNotice">知道了</button>
- </view>
- </view>
- </view>
- </uni-popup>
-
- <!-- 商城选项弹框 -->
- <uni-popup ref="mallOptionsPopup" type="center" mask-background-color="rgba(0,0,0,0.4)">
- <view class="mall-options-container">
- <view class="mall-options-buttons">
- <view class="mall-option-btn" @click="copyMallLink">
- <view class="option-icon">📋</view>
- <text class="option-text">复制链接</text>
- </view>
- <view class="mall-option-btn" @click="openMallDirect">
- <view class="option-icon">🚀</view>
- <text class="option-text">直接打开</text>
- </view>
- </view>
- </view>
- </uni-popup>
- </view>
- </template>
- <script>
- import { mapGetters } from "vuex";
- import { getWeixinId } from "@/api/invite";
- import { getShortUrl } from "@/api/main";
- import { getStat } from '@/api/console' //getStrokeCount 已弃用
- import { consoleIndex } from "@/api/workbench";
- import autoUpdateMixins from "@/mixins/autoUpdate";
- import { ghsList } from "@/api/purchase";
- import { changeDelStatus,hasMoreGhs } from "@/api/ghs";
- import {currentShop, uploadShopAvatar} from "@/api/shop";
- import { clearLogin,hasNotice } from "@/api/admin";
- import { unReadMsgCount } from "@/api/chat";
- import { APIHOST,CURRENT_ENV } from "@/config";
- export default {
- name: "workbench",
- mixins: [autoUpdateMixins],
- data () {
- return {
- overview:[],
- ad:[],
- showAd:1,
- constant: this.$constant,
- getappIdList: {},
- data: {
- admin: {},
- asset: {},
- notice: {},
- todayData: { income:0.00, order:0, custom:0, expend:0.00, visit:0 },
- isMini:0
- },
- yesterdayIncome: 0,
- supplierList: [],
- //登录状态 0未登录 1登录仅用到了采购 2登录用到完整功能
- loginStyle :0,
- backAction:'',
- lookMoney:1,
- currentGhs:{},
- displaySupplierList: [],// 用于显示在弹框中的供货商列表
- shopInfo:[],
- urlNo:1,
- shortUrlList:[],
- unReadMsgNum:0, //未读消息数
- currentDate: '', // 当前日期信息 如:12月26号 周五
- };
- },
- computed: {
- ...mapGetters({ loginInfo: "getLoginInfo",dictInfo:"getDictionariesInfo",myShopInfo:"getMyShopInfo" })
- },
- watch: {
- //只需要采购花材的花店不显示底部菜单
- loginInfo(newVal) {
- if(!this.$util.isEmpty(newVal.admin) && newVal.admin.currentShopId > 0){
- if(!this.$util.isEmpty(newVal.onlyCg)){
- this.handleLoginStyle(newVal.onlyCg)
- }
- }
- }
- },
- onPullDownRefresh () {
- this.init();
- uni.stopPullDownRefresh();
- },
- onLoad(){
- getWeixinId().then(res => {
- this.getappIdList = res.data
- })
- this.updateCurrentDate()
- },
- onShow () {
- this.unReadMsgNum = 0; // 重置未读消息数
-
- this.init();
- // if(this.backAction == 'login'){
- // this.init()
- // }
- // if(this.backAction == 'cacelMask'){
- // this.init()
- // this.backAction = ''
- // }
- // 判断是否登录
- if(!this.$util.isEmpty(this.loginInfo.admin) && this.loginInfo.admin.currentShopId > 0){
- if(!this.$util.isEmpty(this.loginInfo.onlyCg)){
- this.handleLoginStyle(this.loginInfo.onlyCg)
- }
- // this.getUnReadMsgCount()
- this.showShopName()
- }
- },
- onShareAppMessage(res) {
- return {
- title: "花掌柜,花店管家婆",
- desc: "",
- imageUrl: "",
- path: "admin/home/workbench",
- }
- },
- methods: {
- onChooseAvatar(e){
- if(this.loginInfo && this.loginInfo.staff && this.loginInfo.staff.founder != 2){
- this.$msg('门店LOGO请老板修改')
- return
- }
- if(e && e.detail && e.detail.avatarUrl){
- let avatarUrl = e.detail.avatarUrl
- this.updateShopAvatar(avatarUrl)
- }else{
- this.$msg('获取头像失败')
- }
- },
- updateShopAvatar(avatarUrl){
- let token = uni.getStorageSync('token') || ''
- let url = APIHOST + '/upload/save-file'
- uni.uploadFile({
- url: url,
- filePath: avatarUrl,
- name: 'file',
- header: { token: token },
- formData: {},
- success: (res) => {
- try{
- const ret = JSON.parse(res.data)
- if(ret.code == 1){
- this.shopInfo.avatar = ret.data.shortUrl
- this.$msg('头像已更新')
- uni.setStorageSync('shopAvatar', this.shopInfo.avatar)
- //请后端,上传新的头像地址,同步更新xhGhsCustom里面的头像地址
- uploadShopAvatar({ id: this.shopInfo.id, avatar: ret.data.shortUrl }).then(res => {
- if(res.code == 1){
- // this.$msg('头像上传成功')
- }else{
- // this.$msg(res.msg || '上传失败')
- console.log(res.msg || '上传失败')
- }
- })
- }else{
- this.$msg(ret.msg || '上传失败')
- }
- }catch(err){
- this.$msg('服务异常')
- }
- },
- fail: () => {
- this.$msg('上传失败')
- }
- })
- },
- shopAvatar(){
- const avatar = (this.shopInfo && this.shopInfo.avatar) ? this.shopInfo.avatar : '/hhb_small.png?x-oss-process=image/resize,m_fill,h_130,w_130'
- if(!avatar){
- return ''
- }
- if(/^https?:\/\//i.test(avatar)){
- return avatar
- }
- return this.$constant.imgUrl + (avatar.indexOf('/') === 0 ? avatar : ('/' + avatar))
- },
- buyItem() {
- let that = this
- // #ifdef MP-WEIXIN
- uni.navigateToMiniProgram({
- //姜枫-2021.04.13
- appId: that.getappIdList.mall.miniAppId,
- path: 'pages/home/recent',
- //develop 开发版 trial 体验版 release 正式版
- envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
- extraData: {},
- success (res) {
- }
- })
- // #endif
- // #ifdef APP-PLUS
- that.$msg("请用微信打开")
- // #endif
- },
- init () {
- this.getGHSList()
- // #ifdef MP-WEIXIN
- this.isMini = 1
- // #endif
-
- consoleIndex({isMini:this.isMini}).then(res => {
- this.data = res.data
- this.lookMoney = res.data.lookMoney
- })
- getStat().then(res=>{
- if(res.code == 1){
- this.overview = res.data.overview
- }
- })
- this.showShopName()
- this.getUnReadMsgCount()
- },
- handleLoginStyle(onlyCg){
- if(Number(onlyCg) == 1){
- this.loginStyle = 1
- uni.hideTabBar()
- this.toRemindCustom()
- }else{
- this.loginStyle = 2
- uni.showTabBar()
- this.getMallData()
- }
- },
- getMallData(){
- getShortUrl().then(res=>{
- if(res.code == 1){
- this.shortUrlList = res.data?res.data:[]
- }
- })
- },
- goItemKjKd(){
- if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
- this.$util.pageTo({url:'/admin/billing/index2?customId='+this.myShopInfo.defaultCustomId})
- }else{
- this.$msg('请设置快捷开单的对应客户')
- }
- },
- goItemKd(){
- this.$util.pageTo({url:'/admin/custom/selectCustom'})
- },
- goHsKjKd(){
- if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
- this.$util.pageTo({url:'/admin/billing/hs?customId='+this.myShopInfo.defaultCustomId})
- }else{
- this.$msg('请设置快捷开单的对应客户')
- }
- },
- goHsKd(){
- this.$util.pageTo({url:'/admin/custom/selectCustom?style=3'})
- },
- setRecharge(){
- this.$util.pageTo({url:'/admin/recharge/discount'})
- },
- setMemberLevel(){
- this.$util.pageTo({url:'/admin/member/level'})
- },
- closeToShow(){
- this.$refs.toShowMore.close()
- },
- // 显示供货商提示弹框
- showSupplierNotice() {
- // 设置要显示的供货商列表,最多显示5个
- this.displaySupplierList = this.supplierList.filter(item => item.name).slice(0, 5)
- this.$refs.supplierNoticePopup.open('center')
- },
- // 关闭供货商提示弹框
- closeSupplierNotice() {
- this.$refs.supplierNoticePopup.close()
- // 调用已有的接口标记已通知
- hasNotice().then(res => { })
- },
- // 下次提醒
- remindLater() {
- this.$refs.supplierNoticePopup.close()
- // 不调用hasNotice接口,保持提醒状态
- },
- getMore(info){
- this.currentGhs = info
- this.$refs.toShowMore.open('top')
- },
- callUp (ghs) {
- let mobileList = []
- if (!this.$util.isEmpty(ghs.telephone)){
- mobileList.push(ghs.telephone)
- }
- if (!this.$util.isEmpty(ghs.telephone2)){
- mobileList.push(ghs.telephone2)
- }
- if(this.$util.isEmpty(mobileList)){
- this.$msg('没有联系电话')
- return false
- }
- uni.showActionSheet({
- itemList: mobileList,
- success: function (respond) {
- let currentIndex = respond.tapIndex
- let mobile = mobileList[currentIndex]
- uni.makePhoneCall({ phoneNumber: mobile })
- }
- })
- },
- toPhone(){
- this.$util.pageTo({url: '/pagesPurchase/contact'})
- },
- showShopName(){
- currentShop().then(res => {
- if(res.code == 1){
- let sjName = res.data.merchantName ? res.data.merchantName : ''
- let shopName = res.data.shopName ? res.data.shopName : ''
- let title = shopName == '首店' ? sjName : sjName+' '+shopName
- uni.setNavigationBarTitle({ title: title })
- this.shopInfo = res.data?res.data:[]
- if(this.shopInfo.avatar) {
- uni.setStorageSync('shopAvatar', this.shopInfo.avatar);
- }else{
- uni.setStorageSync('shopAvatar', '');
- }
- }
- })
- },
- goMore(){
- let that = this
- let shopkeeper = this.loginInfo.staff && this.loginInfo.staff.founder == 2 //判断店主(老板)
- let items = shopkeeper ? ['已删除商家', '改进建议', '开关商城', '想要这样的商城', '修改密码', '退出登录'] : ['已删除商家', '我已离职', '开关商城', '想要这样的商城', '修改密码', '退出登录'];
- uni.showActionSheet({
- itemList: items,
- success: function (res) {
- if(res.tapIndex == 0){
- that.$util.pageTo({url: '/pagesPurchase/pb'})
- }
- if(res.tapIndex == 1){
- if(shopkeeper){
- // 店主显示改进建议
- that.suggest()
- }else{
- // 员工显示离职
- that.$util.pageTo({url: '/admin/staff/dimission'})
- }
- }
- if(res.tapIndex == 2){
- that.$util.pageTo({url:'/pagesPurchase/open'})
- }
- if(res.tapIndex == 3){
- that.openPfShop()
- }
- if(res.tapIndex == 4){
- that.$util.pageTo({url:'/admin/shop/password'})
- }
- if(res.tapIndex == 5){
- that.$util.confirmModal({content:'确认退出?'},() => {
- // #ifdef APP-PLUS
- uni.clearStorage()
- that.$store.commit("setLoginInfo", {})
- plus.runtime.restart()
- // #endif
- // #ifdef MP-WEIXIN
- clearLogin().then(res=>{
- if(res.code == 1){
- uni.clearStorage()
- that.$store.commit("setLoginInfo", {})
- uni.reLaunch({url:'/admin/home/workbench'})
- }
- })
- // #endif
- })
- }
- }
- });
- },
- openPfShop(){
- this.pageTo({url: '/pagesPurchase/contact'})
- },
- suggest(){
- this.pageTo({url: '/pagesPurchase/contact'})
- },
- bookItem(item){
- const { id } = item
- this.pageTo({url: '/pagesPurchase/bookProduct?id='+id})
- },
- goBalanceChange(info){
- this.closeToShow()
- this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+info.id})
- },
- rechargeChange(){
- this.closeToShow()
- this.pageTo({url: '/admin/ghs/rechargeChange?ghsId='+this.currentGhs.id})
- },
- balanceChange(){
- this.closeToShow()
- this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+this.currentGhs.id})
- },
- bpSj(){
- let that = this
- that.$util.confirmModal({content:'确认删除?删除后你不能再跟此批发店买花!!!!',okText:'确认'},() => {
- that.confirmPb(that.currentGhs)
- })
- },
- recharge(currentGhs){
- this.pageTo({url: '/admin/ghs/pay?id='+currentGhs.id+'&salt='+currentGhs.salt})
- },
- confirmPb(ghs){
- let that = this
- changeDelStatus({delStatus:1,ghsId:ghs.id}).then(res=>{
- if(res.code == 1){
- that.closeToShow()
- that.getGHSList()
- }
- })
- },
- fillCg(item){
- this.pageTo({url:'/pagesPurchase/addCg?ghsId='+item.id+'&ghsName='+item.name})
- },
- goKmCg(currentGhs){
- let self = this
- // #ifdef MP-WEIXIN
- uni.navigateToMiniProgram({
- appId: currentGhs.kmCgAppId,
- path: currentGhs.kmCgUrl,
- //develop 开发版 trial 体验版 release 正式版
- envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
- extraData: {},
- success (res) {}
- })
- // #endif
- // #ifdef APP-PLUS
- self.$msg('开发中')
- // #endif
- },
- enterShop(item) {
- let that = this
- if(item.isOpen == 0){
- this.$msg('已休店,请选择其它门店')
- return false
- }
- that.pageTo({url: '/pagesPurchase/ghsProduct?id='+item.id})
- },
- enterShop2(item) {
- let that = this
- if(item.isOpen == 0){
- this.$msg('已休店,请选择其它门店')
- return false
- }
- that.pageTo({url: '/pagesPurchase/ghsProduct2?id='+item.id})
- },
- whyHave(){
- this.$util.confirmModal({content:'付款金额不足消欠款单时,存为余额下次使用'},() => {})
- },
- settleAccounts (item) {
- this.pageTo({ url: '/pagesPurchase/gathering?id='+item.id})
- },
- gotoDetails (val) {
- this.pageTo({ url: '/pagesPurchase/purDetails?status=' + val.status + '&id=' + val.id, type:2 })
- },
- getGHSList () {
- return ghsList().then(res => {
- this.supplierList = res.data.list
- this.ad = res.data.ad ? res.data.ad : []
- this.showAd = res.data.showAd ? res.data.showAd : 0
- })
- },
- goPage (item) {
- if(this.getLoginInfo.pfShopId && Number(this.getLoginInfo.pfShopId)>0){
- if(item.pf == 0){
- this.$msg('开发中')
- return false
- }
- }
- this.$util.pageTo(item)
- },
- toRemindCustom(){
- if(this.loginStyle==1){
- hasMoreGhs().then(ret=>{
- if(ret.data.needNotice == 1){
- this.showSupplierNotice()
- }
- })
- }
- },
- noticeFn (item) {
- this.$util.pageTo({ url: item.page })
- },
- goToWastage () {
- this.$util.pageTo({url:'/admin/breakage/list'})
- },
- goToKindStat(){
- this.$util.pageTo({url:'/admin/stat/kind'})
- },
- goToProfit () {
- this.$util.pageTo({url:'/admin/stat/profit'})
- },
- // 显示商城选项弹框
- showMallOptions(no) {
- this.urlNo = no
- this.$refs.mallOptionsPopup.open('center')
- },
- // 关闭商城选项弹框
- closeMallOptions() {
- this.$refs.mallOptionsPopup.close()
- },
- // 直接打开商城
- openMallDirect() {
- this.closeMallOptions()
- let url = ''
- //花束商城
- if(this.urlNo == 1){
- url = 'pages/home/category'
- }
- //相册
- if(this.urlNo == 2){
- url = 'pages/home/mall'
- }
- //绿植花材商城
- if(this.urlNo == 3){
- url = 'pages/item/item'
- }
- this.goToMallPt(url)
- },
- // 复制商城链接
- copyMallLink() {
- this.closeMallOptions()
- let currentShortUrl = ''
- let text = ""
- //花束商城
- if(this.urlNo == 1){
- currentShortUrl = this.shortUrlList['goodsUrl']
- text = "点击下面链接,打开商城\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
- }
- //相册
- if(this.urlNo == 2){
- currentShortUrl = this.shortUrlList['imgUrl']
- text = "点击下面链接,打开相册\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
- }
- //绿植花材商城
- if(this.urlNo == 3){
- currentShortUrl = this.shortUrlList['itemUrl']
- text = "点击下面链接,打开商城\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
- }
- uni.setClipboardData({
- data: text,
- success: () => {
- this.$msg('已复制')
- },
- fail: () => {
- this.$msg('复制失败')
- }
- })
- },
- goToMallPt (url) {
- // #ifdef MP-WEIXIN
- let self = this
- uni.navigateToMiniProgram({
- appId: this.getappIdList.mall.miniAppId,
- path: url + '?account=' + self.loginInfo.shopId,
- //develop 开发版 trial 体验版 release 正式版
- envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
- extraData: {
- 'hdShopAdminId': self.loginInfo.shopAdminId
- },
- success (res) {}
- })
- // #endif
- // #ifdef APP-PLUS
- let that = this
- if(plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})){
- plus.share.getServices(function(s){
- var sweixin
- for (var i = 0; i < s.length; i++) {
- var t = s[i];
- if (t.id == 'weixin') {
- sweixin = t;
- }
- }
- if (sweixin && sweixin.nativeClient) {
- let miniOriginalId = that.dictInfo.miniOriginalId && that.dictInfo.miniOriginalId.current && that.dictInfo.miniOriginalId.current.mall ? that.dictInfo.miniOriginalId.current.mall : ''
- console.log(miniOriginalId)
- sweixin.launchMiniProgram({
- id: miniOriginalId,
- path: '/'+url+'?account='+that.loginInfo.shopId,
- type: 0
- });
- } else {
- that.$msg("没有找到微信服务")
- //that.$msg("获取微信失败:" + e.message)
- console.log(JSON.stringify(e));
- }
- }, function(e){
- that.$msg("没有找到微信服务哦")
- //that.$msg("获取微信失败:" + e.message)
- console.log(JSON.stringify(e));
- });
- } else {
- this.$msg("即将跳转小程序,请安装微信")
- return false
- }
- // #endif
- },
- getUnReadMsgCount(){
- unReadMsgCount().then(res=>{
- if(res.code == 1){
- this.unReadMsgNum = res.data.msg_count
- }
- })
- },
- updateCurrentDate(){
- const now = new Date()
- const month = now.getMonth() + 1
- const date = now.getDate()
- const weekDays = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
- const week = weekDays[now.getDay()]
- this.currentDate = `${month}-${date} ${week}`
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .app-content {
- padding-bottom: 10upx;
- }
- .module-com {
- margin-bottom: 37upx;
- background-color: #fff;
- }
- // 功能网格部分 - 删除
- // 今日概况卡片 - 圆形气泡布局
- .today-overview-card {
- background: linear-gradient(to right, #1ba85e 0%, #22C55E 50%, #16A34A 100%);
- padding: 0;
- margin: 0 0 -20upx 0;
- overflow: visible;
- border-radius: 0;
-
- .bubble-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 20upx 24upx 24upx;
-
- .bubble-title {
- font-size: 28upx;
- font-weight: 700;
- color: #ffffff;
- letter-spacing: 0.5upx;
- }
-
- .message-btn {
- position: relative;
- width: 44upx;
- height: 44upx;
- display: flex;
- align-items: center;
- justify-content: center;
- background: rgba(255, 255, 255, 0.2);
- border-radius: 50%;
- transition: all 0.3s ease;
-
- &:active {
- background: rgba(255, 255, 255, 0.35);
- transform: scale(0.95);
- }
-
- .msg-icon {
- font-size: 24upx;
- line-height: 1;
- }
-
- .red-mind {
- position: absolute;
- top: -6upx;
- right: -6upx;
- width: 32upx;
- height: 32upx;
- line-height: 28upx;
- font-size: 20upx;
- font-weight: 700;
- text-align: center;
- color: white;
- background-color: #ff2842;
- border: 2upx solid #ffffff;
- border-radius: 50%;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
- }
-
- .bubble-grid {
- display: flex;
- flex-wrap: wrap;
- gap: 20upx;
- padding: 20upx 24upx 30upx;
- align-items: center;
- justify-content: center;
-
- .bubble {
- position: relative;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 50%;
- cursor: pointer;
- transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
- box-shadow: 0 8upx 20upx rgba(0, 0, 0, 0.15);
-
- &:active {
- transform: scale(0.92);
- box-shadow: 0 4upx 12upx rgba(0, 0, 0, 0.2);
- }
-
- .bubble-inner {
- width: 100%;
- height: 100%;
- border-radius: 50%;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- padding: 20upx;
- box-sizing: border-box;
- }
-
- &.bubble-primary {
- width: 180upx;
- height: 180upx;
- background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%);
-
- .bubble-inner {
- .bubble-label {
- font-size: 28upx;
- color: rgba(255, 255, 255, 0.9);
- font-weight: 600;
- margin-bottom: 12upx;
- }
-
- .bubble-value {
- font-size: 44upx;
- font-weight: 800;
- color: #ffffff;
- line-height: 1;
- max-width: 160upx;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- }
- }
-
- &.bubble-secondary {
- width: 140upx;
- height: 140upx;
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.1) 100%);
- backdrop-filter: blur(10px);
- border: 2upx solid rgba(255, 255, 255, 0.3);
-
- .bubble-inner {
- .bubble-label {
- font-size: 24upx;
- color: rgba(255, 255, 255, 0.9);
- font-weight: 600;
- margin-bottom: 8upx;
- }
-
- .bubble-value {
- font-size: 32upx;
- font-weight: 700;
- color: #ffffff;
- line-height: 1;
- max-width: 130upx;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- }
- }
- }
- }
- }
- .user-wrap {
- padding: 20upx 30upx 34upx 30upx;
- color: #fff;
- text-align: center;
- background-size: 100% 380upx;
- background-repeat: no-repeat;
- .user-top {
- @include disFlex(center, space-between);
- .open-bt_bx {
- display: flex;
- align-items: center;
- line-height: 1upx;
- & > button {
- padding: 0;
- line-height: auto;
- background-color: transparent;
- border: 1px solid #ffffff;
- border-radius: 22upx;
- padding: 10upx 17upx !important;
- font-size: 24upx;
- font-family: PingFang SC;
- font-weight: 400;
- color: #ffffff;
- & > .iconfont {
- font-size: 25upx;
- padding-right: 10upx;
- }
- }
- }
- }
- .income-amount {
- margin-top: 36upx;
- margin-bottom: 37upx;
- .price {
- font-size: 50upx;
- font-weight: bold;
- margin-top: 4upx;
- }
- }
- .user-bottom {
- @include disFlex(center, space-around);
- .info-list-name {
- color: white;
- }
- .info-list-value {
- font-size: 36upx;
- font-weight: bold;
- margin-top: 4upx;
- }
- }
- }
- // 消息
- .news-wrap {
- .news-list {
- @include disFlex(center, space-between);
- padding: 30upx 24upx 30upx 30upx;
- border-bottom: 1px solid $borderColor;
- font-size: 26upx;
- color: $fontColor2;
- &:active {
- background-color: $backColor;
- }
- & > div {
- @include disFlex(center, flex-start);
- }
- .news-left {
- .iconfont {
- color: $mainColor;
- margin-right: 10upx;
- }
- .ling {
- font-size: 28upx;
- }
- span{
- font-size:29upx;
- }
- }
- .news-right {
- font-size: 26upx;
- color: $mainColor;
- transform: scale(0.9);
- @include disFlex(flex-end, flex-start);
- .iconfont {
- font-size: 24upx;
- margin-left: 10upx;
- margin-bottom: 6upx;
- }
- }
- }
- }
- // 数据总览模块
- .overview-module {
- background: #ffffff;
- border-radius: 16upx;
- padding: 0;
- overflow: hidden;
-
- .overview-header {
- background: linear-gradient(135deg, #f8fafb 0%, #ffffff 100%);
- padding: 30upx 30upx 20upx;
- border-bottom: 1upx solid #f0f0f0;
-
- .overview-title {
- font-size: 32upx;
- font-weight: 600;
- color: #333;
- margin-bottom: 8upx;
- }
-
- .overview-subtitle {
- font-size: 24upx;
- color: #999;
- }
- }
-
- .overview-grid {
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- padding: 20upx;
- gap: 16upx;
-
- .overview-item {
- padding: 28upx 24upx;
- text-align: center;
- position: relative;
- transition: all 0.3s ease;
- background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
- border-radius: 14upx;
- border: 1upx solid #f0f0f0;
- box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.04);
-
- &:not(:nth-child(2n)) {
- &::after {
- content: '';
- position: absolute;
- right: 0;
- top: 0;
- transform: none;
- width: 0;
- height: 0;
- background: transparent;
- }
- }
-
- &:nth-child(n+3) {
- &::before {
- content: '';
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- height: 0;
- background: transparent;
- }
- }
-
- &:active {
- background: linear-gradient(135deg, #f0f8f5 0%, #e8f5f1 100%);
- transform: translateY(-4upx);
- box-shadow: 0 4upx 12upx rgba(0, 0, 0, 0.08);
- }
-
- .item-value {
- font-size: 40upx;
- font-weight: 700;
- color: #049E2C;
- margin-bottom: 12upx;
- line-height: 1;
- }
-
- .item-label {
- font-size: 26upx;
- color: #666;
- line-height: 1;
- font-weight: 500;
- }
- }
- }
- }
- // 新的花束花礼和绿植花材样式
- .flower-module {
- padding: 0;
-
- .flower-section {
- padding: 24upx 20upx;
- background: #ffffff;
- border-bottom: 12upx solid #f5f5f5;
-
- &:last-child {
- border-bottom: none;
- }
-
- .section-header {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- margin-bottom: 24upx;
- padding-left: 0;
-
- .header-line {
- display: none;
- }
-
- .header-title {
- padding: 0;
- font-size: 28upx;
- font-weight: 700;
- color: #333;
- letter-spacing: 1upx;
- }
- }
-
- .icon-grid {
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: 16upx;
- max-width: 100%;
-
- .icon-item {
- width: 100%;
- padding: 12upx;
- text-align: center;
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 8upx;
-
- .icon-wrapper {
- width: 100upx;
- height: 100upx;
- display: flex;
- align-items: center;
- justify-content: center;
- background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
- border-radius: 20upx;
-
- .icon-emoji {
- font-size: 48upx;
- line-height: 1;
- }
-
- .icon-image {
- width: 85upx;
- height: 85upx;
- }
- }
-
- .icon-text {
- font-size: 25upx;
- color: #333;
- line-height: 1.4;
- font-weight: 500;
- }
- }
- }
- }
- }
- .order-page {
- .ghs_list_page {
- background-color: rgba(255, 255, 255, 1);
- position: relative;
- width: 750upx;
- overflow: hidden;
- .profile-section {
- background-color: #09C567;
- padding: 30upx 30upx 0upx 30upx;
- border-radius: 0;
- .profile-header {
- display: flex;
- align-items: center;
- .avatar-container {
- width: 120upx;
- height: 120upx;
- border-radius: 60upx;
- overflow: hidden;
- background-color: rgba(255,255,255,0.2);
- border: 1upx solid #ffffff;
- .avatar-button {
- background: none !important;
- border: none !important;
- padding: 0 !important;
- margin: 0 !important;
- line-height: 1;
- display: block;
- width: 120upx;
- height: 120upx;
- color: transparent !important;
- &::after { border: none !important; }
- }
- .avatar {
- width: 120upx;
- height: 120upx;
- border-radius: 60upx;
- }
- }
- .user-info {
- flex: 1;
- margin-left: 24upx;
- .username {
- display: block;
- font-size: 36upx;
- font-weight: bold;
- color: #ffffff;
- }
- .user-id {
- display: block;
- margin-top: 6upx;
- font-size: 26upx;
- color: #ffffff;
- }
- }
- .more-icon {
- margin-left: 12upx;
- width: 60upx;
- height: 60upx;
- border-radius: 30upx;
- align-items: center;
- justify-content: center;
- display: flex;
- // background: rgba(255,255,255,0.15);
- // border: 1upx solid rgba(255,255,255,0.35);
- }
- }
- .function-grid--overlay {
- background: transparent;
- }
- .function-item--overlay {
- border-color: rgba(255,255,255,0.5);
- background: rgba(255,255,255,0.12);
- }
- .function-text--overlay {
- color: #ffffff;
- }
- }
- .flex-col {
- display: flex;
- flex-direction: column;
- }
- .flex-row {
- display: flex;
- flex-direction: row;
- }
- .justify-end {
- display: flex;
- justify-content: flex-end;
- }
- .justify-between {
- display: flex;
- justify-content: space-between;
- }
- .ghs_list_area {
- width: 750upx;
- background-color: #ece5e5;
- .ghs_box {
- background-color: rgba(255, 255, 255, 1);
- position: relative;
- width: 750upx;
- height: auto;
- margin-bottom:35upx;
- .image-text_7 {
- width: 674upx;
- height: 120upx;
- margin: 40upx 0 0 31upx;
- .section_1 {
- width: 120upx;
- height: 120upx;
- .logo{
- width:120upx;
- height:120upx;
- border-radius:10upx;
- }
- }
- .text-group_7 {
- width: 533upx;
- height: 99upx;
- margin-top: 5upx;
- .text_8 {
- display:inline-block;
- width: 550upx;
- height: 38upx;
- color: rgba(51, 51, 51, 1);
- font-size: 36upx;
- font-weight:bold;
- text-align: left;
- white-space: nowrap;
- line-height:38upx;
- overflow:hidden;
- }
- .text_9 {
- width: 533upx;
- height: 25upx;
- overflow-wrap: break-word;
- color: rgba(153, 153, 153, 1);
- font-size: 28upx;
- text-align: left;
- white-space: nowrap;
- line-height: 24upx;
- margin-top: 10upx;
- }
- }
- }
- .box_4 {
- background-color: rgba(238, 238, 238, 1);
- width: 750upx;
- height: 1upx;
- margin-top: 40upx;
- }
- .box_9 {
- width: 100%;
- height: 60upx;
- margin: 23upx 0 22upx 15upx;
- .tag_2 {
- background-color: rgba(255, 255, 255, 1);
- border-radius: 8px;
- height: 60upx;
- line-height:60upx;
- border: 2px solid rgba(221, 221, 221, 1);
- color: rgba(51, 51, 51, 1);
- font-size: 30upx;
- margin:0 16upx 0 0;
- text-align:center;
- float:left;
- padding-left:15upx;
- padding-right:15upx;
- }
- }
- .box_6 {
- background-color: rgb(248, 242, 242);
- width: 750upx;
- height:95upx;
- .show_clear_area {
- width: 247upx;
- height: 29upx;
- margin: 26upx 0 0 30upx;
- .waite_clear_order {
- width: 214upx;
- height: 29upx;
- overflow-wrap: break-word;
- color: rgba(255, 40, 66, 1);
- font-size: 31upx;
- font-weight:bold;
- text-align: left;
- white-space: nowrap;
- line-height: 29upx;
- }
- }
- }
- .button_4 {
- height: 80upx;
- line-height:80upx;
- text-align:center;
- background-color:#09C567;
- background-size: 137upx 137upx;
- width: 130upx;
- position: absolute;
- left: 570upx;
- top: 95upx;
- border-radius:39upx;
- .text_13 {
- color: rgba(255, 255, 255, 1);
- font-size: 30upx;
- font-weight:bold;
- }
- }
- .button_5 {
- height: 80upx;
- line-height:80upx;
- text-align:center;
- background-color:#CCCCCC;
- background-size: 137upx 137upx;
- width: 130upx;
- position: absolute;
- left: 570upx;
- top: 95upx;
- border-radius:39upx;
- .text_13 {
- color: rgba(255, 255, 255, 1);
- font-size: 30upx;
- font-weight:bold;
- }
- }
- .button_6 {
- height: 80upx;
- line-height:80upx;
- text-align:center;
- background-color:rgb(152, 153, 197);
- background-size: 137upx 137upx;
- width: 170upx;
- position: absolute;
- left: 540upx;
- top: 95upx;
- border-radius:39upx;
- .text_13 {
- color: rgba(255, 255, 255, 1);
- font-size: 30upx;
- font-weight:bold;
- }
- }
- .button_7 {
- height: 80upx;
- line-height:80upx;
- text-align:center;
- background-color:#09C567;
- background-size: 137upx 137upx;
- width: 180upx;
- position: absolute;
- left: 330upx;
- top: 95upx;
- border-radius:39upx;
- .text_13 {
- color: rgba(255, 255, 255, 1);
- font-size: 30upx;
- font-weight:bold;
- }
- }
- }
- }
- }
- }
- /* 商城选项弹框样式 */
- .mall-options-container {
- width: 600upx;
- background-color: #fff;
- border-radius: 24upx;
- overflow: hidden;
- animation: popup-in 0.3s ease-out;
-
- .mall-options-buttons {
- padding: 50upx 40upx 50upx;
- display: flex;
- flex-direction: column;
- gap: 40upx;
- align-items: center;
-
- .mall-option-btn {
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 32upx 40upx;
- background-color: #f8f9fa;
- border-radius: 20upx;
- transition: all 0.2s ease;
- width: 100%;
-
- &:active {
- background-color: #e9ecef;
- transform: scale(0.98);
- }
-
- .option-icon {
- font-size: 56upx;
- margin-right: 30upx;
- width: 70upx;
- text-align: center;
- }
-
- .option-text {
- font-size: 42upx;
- color: #333;
- font-weight: 500;
- }
- }
- }
- }
- @keyframes popup-in {
- 0% {
- opacity: 0;
- transform: scale(0.8) translateY(20upx);
- }
- 100% {
- opacity: 1;
- transform: scale(1) translateY(0);
- }
- }
- /* 供货商提示弹框样式 */
- .supplier-notice-popup {
- .supplier-notice-container {
- width: 650upx;
- background-color: #fff;
- border-radius: 20upx;
- overflow: hidden;
-
- .supplier-notice-header {
- padding: 40upx 30upx 20upx;
- text-align: center;
- background-color: #f8f9fa;
- border-bottom: 1upx solid #e9ecef;
-
- .supplier-notice-title {
- font-size: 36upx;
- font-weight: bold;
- color: #333;
- }
- }
-
- .supplier-notice-content {
- padding: 20upx 0;
-
- .supplier-list {
- padding: 0 30upx;
-
- .supplier-item {
- display: flex;
- align-items: center;
- padding: 20upx 0;
- border-bottom: 1upx solid #f0f0f0;
-
- &:last-child {
- border-bottom: none;
- }
-
- .supplier-icon {
- width: 60upx;
- height: 60upx;
- background-color: #e3f2fd;
- border-radius: 50%;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 32upx;
- margin-right: 20upx;
- }
-
- .supplier-name {
- font-size: 32upx;
- color: #333;
- flex: 1;
- font-weight: 500;
- }
- }
- }
- }
-
- .supplier-notice-footer {
- padding: 30upx;
- text-align: center;
- background-color: #f8f9fa;
- border-top: 1upx solid #e9ecef;
-
- .supplier-notice-tip {
- display: block;
- font-size: 40upx;
- font-weight: bold;
- color: red;
- margin-bottom: 30upx;
- line-height: 1.4;
- }
-
- .supplier-notice-buttons {
- display: flex;
- justify-content: space-between;
- gap: 20upx;
-
- .admin-button-com {
- flex: 1;
- margin: 0;
- padding: 20upx 0;
- height: auto;
- line-height: normal;
- font-size: 34upx;
- font-weight: bold;
- }
- }
- }
- }
- }
- .red-mind{
- width: 42upx;
- height: 42upx;
- line-height: 38upx;
- font-size: 28upx;
- font-weight: 700;
- text-align: center;
- position: absolute;
- right: 16upx;
- top: 10upx;
- color: white;
- background-color: red;
- border: 1upx solid red;
- border-radius: 26upx;
- display: inline-block;
- }
- // 警告提示区域样式
- .alert-card {
- margin: 15upx 10upx;
- border-radius: 16upx;
- overflow: hidden;
- box-shadow: 0 4upx 12upx rgba(0, 0, 0, 0.08);
- transition: all 0.3s ease;
- border: 3upx solid;
-
- &:active {
- transform: translateY(2upx);
- box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.06);
- }
-
- .alert-content {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 30upx 18upx;
- min-height: 100upx;
-
- .alert-title {
- font-size: 38upx;
- font-weight: 600;
- flex: 1;
- line-height: 1.4;
- }
-
- .alert-action {
- font-size: 32upx;
- font-weight: 600;
- white-space: nowrap;
- margin-left: 20upx;
- padding: 12upx 24upx;
- border-radius: 8upx;
- transition: all 0.2s ease;
-
- &:active {
- background-color: rgba(255, 255, 255, 0.6);
- }
- }
-
- .alert-text {
- font-size: 36upx;
- font-weight: 600;
- line-height: 1.6;
- text-align: center;
- width: 100%;
- }
- }
- }
- .alert-card-warning {
- background: #fffbf0;
- border-color: #fffbf0;
-
- .alert-content {
- .alert-title {
- color: #d48806;
- }
-
- .alert-action {
- color: #ffa940;
- border: 2upx solid #ffa940;
- }
- }
- }
- .alert-card-error {
- background-color: #ff6b6b;
- border-color: #ff6b6b;
- .alert-content {
- .alert-text {
- font-size:32upx;
- color: white;
- }
- }
- }
- .warning-banner {
- background-color: #ff6b6b;
- border-radius: 8upx;
- margin: 0upx 10upx 20upx 10upx;
- padding: 20upx 24upx;
- color: #ffffff;
- font-size: 32upx;
- font-weight: 600;
- text-align: center;
- line-height: 1.4;
- }
- </style>
|