22 Commits
Author SHA1 Message Date
lifizer 475972e7d0 Fix(云灵AI):[#5193]“我要送礼”推荐结果,点击下单/送礼按钮,规格弹窗弹出时,左上角的返回按钮仍然可以点击-2
(cherry picked from commit a54b674e6f)
2026-05-07 17:07:24 +08:00
lifizer 4c84f63a93 Fix(云灵AI):[#5228]礼品卡片显示调整为供应商名称
(cherry picked from commit 76eea8dcb4)
2026-05-07 14:18:34 +08:00
lifizer f1173ae292 Style(云灵AI):开放以图搜商品入口
(cherry picked from commit a50d274a59)
2026-05-07 14:18:21 +08:00
lifizer 83c34d473e Style(云灵AI):界面调整,屏蔽以图搜商品入口
(cherry picked from commit ced676832e)
2026-05-06 15:15:09 +08:00
lifizer 4708fce5a5 Refactor(云灵AI):无内容时可以展示列表卡片内容
(cherry picked from commit 69e5ba0169)
2026-05-06 15:15:05 +08:00
lifizer 47ab649122 Fix(云灵AI):[#5186]订单查询,盲盒订单显示商品区域,隐藏金额信息-2
(cherry picked from commit 6cb403c5d5)
2026-04-29 16:29:55 +08:00
lifizer e7e9ba0ec5 Fix(云灵AI):[#5193]返回主页,需要关闭规格弹窗
(cherry picked from commit 28ee55f9fd)
2026-04-29 16:29:51 +08:00
lifizer 49a19fe57d Fix(云灵AI):[#5186]订单查询,盲盒订单显示商品区域,隐藏金额信息
(cherry picked from commit c8bf87aa4b)
2026-04-29 16:29:47 +08:00
lifizer 2f29a42f9b Fix(云灵AI):[#5193]“我要送礼”推荐结果,点击下单/送礼按钮,规格弹窗弹出时,左上角的返回按钮仍然可以点击
(cherry picked from commit 53312c889e)
2026-04-29 16:29:43 +08:00
lifizer 1065fc0c37 Fix(云灵AI):[#5192]规格名称较长的订单,查询结果规格数据显示异常,改为规格数据超出一行时超出内容省略号隐藏
(cherry picked from commit e3a69a708c)
2026-04-29 16:29:39 +08:00
lifizer 26ff0d2dd8 Fix(云灵AI):[#5194]店铺封面为视频的店铺,推荐结果店铺封面显示空白
(cherry picked from commit a113312712)
2026-04-29 16:29:34 +08:00
lifizer 856d89a42f Fix(云灵AI):[#5188]订单查询,点击发送的问题修改为“帮我查询我的待发货、待收货订单信息”
(cherry picked from commit 77f803ef10)
2026-04-29 16:29:31 +08:00
lifizer 720b7b330c Fix(云灵AI):[#5185]送礼,点击下单/送礼按钮,弹出的规格弹窗内,立即购买按钮位置太靠下
(cherry picked from commit 52817b48a8)
2026-04-29 16:29:27 +08:00
lifizer a883e7d56f Fix(云灵AI):[#5186]订单查询,盲盒订单显示商品区域,隐藏金额信息
(cherry picked from commit 09a8d1b476)
2026-04-29 16:29:22 +08:00
lifizer d5b7e8e2e8 Style(云灵AI):界面调整
(cherry picked from commit 20ca6c988e)
2026-04-29 09:31:17 +08:00
lifizer 208930ba63 Style(云灵AI):界面调整
(cherry picked from commit 9bf4febea6)
2026-04-28 18:09:10 +08:00
lifizer 318a0f2294 Refactor(云灵AI):卡片列表换一换接口使用新的
(cherry picked from commit 3b8faf1eea)
2026-04-28 11:00:02 +08:00
lifizer f354c9d3b2 Refactor(云灵AI):换一换动态效果实现
(cherry picked from commit 898c3b74bc)
2026-04-28 09:53:37 +08:00
lifizer afc1c9d519 Refactor(云灵AI):换一换动态效果实现
(cherry picked from commit 3b935811e3)
2026-04-28 09:53:30 +08:00
lifizer cd458a6ec6 Chore(入驻):解决合并冲突未完全解决问题
(cherry picked from commit 0d1dfae3bd)
2026-04-27 14:22:44 +08:00
lifizer 05bd367e04 Refactor(首页):优化页面加载,图片使用懒加载
(cherry picked from commit 94b2af52d0)
2026-04-27 14:22:38 +08:00
lifizer 7c7d19bd16 Style(云灵AI):标题调整
(cherry picked from commit 8c1aa62024)
2026-04-27 14:22:32 +08:00
12 changed files with 266 additions and 88 deletions
+53 -6
View File
@@ -14,14 +14,14 @@
{{ item.merName }} {{ item.merName }}
</view> </view>
<view class="order-id"> <view class="order-id">
{{ item.orderId }} 订单号{{ item.orderId }}
</view> </view>
</view> </view>
<view class="status"> <view class="status">
{{ item.statusName }} {{ item.statusName }}
</view> </view>
</view> </view>
<view class="product-info-wrap"> <view v-if="item.isGiftCardReceiveBlind === 0" class="product-info-wrap">
<view <view
v-for="cartItem in item.cartInfo" v-for="cartItem in item.cartInfo"
:key="cartItem.productId" :key="cartItem.productId"
@@ -53,15 +53,45 @@
</view> </view>
</view> </view>
</view> </view>
<view v-else class="product-info-wrap">
<view
class="product-info product-info2"
>
<view class="good-img">
<image
:src="webUrl + '/orderIcon/盲盒礼包.png'"
class="img"
mode="widthFix"
lazy-load
/>
</view>
<view class="name-wrap">
<view class="name one-t">
盲盒礼物
</view>
<view class="attr">
待收货后展示商品信息
</view>
</view>
<view class="price-num">
<view style="color: #fff;">
0.00
</view>
<view class="num">
x1
</view>
</view>
</view>
</view>
<view class="order-bottom"> <view class="order-bottom">
<view class="time-total"> <view class="time-total">
<view class="time"> <view class="time">
{{ formatDateTime(item.createTime) }} {{ formatDateTime(item.createTime) }}
</view> </view>
<view class="total"> <view class="total">
{{ item.totalNum }}件商品 {{ item.totalNum }}件商品
<text class="total-txt"> <text v-if="item.isGiftCardReceiveBlind === 0" class="total-txt">
总金额<text class="color-red">{{ item.totalPrice }}</text> &nbsp;&nbsp;&nbsp;&nbsp;总金额<text class="color-red">{{ item.totalPrice }}</text>
</text> </text>
</view> </view>
</view> </view>
@@ -161,13 +191,17 @@ export default {
} }
.attr { .attr {
display: inline-block; display: inline-block;
min-height: 50rpx; height: 50rpx;
max-width: 100%;
padding: 0 25rpx; padding: 0 25rpx;
margin: 20rpx 0 0 0; margin: 20rpx 0 0 0;
border-radius: 25rpx; border-radius: 25rpx;
line-height: 50rpx; line-height: 50rpx;
color: #252525; color: #252525;
background: rgba(239,239,239,0.39); background: rgba(239,239,239,0.39);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
} }
.price-num { .price-num {
@@ -179,6 +213,19 @@ export default {
} }
} }
} }
.product-info2 {
.name-wrap {
display: flex;
flex-direction: column;
justify-content: space-between;
.attr {
padding: 0;
font-size: 24rpx;
color: #999;
background-color: #fff;
}
}
}
.order-bottom { .order-bottom {
.time-total { .time-total {
display: flex; display: flex;
+26 -7
View File
@@ -33,7 +33,7 @@ export const chatMixinsV2 = {
icon: 'icon-51', icon: 'icon-51',
text: '订单查询', text: '订单查询',
type: 'prompt', type: 'prompt',
prompt: '订单查询', prompt: '帮我查询我的待发货、待收货订单信息',
url: '' url: ''
}, },
{ {
@@ -252,7 +252,8 @@ export const chatMixinsV2 = {
type: -2, type: -2,
showMoreInfo: {}, showMoreInfo: {},
currentSwiperIndex: 0, currentSwiperIndex: 0,
showChangeBtn: true showChangeBtn: true,
changeIsRotate: false
}) })
_this.loading = true _this.loading = true
_this.showCursor = false _this.showCursor = false
@@ -408,6 +409,18 @@ export const chatMixinsV2 = {
this.chatMessageList[index].currentSwiperIndex = e.detail.current this.chatMessageList[index].currentSwiperIndex = e.detail.current
}, },
analyzeKeywordsChangeHandle(conversationId, item) { analyzeKeywordsChangeHandle(conversationId, item) {
let idx = -1
this.chatMessageList.map((item, index) => {
if (item.conversationId === conversationId) {
idx = index
}
})
if (idx > -1) {
if (this.chatMessageList[idx].changeIsRotate) {
return
}
this.$set(this.chatMessageList[idx], 'changeIsRotate', true)
}
let listKey = '' let listKey = ''
// 抽奖和订单查询没有换一换 // 抽奖和订单查询没有换一换
if (item.goodsList.length > 0) { if (item.goodsList.length > 0) {
@@ -431,18 +444,21 @@ export const chatMixinsV2 = {
const { success, data } = res const { success, data } = res
if (success) { if (success) {
let changeList = [] let changeList = []
let idx = -1 this.chatMessageList.map((item) => {
this.chatMessageList.map((item, index) => {
if (item.conversationId === conversationId) { if (item.conversationId === conversationId) {
changeList = data.list || [] changeList = data.list || []
idx = index
} }
}) })
if (idx > -1 && listKey) { if (idx > -1 && listKey) {
this.$set(this.chatMessageList[idx], 'listKey', changeList) this.$set(this.chatMessageList[idx], listKey, changeList)
this.$forceUpdate() this.$forceUpdate()
} }
setTimeout(() => {
this.$set(this.chatMessageList[idx], 'changeIsRotate', false)
}, 1000)
} }
}).catch(error => {
this.$set(this.chatMessageList[idx], 'changeIsRotate', false)
}) })
}, },
productItemClickHandle(item) { productItemClickHandle(item) {
@@ -491,7 +507,7 @@ export const chatMixinsV2 = {
uniqueId: _this.attr.productSelect !== undefined ? _this.attr.productSelect.unique : '' uniqueId: _this.attr.productSelect !== undefined ? _this.attr.productSelect.unique : ''
}).then(function (res) { }).then(function (res) {
try { try {
_this.$set(_this.attr, 'cartAttr', false) _this.closeAttrWindow()
const { cartId } = res.data const { cartId } = res.data
if (type === 1) { if (type === 1) {
uni.navigateTo({ uni.navigateTo({
@@ -518,6 +534,9 @@ export const chatMixinsV2 = {
_this.buyLoading = false _this.buyLoading = false
}) })
}, },
closeAttrWindow() {
this.$set(this.attr, 'cartAttr', false)
},
hotelItemClickHandle(item) { hotelItemClickHandle(item) {
this.audioStopHandle() this.audioStopHandle()
this.$yrouter.push({ this.$yrouter.push({
+38 -14
View File
@@ -170,7 +170,7 @@
mode="widthFix" mode="widthFix"
lazy-load lazy-load
/> />
<text class="s-name">{{ goodItem.storeName }}</text> <text class="s-name">{{ goodItem.merName ||goodItem.storeName }}</text>
<u-icon name="arrow-right" color="#999" size="12"></u-icon> <u-icon name="arrow-right" color="#999" size="12"></u-icon>
</view> </view>
<view class="title one-t">{{ goodItem.name }}</view> <view class="title one-t">{{ goodItem.name }}</view>
@@ -225,7 +225,7 @@
{{ hotel.hotelTypeName }} {{ hotel.hotelTypeName }}
</view> </view>
<image <image
:src="hotel.img" :src="hotel.img + ((hotel.img && hotel.img.indexOf('.mp4') > -1) ? '?vframe/jpg/offset/1' : '')"
class="img" class="img"
lazy-load lazy-load
/> />
@@ -320,12 +320,17 @@
" "
class="change-btn" class="change-btn"
> >
<view class="change-btn-content" @click="analyzeKeywordsChangeHandle(item.conversationId, item)">
<image <image
:src="webUrl + '/aiChat/icon-change.png'" :src="webUrl + '/aiChat/icon-53.png'"
:class="{
'rotate': item.changeIsRotate
}"
class="icon" class="icon"
mode="widthFix" mode="widthFix"
@click="analyzeKeywordsChangeHandle(item.conversationId, item)"
/> />
换一换
</view>
</view> </view>
</view> </view>
<!-- 建议提问 --> <!-- 建议提问 -->
@@ -365,6 +370,15 @@
}" }"
class="page-to-bottom" class="page-to-bottom"
> >
<view class="down-icon-wrap">
<image
v-if="chatMessageListLength > 0 && !isScrollToBottom && !loading"
:src="webUrl + '/aiChat/down.png'"
class="icon down-icon"
mode="widthFix"
@click="scrollToBottomHandle"
/>
</view>
<view class="container"> <view class="container">
<view <view
v-if="chatNumber" v-if="chatNumber"
@@ -378,13 +392,6 @@
/> />
开启新对话 开启新对话
</view> </view>
<image
v-if="chatMessageListLength > 0 && !isScrollToBottom && !loading"
:src="webUrl + '/aiChat/down.png'"
class="icon"
mode="widthFix"
@click="scrollToBottomHandle"
/>
<view <view
v-for="(item, index) in bottomTools" v-for="(item, index) in bottomTools"
:key="index" :key="index"
@@ -414,14 +421,29 @@
form-module="history" form-module="history"
@enter-history="audioStopHandle" @enter-history="audioStopHandle"
/> />
<ProductWindow
ref="attrWindow"
:attr="attr"
:cart-num="cart_num"
:show-ok="!showGiftBtn"
:is-gift="showGiftBtn"
:padding-bottom="'60px'"
class-name="ai-product-window"
ok-text="立即购买"
@changeFun="changeFun"
@ok="buyNowOrGiftBuyReq(1)"
@gift="buyNowOrGiftBuyReq(2)"
/>
</view> </view>
</template> </template>
<script> <script>
import { chatMixinsV2 } from '../mixins/chatMixinsV2.js' import { chatMixinsV2 } from '../mixins/chatMixinsV2.js'
import goCartMixin from '@/mixins/goCartMixins'
import AiHistoryList from '../components/historyList' import AiHistoryList from '../components/historyList'
import BottomSend from '../components/bottomSend.vue' import BottomSend from '../components/bottomSend.vue'
import OrderItem from '../components/orderItem.vue' import OrderItem from '../components/orderItem.vue'
import ProductWindow from '@/components/ProductWindow'
import { import {
historyChatMessage historyChatMessage
} from '@/api/chat/index' } from '@/api/chat/index'
@@ -431,9 +453,10 @@ export default {
components: { components: {
AiHistoryList, AiHistoryList,
BottomSend, BottomSend,
OrderItem OrderItem,
ProductWindow
}, },
mixins: [chatMixinsV2], mixins: [chatMixinsV2, goCartMixin],
data() { data() {
return { return {
pageTitle: '' pageTitle: ''
@@ -489,7 +512,8 @@ export default {
type: -2, type: -2,
showMoreInfo: {}, showMoreInfo: {},
currentSwiperIndex: 0, currentSwiperIndex: 0,
showChangeBtn: false showChangeBtn: false,
changeIsRotate: false
} }
if (item.cardData) { if (item.cardData) {
const { contentType, finish, items = [] } = item.cardData const { contentType, finish, items = [] } = item.cardData
+1 -1
View File
@@ -130,7 +130,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.image-recognition-result-page { .image-recognition-result-page {
min-height: 100vh; min-height: 100vh;
background: #F5F8FF; background: #fff;
.page-body { .page-body {
min-height: 100vh; min-height: 100vh;
+53 -24
View File
@@ -1,6 +1,9 @@
<template> <template>
<view <view
:class="scrollTop > 0 ? 'page-scroll' : ''" :class="{
'page-scroll': scrollTop > 0,
'new-chat': chatMessageListLength === 0
}"
class="fix-tabbar-page" class="fix-tabbar-page"
> >
<hx-navbar <hx-navbar
@@ -12,7 +15,7 @@
color="#333" color="#333"
transparent="auto" transparent="auto"
barPlaceholder="hidden" barPlaceholder="hidden"
title="云灵AI助手" title="云灵"
@click-left="clickBackHandle" @click-left="clickBackHandle"
/> />
<page-container <page-container
@@ -99,9 +102,12 @@
<view class="topic-wrap"> <view class="topic-wrap">
<view class="title"> <view class="title">
<view class="title-left">大家都在问</view> <view class="title-left">大家都在问</view>
<view class="title-right" @click="loadData"> <view class="title-right" @click="loadData('click')">
<image <image
:src="webUrl + '/aiChat/icon-53.png'" :src="webUrl + '/aiChat/icon-53.png'"
:class="{
'rotate': topicIsRotate
}"
class="icon" class="icon"
mode="widthFix" mode="widthFix"
/> />
@@ -237,8 +243,6 @@
<!-- 换一换 --> <!-- 换一换 -->
<view <view
v-if="!item.showCursor && v-if="!item.showCursor &&
item.nodes &&
item.nodes.length &&
!item.isError && !item.isError &&
(item.orderList.length > 0 || (item.orderList.length > 0 ||
item.giftGoodsList.length > 0 || item.giftGoodsList.length > 0 ||
@@ -282,7 +286,7 @@
mode="widthFix" mode="widthFix"
lazy-load lazy-load
/> />
<text class="s-name">{{ goodItem.storeName }}</text> <text class="s-name">{{ goodItem.merName ||goodItem.storeName }}</text>
<u-icon name="arrow-right" color="#999" size="12"></u-icon> <u-icon name="arrow-right" color="#999" size="12"></u-icon>
</view> </view>
<view class="title one-t">{{ goodItem.name }}</view> <view class="title one-t">{{ goodItem.name }}</view>
@@ -337,7 +341,7 @@
{{ hotel.hotelTypeName }} {{ hotel.hotelTypeName }}
</view> </view>
<image <image
:src="hotel.img" :src="hotel.img + ((hotel.img && hotel.img.indexOf('.mp4') > -1) ? '?vframe/jpg/offset/1' : '')"
class="img" class="img"
lazy-load lazy-load
/> />
@@ -433,12 +437,17 @@
" "
class="change-btn" class="change-btn"
> >
<view class="change-btn-content" @click="analyzeKeywordsChangeHandle(item.conversationId, item)">
<image <image
:src="webUrl + '/aiChat/icon-change.png'" :src="webUrl + '/aiChat/icon-53.png'"
:class="{
'rotate': item.changeIsRotate
}"
class="icon" class="icon"
mode="widthFix" mode="widthFix"
@click="analyzeKeywordsChangeHandle(item.conversationId, item)"
/> />
换一换
</view>
</view> </view>
</view> </view>
<!-- 建议提问 --> <!-- 建议提问 -->
@@ -482,6 +491,15 @@
}" }"
class="page-to-bottom" class="page-to-bottom"
> >
<view class="down-icon-wrap">
<image
v-if="chatMessageListLength > 0 && !isScrollToBottom && !loading"
:src="webUrl + '/aiChat/down.png'"
class="icon down-icon"
mode="widthFix"
@click="scrollToBottomHandle"
/>
</view>
<view class="container"> <view class="container">
<view <view
v-if="chatNumber" v-if="chatNumber"
@@ -495,13 +513,6 @@
/> />
开启新对话 开启新对话
</view> </view>
<image
v-if="chatMessageListLength > 0 && !isScrollToBottom && !loading"
:src="webUrl + '/aiChat/down.png'"
class="icon"
mode="widthFix"
@click="scrollToBottomHandle"
/>
<view <view
v-for="(item, index) in bottomTools" v-for="(item, index) in bottomTools"
:key="index" :key="index"
@@ -537,7 +548,8 @@
:cart-num="cart_num" :cart-num="cart_num"
:show-ok="!showGiftBtn" :show-ok="!showGiftBtn"
:is-gift="showGiftBtn" :is-gift="showGiftBtn"
:padding-bottom="bottomSafeDistance + 'px'" :padding-bottom="'60px'"
class-name="ai-product-window"
ok-text="立即购买" ok-text="立即购买"
@changeFun="changeFun" @changeFun="changeFun"
@ok="buyNowOrGiftBuyReq(1)" @ok="buyNowOrGiftBuyReq(1)"
@@ -573,7 +585,8 @@ export default {
animationStr: '', animationStr: '',
settingInfo: {}, settingInfo: {},
topicList: [], topicList: [],
onlyOneToAddCart: false onlyOneToAddCart: false,
topicIsRotate: false
} }
}, },
onLoad(options) { onLoad(options) {
@@ -603,7 +616,11 @@ export default {
this.loadData() this.loadData()
}) })
}, },
loadData() { loadData(type = '') {
if (this.topicIsRotate) return
if (type === 'click') {
this.topicIsRotate = true
}
getAiSystemInfoTopic().then(res => { getAiSystemInfoTopic().then(res => {
const { success, data } = res const { success, data } = res
if (success) { if (success) {
@@ -619,11 +636,15 @@ export default {
} }
list.sort(() => Math.random() - 0.5) list.sort(() => Math.random() - 0.5)
this.topicList = list.slice(0, 3) this.topicList = list.slice(0, 3)
setTimeout(() => {
this.topicIsRotate = false
}, 1000)
} }
}) })
}, },
// 创建新会话 // 创建新会话
createNewHandle() { createNewHandle() {
this.closeAttrWindow()
if (this.audioContext) { if (this.audioContext) {
this.audioContext.stop() this.audioContext.stop()
} }
@@ -704,8 +725,8 @@ export default {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
height: calc(100vh - 220rpx); height: calc(100vh - 240rpx);
padding: 0 0 220rpx 0; padding: 0 0 240rpx 0;
box-sizing: border-box; box-sizing: border-box;
} }
.focus-guide-wrap { .focus-guide-wrap {
@@ -731,7 +752,7 @@ export default {
font-size: 34rpx; font-size: 34rpx;
} }
.content { .content {
padding: 30rpx 0 0 0; padding: 30rpx 24rpx 0 24rpx;
color: #3D4CF0; color: #3D4CF0;
} }
} }
@@ -755,8 +776,12 @@ export default {
} }
.icon { .icon {
display: flex; display: flex;
width: 40rpx; width: 32rpx;
height: 32rpx; height: 32rpx;
margin: 0 8rpx 0 0;
&.rotate {
animation: spin-icon 1s linear;
}
} }
} }
.list-wrap { .list-wrap {
@@ -766,15 +791,19 @@ export default {
.list-cont { .list-cont {
padding: 0 24rpx; padding: 0 24rpx;
box-sizing: border-box; box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: flex-start;
.list-item { .list-item {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 12rpx 18rpx; padding: 6rpx 12rpx;
margin: 0 0 24rpx 0; margin: 0 0 24rpx 0;
border-radius: 12rpx; border-radius: 12rpx;
border: 1rpx solid #ddd; border: 1rpx solid #ddd;
font-size: 28rpx; font-size: 28rpx;
color: #666; color: #666;
background-color: #fff;
.icon { .icon {
display: block; display: block;
width: 24rpx; width: 24rpx;
+1 -1
View File
@@ -52,7 +52,7 @@ export function getCompletionsV3(params) {
// 通过关键字-搜索列表-换一换 // 通过关键字-搜索列表-换一换
export function getAnalyzeKeywordsChangeV3(data) { export function getAnalyzeKeywordsChangeV3(data) {
return request.post('/v1/chat/goods/refresh', data, { login: true }) return request.post('/v1/chat/skill/refresh', data, { login: true })
} }
// 以图搜索商品 // 以图搜索商品
+41 -11
View File
@@ -12,10 +12,14 @@ page {
min-height: 100vh; min-height: 100vh;
background: linear-gradient(155deg, rgba(61, 76, 241, 0.15) 0%, rgba(255,255,255,1) 25%, rgba(255,255,255,1) 75%, rgba(61, 76, 241, 0.15) 100%); background: linear-gradient(155deg, rgba(61, 76, 241, 0.15) 0%, rgba(255,255,255,1) 25%, rgba(255,255,255,1) 75%, rgba(61, 76, 241, 0.15) 100%);
// background-color: #fff; // background-color: #fff;
// background-size: 100% 100vh; // background-size: 100% calc(100vh - 160rpx);
// background-image: url(https://wxapp.xdd618.com/api/file/pic/aiChat/bg.png); // background-image: url(https://wxapp.xdd618.com/api/file/pic/aiChat/bg.png);
// background-repeat: no-repeat; // background-repeat: no-repeat;
// background-attachment: fixed; // background-attachment: fixed;
&.new-chat {
background-size: 100% calc(100vh - 160rpx);
background-repeat: no-repeat;
}
.fix-tabbar-header { .fix-tabbar-header {
position: fixed; position: fixed;
top: 0; top: 0;
@@ -90,12 +94,11 @@ page {
} }
.page-to-bottom { .page-to-bottom {
position: fixed; position: fixed;
bottom: 180rpx; bottom: 160rpx;
left: 0; left: 0;
right: 0; right: 0;
z-index: 8; z-index: 8;
transition: all 0.2s; transition: all 0.2s;
overflow-x: auto;
&.focus { &.focus {
transform: translateY(-40rpx); transform: translateY(-40rpx);
} }
@@ -104,8 +107,9 @@ page {
flex-wrap: nowrap; flex-wrap: nowrap;
align-items: center; align-items: center;
width: 100%; width: 100%;
padding: 0 24rpx; padding: 24rpx;
box-sizing: border-box; box-sizing: border-box;
overflow-x: auto;
} }
.new-chat { .new-chat {
display: flex; display: flex;
@@ -119,7 +123,7 @@ page {
font-size: 30rpx; font-size: 30rpx;
color: #fff; color: #fff;
background-color: #3D4CF1; background-color: #3D4CF1;
box-shadow: 0rpx 6rpx 20rpx rgba(74,74,74,0.1); box-shadow: 0rpx 0 12rpx rgba(74,74,74,0.2);
.btn-icon { .btn-icon {
display: block; display: block;
width: 40rpx; width: 40rpx;
@@ -127,14 +131,19 @@ page {
margin: 0 8rpx 0 0; margin: 0 8rpx 0 0;
} }
} }
.down-icon-wrap {
display: flex;
justify-content: flex-end;
padding: 0 24rpx 0 0;
}
.icon { .icon {
display: block; display: block;
flex-shrink: 0; flex-shrink: 0;
width: 64rpx; width: 64rpx;
height: 64rpx; height: 64rpx;
margin: 0 20rpx 0 0;
border-radius: 16rpx; border-radius: 16rpx;
box-shadow: 0rpx 6rpx 20rpx rgba(74,74,74,0.1); background-color: #fff;
box-shadow: 0rpx 0 12rpx rgba(74,74,74,0.2);
} }
.bottom-tool-item { .bottom-tool-item {
display: flex; display: flex;
@@ -149,6 +158,9 @@ page {
color: #333; color: #333;
background-color: #fff; background-color: #fff;
box-shadow: 0rpx 6rpx 20rpx rgba(74,74,74,0.1); box-shadow: 0rpx 6rpx 20rpx rgba(74,74,74,0.1);
&:last-child {
margin-right: 0;
}
.tool-icon { .tool-icon {
display: block; display: block;
width: 32rpx; width: 32rpx;
@@ -1081,10 +1093,21 @@ page {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 0 0 20rpx 0; padding: 0 0 20rpx 0;
.change-btn-content {
display: flex;
align-items: center;
justify-content: center;
color: #3D4CF0;
font-size: 28rpx;
.icon { .icon {
display: block; display: block;
width: 124rpx; width: 32rpx;
height: 38rpx; height: 32rpx;
margin: 0 8rpx 0 0;
&.rotate {
animation: spin-icon 1s linear;
}
}
} }
} }
} }
@@ -1224,8 +1247,6 @@ page {
} }
} }
} }
.page-to-bottom {
}
.recommend-goods-wrap { .recommend-goods-wrap {
width: calc(100% + 48rpx); width: calc(100% + 48rpx);
padding: 24rpx 0; padding: 24rpx 0;
@@ -1335,3 +1356,12 @@ page {
margin: 24rpx 0 0 0; margin: 24rpx 0 0 0;
} }
} }
@keyframes spin-icon {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(720deg);
}
}
+6
View File
@@ -37,6 +37,12 @@ input{line-height: normal; box-sizing:border-box;}
.line1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width: 100%;} .line1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width: 100%;}
.line2{word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;} .line2{word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.mask{position:fixed;top:0;left:0;right:0;bottom:0;z-index:55;background-color:rgba(0,0,0,0.5);} .mask{position:fixed;top:0;left:0;right:0;bottom:0;z-index:55;background-color:rgba(0,0,0,0.5);}
.ai-product-window.product-window {
z-index: 1002;
}
.ai-product-window.mask {
z-index: 1001;
}
+19 -2
View File
@@ -1,6 +1,13 @@
<template> <template>
<view> <view>
<view class="product-window" :class="attr.cartAttr === true ? 'on' : ''" :style="{paddingBottom: paddingBottom}"> <view
:class="{
'on': attr.cartAttr === true,
[className]: className
}"
:style="{paddingBottom: paddingBottom}"
class="product-window"
>
<view class="textpic acea-row row-between-wrapper"> <view class="textpic acea-row row-between-wrapper">
<view class="pictrue" @click="previewImg(attrObj.productSelect.image)"> <view class="pictrue" @click="previewImg(attrObj.productSelect.image)">
<image :src="attrObj.productSelect.image" class="image" /> <image :src="attrObj.productSelect.image" class="image" />
@@ -84,7 +91,13 @@
>送给朋友</u-button> >送给朋友</u-button>
</view> </view>
</view> </view>
<view class="mask" @touchmove.prevent :hidden="attr.cartAttr === false" @click="closeAttr"></view> <view
:hidden="attr.cartAttr === false"
:class="className"
class="mask"
@touchmove.prevent
@click="closeAttr"
></view>
</view> </view>
</template> </template>
<script> <script>
@@ -122,6 +135,10 @@ export default {
okText: { okText: {
type: String, type: String,
default: '加入购物车' default: '加入购物车'
},
className: {
type: String,
default: ''
} }
}, },
data() { data() {
+16 -6
View File
@@ -5,13 +5,15 @@
v-if="!item.isFarmerShop" v-if="!item.isFarmerShop"
:src="item[imageKey]" :src="item[imageKey]"
class="img" class="img"
lazy-load
/> />
<image <image
:src="item.farmerShopCover" :src="item.farmerShopCover"
v-if="item.farmerShopCoverType === 1 && item.isFarmerShop" v-if="item.farmerShopCoverType === 1 && item.isFarmerShop"
class="img" class="img"
mode="heightFix|widthFix"> mode="heightFix|widthFix"
</image> lazy-load
/>
<image <image
:src="item.farmerShopCover + '?vframe/jpg/offset/1'" :src="item.farmerShopCover + '?vframe/jpg/offset/1'"
mode="heightFix|widthFix" mode="heightFix|widthFix"
@@ -20,30 +22,35 @@
:show-fullscreen-btn="false" :show-fullscreen-btn="false"
:show-play-btn="false" :show-play-btn="false"
class="img" class="img"
:poster="item.farmerShopCover + '?vframe/jpg/offset/1'"> :poster="item.farmerShopCover + '?vframe/jpg/offset/1'"
</image> lazy-load
/>
<image <image
v-if="item.isOldBrand" v-if="item.isOldBrand"
:src="webUrl + '/home/old-mark.png'" :src="webUrl + '/home/old-mark.png'"
class="mark-img" class="mark-img"
lazy-load
/> />
<image <image
v-if="item.isGiftCard" v-if="item.isGiftCard"
style="left: 0;width: 120rpx;" style="left: 0;width: 120rpx;"
:src="webUrl + '/home/gift-tag.png'" :src="webUrl + '/home/gift-tag.png'"
class="mark-img" class="mark-img"
lazy-load
/> />
<image <image
v-if="item.isLandmarkGoods" v-if="item.isLandmarkGoods"
:src="webUrl + '/home/mark-land.png'" :src="webUrl + '/home/mark-land.png'"
class="mark-img" class="mark-img"
style="right: 20rpx" style="right: 20rpx"
lazy-load
/> />
<image <image
v-if="item.isCountyFamous" v-if="item.isCountyFamous"
:src="webUrl + '/home/qixian-mark.png'" :src="webUrl + '/home/qixian-mark.png'"
class="mark-img" class="mark-img"
lazy-load
/> />
<image <image
v-if="item.isIch" v-if="item.isIch"
@@ -55,6 +62,7 @@
v-if="item.isFarmerShop" v-if="item.isFarmerShop"
:src="webUrl + '/orderIcon/nm.png'" :src="webUrl + '/orderIcon/nm.png'"
class="mark-img-nm" class="mark-img-nm"
lazy-load
/> />
</view> </view>
<view v-if="item.isFarmerShop" class="more-t v12-pt-2 v12-font-bold v12-font-28 v12-px-2" >{{ item.farmerShopContent }}</view> <view v-if="item.isFarmerShop" class="more-t v12-pt-2 v12-font-bold v12-font-28 v12-px-2" >{{ item.farmerShopContent }}</view>
@@ -83,12 +91,14 @@
<text class="v12-font-20"> <text class="v12-font-20">
</text> </text>
{{ item[priceKey] }}</text> {{ item[priceKey] }}
</text>
</view> </view>
<view v-if="item.isNegotiable === 0" class="btn" @click.stop="$emit('add', item)"> <view v-if="item.isNegotiable === 0" class="btn" @click.stop="$emit('add', item)">
<image <image
:src="webUrl + '/home/icon-cart.png'" :src="webUrl + '/home/icon-cart.png'"
class="img" class="img"
lazy-load
/> />
</view> </view>
</view> </view>
@@ -97,7 +107,7 @@
v-if="item.isFarmerShop" v-if="item.isFarmerShop"
class="v12-justify-start v12-align-center v12-pt-2 v12-px-2 v12-pb-2"> class="v12-justify-start v12-align-center v12-pt-2 v12-px-2 v12-pb-2">
<view class="btn v12-mr-2"> <view class="btn v12-mr-2">
<image :src="item.farmerShopLogo" class="nm-img-logo v12-radius-100"></image> <image :src="item.farmerShopLogo" class="nm-img-logo v12-radius-100" lazy-load />
</view> </view>
<view class="one-t v12-font-24 v12-dark1-text" style="width:230rpx">{{ item.farmerShopName }}/{{ item.farmerShopCityName || '-' }}</view> <view class="one-t v12-font-24 v12-dark1-text" style="width:230rpx">{{ item.farmerShopName }}/{{ item.farmerShopCityName || '-' }}</view>
</view> </view>
+2 -2
View File
@@ -885,7 +885,7 @@
{ {
"path": "views/index", "path": "views/index",
"style": { "style": {
"navigationBarTitleText": "云灵AI助手", "navigationBarTitleText": "云灵",
"navigationStyle": "custom", "navigationStyle": "custom",
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
@@ -893,7 +893,7 @@
{ {
"path": "views/history", "path": "views/history",
"style": { "style": {
"navigationBarTitleText": "云灵AI助手", "navigationBarTitleText": "云灵",
"navigationStyle": "custom", "navigationStyle": "custom",
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
-4
View File
@@ -39,10 +39,6 @@
@click="toTravelResidence" @click="toTravelResidence"
/> />
<image <image
<<<<<<< HEAD
=======
v-show="partnerType === 'province_partner' || partnerType === ''"
>>>>>>> 320bda6ed8582fd2c81f73c272076e2b218418ab
:src="images.experienceStoreImage" :src="images.experienceStoreImage"
class="img-item" class="img-item"
mode="widthFix" mode="widthFix"