123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926 |
- <!--
- * @Author: ysh
- * @Date: 2025-06-10 09:34:55
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2025-06-11 16:29:46
- -->
- <template>
- <view>
- <scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" @scrolltolower="lower"
- @scroll="scroll" :refresher-enabled="true" :refresher-triggered="isRefreshing" @refresherrefresh="onRefresh"
- :lower-threshold="50" :upper-threshold="50">
- <view class="content-wrapper">
- <!-- 搜索栏 -->
- <view class="search-bar">
- <view class="search-input-wrapper">
- <uni-icons type="search" size="16" color="#999"></uni-icons>
- <input class="search-input" v-model="queryParams.projectNumber" placeholder="请输入项目编号搜索"
- @confirm="handleSearch" />
- <uni-icons v-if="queryParams.projectNumber" type="clear" size="16" color="#999"
- @click="clearSearch"></uni-icons>
- </view>
- </view>
- <template v-if="logList.length > 0">
- <view class="project-card" v-for="(item, index) in logList" :key="index">
- <view class="project-card-item">
- <view class="project-card-item-header">
- <view class="project-info">
- <text class="project-number">{{ item.project ? item.project.projectNumber : '无项目' }}</text>
- <text class="project-name">{{ item.project ? item.project.projectName : '无项目' }}</text>
- </view>
- <view class="action-buttons">
- <button class="action-btn edit" v-if="isOwnRecord(item)" @click="handleEdit(item)">
- <uni-icons type="compose" size="16" color="#007AFF"></uni-icons>
- </button>
- <button class="action-btn delete" v-if="isOwnRecord(item)" @click="handleDelete(item)">
- <uni-icons type="trash" size="16" color="#FF3B30"></uni-icons>
- </button>
- </view>
- </view>
- <view class="project-card-item-content">
- <view class="info-row">
- <text class="info-label">设备名称:</text>
- <text class="info-value" v-if="item.deviceId">{{ item.device ? item.device.name : '' }}-{{ item.device
- ? item.device.brand : '' }}({{
- item.device ? item.device.code : '' }})</text>
- <text class="info-value" v-else>暂无设备</text>
- </view>
- <view class="info-row">
- <text class="info-label">设备类型:</text>
- <text class="info-value">{{ item.usageType }}</text>
- </view>
- <view class="info-row">
- <text class="info-label">使用日期:</text>
- <text class="info-value">{{ item.useDate }}</text>
- </view>
- <view class="info-row">
- <text class="info-label">记录员:</text>
- <text class="info-value">{{ item.user.nickName }}</text>
- </view>
- <view class="info-row">
- <text class="info-label">点号:</text>
- <text class="info-value">{{ item.position }}</text>
- </view>
- <view class="info-row">
- <text class="info-label">高值类型:</text>
- <text class="info-value">{{ item.heightType }}</text>
- </view>
- <view class="info-row">
- <text class="info-label">高值:</text>
- <text class="info-value">{{ item.height }}m</text>
- </view>
- <view class="info-row">
- <text class="info-label">天气:</text>
- <text class="info-value">{{ item.weather }}</text>
- </view>
- <view class="info-row">
- <text class="info-label">干温:</text>
- <text class="info-value">{{ item.dryTemperature }}°C</text>
- </view>
- <view class="info-row">
- <text class="info-label">湿温:</text>
- <text class="info-value">{{ item.wetTemperature }}°C</text>
- </view>
- <view class="info-row">
- <text class="info-label">气压:</text>
- <text class="info-value">{{ item.airPressure }}hPa</text>
- </view>
- <view class="info-row">
- <text class="info-label">开机时间:</text>
- <text class="info-value">{{ formatDateTime(item.powerOn) }}</text>
- </view>
- <view class="info-row">
- <text class="info-label">关机时间:</text>
- <text class="info-value">{{ formatDateTime(item.powerOff) }}</text>
- </view>
- </view>
- </view>
- </view>
- <view class="loading-more" v-if="hasMore">
- <text class="loading-text">加载中...</text>
- </view>
- <view class="no-more" v-else>
- <text class="no-more-text">没有更多数据了</text>
- </view>
- </template>
- <view v-else class="empty-state">
- <image src="/static/images/empty.png" mode="aspectFit" class="empty-image"></image>
- <text class="empty-text">暂无数据</text>
- </view>
- </view>
- </scroll-view>
-
- <!-- 悬浮按钮 -->
- <view class="fab-button" @click="handleAdd">
- <uni-icons type="plusempty" size="24" color="#fff"></uni-icons>
- </view>
-
- <!-- 新增记录弹窗 -->
- <uni-popup ref="addPopup" type="center">
- <view class="popup-content">
- <view class="popup-header">
- <text class="title">{{ isEdit ? '修改记录' : '新增记录' }}</text>
- <uni-icons type="close" size="20" @click="closePopup"></uni-icons>
- </view>
- <view class="popup-body">
- <view class="form-item">
- <text class="label">项目选择</text>
- <view class="project-picker" @click="showProjectPicker">
- <text v-if="selectedProject">{{ selectedProject.projectName }}</text>
- <text v-else class="placeholder">请选择项目</text>
- </view>
- </view>
- <view class="form-item">
- <text class="label">设备选择</text>
- <view class="project-picker" @click="showDevicePicker">
- <text v-if="selectDevice && selectDevice.code">{{ selectDevice.name }}-{{ selectDevice.brand }}({{
- selectDevice.code
- }})</text>
- <text v-else class="placeholder">请选择设备</text>
- </view>
- </view>
- <view class="form-item">
- <text class="label">设备类型</text>
- <uni-data-select v-model="formData.usageType" :localdata="useTypeOptions" placeholder="请选择设备类型"
- class="weather-select" @change="handleUseTypeChange" />
- </view>
- <view class="form-item">
- <text class="label">使用日期</text>
- <!-- <uni-datetime-picker v-model="formData.useDate" type="date" /> -->
- <uv-calendar ref="calendar" mode="single" @confirm="confirmUseDate"></uv-calendar>
- <view class="project-picker" @click="$refs.calendar.open()">
- <text v-if="formData.useDate">{{ formData.useDate }}</text>
- <text v-else class="placeholder">请选择日期</text>
- </view>
- </view>
- <view class="form-item">
- <text class="label">点号</text>
- <input v-model="formData.position" placeholder="请输入点号" />
- </view>
- <view class="form-item">
- <text class="label">高值类型</text>
- <uni-data-select v-model="formData.heightType" :localdata="highTypeOptions" placeholder="请选择高值类型"
- class="weather-select" @change="handleHighTypeChange" />
- </view>
- <view class="form-item">
- <text class="label">高值(m)</text>
- <input v-model="formData.height" type="number" placeholder="请输入高值" />
- </view>
- <view class="form-item">
- <text class="label">天气</text>
- <uni-data-select v-model="formData.weather" :localdata="weatherOptions" placeholder="请选择天气"
- class="weather-select" />
- </view>
- <view class="form-item">
- <text class="label">干温 (°C)</text>
- <input v-model="formData.dryTemperature" type="number" placeholder="请输入干温" />
- </view>
- <view class="form-item">
- <text class="label">湿温 (°C)</text>
- <input v-model="formData.wetTemperature" type="number" placeholder="请输入湿温" />
- </view>
- <view class="form-item">
- <text class="label">气压 (hPa)</text>
- <input v-model="formData.airPressure" type="number" placeholder="请输入气压" />
- </view>
- <view class="form-item" v-if="formData.usageType !== '全站仪'">
- <text class="label">开机时间</text>
- <view class="datetime-picker" @click="openPowerOnPicker">
- <text v-if="formData.powerOn">{{ formatDateTime(formData.powerOn) }}</text>
- <text v-else class="placeholder">请选择开机时间</text>
- </view>
- </view>
- <view class="form-item" v-if="formData.usageType !== '全站仪'">
- <text class="label">关机时间</text>
- <view class="datetime-picker" @click="openPowerOffPicker">
- <text v-if="formData.powerOff">{{ formatDateTime(formData.powerOff) }}</text>
- <text v-else class="placeholder">请选择关机时间</text>
- </view>
- </view>
- </view>
- <view class="popup-footer">
- <button class="btn cancel" @click="closePopup">取消</button>
- <button class="btn confirm" @click="submitForm">确定</button>
- </view>
- </view>
- </uni-popup>
-
- <!-- 项目选择器 -->
- <project-picker :visible.sync="showPicker" :selected.sync="selectedProject" @confirm="handleProjectSelect" />
- <!-- 设备选择器 -->
- <device-picker :visible.sync="openDevice" :selected.sync="selectDevice" :multiple="false"
- @confirm="handleDeviceSelect"></device-picker>
- <!-- 时间选择器 -->
- <uv-datetime-picker ref="powerOnPicker" v-model="formData.powerOn" mode="datetime"
- @confirm="handlePowerOnConfirm"></uv-datetime-picker>
- <uv-datetime-picker ref="powerOffPicker" v-model="formData.powerOff" mode="datetime"
- @confirm="handlePowerOffConfirm"></uv-datetime-picker>
- </view>
- </template>
-
- <script>
- import { listDeviceLog, getDeviceLog, addDeviceLog, updateDeviceLog, delDeviceLog } from '@/api/oa/device/deviceLog';
- import { listProject } from '@/api/oa/project/project';
- import ProjectPicker from '@/pages/components/ProjectPicker.vue';
- import DevicePicker from '@/pages/components/DevicePicker.vue';
- import { parseTime } from '@/utils/common';
-
- export default {
- components: {
- ProjectPicker,
- DevicePicker
- },
- data() {
- return {
- logList: [],
- scrollTop: 0,
- queryParams: {
- pageNum: 1,
- pageSize: 10,
- userId: null,
- projectNumber: ''
- },
- showPicker: false,
- selectedProject: null,
- openDevice: false,
- selectDevice: {},
- weatherOptions: [
- { text: '晴', value: '晴' },
- { text: '阴', value: '阴' },
- { text: '多云', value: '多云' },
- { text: '雨', value: '雨' },
- { text: '雪', value: '雪' }
- ],
- highTypeOptions: [],
- useTypeOptions: [
- { text: '全站仪', value: '全站仪' },
- { text: 'GNSS基站', value: 'GNSS基站' },
- { text: 'GNSS静态', value: 'GNSS静态' }
- ],
- formData: {
- useDate: '',
- weather: '',
- position: '',
- dryTemperature: '',
- wetTemperature: '',
- airPressure: '',
- heightType: '',
- height: '',
- powerOn: '',
- powerOff: '',
- usageType: ''
- },
- isEdit: false,
- currentLogId: null,
- hasMore: true,
- loading: false,
- isRefreshing: false
- }
- },
- created() {
- this.getList()
- },
- methods: {
- async getList() {
- if (this.loading) return
- this.loading = true
-
- try {
- if (this.$store.getters.roles.includes('leader') || this.$store.getters.roles.includes('dept')) {
- this.queryParams.userId = null
- } else {
- this.queryParams.userId = this.$store.getters.userId
- }
-
- const res = await listDeviceLog(this.queryParams)
- if (this.queryParams.pageNum === 1) {
- this.logList = res.rows
- } else {
- this.logList = [...this.logList, ...res.rows]
- }
-
- this.hasMore = res.rows.length === this.queryParams.pageSize
- } catch (error) {
- uni.showToast({
- title: '加载失败',
- icon: 'error'
- })
- } finally {
- this.loading = false
- }
- },
- async onRefresh() {
- this.isRefreshing = true
- this.queryParams.pageNum = 1
- this.hasMore = true
- await this.getList()
- this.isRefreshing = false
- },
- upper() {
- // 下拉刷新
- this.onRefresh()
- },
- lower() {
- // 上拉加载更多
- if (this.hasMore && !this.loading) {
- this.queryParams.pageNum++
- this.getList()
- }
- },
- scroll(e) {
- // 可以在这里添加滚动相关的逻辑
- },
- handleAdd() {
- this.formData.useDate = parseTime(new Date(), '{y}-{m}-{d}');
- this.$refs.addPopup.open()
- },
- closePopup() {
- this.$refs.addPopup.close()
- this.resetForm()
- },
- showProjectPicker() {
- this.showPicker = true
- },
- showDevicePicker() {
- this.openDevice = true
- },
- handleProjectSelect(project) {
- this.selectedProject = project
- },
- handleDeviceSelect(device) {
- this.selectDevice = device
- },
- openPowerOnPicker() {
- this.$refs.powerOnPicker.open()
- },
- openPowerOffPicker() {
- this.$refs.powerOffPicker.open()
- },
- handlePowerOnConfirm(e) {
- this.formData.powerOn = e.value
- },
- handlePowerOffConfirm(e) {
- this.formData.powerOff = e.value
- },
- confirmUseDate(e) {
- this.formData.useDate = parseTime(e[0], '{y}-{m}-{d}')
- },
- formatDateTime(timestamp) {
- if (!timestamp) return ''
- const date = new Date(timestamp)
- const year = date.getFullYear()
- const month = String(date.getMonth() + 1).padStart(2, '0')
- const day = String(date.getDate()).padStart(2, '0')
- const hours = String(date.getHours()).padStart(2, '0')
- const minutes = String(date.getMinutes()).padStart(2, '0')
- return `${year}-${month}-${day} ${hours}:${minutes}`
- },
- resetForm() {
- this.isEdit = false
- this.currentLogId = null
- this.selectedProject = null
- this.formData = {
- useDate: '',
- weather: '',
- position: '',
- dryTemperature: '',
- wetTemperature: '',
- airPressure: '',
- heightType: '',
- height: '',
- powerOn: '',
- powerOff: '',
- usageType: ''
- }
- },
- async submitForm() {
- if (!this.selectDevice) {
- uni.showToast({
- title: '请选择设备',
- icon: 'none'
- })
- return
- }
- const params = {
- ...this.formData,
- projectId: this.selectedProject ? this.selectedProject.projectId : null,
- deviceId: this.selectDevice.deviceId,
- userId: this.$store.getters.userId,
- powerOn: Number(this.formData.powerOn),
- powerOff: Number(this.formData.powerOff)
- }
-
- try {
- if (this.isEdit) {
- await updateDeviceLog({
- ...params,
- logId: this.currentLogId
- })
- uni.showToast({
- title: '修改成功',
- icon: 'success'
- })
- } else {
- await addDeviceLog(params)
- uni.showToast({
- title: '添加成功',
- icon: 'success'
- })
- }
- this.closePopup()
- this.getList()
- } catch (error) {
- uni.showToast({
- title: this.isEdit ? '修改失败' : '添加失败',
- icon: 'error'
- })
- }
- },
- handleEdit(item) {
- this.isEdit = true
- this.currentLogId = item.logId
- this.selectedProject = item.project
- this.selectDevice = item.device
- this.formData = {
- useDate: item.useDate,
- weather: item.weather,
- position: item.position,
- dryTemperature: item.dryTemperature,
- wetTemperature: item.wetTemperature,
- airPressure: item.airPressure,
- heightType: item.heightType,
- height: item.height,
- powerOn: item.powerOn,
- powerOff: item.powerOff,
- usageType: item.usageType
- }
- if (item.usageType === '全站仪') {
- this.highTypeOptions = [
- { text: '仪器高', value: '仪器高' },
- { text: '棱镜高', value: '棱镜高' }
- ]
- } else if (item.usageType === 'GNSS基站' || item.usageType === 'GNSS静态') {
- this.highTypeOptions = [
- { text: '斜高', value: '斜高' },
- { text: '直高', value: '直高' },
- { text: '杆高', value: '杆高' },
- { text: '天线高', value: '天线高' }
- ]
- }
- this.$refs.addPopup.open()
- },
- async handleDelete(item) {
- try {
- const [err, res] = await uni.showModal({
- title: '确认删除',
- content: '确定要删除这条记录吗?',
- confirmColor: '#FF3B30'
- })
-
- if (err || !res.confirm) {
- return
- }
-
- await delDeviceLog(item.logId)
- uni.showToast({
- title: '删除成功',
- icon: 'success'
- })
- this.getList()
- } catch (error) {
- uni.showToast({
- title: '删除失败',
- icon: 'error'
- })
- }
- },
- handleHighTypeChange(value) {
- this.formData.heightType = value
- },
- handleUseTypeChange(value) {
- this.formData.usageType = value
- if (value === '全站仪') {
- this.highTypeOptions = [
- { text: '仪器高', value: '仪器高' },
- { text: '棱镜高', value: '棱镜高' }
- ]
- } else if (value === 'GNSS基站' || value === 'GNSS静态') {
- this.highTypeOptions = [
- { text: '斜高', value: '斜高' },
- { text: '直高', value: '直高' },
- { text: '杆高', value: '杆高' },
- { text: '天线高', value: '天线高' }
- ]
- }
- this.formData.heightType = ''
- },
- async handleSearch() {
- this.queryParams.pageNum = 1
- const res = await listProject({
- pageNum: 1,
- pageSize: 10,
- projectNumber: this.queryParams.projectNumber
- })
- let projectList = res.rows;
- if (projectList.length == 1) {
- this.queryParams.projectId = projectList[0].projectId
- } else {
- this.queryParams.projectId = null
- }
- this.getList()
- },
- clearSearch() {
- this.queryParams.projectNumber = ''
- this.queryParams.projectId = null
- this.getList()
- },
- isOwnRecord(item) {
- return item.user.userId === this.$store.getters.userId
- }
- }
- }
- </script>
-
- <style lang="scss" scoped>
- .scroll-Y {
- height: 100vh;
- background: #f8f8f8;
- box-sizing: border-box;
- position: relative;
- padding-bottom: 120rpx;
- }
-
- .content-wrapper {
- padding: 20rpx;
- min-height: 100%;
- }
-
- .fab-button {
- position: fixed;
- right: 30rpx;
- bottom: 50rpx;
- width: 100rpx;
- height: 100rpx;
- background: #007AFF;
- border-radius: 50%;
- display: flex;
- align-items: center;
- justify-content: center;
- box-shadow: 0 4rpx 16rpx rgba(0, 122, 255, 0.3);
- z-index: 99;
- transition: all 0.3s;
-
- &:active {
- transform: scale(0.95);
- background: #0062cc;
- }
- }
-
- .project-card {
- margin-bottom: 20rpx;
- background: #fff;
- border-radius: 12rpx;
- box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1);
-
- &:last-child {
- margin-bottom: 0;
- }
-
- &-item {
- padding: 20rpx;
-
- &-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 20rpx;
- padding-bottom: 20rpx;
- border-bottom: 2rpx solid #f5f5f5;
-
- .project-info {
- display: flex;
- align-items: center;
- gap: 20rpx;
-
- .project-number {
- font-size: 28rpx;
- color: #666;
- background: #f5f5f5;
- padding: 4rpx 16rpx;
- border-radius: 8rpx;
- }
-
- .project-name {
- font-size: 32rpx;
- color: #333;
- font-weight: bold;
- }
- }
-
- .action-buttons {
- display: flex;
- gap: 16rpx;
-
- .action-btn {
- width: 64rpx;
- height: 64rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- background: #f8f8f8;
- border: none;
- border-radius: 8rpx;
- padding: 0;
- transition: all 0.3s;
-
- &:active {
- transform: scale(0.95);
- }
-
- &.edit {
- &:active {
- background: #e6f2ff;
- }
- }
-
- &.delete {
- &:active {
- background: #ffe6e6;
- }
- }
- }
- }
- }
-
- &-content {
- display: flex;
- flex-direction: column;
- gap: 12rpx;
-
- .info-row {
- display: flex;
- align-items: center;
- font-size: 26rpx;
- line-height: 1.5;
-
- .info-label {
- color: #666;
- width: 140rpx;
- flex-shrink: 0;
- }
-
- .info-value {
- color: #333;
- flex: 1;
- }
- }
- }
- }
- }
-
- .empty-state {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- padding: 120rpx 0;
-
- .empty-image {
- width: 240rpx;
- height: 240rpx;
- margin-bottom: 20rpx;
- }
-
- .empty-text {
- font-size: 28rpx;
- color: #999;
- }
- }
-
- .popup-content {
- background: #fff;
- border-radius: 24rpx;
- width: 680rpx;
- max-height: 75vh;
-
- .popup-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 30rpx;
- background: #f8f8f8;
-
- .title {
- font-size: 34rpx;
- font-weight: 600;
- color: #333;
- }
- }
-
- .popup-body {
- padding: 30rpx;
- max-height: 60vh;
- overflow-y: auto;
-
- .form-item {
- margin-bottom: 30rpx;
-
- .label {
- display: block;
- font-size: 28rpx;
- color: #333;
- margin-bottom: 16rpx;
- font-weight: 500;
- }
-
- input {
- width: 100%;
- height: 88rpx;
- background: #f8f8f8;
- border: 2rpx solid #eee;
- border-radius: 12rpx;
- padding: 0 24rpx;
- font-size: 28rpx;
- color: #333;
- transition: all 0.3s;
-
- &:focus {
- border-color: #007AFF;
- background: #fff;
- }
-
- &::placeholder {
- color: #999;
- }
- }
-
- .project-picker {
- width: 100%;
- height: 88rpx;
- background: #f8f8f8;
- border: 2rpx solid #eee;
- border-radius: 12rpx;
- padding: 0 24rpx;
- display: flex;
- align-items: center;
- transition: all 0.3s;
-
- &:active {
- background: #f0f0f0;
- }
-
- .placeholder {
- color: #999;
- font-size: 28rpx;
- }
- }
-
- .datetime-picker {
- width: 100%;
- height: 88rpx;
- background: #f8f8f8;
- border: 2rpx solid #eee;
- border-radius: 12rpx;
- padding: 0 24rpx;
- display: flex;
- align-items: center;
- transition: all 0.3s;
-
- &:active {
- background: #f0f0f0;
- }
-
- .placeholder {
- color: #999;
- font-size: 28rpx;
- }
- }
- }
- }
-
- .popup-footer {
- display: flex;
- gap: 24rpx;
- padding: 30rpx;
- background: #f8f8f8;
- border-top: 2rpx solid #eee;
-
- .btn {
- flex: 1;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- border-radius: 12rpx;
- font-size: 30rpx;
- font-weight: 500;
- transition: all 0.3s;
-
- &.cancel {
- background: #f0f0f0;
- color: #666;
-
- &:active {
- background: #e0e0e0;
- }
- }
-
- &.confirm {
- background: #007AFF;
- color: #fff;
-
- &:active {
- background: #0062cc;
- }
- }
- }
- }
- }
-
- .weather-select {
- :deep(.uni-data-select) {
- .uni-select {
- height: 88rpx;
- background: #f8f8f8;
- border: 2rpx solid #eee;
- border-radius: 12rpx;
-
- .uni-select__input-box {
- height: 88rpx;
- line-height: 88rpx;
- padding: 0 24rpx;
- }
-
- .uni-select__input-text {
- font-size: 28rpx;
- color: #333;
- }
-
- .uni-select__input-placeholder {
- color: #999;
- }
- }
- }
- }
-
- :deep(.uni-date) {
- .uni-date__icon-clear {
- display: none;
- }
-
- .uni-date-editor {
- height: 88rpx;
- background: #f8f8f8;
- border: 2rpx solid #eee;
- border-radius: 12rpx;
-
- .uni-date__input {
- height: 88rpx;
- line-height: 88rpx;
- font-size: 28rpx;
- color: #333;
- }
- }
- }
-
- .loading-more,
- .no-more {
- text-align: center;
- padding: 20rpx 0;
- margin-bottom: 120rpx;
-
- .loading-text,
- .no-more-text {
- font-size: 24rpx;
- color: #999;
- }
- }
-
- .search-bar {
- padding: 20rpx;
- background: #fff;
- margin-bottom: 20rpx;
- border-radius: 12rpx;
- box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1);
-
- .search-input-wrapper {
- display: flex;
- align-items: center;
- background: #f8f8f8;
- border-radius: 8rpx;
- padding: 0 20rpx;
- height: 72rpx;
-
- .search-input {
- flex: 1;
- height: 72rpx;
- margin: 0 20rpx;
- font-size: 28rpx;
- color: #333;
-
- &::placeholder {
- color: #999;
- }
- }
- }
- }
- </style>
|