页面绘制

This commit is contained in:
杨航
2025-08-25 17:08:28 +08:00
parent 8be7dbc060
commit 766e101282
16 changed files with 715 additions and 59 deletions
+5 -5
View File
@@ -26,11 +26,11 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
# VITE_APP_BASE_H5_API_Url = 'https://aitstest.jlbank.com.cn:7001'
VITE_APP_BASE_H5_API_Url = 'http://25.18.122.65:7001'
VITE_APP_BASE_H5_API_Url_TRAAPP = 'http://25.64.16.130:9601'
VITE_APP_BASE_H5_API_Url_TRASTUDY = 'http://25.64.16.130:9602'
VITE_APP_BASE_H5_API_Url_TRAASK = 'http://25.64.16.144:9605'
# VITE_APP_BASE_H5_API_Url_TRAAPP = 'http://25.64.16.130:9601'
# VITE_APP_BASE_H5_API_Url_TRASTUDY = 'http://25.64.16.130:9602'
# VITE_APP_BASE_H5_API_Url_TRAASK = 'http://25.64.16.144:9605'
# 王洋洋
VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://25.64.16.140:9604'
# VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://25.64.16.140:9604'
# 于嘉文
#VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://25.64.16.143:9604'
# VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://25.64.16.143:9604'
+15 -1
View File
@@ -11,7 +11,21 @@ export const queryHotQuestionApi = (data) => {
});
};
// 获取问答历史
export const queryAskBatchSessionPaging = (data) => {
return request({
url: '/traask/traAskchatSession/queryAskBatchSessionPaging',
method: 'post',
data
});
};
// 问答详情 /traAskchatSession/queryAskHisByBatchIdPaging
export const queryAskHisByBatchIdPaging = (data) => {
return request({
url: '/traask/traAskchatSession/queryAskHisByBatchIdPaging',
method: 'post',
data
});
};
// 问答反馈
export const insertTraAskFeedback = (data) => {
return request({
+28 -26
View File
@@ -1,8 +1,7 @@
<template>
<view class="course-item-box" @click="clickItem">
<view class="img-box-view">
<ImagePreview class="img-box" :imgId="itemInfo.imgId" :isCache="true" width="340" height="340" mode="aspectFill"></ImagePreview>
<ImagePreview class="img-box" :imgId="itemInfo.imgId" :isCache="true" width="225" height="170" mode="aspectFill"></ImagePreview>
<view class="item-grade">{{itemInfo.evalGrade}}</view>
<!-- <image class="item-grade" mode="aspectFill"></view> -->
</view>
@@ -37,8 +36,8 @@
})
},
activeTag:{
default: '',
type: String
default: () => [],
type: Array
}
},
data() {
@@ -56,8 +55,8 @@
computed:{
tagsShowList(){
if(!this.activeTag) return this.itemInfo.tagCataList
let _arr = this.itemInfo.tagCataList.filter(t=> t.tagId === this.activeTag)
let _arr1 = this.itemInfo.tagCataList.filter(t=> t.tagId !== this.activeTag)
let _arr = this.itemInfo.tagCataList.filter(t=> this.activeTag.includes(t.tagId))
let _arr1 = this.itemInfo.tagCataList.filter(t=> !this.activeTag.includes(t.tagId))
return _arr.concat(_arr1)
}
},
@@ -73,8 +72,9 @@
.course-item-box{
padding: 15rpx;
overflow: hidden;
width: 100%;
.img-box-view{
width: 170rpx;
width: 225rpx;
height: 170rpx;
float: left;
position: relative;
@@ -82,7 +82,7 @@
overflow: hidden;
box-shadow: 0 0 10rpx #c3c3c3;
.img-box{
width: 170rpx;
width: 225rpx;
height: 170rpx;
}
.item-grade{
@@ -101,7 +101,7 @@
}
}
.cont-box{
width: calc(100% - 170rpx);
width: calc(100% - 225rpx);
box-sizing: border-box;
padding: 0 10rpx 0 20rpx;
float: left;
@@ -118,23 +118,25 @@
padding-bottom: 0 !important;
.item-tag-view{
white-space: nowrap;
height: 34rpx;
.item-tag{
height: 32rpx;
line-height: 32rpx;
font-size: 20rpx;
background-color: #eee;
color: rgb(51, 51, 51);
padding: 0 20rpx;
border-radius: 16rpx;
margin-right: 20rpx;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 200rpx;
box-sizing: border-box;
}
height: 38rpx;
.item-tag{
height: 38rpx;
line-height: 36rpx;
box-sizing: border-box;
font-size: 20rpx;
background-color: #fff;
color: #ffa150;
border: 1rpx solid #ffa150;
padding: 0 20rpx;
border-radius: 8rpx;
margin-right: 20rpx;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 200rpx;
box-sizing: border-box;
}
}
}
.item-publish,
@@ -16,7 +16,6 @@
ref,
onMounted,
computed,
defineProps,
watch
} from 'vue'
import {
@@ -3,7 +3,7 @@
<image :src="imgUrlShow" fit="cover" :mode="mode" @click="showDetail" style="width: 100%;height: 100%;"></image>
<uv-overlay :show="showModel" opacity=".6" @click="showModel = false">
<view class="overlay-box">
<image class="detail-img" :src="imgUrlShow" fit="cover" :mode="mode"></image>
<image class="detail-img" :src="imgUrlShow" :mode="mode"></image>
</view>
</uv-overlay>
</view>
+9
View File
@@ -297,6 +297,15 @@
"titleNView": false
}
}
},
{
"path": "pages/search/result",
"style": {
"navigationBarTitleText": "",
"app-plus": {
"titleNView": false
}
}
}
],
"tabBar": {
+73 -19
View File
@@ -29,14 +29,19 @@
<uv-icon class="filter-icon" name="list"/>
</view>
<view :class="['filter-list',showFilterList?'show':'']">
<view class="filter-type" v-for="item in tagsTree" :key="item.value">
<!-- .filter(t=>(t.children||[]).length>0) -->
<view class="filter-type-title">{{item.label}}</view>
<scroll-view :scroll-x="true" class="filter-type-list">
<view :class="['filter-type-item', activeTag===itemT.value?'is-active':'']" v-for="itemT in (item.children||[])" @click="chooseTag(itemT)">
{{itemT.label}}
</view>
</scroll-view>
<scroll-view :scroll-y="true" class="scroll-box-tags">
<view class="filter-type" v-for="item in tagsTree" :key="item.value">
<!-- .filter(t=>(t.children||[]).length>0) -->
<view class="filter-type-title">{{item.label}}</view>
<scroll-view :scroll-x="true" class="filter-type-list">
<view :class="['filter-type-item', activeTag.includes(itemT.value)?'is-active':'']" v-for="itemT in (item.children||[])" @click="chooseTag(itemT)">
{{itemT.label}}
</view>
</scroll-view>
</view>
</scroll-view>
<view class="btns-box">
<view class="btn-sub" @click="showFilterList = false">确定</view>
</view>
</view>
<uv-scroll-list class="tags-view" :indicator="false">
@@ -45,7 +50,7 @@
plain
class="tags-item"
size="mini"
:type="activeTag === ''?'primary':'info'"
:type="activeTag.includes('')?'primary':'info'"
@click="chooseTag({value:''})"
></uv-tags>
<uv-tags :text="item.label"
@@ -53,7 +58,7 @@
:key="item.value"
shape="circle"
plain
:type="activeTag === item.value?'primary':'info'"
:type="activeTag.includes(item.value)?'primary':'info'"
@click="chooseTag(item)"
class="tags-item" size="mini"
></uv-tags>
@@ -154,7 +159,7 @@ import { onShow } from "@dcloudio/uni-app"
const activeTab = ref('全部')
const activeCourseType = ref('')
const activePrdlineType = ref('')
const activeTag = ref('')
const activeTag = ref([''])
const courseTypeList = ref([])
const coursePrdlineList = ref([])
const tagsTree = ref([])
@@ -167,8 +172,17 @@ import { onShow } from "@dcloudio/uni-app"
const pageTopPadding = computed(() => statusBarHeight + 'px')
// 点击标签
const chooseTag = (item)=>{
activeTag.value = item.value
showFilterList.value = false
if(!item.value){
activeTag.value = ['']
return
}
activeTag.value = activeTag.value.filter((t=>!!t))
if(activeTag.value.includes(item.value)){
activeTag.value = activeTag.value.filter((t=>t !== item.value))
}else{
activeTag.value.push(item.value)
}
// showFilterList.value = false
}
// 点击生产线分类
const changePrdLine = (item)=>{
@@ -194,9 +208,23 @@ import { onShow } from "@dcloudio/uni-app"
const courseListBase = ref([])
const courseList = computed(()=>{
return activeTag.value
?courseListBase.value.filter(t=>(t.tagCataList||[]).map(k=>k.tagId).indexOf(activeTag.value)>=0)
:courseListBase.value
if(activeTag.value.length > 0 && !!activeTag.value[0]){
return courseListBase.value.filter(t=>{
let _tags = (t.tagCataList||[]).map(k=>k.tagId)
let _pass = false
activeTag.value.forEach(k => {
if(_tags.includes(k)){
_pass = true
}
})
return _pass
})
}else{
return courseListBase.value
}
// return activeTag.value.length > 0
// ?courseListBase.value.filter(t=>(t.tagCataList||[]).map(k=>k.tagId).indexOf(activeTag.value)>=0)
// :courseListBase.value
})
// 整理树形
const courseListTree = computed(()=>{
@@ -376,14 +404,20 @@ import { onShow } from "@dcloudio/uni-app"
top: 84rpx;
left:0;
width: 100%;
height: 508rpx;
overflow-y: auto;
height: 588rpx;
padding-bottom: 80rpx;
overflow-y: hidden;
z-index: 2;
background-color: #f9f9f9;
box-shadow: 0rpx 12rpx 20rpx rgba(160,160,160,.25);
border-radius: 0 0 0rpx 0rpx;
padding: 0rpx 25rpx;
box-sizing: border-box;
position: relative;
.scroll-box-tags{
height: 508rpx;
padding: 0rpx 25rpx;
box-sizing: border-box;
}
.filter-type{
padding: 10rpx 0;
box-sizing: border-box;
@@ -424,6 +458,26 @@ import { onShow } from "@dcloudio/uni-app"
margin-top: 20rpx;
}
}
.btns-box{
height: 80rpx;
position: absolute;
background-color: #fff;
bottom: 0;
left: 0;
width: 100%;
text-align: center;
padding-top: 10rpx;
.btn-sub{
display: inline-block;
text-align: center;
background-color: #06f;
height: 60rpx;
line-height: 60rpx;
padding: 0 40rpx;
color: #fff;
border-radius: 8rpx;
}
}
}
.filter-list{
display: none;
+19 -4
View File
@@ -6,8 +6,8 @@
对话记录
</view>
<view class="history-list">
<view class="history-item" v-for="item in 8" @click="chooseHistory(item)">
{{'信息补录操作时需录入什么信息信息补录操作时需录入什么信息'}}
<view class="history-item" v-for="item in historyList" :key="item.reqBatch" @click="chooseHistory(item)">
{{item.sseContent}}
</view>
</view>
</view>
@@ -20,18 +20,32 @@
reactive,
computed,
onMounted,
nextTick
nextTick
} from 'vue';
import { queryAskBatchSessionPaging } from '@/api/dialog.js'
const emit = defineEmits(['showDetail'])
const historyPopupRef = ref()
const historyList = ref([])
const open = () => {
openFeedback(true)
}
const close = () => {
openFeedback()
}
const openFeedback = (status) => {
const pageInfo = ref({
page: 1,
limit: 20
})
const getList = async () => {
try {
const res = await queryAskBatchSessionPaging(pageInfo.value)
historyList.value = historyList.value.concat(res.body|| [])
}catch{}finally{}
}
const openFeedback = async (status) => {
if (status) {
await getList()
historyPopupRef.value.open('left')
} else {
historyPopupRef.value.close()
@@ -39,6 +53,7 @@
}
const chooseHistory = (item) => {
console.log(item)
emit('showDetail',item)
}
defineExpose({
open,close
+27 -2
View File
@@ -85,7 +85,7 @@
:isDisabled="false" />
<!-- 反馈组件 -->
<Feedback ref="feedbackRef"></Feedback>
<History ref="historyRef"></History>
<History ref="historyRef" @showDetail="showHistoryDetail"></History>
<PreviewVue ref="previewRef" />
</scroll-view>
</view>
@@ -134,7 +134,8 @@
} from "@/api/common.js"
import {
queryHotQuestionApi,
insertTraAskFeedback
insertTraAskFeedback,
queryAskHisByBatchIdPaging
} from "@/api/dialog.js"
import Feedback from './components/feedback.vue'
import History from './components/history.vue'
@@ -436,6 +437,30 @@
const showHistory = () => {
historyRef.value.open()
}
const showHistoryDetail = (item) => {
queryAskHisByBatchIdPaging({
batchId: item.reqBatch,
page: 1,
limit: 100
}).then(res=> {
console.log(res)
talkingList.value = (res.body || []).map((t,index)=> {
return {
type: t.chatRole === 'TCH'? 'answer':'question',
talkingText: t.respContent,
isLoading: false,
id: t.askId + index,
talkingVoice: '',
reqBatch: item.reqBatch,
intrctWay: '01', //01-文本;02-语音;03-图片
intrctContent: t.respContent,
bucketKey: ''
}
})
historyRef.value.close()
})
}
const routerTo = (type) => {
switch (type) {
case 'AI学':
+529
View File
@@ -0,0 +1,529 @@
<template>
<view class="main_div max_page">
<view class="fixed_search_div">
<view class="back_div" @click="common.navigateBack()">
<view class="back-icon"></view>
</view>
<view class="fixed_search_input_div fl1">
<uv-input v-model="inputValue" shape="circle" :customStyle="fixedCustomStyles" confirmType="search"
placeholderStyle='color:#999999;font-size:26rpx' placeholder="请输入关键字" :focus="true" :adjust-position="false"
@confirm="search">
<template #suffix><uv-icon name="search" color="#2c8ef2" size="24" @click="search()"></uv-icon></template>
</uv-input>
</view>
</view>
<!-- 主体 -->
<view class="search_content">
<view class="tabs-view">
<uv-tabs :list="tabList" @click="changeTab" :scrollable="false" active-style="font-weight:bold; color:#000;"
line-color="#06f"></uv-tabs>
</view>
<scroll-view class="lists-view" :scroll-y="true">
<view class="ability-view model-view">
<view class="view-title">
<image src="@/static/images/search/result/ability.png" class="view-title-img"></image>
功能
</view>
<view class="view-list">
<view class="ability-view-item" v-for="item in abilityListShow" @click="clickAbility(item)">
<image class="icon" v-if="item.type === 'course'" src="@/static/images/index/navigation_course.png">
</image>
<image class="icon" v-if="item.type === 'dialog'"
src="@/static/images/index/navigation_question_answering.png"></image>
<image class="icon" v-if="item.type === 'test'" src="@/static/images/index/navigation_ai.png"></image>
<image class="icon" v-if="item.type === 'task'" src="@/static/images/index/navigation_learning_tasks.png">
</image>
<image class="icon" v-if="item.type === 'exam'" src="@/static/images/index/navigation_examination.png">
</image>
<image class="icon" v-if="item.type === 'examTest'" src="@/static/images/index/navigation_practice.png">
</image>
<image class="icon" v-if="item.type === 'wrong'"
src="@/static/images/index/navigation_wrong_question.png"></image>
<image class="icon" v-if="item.type === 'analysis'"
src="@/static/images/index/navigation_learning_analysis.png"></image>
<view class="title">{{item.title}}</view>
</view>
</view>
<view class="view-result" v-show="abilityListShow.length === 0">
暂无数据
</view>
</view>
<view class="course-view model-view">
<view class="view-title">
<image src="@/static/images/search/result/course.png" class="view-title-img"></image>
课程
</view>
<view class="view-list course-list">
<course-item class="course-item" v-for="itemC in courseList" :key="itemC.crsNum" :itemInfo="itemC" @clickItem="toCourseDetail(itemC)"/>
<!-- <view class="course-item" v-for="(item,index) in courseList">
<view class="left">
<image-preview class="img-box img" :imgId="item.imgId" mode="aspectFill" :isCache="true" :width="240"
:height="240"></image-preview>
</view>
<view class="right">
<view class="title ellipsis-text">{{item.crsName}}</view>
<view class="tags ellipsis-text">
</view>
<view class="note ellipsis-text">
更新{{(item.mtTime||'').substr(0, 10)}} 丨已学{{item.accmStdyCnt}}
</view>
</view>
</view> -->
</view>
<view class="view-result" v-show="courseList.length === 0">
暂无数据
</view>
</view>
<view class="task-view model-view">
<view class="view-title">
<image src="@/static/images/search/result/task.png" class="view-title-img"></image>
任务
</view>
<view class="view-list">
</view>
<view class="view-result" v-show="taskList.length === 0">
暂无数据
</view>
</view>
<view class="test-view model-view" v-if="false">
<view class="view-title">
<image src="@/static/images/search/result/test.png" class="view-title-img"></image>
AI陪练
</view>
<view class="view-list">
</view>
<view class="view-result" v-show="testList.length === 0">
暂无数据
</view>
</view>
<view class="exam-view model-view">
<view class="view-title">
<image src="@/static/images/search/result/exam.png" class="view-title-img"></image>
考试
</view>
<view class="view-list">
</view>
<view class="view-result" v-show="examList.length === 0">
暂无数据
</view>
</view>
</scroll-view>
</view>
</view>
</template>
<script setup>
import {
ref,
watchEffect,
nextTick,
onMounted,
computed
} from 'vue';
import common from '@/common/common.js'
import {
onShow
} from '@dcloudio/uni-app';
// 静态样式配置
const fixedCustomStyles = {
backgroundColor: "#ffffff",
paddingLeft: "40rpx",
paddingTop: "5px",
paddingBottom: "5px",
border: "none"
}
const inputValue = ref('');
const searchValue = ref('');
const activeTab = ref('')
const tabList = ref([{
name: '全部',
type: 'all'
},
{
name: '功能',
type: 'ability'
},
{
name: '课程',
type: 'course'
},
{
name: '任务',
type: 'task'
},
{
name: 'AI陪练',
type: 'test'
},
{
name: '考试',
type: 'exam'
},
])
const abilityListShow = computed(() => {
if (searchValue.value) {
let _arr = abilityList.value.filter(t => t.title.includes(searchValue.value))
let _sum = 4 - (_arr.length % 4)
if (_sum !== 4) {
for (let i = 0; i < _sum; i++) {
_arr.push({})
}
}
return _arr
} else {
return abilityList.value
}
})
const abilityList = ref([{
title: 'AI学习',
type: 'course',
path: '/pages/course/index',
isTab: true
},
{
title: 'AI问答',
type: 'dialog',
path: '/pages/index/dialog',
params: {
animationType: 'slide-in-bottom'
},
},
{
title: 'AI陪练',
type: 'test',
path: '',
},
{
title: '学习任务',
type: 'task',
path: '/pages/learningTasks/index',
},
{
title: '考试中心',
type: 'exam',
path: '/pages/testingHall/index',
},
{
title: '竞赛练习',
type: 'examTest',
path: '',
},
{
title: '错题本',
type: 'wrong',
path: '/pages/wrongQuestionRecord/index',
},
{
title: '学习分析',
type: 'analysis',
path: '',
},
])
const testList = ref([])
const taskList = ref([])
const examList = ref([])
const courseList = ref([{
"crsId": "CRS0250640161302025082117515100000063160",
"crsNum": "CRS0220",
"crsName": "演示课程名称",
"tagId": "TRACRSCATALOG02506401613020250708174549000295707",
"prdLineId": "TRAPRDLINE02501812207220250714175204000007646",
"issuTm": "2025-08-21 17:54:41",
"imgId": "S3F0250181220722025082117505700000598881",
"imgThumbId": "S3T0250181220722025082117510000000485989",
"evalGrade": 10.00,
"mtTime": "2025-08-25 09:36:47",
"accmStdyCnt": 0,
"tagCataList": [
{
"crsId": "CRS0250640161302025082117515100000063160",
"tagId": "TRATAGCATALOG02506401613020250616100038000091431",
"tagName": "子标签2",
"tagParentId": "TRATAGCATALOG02506401613020250616100022000071334",
"showOrder": 0
},
{
"crsId": "CRS0250640161302025082117515100000063160",
"tagId": "TRATAGCATALOG02501812207220250710091040000005889",
"tagName": "全员必学",
"tagParentId": "TRATAGCATALOG02506401613020250616104856000000355",
"showOrder": 0
}
]
},
{
"crsId": "CRS0250640161302025082119435100000132546",
"crsNum": "CRS0224",
"crsName": "测试简答题mq",
"tagId": "TRACRSCATALOG02506401613020250708174532000241736",
"prdLineId": "TRAPRDLINE02501812207220250714175204000007646",
"issuTm": "2025-08-21 19:44:37",
"imgId": "S3F0250181220722025082119425800000658876",
"imgThumbId": "S3T0250181220722025082119430000000548197",
"evalGrade": 10.00,
"mtTime": "2025-08-25 09:31:34",
"accmStdyCnt": 0,
"tagCataList": [
{
"crsId": "CRS0250640161302025082119435100000132546",
"tagId": "TRATAGCATALOG02506401613020250616100041000105085",
"tagName": "子标签3",
"tagParentId": "TRATAGCATALOG02506401613020250616100022000071334",
"showOrder": 0
},
{
"crsId": "CRS0250640161302025082119435100000132546",
"tagId": "TRATAGCATALOG02501812207220250710091040000005889",
"tagName": "全员必学",
"tagParentId": "TRATAGCATALOG02506401613020250616104856000000355",
"showOrder": 0
}
]
}])
const changeTab = (item) => {
if (!item) return
activeTab.value = item.type
console.log(item)
switch (item.name) {
case 'all':
break;
case 'ability':
break;
case 'course':
break;
case 'task':
break;
case 'test':
break;
case 'exam':
break;
default:
break;
}
}
const clickAbility = (item) => {
if(item.isTab){
common.switchTab(item.path)
}else{
common.navigateTo(item.path,item.params|| {})
}
}
const search = () => {
searchValue.value = inputValue.value
console.log('search', inputValue.value)
}
const toCourseDetail = (item)=>{
console.log(item)
}
</script>
<style scoped lang="scss">
.search_content {
height: calc(100% - 94rpx);
background-color: #fff;
border-radius: 30rpx 30rpx 0 0;
.tabs-view {
height: 84rpx;
}
.lists-view {
height: calc(100% - 90rpx);
box-sizing: border-box;
padding: 24rpx 30rpx;
.model-view {
border: 2px solid #f1f1f1;
border-radius: 15rpx;
padding: 20rpx 24rpx 24rpx;
margin-bottom: 24rpx;
.view-title {
height: 40rpx;
line-height: 40rpx;
padding-left: 50rpx;
position: relative;
font-size: 29rpx;
.view-title-img {
position: absolute;
left: 5rpx;
top: 5rpx;
width: 30rpx;
height: 30rpx;
}
}
.view-list {
// overflow: hidden;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.scroll-view-item {
display: inline-block;
margin-right: 30rpx;
background-color: #ffffff;
border-radius: 22rpx;
box-shadow: #eaeaea 0 0 6rpx;
padding: 32rpx 22rpx 36rpx 26rpx;
}
&.course-list{
margin: 6rpx -20rpx 0;
}
.course-item {
display: flex;
.left {
border-radius: 16rpx;
overflow: hidden;
width: 180rpx;
height: 146rpx;
.img {
width: 100%;
height: 100%;
}
}
.right {
width: calc(100% - 180rpx);
margin-left: 22rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.title {
width: 100%;
font-weight: 500;
font-size: 30rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.note {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 23rpx;
color: #666666;
line-height: 33rpx;
text-align: left;
font-style: normal;
}
.button_div {
display: flex;
justify-content: flex-end;
.button {
text-align: center;
line-height: 62rpx;
width: 138rpx;
height: 62rpx;
background: #EBF1FF;
border-radius: 30rpx;
font-weight: 500;
font-size: 30rpx;
color: #0066FF;
font-style: normal;
margin-right: 10rpx;
}
}
}
}
.ability-view-item {
width: 98rpx;
margin-right: 50rpx;
float: left;
margin-top: 24rpx;
&:nth-child(4n) {
margin-right: 0rpx;
}
.icon {
width: 88rpx;
height: 86rpx;
margin-left: 5rpx;
}
.title {
margin-top: 10rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 25rpx;
white-space: nowrap;
line-height: 35rpx;
text-align: center;
}
}
}
.view-result {
width: 100%;
text-align: center;
height: 100rpx;
line-height: 100rpx;
color: #999;
}
}
}
}
.fixed_search_div {
padding: 10rpx 15rpx 24rpx 10rpx;
display: flex;
align-items: center;
height: 94rpx;
box-sizing: border-box;
.back_div {
// margin-right: 10rpx;
padding: 10rpx 10rpx 10rpx 20rpx;
// background-color: red;
.back-icon {
position: relative;
width: 40rpx;
height: 40rpx;
cursor: pointer;
}
.back-icon::before,
.back-icon::after {
content: '';
position: absolute;
transition: all 0.3s ease;
}
.back-icon::after {
top: 25%;
left: 25%;
width: 40%;
height: 40%;
border-top: 4rpx solid #2B2C2E;
border-left: 4rpx solid #2B2C2E;
transform: rotate(-45deg);
}
}
}
.main_div {
width: 100vw;
background: linear-gradient(90deg, #F1F7FF 0%, #D8EDFF 50%, #C3E6FF 100%);
padding-top: var(--status-bar-height);
height: 100vh;
overflow: hidden;
}
</style>
+9
View File
@@ -34,6 +34,15 @@
"titleNView": false
}
}
},
{
"path": "pages/search/result",
"style": {
"navigationBarTitleText": "",
"app-plus": {
"titleNView": false
}
}
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B