From c034d4cdaf348594c443b4acd5f4c3b166e4d420 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期四, 17 七月 2025 16:30:31 +0800 Subject: [PATCH] Merge branch 'dev' into dev_fix_sub --- pages/mine/activity/addActivity.vue | 739 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 739 insertions(+), 0 deletions(-) diff --git a/pages/mine/activity/addActivity.vue b/pages/mine/activity/addActivity.vue new file mode 100644 index 0000000..09f6911 --- /dev/null +++ b/pages/mine/activity/addActivity.vue @@ -0,0 +1,739 @@ +<template> + <view class="add-user-container"> + <!-- 琛ㄥ崟鍖哄煙 --> + <view class="form-card"> + <u-form :model="form" ref="uForm" label-width="150rpx" :rules="rules" style="width: 100%;"> + + <!-- 娲诲姩鍚嶇О --> + <u-form-item label="娲诲姩鍚嶇О" prop="activityName" borderBottom required> + <u-input v-model="form.activityName" placeholder="璇疯緭鍏ユ椿鍔ㄥ悕绉�" border="none" /> + </u-form-item> + + <!-- 娲诲姩绫诲瀷 --> + <u-form-item label="娲诲姩绫诲瀷" prop="activityType" borderBottom required> + <u-radio-group v-model="form.activityType" placement="column"> + <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in activityTypes" + :key="index" :label="item.value" :name="item.value" @change="activityTypeRadioChange"> + <span>{{item.label}}</span> + </u-radio> + </u-radio-group> + </u-form-item> + + <!-- 鎶ュ悕鏃堕棿鑼冨洿 --> + <u-form-item label="鎶ュ悕寮�濮嬫椂闂�" prop="reportStartTime" borderBottom required label-width="200rpx"> + <uni-datetime-picker type="datetime" v-model="form.reportStartTime" + @change="handleReportStartTimeChange" /> + </u-form-item> + + <u-form-item label="鎶ュ悕缁撴潫鏃堕棿" prop="reportEndTime" borderBottom required label-width="200rpx"> + <uni-datetime-picker type="datetime" v-model="form.reportEndTime" :start="form.reportStartTime" + @change="handleReportEndTimeChange" /> + </u-form-item> + + <!-- 娲诲姩鏃堕棿鑼冨洿 --> + <u-form-item label="娲诲姩寮�濮嬫椂闂�" prop="startTime" borderBottom required label-width="200rpx"> + <uni-datetime-picker type="datetime" v-model="form.startTime" :start="form.reportEndTime" + @change="handleStartTimeChange" /> + </u-form-item> + + <u-form-item label="娲诲姩缁撴潫鏃堕棿" prop="endTime" borderBottom required label-width="200rpx"> + <uni-datetime-picker type="datetime" v-model="form.endTime" :start="form.startTime" + @change="handleEndTimeChange" /> + </u-form-item> + + <!-- 灏侀潰绫诲瀷 --> + <u-form-item label="灏侀潰绫诲瀷" prop="coverType" borderBottom required> + <u-radio-group v-model="coverType" placement="column"> + <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in coverTypes" :key="index" + :label="item.value" :name="item.value" @change="coverTypeRadioChange"> + <span>{{item.label}}</span> + </u-radio> + </u-radio-group> + + </u-form-item> + + + <!-- 娲诲姩灏侀潰 --> + <u-form-item label="娲诲姩灏侀潰" prop="cover" borderBottom required> + <u-input v-if="coverType === 'text'" v-model="form.cover" placeholder="璇疯緭鍏ュ皝闈㈡枃瀛�" border="none" /> + <u-upload v-else :fileList="coverList" @delete="deleteCover" name="cover" :maxCount="1" + uploadText="涓婁紶灏侀潰" :action="uploadUrl" @success="handleSuccess"></u-upload> + </u-form-item> + + <!-- 浜烘暟闄愬埗 --> + <u-form-item label="浜烘暟闄愬埗" prop="limitUserNum" borderBottom required> + <u-number-box v-model="form.limitUserNum" :min="0" :max="1000" integer></u-number-box> + <text style="margin-left: 20rpx;color: #999">0琛ㄧず涓嶉檺鍒�</text> + </u-form-item> + + <!-- 娲诲姩鍦扮偣 --> + <u-form-item label="娲诲姩鍦扮偣" prop="activityLocation" borderBottom v-if="form.activityType === 'offline'" + required> + <u-input v-model="form.activityLocation" placeholder="璇疯緭鍏ユ椿鍔ㄥ湴鐐�" border="none" /> + </u-form-item> + + <!-- 娲诲姩鍐呭 --> + <u-form-item label="娲诲姩鍐呭" prop="activityContent" borderBottom required> + + </u-form-item> + <sp-editor style="max-width: 70%;" :toolbar-config="{ + excludeKeys: ['direction', 'date', 'lineHeight', 'letterSpacing', 'listCheck'], + iconSize: '15px' + }" @init="initEditor" @input="inputOver" @overMax="overMax" @upinImage="upinImage" + @upinVideo="upinVideo"></sp-editor> + </u-form> + + <!-- 鎻愪氦鎸夐挳 --> + <view class="submit-btn"> + <u-button type="primary" shape="circle" @click="submitForm" :loading="loading">鎻愪氦</u-button> + </view> + </view> + </view> +</template> + +<script> + import { + convertImgStylesToAttributes, + handleHtmlWithVideo + } from '@/uni_modules/sp-editor/utils' + import '@/components/uview-components/uview-ui'; + import { + addActivityByBuyer + } from '@/api/activity.js' + + export default { + data() { + return { + uploadUrl: 'http://127.0.0.1:8890/common/lmk/file/upload', + coverType: 'file', + + + isImage: false, // 鏄惁鏄浘鐗� + + editorIns: null, + + loading: false, + coverList: [], + activityTypes: [{ + label: '绾夸笂', + value: 'online' + }, + { + label: '绾夸笅', + value: 'offline' + } + ], + coverTypes: [{ + label: '鏂囦欢', + value: 'file' + }, + { + label: '鏂囧瓧', + value: 'text' + } + ], + form: { + activityName: '', + activityType: 'online', // 榛樿绾夸笂 + reportStartTime: '', + reportEndTime: '', // 榛樿鏄庡ぉ + startTime: '', // 榛樿鍚庡ぉ + endTime: '', // 榛樿澶у悗澶� + cover: '', + coverType: 'file', + limitUserNum: 0, + activityLocation: '', + activityContent: '' + }, + rules: { + activityName: [{ + required: true, + message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', + trigger: 'blur' + }, + { + min: 2, + max: 50, + message: '闀垮害鍦�2鍒�50涓瓧绗�', + trigger: 'blur' + } + ], + activityType: [{ + required: true, + message: '璇烽�夋嫨娲诲姩绫诲瀷', + trigger: 'change' + }], + coverType: [{ + required: true, + message: '璇烽�夋嫨灏侀潰绫诲瀷', + trigger: 'change' + }], + cover: [{ + required: true, + message: '璇蜂笂浼犳椿鍔ㄥ皝闈�', + trigger: 'change' + }], + reportStartTime: [{ + required: true, + message: '璇烽�夋嫨鎶ュ悕寮�濮嬫椂闂�', + trigger: 'blur' + }], + reportEndTime: [{ + required: true, + message: '璇烽�夋嫨鎶ュ悕缁撴潫鏃堕棿', + trigger: 'change' + }, + { + validator: this.validateReportTime, + trigger: 'change' + } + ], + startTime: [{ + required: true, + message: '璇烽�夋嫨娲诲姩寮�濮嬫椂闂�', + trigger: 'change' + }, + { + validator: this.validateStartTime, + trigger: 'change' + } + ], + endTime: [{ + required: true, + message: '璇烽�夋嫨娲诲姩缁撴潫鏃堕棿', + trigger: 'change' + }, + { + validator: this.validateEndTime, + trigger: 'change' + } + ], + limitUserNum: [{ + required: true, + message: '璇疯緭鍏ヤ汉鏁�', + trigger: 'change', + validator: this.numValidate, + }, + + ], + activityContent: [{ + required: true, + message: '璇疯緭鍏ユ椿鍔ㄥ唴瀹�', + trigger: 'blur' + }, + { + min: 10, + message: '鑷冲皯杈撳叆10涓瓧绗�', + trigger: 'blur' + } + ] + }, + } + }, + onReady() { + // 寰俊灏忕▼搴忛渶瑕佺敤姝ゅ啓娉� + }, + onLoad() { + setTimeout(() => { + this.$refs.uForm.setRules(this.rules) + }, 500) + }, + methods: { + /** + * 鐩存帴杩愯绀轰緥宸ョ▼鎻掑叆鍥剧墖鏃犳硶姝e父鏄剧ず鐨勭湅杩欓噷 + * 鍥犱负鎻掍欢榛樿閲囩敤浜戠瀛樺偍鍥剧墖鐨勬柟寮� + * 浠�$emit('upinImage', tempFiles, this.editorCtx)鐨勬柟寮忓洖璋� + * @param {Object} tempFiles + * @param {Object} editorCtx + */ + async upinImage(tempFiles, editorCtx) { + /** + * 鏈湴涓存椂鎻掑叆鍥剧墖棰勮 + * 娉ㄦ剰锛氳繖閲屼粎鏄ず渚嬫湰鍦板浘鐗囬瑙堬紝鍥犱负闇�瑕佸皢鍥剧墖鍏堜笂浼犲埌浜戠锛屽啀灏嗗浘鐗囨彃鍏ュ埌缂栬緫鍣ㄤ腑 + * 姝e紡寮�鍙戞椂锛岃繕璇峰皢姝ゅ娉ㄩ噴锛屽苟瑙e紑涓嬮潰 浣跨敤 uniCloud.uploadFile 涓婁紶鍥剧墖鐨勭ず渚嬫柟娉� 鐨勬敞閲� + * @tutorial https://uniapp.dcloud.net.cn/api/media/editor-context.html#editorcontext-insertimage + */ + let data = await this.upload(tempFiles); + console.log(data) + // #ifdef MP-WEIXIN + // 娉ㄦ剰寰俊灏忕▼搴忕殑鍥剧墖璺緞鏄湪tempFilePath瀛楁涓� + editorCtx.insertImage({ + src: data.data.url, //瀵屾枃鏈唴瀹� + width: '80%', // 榛樿涓嶅缓璁摵婊″搴�100%锛岄鐣欎竴鐐圭┖闅欎互渚跨敤鎴风紪杈� + alt: data.data.url +'|'+data.data.fileKey, + success: function() {} + }) + // #endif + + // #ifndef MP-WEIXIN + editorCtx.insertImage({ + src: data.data.url, //瀵屾枃鏈唴瀹� + width: '80%', // 榛樿涓嶅缓璁摵婊″搴�100%锛岄鐣欎竴鐐圭┖闅欎互渚跨敤鎴风紪杈� + success: function() {} + }) + // #endif + }, + async upinVideo(tempFiles, editorCtx) { + let data = await this.uploadVideo(tempFiles); + await editorCtx.insertImage({ + src: 'https://img.zcool.cn/community/01055859b8e37fa8012075341db67f.gif', //瀵屾枃鏈唴瀹� + width: '80%', // 榛樿涓嶅缓璁摵婊″搴�100%锛岄鐣欎竴鐐圭┖闅欎互渚跨敤鎴风紪杈� + alt: data.data.url +'|'+data.data.fileKey, + }) + + }, + async upload(tempFiles) { + uni.showLoading({ + title: '鍔犺浇涓婁紶涓�...', + mask: true + }); + + try { + const res = await new Promise((resolve, reject) => { + uni.uploadFile({ + url: 'http://127.0.0.1:8890/common/lmk/file/upload', + filePath: tempFiles[0].tempFilePath, + name: 'file', + success: (uploadRes) => { + if (uploadRes.statusCode === 200) { + try { + const parsedData = JSON.parse(uploadRes.data); + resolve(parsedData); + } catch (e) { + reject(new Error('瑙f瀽鍝嶅簲鏁版嵁澶辫触')); + } + } else { + reject(new Error(`涓婁紶澶辫触: ${uploadRes.statusCode}`)); + } + }, + fail: (err) => { + const errMsg = typeof err === 'object' ? JSON.stringify(err) : + String(err); + reject(new Error(`涓婁紶澶辫触: ${errMsg}`)); + } + }); + }); + + uni.hideLoading(); + return res; + } catch (error) { + uni.hideLoading(); + uni.showToast({ + title: error.message, + icon: 'none' + }); + throw error; // 鍙互閫夋嫨缁х画鎶涘嚭閿欒鎴栬繑鍥瀗ull + } + }, + + + async uploadVideo(tempFiles) { + uni.showLoading({ + title: '鍔犺浇涓婁紶涓�...', + mask: true + }); + + try { + const res = await new Promise((resolve, reject) => { + uni.uploadFile({ + url: 'http://127.0.0.1:8890/common/lmk/file/upload', + filePath: tempFiles, + name: 'file', + success: (uploadRes) => { + if (uploadRes.statusCode === 200) { + try { + const parsedData = JSON.parse(uploadRes.data); + resolve(parsedData); + } catch (e) { + reject(new Error('瑙f瀽鍝嶅簲鏁版嵁澶辫触')); + } + } else { + reject(new Error(`涓婁紶澶辫触: ${uploadRes.statusCode}`)); + } + }, + fail: (err) => { + const errMsg = typeof err === 'object' ? JSON.stringify(err) : + String(err); + reject(new Error(`涓婁紶澶辫触: ${errMsg}`)); + } + }); + }); + + uni.hideLoading(); + return res; + } catch (error) { + uni.hideLoading(); + uni.showToast({ + title: error.message, + icon: 'none' + }); + throw error; // 鍙互閫夋嫨缁х画鎶涘嚭閿欒鎴栬繑鍥瀗ull + } + }, + /** + * 鑾峰彇杈撳叆鍐呭 + * @param {Object} e {html,text} 鍐呭鐨刪tml鏂囨湰锛屽拰text鏂囨湰 + */ + inputOver(e) { + // 鍙互鍦ㄦ澶勮幏鍙栧埌缂栬緫鍣ㄥ凡缂栬緫鐨勫唴瀹� + console.log('==== inputOver :', e) + this.form.activityContent = e.html; + }, + /** + * 瓒呭嚭鏈�澶у唴瀹归檺鍒� + * @param {Object} e {html,text} 鍐呭鐨刪tml鏂囨湰锛屽拰text鏂囨湰 + */ + overMax(e) { + // 鑻ヨ缃簡鏈�澶у瓧鏁伴檺鍒讹紝鍙湪姝ゅ瑙﹀彂瓒呭嚭闄愬埗鐨勫洖璋� + console.log('==== overMax :', e) + }, + /** + * 缂栬緫鍣ㄥ氨缁� + * @param {Object} editor 缂栬緫鍣ㄥ疄渚嬶紝浣犲彲浠ヨ嚜瀹氫箟璋冪敤editor瀹炰緥鐨勬柟娉� + * @tutorial editor缁勪欢 https://uniapp.dcloud.net.cn/component/editor.html#editor-%E7%BB%84%E4%BB%B6 + * @tutorial 鐩稿叧api https://uniapp.dcloud.net.cn/api/media/editor-context.html + */ + initEditor(editor) { + this.editorIns = editor // 淇濆瓨缂栬緫鍣ㄥ疄渚� + // 淇濆瓨缂栬緫鍣ㄥ疄渚嬪悗锛屽彲浠ュ湪姝ゅ鑾峰彇鍚庣鏁版嵁锛屽苟璧嬪�肩粰缂栬緫鍣ㄥ垵濮嬪寲鍐呭 + this.preRender() + }, + preRender() { + setTimeout(() => { + // 寮傛鑾峰彇鍚庣鏁版嵁鍚庯紝鍒濆鍖栫紪杈戝櫒鍐呭 + this.editorIns.setContents({ + html: `` + }) + }, 1000) + }, + // 鏃堕棿閫夋嫨鍙樺寲澶勭悊 + handleReportStartTimeChange(val) { + this.form = { + ...this.form, + reportStartTime: val + }; // 瑙f瀯璧嬪�艰Е鍙戝搷搴斿紡 + // 濡傛灉鎶ュ悕缁撴潫鏃堕棿鏃╀簬寮�濮嬫椂闂达紝鍒欓噸缃� + if (new Date(this.form.reportEndTime) < new Date(val)) { + this.form.reportEndTime = ''; + } + }, + handleReportEndTimeChange(val) { + this.form.reportEndTime = val; + // 濡傛灉娲诲姩寮�濮嬫椂闂存棭浜庢姤鍚嶇粨鏉熸椂闂达紝鍒欓噸缃� + if (new Date(this.form.startTime) < new Date(val)) { + this.form.startTime = ''; + } + }, + handleStartTimeChange(val) { + this.form.startTime = val; + // 濡傛灉娲诲姩缁撴潫鏃堕棿鏃╀簬寮�濮嬫椂闂达紝鍒欓噸缃� + if (new Date(this.form.endTime) < new Date(val)) { + this.form.endTime = ''; + } + }, + handleEndTimeChange(val) { + this.form.endTime = val; + }, + activityTypeRadioChange(n) { + console.log('radioChange', n); + this.form.activityType = n; + }, + coverTypeRadioChange(n) { + console.log('radioChange', n); + this.coverType = n; + + }, + // 鍥剧墖涓婁紶澶勭悊 + // 鏂板鍥剧墖 + afterRead(event) { + const { + file + } = event; + console.log('鏂囦欢绫诲瀷:', file.type); + }, + // 鍒犻櫎灏侀潰 + deleteCover() { + this.coverList = [] + this.form.cover = '' + }, + handleSuccess(data, index, lists, fileType) { + //琛ㄥ崟璧嬪�� + this.form.coverType = fileType; + this.form.cover = data.data.fileKey; + }, + // 楠岃瘉鎶ュ悕鏃堕棿 + validateReportTime(rule, value, callback) { + if (!value) { + callback(new Error('璇烽�夋嫨鎶ュ悕缁撴潫鏃堕棿')) + } else if (new Date(value) <= new Date(this.form.reportStartTime)) { + callback(new Error('鎶ュ悕缁撴潫鏃堕棿蹇呴』鏅氫簬寮�濮嬫椂闂�')) + } else { + callback() + } + }, + + // 楠岃瘉娲诲姩寮�濮嬫椂闂� + validateStartTime(rule, value, callback) { + if (!value) { + callback(new Error('璇烽�夋嫨娲诲姩寮�濮嬫椂闂�')) + } else if (new Date(value) <= new Date(this.form.reportEndTime)) { + callback(new Error('娲诲姩寮�濮嬫椂闂村繀椤绘櫄浜庢姤鍚嶇粨鏉熸椂闂�')) + } else { + callback() + } + }, + numValidate(rule, value, callback) { + console.log(value) + if (value <= 0 || value > 1000) { + callback(new Error('浜烘暟鑼冨洿1-1000')); + } else { + callback(); + } + }, + // 楠岃瘉娲诲姩缁撴潫鏃堕棿 + validateEndTime(rule, value, callback) { + if (!value) { + callback(new Error('璇烽�夋嫨娲诲姩缁撴潫鏃堕棿')) + } else if (new Date(value) <= new Date(this.form.startTime)) { + callback(new Error('娲诲姩缁撴潫鏃堕棿蹇呴』鏅氫簬寮�濮嬫椂闂�')) + } else { + callback() + } + }, +// "<p><img src="https://img.zcool.cn/community/01055859b8e37fa8012075341db67f.gif" alt="https://lmk-1356772813.cos.ap-chengdu.myqcloud.com/video/2025071011124230197.mp4|video/2025071011124230197.mp4" width="80%"><img src="https://lmk-1356772813.cos.ap-chengdu.myqcloud.com/image/2025071011130152914.jpg" alt="https://lmk-1356772813.cos.ap-chengdu.myqcloud.com/image/2025071011130152914.jpg|image/2025071011130152914.jpg" width="80%"></p><p><br></p><p><br></p>" + buildTag(html) { + return html.replace(/<img([^>]*)>/gi, (imgTag) => { + const srcMatch = imgTag.match(/src="([^"]*)"/i); + const altMatch = imgTag.match(/alt="([^"]*)"/i); + const widthMatch = imgTag.match(/width="([^"]*)"/i); + + if (!srcMatch && !altMatch) return imgTag; + + // 鍒嗗壊 alt 鍐呭锛堟牸寮忥細宸﹁竟|鍙宠竟锛� + let newSrc = srcMatch ? srcMatch[1] : ''; + let newAlt = altMatch ? altMatch[1] : ''; + + if (altMatch && altMatch[1].includes('|')) { + const [leftPart, rightPart] = altMatch[1].split('|'); + newSrc = leftPart.trim(); // | 宸︿晶浣滀负 src + newAlt = rightPart.trim(); // | 鍙充晶浣滀负 alt + } + + const width = widthMatch ? widthMatch[1] : "80%"; + + // 妫�娴嬫槸鍚︿负瑙嗛锛堝熀浜庢柊鐨� src锛� + const isVideo = /\.(mp4|webm|ogg|mov)$/i.test(newSrc); + + if (isVideo) { + const extension = newSrc.split('.').pop().toLowerCase(); + return `<video width="${width}" alt="${newAlt}" src="${newSrc}" height="auto" controls="controls"></video>`; + } + + // 闈炶棰戯細鏇存柊 src 鍜� alt + return `<img src="${newSrc}" alt="${newAlt}" width="${width}">`; + }); + }, + escapeStringHTML(str) { + if (!str) return str; + str = str.replace(/</g, '<'); + str = str.replace(/>/g, '>'); + return str; + }, + // 鎻愪氦琛ㄥ崟 + async submitForm() { + // let html = '"<p><img src="https://img.zcool.cn/community/01055859b8e37fa8012075341db67f.gif" alt="video/2025070811142279476.mp4" width="80%"><img src="https://lmk-1356772813.cos.ap-chengdu.myqcloud.com/image/2025070811142783043.jpg" alt="image/2025070811142783043.jpg" width="80%">娴嬭瘯娲诲姩鍐呭</p><p><br></p><p><br></p>"' + // const temphtml2 = this.buildTag(html) + const temphtml2 = this.buildTag(this.form.activityContent) + this.form.activityContent = temphtml2; + this.$refs.uForm.validate(valid => { + if (valid) { + console.log("閫氳繃") + if (this.coverType === 'text') { + this.form.coverType = 'text'; + } + + this.loading = true + // 璋冪敤API + addActivityByBuyer(this.form).then(res => { + console.log(res) + if (res.statusCode === 200) { + this.loading = false + uni.showToast({ + title: res.data.msg, // 鎻愮ず鏂囧瓧 + icon: 'none', // 鍥炬爣绫诲瀷锛坰uccess/loading/none锛� + mask: true // 鏄惁鏄剧ず閫忔槑钂欏眰锛堥槻姝㈣Е鎽哥┛閫忥級 + }); + setTimeout(() => { + uni.$emit('refreshParentPage'); + uni.navigateBack(); + }, 1500); + + } + }) + + + } + }) + + } + + + } + } +</script> + +<style lang="scss" scoped> + .add-user-container { + width: 100%; + padding: 20rpx; + background-color: #f5f7fa; + min-height: 100vh; + } + + .form-card { + background-color: #fff; + border-radius: 24rpx; + padding: 40rpx; + box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.08); + margin-bottom: 40rpx; + + /* 琛ㄥ崟鏍囬鏍峰紡 */ + .form-title { + font-size: 36rpx; + font-weight: 600; + color: #333; + margin-bottom: 40rpx; + text-align: center; + position: relative; + + &:after { + content: ''; + display: block; + width: 80rpx; + height: 6rpx; + background: linear-gradient(to right, #2979ff, #00bcd4); + margin: 20rpx auto 0; + border-radius: 3rpx; + } + } + } + + /* 琛ㄥ崟椤规牱寮� */ + .u-form-item { + padding: 28rpx 0; + margin-bottom: 10rpx; + + /* 鏍囩鏍峰紡 */ + ::v-deep .u-form-item__body__left__content__label { + font-size: 30rpx; + color: #606266; + font-weight: 500; + } + + /* 杈撳叆妗嗘牱寮� */ + .u-input { + background-color: #f8f9fa; + border-radius: 12rpx; + padding: 20rpx 24rpx !important; + + &__content__field-wrapper__field { + color: #333; + font-size: 28rpx; + } + } + + /* 鍗曢�夌粍鏍峰紡 */ + .u-radio-group { + margin-top: 10rpx; + } + + .u-radio { + margin-bottom: 16rpx; + + &__label { + font-size: 28rpx; + color: #606266; + } + } + + /* 鏁板瓧杈撳叆妗嗘牱寮� */ + .u-number-box { + margin-right: 20rpx; + } + } + + /* 鏃堕棿閫夋嫨鍣ㄦ牱寮� */ + .uni-datetime-picker { + width: 100%; + + ::v-deep .uniui-calendar { + color: #2979ff; + } + + ::v-deep .uni-datetime-picker-btn-cancel { + color: #999; + } + + ::v-deep .uni-datetime-picker-btn-confirm { + color: #2979ff; + } + } + + /* 涓婁紶缁勪欢鏍峰紡 */ + .u-upload { + ::v-deep .u-upload__wrap { + padding: 0; + } + + ::v-deep .u-upload__button { + background-color: #f8f9fa; + border-radius: 12rpx; + color: #2979ff; + font-size: 28rpx; + height: 160rpx; + display: flex; + align-items: center; + justify-content: center; + border: 1rpx dashed #dcdfe6; + + &:active { + background-color: #f1f5f9; + } + } + + ::v-deep .u-upload__preview { + border-radius: 12rpx; + overflow: hidden; + } + } + + /* 鎻愪氦鎸夐挳鏍峰紡 */ + .submit-btn { + margin-top: 80rpx; + padding: 0 80rpx; + + .u-button { + height: 90rpx; + font-size: 32rpx; + font-weight: 500; + letter-spacing: 2rpx; + background: linear-gradient(to right, #2979ff, #00bcd4); + box-shadow: 0 8rpx 24rpx rgba(41, 121, 255, 0.3); + transition: all 0.3s; + + &:active { + transform: translateY(2rpx); + box-shadow: 0 4rpx 12rpx rgba(41, 121, 255, 0.3); + } + } + } + + /* 搴曢儴璇存槑鏂囧瓧 */ + .form-tips { + font-size: 24rpx; + color: #999; + text-align: center; + margin-top: 40rpx; + line-height: 1.6; + } +</style> \ No newline at end of file -- Gitblit v1.8.0