| @ -0,0 +1,2 @@ | |||
| /node_modules | |||
| /unpackage | |||
| @ -0,0 +1,16 @@ | |||
| { // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ | |||
| // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 | |||
| "version": "0.0", | |||
| "configurations": [{ | |||
| "default" : | |||
| { | |||
| "launchtype" : "local" | |||
| }, | |||
| "mp-weixin" : | |||
| { | |||
| "launchtype" : "local" | |||
| }, | |||
| "type" : "uniCloud" | |||
| } | |||
| ] | |||
| } | |||
| @ -0,0 +1,17 @@ | |||
| <script> | |||
| export default { | |||
| onLaunch: function() { | |||
| }, | |||
| onShow: function() { | |||
| }, | |||
| onHide: function() { | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss"> | |||
| @import "@/uni_modules/uview-ui/index.scss"; | |||
| @import './styles/index.scss'; | |||
| </style> | |||
| @ -0,0 +1,21 @@ | |||
| MIT License | |||
| Copyright (c) 2023 www.uviewui.com | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||
| of this software and associated documentation files (the "Software"), to deal | |||
| in the Software without restriction, including without limitation the rights | |||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
| copies of the Software, and to permit persons to whom the Software is | |||
| furnished to do so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| @ -0,0 +1,2 @@ | |||
| # employ-front | |||
| @ -0,0 +1,12 @@ | |||
| const { http } = uni.$u | |||
| console.info(http) | |||
| // 获取菜单 | |||
| export const fetchMenu = (params, config = {}) => http.post('/ebapi/public_api/index', params, config) | |||
| /** | |||
| * 登录的接口 | |||
| */ | |||
| // 微信登录接口 | |||
| export const wxLogin = (params) => http.get('/api/login/login', {params:params}) | |||
| @ -0,0 +1,5 @@ | |||
| module.exports = { | |||
| baseUrl: 'https://employadmin.augcl.com/employ-api', | |||
| // baseUrl: 'http://augcl.natapp1.cc/employ-api' | |||
| } | |||
| @ -0,0 +1,7 @@ | |||
| export default { | |||
| data() { | |||
| return { | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,2 @@ | |||
| uni.$u.props.gap.bgColor = '#f3f4f6' | |||
| uni.$u.props.gap.height = '10' | |||
| @ -0,0 +1,235 @@ | |||
| <template> | |||
| <u-popup :show="value" mode="bottom" :popup="false" :mask="true" :closeable="true" :safe-area-inset-bottom="true" | |||
| close-icon-color="#ffffff" :z-index="uZIndex" :maskCloseAble="maskCloseAble" @close="close"> | |||
| <u-tabs v-if="value" :list="genTabsList" :is-scroll="true" :current="tabsIndex" @change="tabsChange" ref="tabs"></u-tabs> | |||
| <view class="area-box"> | |||
| <view class="u-flex" :class="{ 'change':isChange }"> | |||
| <view class="area-item"> | |||
| <view class="u-padding-10 u-bg-gray" style="height: 100%;"> | |||
| <scroll-view :scroll-y="true" style="height: 100%"> | |||
| <u-cell-group> | |||
| <u-cell v-for="(item,index) in provinces" :title="item.label" :arrow="false" :name="index" :key="index" | |||
| @click="provinceChange"> | |||
| <u-icon v-if="isChooseP&&province===index" slot="right-icon" size="34" name="checkbox-mark"></u-icon> | |||
| </u-cell> | |||
| </u-cell-group> | |||
| </scroll-view> | |||
| </view> | |||
| </view> | |||
| <view class="area-item"> | |||
| <view class="u-padding-10 u-bg-gray" style="height: 100%;"> | |||
| <scroll-view :scroll-y="true" style="height: 100%"> | |||
| <u-cell-group v-if="isChooseP"> | |||
| <u-cell v-for="(item,index) in citys" :title="item.label" :arrow="false" :name="index" :key="index" | |||
| @click="cityChange"> | |||
| <u-icon v-if="isChooseC&&city===index" slot="right-icon" size="34" name="checkbox-mark"></u-icon> | |||
| </u-cell> | |||
| </u-cell-group> | |||
| </scroll-view> | |||
| </view> | |||
| </view> | |||
| <view class="area-item"> | |||
| <view class="u-padding-10 u-bg-gray" style="height: 100%;"> | |||
| <scroll-view :scroll-y="true" style="height: 100%"> | |||
| <u-cell-group v-if="isChooseC"> | |||
| <u-cell v-for="(item,index) in areas" :title="item.label" :arrow="false" :name="index" :key="index" | |||
| @click="areaChange"> | |||
| <u-icon v-if="isChooseA&&area===index" slot="right-icon" size="34" name="checkbox-mark"></u-icon> | |||
| </u-cell> | |||
| </u-cell-group> | |||
| </scroll-view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </u-popup> | |||
| </template> | |||
| <script> | |||
| import provinces from "./utils/province.js"; | |||
| import citys from "./utils/city.js"; | |||
| import areas from "./utils/area.js"; | |||
| /** | |||
| * city-select 省市区级联选择器 | |||
| * @property {String Number} z-index 弹出时的z-index值(默认1075) | |||
| * @property {Boolean} mask-close-able 是否允许通过点击遮罩关闭Picker(默认true) | |||
| * @property {String} default-region 默认选中的地区,中文形式 | |||
| * @property {String} default-code 默认选中的地区,编号形式 | |||
| */ | |||
| export default { | |||
| props: { | |||
| // 通过双向绑定控制组件的弹出与收起 | |||
| value: { | |||
| type: Boolean, | |||
| default: false | |||
| }, | |||
| // 默认显示的地区,可传类似["河北省", "秦皇岛市", "北戴河区"] | |||
| defaultRegion: { | |||
| type: Array, | |||
| default () { | |||
| return []; | |||
| } | |||
| }, | |||
| // 默认显示地区的编码,defaultRegion和areaCode同时存在,areaCode优先,可传类似["13", "1303", "130304"] | |||
| areaCode: { | |||
| type: Array, | |||
| default () { | |||
| return []; | |||
| } | |||
| }, | |||
| // 是否允许通过点击遮罩关闭Picker | |||
| maskCloseAble: { | |||
| type: Boolean, | |||
| default: true | |||
| }, | |||
| // 弹出的z-index值 | |||
| zIndex: { | |||
| type: [String, Number], | |||
| default: 0 | |||
| } | |||
| }, | |||
| data() { | |||
| return { | |||
| cityValue: "", | |||
| isChooseP: false, //是否已经选择了省 | |||
| province: 0, //省级下标 | |||
| provinces: provinces, | |||
| isChooseC: false, //是否已经选择了市 | |||
| city: 0, //市级下标 | |||
| citys: citys[0], | |||
| isChooseA: false, //是否已经选择了区 | |||
| area: 0, //区级下标 | |||
| areas: areas[0][0], | |||
| tabsIndex: 0, | |||
| } | |||
| }, | |||
| mounted() { | |||
| this.init(); | |||
| }, | |||
| computed: { | |||
| isChange() { | |||
| return this.tabsIndex > 1; | |||
| }, | |||
| genTabsList() { | |||
| let tabsList = [{ | |||
| name: "请选择" | |||
| }]; | |||
| if (this.isChooseP) { | |||
| tabsList[0]['name'] = this.provinces[this.province]['label']; | |||
| tabsList[1] = { | |||
| name: "请选择" | |||
| }; | |||
| } | |||
| if (this.isChooseC) { | |||
| tabsList[1]['name'] = this.citys[this.city]['label']; | |||
| tabsList[2] = { | |||
| name: "请选择" | |||
| }; | |||
| } | |||
| if (this.isChooseA) { | |||
| tabsList[2]['name'] = this.areas[this.area]['label']; | |||
| } | |||
| return tabsList; | |||
| }, | |||
| uZIndex() { | |||
| // 如果用户有传递z-index值,优先使用 | |||
| return this.zIndex ? this.zIndex : this.$u.zIndex.popup; | |||
| } | |||
| }, | |||
| methods: { | |||
| init() { | |||
| if (this.areaCode.length == 3) { | |||
| this.setProvince("", this.areaCode[0]); | |||
| this.setCity("", this.areaCode[1]); | |||
| this.setArea("", this.areaCode[2]); | |||
| } else if (this.defaultRegion.length == 3) { | |||
| this.setProvince(this.defaultRegion[0], ""); | |||
| this.setCity(this.defaultRegion[1], ""); | |||
| this.setArea(this.defaultRegion[2], ""); | |||
| }; | |||
| }, | |||
| setProvince(label = "", value = "") { | |||
| this.provinces.map((v, k) => { | |||
| if (value ? v.value == value : v.label == label) { | |||
| this.provinceChange(k); | |||
| } | |||
| }) | |||
| }, | |||
| setCity(label = "", value = "") { | |||
| this.citys.map((v, k) => { | |||
| if (value ? v.value == value : v.label == label) { | |||
| this.cityChange(k); | |||
| } | |||
| }) | |||
| }, | |||
| setArea(label = "", value = "") { | |||
| this.areas.map((v, k) => { | |||
| if (value ? v.value == value : v.label == label) { | |||
| this.isChooseA = true; | |||
| this.area = k; | |||
| } | |||
| }) | |||
| }, | |||
| close() { | |||
| this.$emit('input', false); | |||
| }, | |||
| tabsChange(index) { | |||
| this.tabsIndex = index; | |||
| }, | |||
| provinceChange(param) { | |||
| this.isChooseP = true; | |||
| this.isChooseC = false; | |||
| this.isChooseA = false; | |||
| this.province = param.name; | |||
| this.citys = citys[param.name]; | |||
| this.tabsIndex = 1; | |||
| }, | |||
| cityChange(param) { | |||
| this.isChooseC = true; | |||
| this.isChooseA = false; | |||
| this.city = param.name; | |||
| this.areas = areas[this.province][param.name]; | |||
| this.tabsIndex = 2; | |||
| }, | |||
| areaChange(param) { | |||
| this.isChooseA = true; | |||
| this.area = param.name; | |||
| let result = {}; | |||
| result.province = this.provinces[this.province]; | |||
| result.city = this.citys[this.city]; | |||
| result.area = this.areas[this.area]; | |||
| this.$emit('city-change', result); | |||
| this.close(); | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss"> | |||
| .area-box { | |||
| width: 100%; | |||
| overflow: hidden; | |||
| height: 800rpx; | |||
| .u-flex { | |||
| display: flex; | |||
| } | |||
| .u-padding-10 { | |||
| padding: 10rpx; | |||
| } | |||
| >view { | |||
| width: 150%; | |||
| transition: transform 0.3s ease-in-out 0s; | |||
| transform: translateX(0); | |||
| &.change { | |||
| transform: translateX(-33.3333333%); | |||
| } | |||
| } | |||
| .area-item { | |||
| width: 33.3333333%; | |||
| height: 800rpx; | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1 @@ | |||
| var provinceData=[{"label":"北京市","value":"11"},{"label":"天津市","value":"12"},{"label":"河北省","value":"13"},{"label":"山西省","value":"14"},{"label":"内蒙古自治区","value":"15"},{"label":"辽宁省","value":"21"},{"label":"吉林省","value":"22"},{"label":"黑龙江省","value":"23"},{"label":"上海市","value":"31"},{"label":"江苏省","value":"32"},{"label":"浙江省","value":"33"},{"label":"安徽省","value":"34"},{"label":"福建省","value":"35"},{"label":"江西省","value":"36"},{"label":"山东省","value":"37"},{"label":"河南省","value":"41"},{"label":"湖北省","value":"42"},{"label":"湖南省","value":"43"},{"label":"广东省","value":"44"},{"label":"广西壮族自治区","value":"45"},{"label":"海南省","value":"46"},{"label":"重庆市","value":"50"},{"label":"四川省","value":"51"},{"label":"贵州省","value":"52"},{"label":"云南省","value":"53"},{"label":"西藏自治区","value":"54"},{"label":"陕西省","value":"61"},{"label":"甘肃省","value":"62"},{"label":"青海省","value":"63"},{"label":"宁夏回族自治区","value":"64"},{"label":"新疆维吾尔自治区","value":"65"},{"label":"台湾","value":"66"},{"label":"香港","value":"67"},{"label":"澳门","value":"68"}];export default provinceData; | |||
| @ -0,0 +1,53 @@ | |||
| import Vue from 'vue' | |||
| import utils from './utils/utils.js' | |||
| // 当前环境 | |||
| const type = 'prod' | |||
| // 环境配置 | |||
| const config = { | |||
| dev : { | |||
| baseUrl : 'http://augcl.natapp1.cc/employ-api', | |||
| }, | |||
| prod : { | |||
| baseUrl : 'https://employadmin.augcl.com/employ-api', | |||
| } | |||
| } | |||
| // 默认配置 | |||
| const defaultConfig = { | |||
| mapKey : 'XMBBZ-BCPCV-SXPPQ-5Y7MY-PHZXK-YFFVU', | |||
| aliOss : { | |||
| url : 'https://tennis-oss.xzaiyp.top/', | |||
| config : { | |||
| //桶的地址 | |||
| region: 'oss-cn-guangzhou', | |||
| //id | |||
| accessKeyId:'LTAI5tNycA46YTwm383dRvMV', | |||
| //密钥 | |||
| accessKeySecret:'tAdbYQCmdur6jbZ8hjvgB7T1Z52mIG', | |||
| //桶的名字 | |||
| bucket: 'zhuoqiu-image', | |||
| endpoint:'oss-cn-guangzhou.aliyuncs.com', | |||
| } | |||
| }, | |||
| } | |||
| uni.$u.setConfig({ | |||
| // 修改$uv.config对象的属性 | |||
| config: { | |||
| // 修改默认单位为rpx,相当于执行 uni.$uv.config.unit = 'rpx' | |||
| unit: 'px' | |||
| }, | |||
| }) | |||
| Vue.prototype.$config = utils.deepMergeObject(defaultConfig, config[type]) | |||
| // Vue.prototype.$api = api | |||
| export default Vue.prototype.$config | |||
| @ -0,0 +1,17 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="zh-CN"> | |||
| <head> | |||
| <meta charset="utf-8"> | |||
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> | |||
| <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> | |||
| <title> | |||
| <%= htmlWebpackPlugin.options.title %> | |||
| </title> | |||
| </head> | |||
| <body> | |||
| <noscript> | |||
| <strong>Please enable JavaScript to continue.</strong> | |||
| </noscript> | |||
| <div id="app"></div> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,39 @@ | |||
| import Vue from 'vue' | |||
| import App from './App' | |||
| // vuex | |||
| import store from './store' | |||
| // 引入全局uView | |||
| import uView from '@/uni_modules/uview-ui' | |||
| import mixin from './common/mixin' | |||
| Vue.prototype.$store = store | |||
| Vue.config.productionTip = false | |||
| App.mpType = 'app' | |||
| Vue.use(uView) | |||
| // #ifdef MP | |||
| // 引入uView对小程序分享的mixin封装 | |||
| const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare.js') | |||
| Vue.mixin(mpShare) | |||
| // #endif | |||
| import './config' | |||
| import './utils/index.js' | |||
| Vue.mixin(mixin) | |||
| const app = new Vue({ | |||
| store, | |||
| ...App | |||
| }) | |||
| // 引入请求封装 | |||
| require('./util/request/index')(app) | |||
| app.$mount() | |||
| @ -0,0 +1,152 @@ | |||
| { | |||
| "name" : "protection-wechat-uniapp", | |||
| "appid" : "__UNI__900BBCB", | |||
| "description" : "", | |||
| "versionName" : "2.0.37", | |||
| "versionCode" : 1, | |||
| "transformPx" : false, | |||
| "app-plus" : { | |||
| "optimization" : { | |||
| "subPackages" : true | |||
| }, | |||
| "safearea" : { | |||
| "bottom" : { | |||
| "offset" : "none" | |||
| } | |||
| }, | |||
| "splashscreen" : { | |||
| "alwaysShowBeforeRender" : true, | |||
| "waiting" : true, | |||
| "autoclose" : true, | |||
| "delay" : 0 | |||
| }, | |||
| "usingComponents" : true, | |||
| "nvueCompiler" : "uni-app", | |||
| "compilerVersion" : 3, | |||
| "modules" : { | |||
| "Webview-x5" : {} | |||
| }, | |||
| "distribute" : { | |||
| "android" : { | |||
| "permissions" : [ | |||
| "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||
| "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||
| "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", | |||
| "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||
| "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", | |||
| "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", | |||
| "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | |||
| ], | |||
| "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ] | |||
| }, | |||
| "ios" : { | |||
| "idfa" : false | |||
| }, | |||
| "sdkConfigs" : { | |||
| "ad" : {} | |||
| }, | |||
| "icons" : { | |||
| "android" : { | |||
| "hdpi" : "unpackage/res/icons/72x72.png", | |||
| "xhdpi" : "unpackage/res/icons/96x96.png", | |||
| "xxhdpi" : "unpackage/res/icons/144x144.png", | |||
| "xxxhdpi" : "unpackage/res/icons/192x192.png" | |||
| }, | |||
| "ios" : { | |||
| "appstore" : "unpackage/res/icons/1024x1024.png", | |||
| "ipad" : { | |||
| "app" : "unpackage/res/icons/76x76.png", | |||
| "app@2x" : "unpackage/res/icons/152x152.png", | |||
| "notification" : "unpackage/res/icons/20x20.png", | |||
| "notification@2x" : "unpackage/res/icons/40x40.png", | |||
| "proapp@2x" : "unpackage/res/icons/167x167.png", | |||
| "settings" : "unpackage/res/icons/29x29.png", | |||
| "settings@2x" : "unpackage/res/icons/58x58.png", | |||
| "spotlight" : "unpackage/res/icons/40x40.png", | |||
| "spotlight@2x" : "unpackage/res/icons/80x80.png" | |||
| }, | |||
| "iphone" : { | |||
| "app@2x" : "unpackage/res/icons/120x120.png", | |||
| "app@3x" : "unpackage/res/icons/180x180.png", | |||
| "notification@2x" : "unpackage/res/icons/40x40.png", | |||
| "notification@3x" : "unpackage/res/icons/60x60.png", | |||
| "settings@2x" : "unpackage/res/icons/58x58.png", | |||
| "settings@3x" : "unpackage/res/icons/87x87.png", | |||
| "spotlight@2x" : "unpackage/res/icons/80x80.png", | |||
| "spotlight@3x" : "unpackage/res/icons/120x120.png" | |||
| } | |||
| } | |||
| } | |||
| } | |||
| }, | |||
| "quickapp" : {}, | |||
| "mp-weixin" : { | |||
| "appid" : "wxecec2f505129f162", | |||
| "setting" : { | |||
| "urlCheck" : false, | |||
| "es6" : false, | |||
| "minified" : true, | |||
| "postcss" : true | |||
| }, | |||
| "optimization" : { | |||
| "subPackages" : true | |||
| }, | |||
| "usingComponents" : true, | |||
| "mergeVirtualHostAttributes" : true | |||
| }, | |||
| "mp-alipay" : { | |||
| "usingComponents" : true, | |||
| "component2" : true | |||
| }, | |||
| "mp-qq" : { | |||
| "optimization" : { | |||
| "subPackages" : true | |||
| }, | |||
| "appid" : "15646153" | |||
| }, | |||
| "mp-baidu" : { | |||
| "usingComponents" : true, | |||
| "appid" : "" | |||
| }, | |||
| "mp-toutiao" : { | |||
| "usingComponents" : true, | |||
| "appid" : "" | |||
| }, | |||
| "h5" : { | |||
| "template" : "index.html", | |||
| "router" : { | |||
| "mode" : "history", | |||
| "base" : "" | |||
| }, | |||
| "optimization" : { | |||
| "treeShaking" : { | |||
| "enable" : false | |||
| } | |||
| }, | |||
| "title" : "uView UI", | |||
| "sdkConfigs" : { | |||
| "maps" : { | |||
| "qqmap" : { | |||
| "key" : "" | |||
| } | |||
| } | |||
| }, | |||
| "domain" : "" | |||
| }, | |||
| "vueVersion" : "2" | |||
| } | |||
| @ -0,0 +1,14 @@ | |||
| { | |||
| "id": "uview-ui", | |||
| "scripts": { | |||
| "test": "eslint . --fix" | |||
| }, | |||
| "dependencies": { | |||
| "ali-oss": "^6.21.0", | |||
| "dayjs": "^1.11.12" | |||
| }, | |||
| "devDependencies": { | |||
| "eslint": "^8.2.0", | |||
| "eslint-config-airbnb": "^19.0.0" | |||
| } | |||
| } | |||
| @ -0,0 +1,201 @@ | |||
| { | |||
| "pages": [ | |||
| { | |||
| "path": "pages/user/index", | |||
| "style": { | |||
| "navigationBarTitleText": "我的", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/home/index", | |||
| "style": { | |||
| "navigationBarTitleText": "环卫车", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/identity/index", | |||
| "style": { | |||
| "navigationBarTitleText": "选择身份", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/auth/index", | |||
| "style": { | |||
| "navigationBarTitleText": "微信登录", | |||
| "navigationStyle":"custom", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/login/index", | |||
| "style": { | |||
| "navigationStyle":"custom" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/reservation/index", | |||
| "style": { | |||
| "navigationBarTitleText": "我的预约", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| } | |||
| ], | |||
| "subPackages": [ | |||
| { | |||
| "root": "pages_subpack", | |||
| "pages": [ | |||
| { | |||
| "path": "apply/index", | |||
| "style": { | |||
| "navigationBarTitleText": "我的寻车申请", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "category/index", | |||
| "style": { | |||
| "navigationBarTitleText": "新车商城", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "news/index", | |||
| "style": { | |||
| "navigationBarTitleText": "新闻", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "news/detail", | |||
| "style": { | |||
| "navigationBarTitleText": "详情", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "detail/index", | |||
| "style": { | |||
| "navigationBarTitleText": "详情", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "success/index", | |||
| "style": { | |||
| "navigationBarTitleText": "发布成功", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "version/index", | |||
| "style": { | |||
| "navigationBarTitleText": "关于本程序", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "recommend/index", | |||
| "style": { | |||
| "navigationBarTitleText": "我的推荐", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "release/index", | |||
| "style": { | |||
| "navigationBarTitleText": "发布订单", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "invite/index", | |||
| "style": { | |||
| "navigationBarTitleText": "邀请", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "business/index", | |||
| "style": { | |||
| "navigationBarTitleText": "企业注册", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| }, | |||
| { | |||
| "path": "person/index", | |||
| "style": { | |||
| "navigationBarTitleText": "个人注册", | |||
| "navigationStyle":"default", | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "navigationBarTextStyle": "white" | |||
| } | |||
| } | |||
| ] | |||
| } | |||
| ], | |||
| "preloadRule": { | |||
| }, | |||
| "globalStyle": { | |||
| "navigationBarBackgroundColor": "#669A32", | |||
| "backgroundColor": "#f5f5f5", | |||
| "navigationBarTextStyle": "black", | |||
| "navigationBarTitleText": "环卫车", | |||
| "backgroundColorTop": "#f5f5f5", | |||
| "backgroundColorBottom": "#f5f5f5" | |||
| }, | |||
| "tabBar": { | |||
| "color": "#666666", | |||
| "selectedColor": "#669A32", | |||
| "backgroundColor": "#ffffff", | |||
| "list": [ | |||
| { | |||
| "pagePath": "pages/home/index", | |||
| "iconPath": "static/image/home.png", | |||
| "selectedIconPath": "static/image/home_selected.png", | |||
| "text": "首页" | |||
| }, { | |||
| "pagePath": "pages/user/index", | |||
| "iconPath": "static/image/user.png", | |||
| "selectedIconPath": "static/image/user_selected.png", | |||
| "text": "我的" | |||
| } | |||
| ] | |||
| } | |||
| } | |||
| @ -0,0 +1,117 @@ | |||
| <template> | |||
| <view class="se-pos se-h-vh-100"> | |||
| <view class="se-flex se-pt-200 se-flex-h-c se-flex-ff-cw"> | |||
| <image class="se-w-150 se-h-150" src="@/static/image/logo.png" mode=""></image> | |||
| <view class="se-flex se-flex-h-c se-fs-34 se-fw-6 se-c-black se-mt-40"> | |||
| 环卫车小程序 | |||
| </view> | |||
| </view> | |||
| <view class="se-pb-200 se-pos-cb se-w-p-100"> | |||
| <view @click="onLogin()" class="se-mx-80 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-green"> | |||
| <image class="se-w-45 se-h-35" src="@/static/image/wechat.png" mode=""></image> | |||
| <text class="se-ml-10">微信登录</text> | |||
| </view> | |||
| <!-- <view class="se-mx-80 se-br-40 se-mt-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-66 se-bgc-f5"> | |||
| <text>手机验证码登录</text> | |||
| </view> --> | |||
| <view class="se-mx-80 se-br-40 se-mt-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-24 se-c-33"> | |||
| <u-checkbox-group @change="checkboxChange" v-model="checked"> | |||
| <u-checkbox name="1" activeColor="#669A32" label-size="12" shape="circle" label="阅读并同意"></u-checkbox> | |||
| </u-checkbox-group> | |||
| <text class="se-c-green" @click="show=true">《隐私政策》</text> | |||
| <text class="se-c-green" @click="show=true">《服务条款》</text> | |||
| </view> | |||
| </view> | |||
| <u-popup :show="show" :custom-style="{alignItems:'center'}" mode="center" bg-color="transparent"> | |||
| <view class="se-w-600 se-bgc-white se-br-40 se-p-40"> | |||
| <view class="se-flex se-flex-h-c se-fs-34 se-fw-6 se-c-black se-mt-40"> | |||
| 服务协议和隐私权政策 | |||
| </view> | |||
| <view class="se-lh-40 se-mt-40 se-fs-24 se-c-99"> | |||
| <text>请您务必审慎阅读、充分理解用户协议和隐私政策各条款,包括但不限于用户注意事项、用户行为规范以及为了向你提供服务而收集、使用、存储你个人信息的情况等。你可阅读</text> | |||
| <text class="se-c-black se-fw-6" @click="handleOpenPrivacyContract()">《环卫车小程序用户服务协议》</text> | |||
| <text>和</text> | |||
| <text class="se-c-black se-fw-6" @click="handleOpenPrivacyContract()">《环卫车小程序平台隐私权政策》</text> | |||
| <text>了解详细信息。如你同意,请点击下方按钮开始接受我们的服务。</text> | |||
| </view> | |||
| <view class="se-flex se-flex-h-sb se-mt-40"> | |||
| <view @click="onCancel" class="se-br-20 se-flex-1 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-66 se-bgc-f5"> | |||
| <text>不同意</text> | |||
| </view> | |||
| <view @click="onAgree" class="se-br-20 se-ml-20 se-flex-1 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-green"> | |||
| <text class="se-ml-10">同意</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </u-popup> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import { fetchMenu,wxLogin } from "@/common/api.js" | |||
| export default { | |||
| name : 'Auth', | |||
| data() { | |||
| return { | |||
| checked:[], | |||
| show:false | |||
| } | |||
| }, | |||
| methods: { | |||
| checkboxChange(n) { | |||
| console.log('change', n); | |||
| }, | |||
| onCancel(){ | |||
| this.show=false; | |||
| this.checked=[]; | |||
| }, | |||
| onAgree(){ | |||
| this.show=false; | |||
| this.checked=['1']; | |||
| }, | |||
| onLogin(){ | |||
| let that = this | |||
| if(that.checked.length==0){ | |||
| return uni.showToast({ | |||
| icon: "none", | |||
| title: "请勾选隐私协议" | |||
| }) | |||
| } | |||
| uni.showLoading({ | |||
| title: '登录中...' | |||
| }) | |||
| uni.navigateTo({ | |||
| url:"/pages/login/index" | |||
| }) | |||
| // uni.login({ | |||
| // success(res) { | |||
| // console.info(res.code) | |||
| // if(res.errMsg != "login:ok"){ | |||
| // return | |||
| // } | |||
| // wxLogin({ code : res.code }).then((response) => { | |||
| // uni.hideLoading() | |||
| // uni.setStorageSync('token', response.result.token) | |||
| // that.commit('setUserInfo',{userInfo:response.result.userInfo,token:response.result.token}) | |||
| // }).catch(() =>{ | |||
| // }) | |||
| // } | |||
| // }) | |||
| }, | |||
| handleOpenPrivacyContract() { | |||
| // 打开隐私协议页面 | |||
| wx.openPrivacyContract({ | |||
| success: () => {}, // 打开成功 | |||
| fail: () => {}, // 打开失败 | |||
| complete: () => {} | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| </style> | |||
| @ -0,0 +1,179 @@ | |||
| <template> | |||
| <view> | |||
| <view class="se-pos se-pos-lt" style="z-index: -1;width: 750rpx;height: 388rpx; | |||
| background: linear-gradient(168deg,#669a32 0%, #669a32 72%); | |||
| border-radius: 0rpx 0rpx 80rpx 80rpx;"> | |||
| </view> | |||
| <view class="se-flex se-flex-h-sb se-px-20 se-pb-10 se-pt-10 se-zi-s" style="background-color: transparent;"> | |||
| <view class="se-c-white se-fs-28"> | |||
| <view class="se-c-white se-py-5 se-px-10 se-fw-6 se-br-12 se-fs-28 se-display-ib"> | |||
| 环保 | |||
| </view> | |||
| <text class="se-ml-10 se-fw-6 se-fs-22">寻找你想要的</text> | |||
| </view> | |||
| </view> | |||
| <view class="se-px-40 se-py-20"> | |||
| <view class=" se-br-50 se-c-black se-px-20 se-py-5 se-flex se-flex-h-sb se-fs-26"> | |||
| <view class="se-pl-10 se-pr-20 se-flex se-flex-h se-h-40 se-lh-40 " @click="handleAreaChange()"> | |||
| <text class="se-pr-20 se-c-white nobreak">{{city?city:'未知'}}</text> | |||
| <u-icon name="arrow-down-fill" color="#ffffff"></u-icon> | |||
| </view> | |||
| <view class="se-ml-20 se-w-p-100"> | |||
| <u-search :disabled="true" @click="onSearch()" :showAction="false" bgColor="#ffffff" placeholder="搜索" v-model="keyword"></u-search> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="se-pb-20 se-pt-40 se-zi-s"> | |||
| <view class="se-px-20"> | |||
| <u-swiper height="300rpx" style="background-color: transparent;height: 300rpx;" :list="list" @click="swiperClick"></u-swiper> | |||
| </view> | |||
| <!-- <view class="se-pt-10 se-bgc-white se-px-0 se-py-10 se-ta-l se-c-orange se-flex se-flex-ai-c se-fs-26"> | |||
| <image class="se-a-80" src="@/static/image/aed60x.png" mode=""></image> | |||
| <text class="se-ml-10">今日有6个工作息新发布....</text> | |||
| </view> --> | |||
| </view> | |||
| <view class="se-my-20 se-pt-20 se-bgc-white se-grid"> | |||
| <navigator :url="item.url" v-for="(item, index) in nav" :key="index" class="se-flex-v-c se-pt-10 se-mb-10"> | |||
| <image class="se-a-100 se-br-20" :src="item.img" mode=""></image> | |||
| <text class="se-w-150 se-h-60 se-lh-30 se-c-black se-fs-22 se-ta-c se-mt-10 se-toe-2">{{item.name}}</text> | |||
| </navigator> | |||
| </view> | |||
| <view class="se-px-30 se-py-30 se-bgc-white se-c-black"> | |||
| 精品二手车 | |||
| </view> | |||
| <view class="se-grid-2"> | |||
| <view class="items-box se-br-5 se-px-10" v-for="(items,indexs) in 10" :key="indexs" @click="onDetail(items)"> | |||
| <image class="se-w-p-100 se-h-200 se-py-5" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode=""></image> | |||
| <view class="se-c-black se-fs-24 se-fw-6 se-mt-10"> | |||
| HOUS环卫车 | |||
| </view> | |||
| <view class="se-flex se-mt-10"> | |||
| <view class="se-tag"> | |||
| 品牌名 | |||
| </view> | |||
| <view class="se-tag"> | |||
| 品牌名 | |||
| </view> | |||
| <view class="se-tag"> | |||
| 品牌名 | |||
| </view> | |||
| </view> | |||
| <view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20"> | |||
| <view class="se-fs-24 se-display-ib"> | |||
| <text class="se-c-orange se-fs-30 se-fw-6"><text class="se-fs-24">¥</text>6000<text class="se-fs-24">元</text></text> | |||
| </view> | |||
| <view class="se-display-ib se-bgc-orange se-px-15 se-br-40 se-flex-h-c se-h-40 se-lh-40 se-ta-c se-fs-22 se-c-white se-b"> | |||
| <text>查看详情</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| components:{ | |||
| }, | |||
| data(){ | |||
| return { | |||
| city:"", | |||
| list: [ | |||
| "https://cdn.uviewui.com/uview/swiper/swiper1.png" | |||
| ], | |||
| nav:[ | |||
| { | |||
| img:"../../static/image/nav1.png", | |||
| name:"新车商城", | |||
| url:"/pages_subpack/category/index" | |||
| }, | |||
| { | |||
| img:"../../static/image/nav2.png", | |||
| name:"二手车商城", | |||
| url:"/pages_subpack/category/index" | |||
| }, | |||
| { | |||
| img:"../../static/image/nav3.png", | |||
| name:"环卫设备及配件", | |||
| url:"/pages_subpack/category/index" | |||
| }, | |||
| { | |||
| img:"../../static/image/nav4.png", | |||
| name:"车辆租赁", | |||
| url:"/pages_subpack/category/index" | |||
| }, | |||
| { | |||
| img:"../../static/image/nav5.png", | |||
| name:"新闻资讯", | |||
| url:"/pages_subpack/news/index" | |||
| }, | |||
| { | |||
| img:"../../static/image/nav6.png", | |||
| name:"帮助寻车", | |||
| url:"/pages_subpack/category/index" | |||
| } | |||
| ], | |||
| } | |||
| }, | |||
| mounted() { | |||
| }, | |||
| methods:{ | |||
| handleAreaChange(){ | |||
| console.info("获取地址") | |||
| }, | |||
| swiperClick(event){ | |||
| console.info(event) | |||
| }, | |||
| onDetail(event){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/detail/index" | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| .nobreak { | |||
| white-space: nowrap; | |||
| } | |||
| page{ | |||
| background-color: #f5f5f5; | |||
| } | |||
| .enterprise{ | |||
| background: #ff7a31; | |||
| border: 4rpx solid rgba(255,255,255,0.50); | |||
| border-radius: 14rpx; | |||
| } | |||
| .master{ | |||
| background: #f0b744; | |||
| border: 4rpx solid rgba(255,255,255,0.50); | |||
| border-radius: 14rpx; | |||
| } | |||
| .items-box{ | |||
| background: #ffffff; | |||
| border-radius: 8rpx; | |||
| box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(0,0,0,0.05); | |||
| padding: 20rpx; | |||
| } | |||
| .se-tag{ | |||
| padding: 5rpx 10rpx; | |||
| background: #fff2df; | |||
| border-radius: 4rpx; | |||
| border: 2rpx solid rgba(0,0,0,0.00); | |||
| font-size: 16rpx; | |||
| font-family: PingFang SC, PingFang SC-Bold; | |||
| font-weight: 700; | |||
| text-align: center; | |||
| color: #fab143; | |||
| margin-left: 10rpx; | |||
| } | |||
| .se-tag:first-child{ | |||
| margin-left: 0rpx; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,55 @@ | |||
| <template> | |||
| <view> | |||
| <view class="se-fs-40 se-fw-6 se-ta-c se-pt-120"> | |||
| 请选择您的身份 | |||
| </view> | |||
| <view @click="onBusiness" class="business se-mt-80 se-br-10 se-mx-35 se-bgc-red se-flex se-flex-h-sb se-w-680 se-h-240 se-fs-48 se-c-white"> | |||
| <text class="se-ml-80">企业</text> | |||
| <image class="se-a-170 se-br-p-50 se-mr-80" src="@/static/image/7525122.png" mode=""></image> | |||
| </view> | |||
| <view @click="onPerson" class="master se-mt-80 se-br-10 se-mx-35 se-bgc-orange se-flex se-flex-h-sb se-w-680 se-h-240 se-fs-48 se-c-white"> | |||
| <text class="se-ml-80">个人</text> | |||
| <image class="se-a-170 se-br-p-50 se-mr-80" src="@/static/image/7525121.png" mode=""></image> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| onBusiness(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/business/index" | |||
| }) | |||
| }, | |||
| onPerson(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/person/index" | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| .business{ | |||
| width: 690rpx; | |||
| height: 240rpx; | |||
| background: #f0a921; | |||
| border: 8rpx solid rgba(255,255,255,0.64); | |||
| border-radius: 16rpx; | |||
| } | |||
| .master{ | |||
| width: 690rpx; | |||
| height: 240rpx; | |||
| background: #87bf53; | |||
| border: 8rpx solid rgba(255,255,255,0.64); | |||
| border-radius: 16rpx; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,138 @@ | |||
| <template> | |||
| <view> | |||
| <view class="se-pt-200 se-flex se-flex-h-c se-flex-ff-cw"> | |||
| <image class="se-w-150 se-h-150" src="@/static/image/logo.png" mode=""></image> | |||
| <view class="se-flex se-flex-h-c se-fs-34 se-fw-6 se-c-black se-mt-40"> | |||
| 环卫车小程序 | |||
| </view> | |||
| <view class="se-mt-20 se-fs-26 se-c-black se-flex se-flex-h-c"> | |||
| 申请获取您的头像、昵称 | |||
| </view> | |||
| </view> | |||
| <view class="se-mx-40 se-py-100"> | |||
| <view class="se-b-t se-b-b se-flex se-h-140 se-lh-140 se-flex-h-sb"> | |||
| <text>头像</text> | |||
| <button class="se-w-100 se-h-100 se-p-0 se-m-0" open-type="chooseAvatar" @chooseavatar="onChooseAvatar"> | |||
| <image v-if="imagUrl" class="se-w-100 se-h-100" :src="imagUrl"></image> | |||
| <image v-else class="se-w-100 se-h-100" src="@/static/image/header.png" mode=""></image> | |||
| </button> | |||
| </view> | |||
| <view class=" se-b-b se-flex se-h-140 se-lh-140 se-flex-h-sb"> | |||
| <text>昵称</text> | |||
| <input type="nickname" placeholder="请输入昵称" v-model="nameUser" | |||
| @blur="bindblur" class="se-h-80 se-lh-80 se-w-320 se-fs-24 se-ta-r" placeholder-class="se-fs-24 se-ta-r" /> | |||
| </view> | |||
| <!-- <view class=" se-b-b se-flex se-h-140 se-lh-140 se-flex-h-sb"> | |||
| <text>手机号</text> | |||
| <button v-if="phone" class="default-btn se-h-100 se-p-0 se-m-0" open-type="getPhoneNumber" @getphonenumber="onPhonenumber">{{phone}}</button> | |||
| <button v-else class="se-w-140 se-h-60 se-lh-60 se-fs-20 se-bgc-green se-c-white se-py-0 se-br-30 se-px-20 se-m-0" open-type="getPhoneNumber" @getphonenumber="onPhonenumber"> | |||
| 获取手机号 | |||
| </button> | |||
| </view> --> | |||
| </view> | |||
| <view class="se-mx-40"> | |||
| <view @click="onUpdateInfo" class="se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-green"> | |||
| 确认 | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| // import { UpdateInfo,bindPhone } from "@/common/api.js" | |||
| export default { | |||
| name : 'Login', | |||
| data() { | |||
| return { | |||
| nameUser:"", | |||
| imagUrl:"", | |||
| phone:"", | |||
| back:0 | |||
| } | |||
| }, | |||
| onLoad(options) { | |||
| // if(options.back==1){ | |||
| // this.imagUrl = uni.getStorageSync('userInfo').headImage | |||
| // this.nameUser = uni.getStorageSync('userInfo').nickName | |||
| // this.phone = uni.getStorageSync('userInfo').phone | |||
| // this.back = options.back | |||
| // } | |||
| }, | |||
| methods: { | |||
| bindblur(event) { | |||
| this.nameUser = event.target.value | |||
| }, | |||
| onChooseAvatar(res) { | |||
| let self = this | |||
| self.$Oss.ossUpload(res.target.avatarUrl).then(url => { | |||
| self.imagUrl = url | |||
| }) | |||
| }, | |||
| onPhonenumber(event){ | |||
| let that = this | |||
| var detail = event.detail; | |||
| if(detail.errMsg=='getPhoneNumber:ok'){ | |||
| let params={ | |||
| code : detail.code, | |||
| encryptedData: detail.encryptedData, | |||
| iv:detail.iv, | |||
| sessionKey: uni.getStorageSync('sessionKey'), | |||
| openid:uni.getStorageSync('userInfo').appletOpenid | |||
| } | |||
| bindPhone(params).then((response) => { | |||
| console.info(response) | |||
| that.phone = response.result | |||
| }).catch(error=>{ | |||
| }) | |||
| } | |||
| }, | |||
| onUpdateInfo(){ | |||
| let that = this | |||
| let params={ | |||
| avatarUrl:that.imagUrl, | |||
| nickName:that.nameUser, | |||
| // phone:that.phone | |||
| } | |||
| uni.navigateTo({ | |||
| url:"/pages/identity/index" | |||
| }) | |||
| // &&that.phone | |||
| // if(that.imagUrl&&that.nameUser){ | |||
| // UpdateInfo(params).then((response) => { | |||
| // if(this.back==1){ | |||
| // uni.navigateBack({ | |||
| // delta:1 | |||
| // }) | |||
| // }else{ | |||
| // uni.switchTab({ | |||
| // url:"/pages/home/index" | |||
| // }) | |||
| // } | |||
| // }).catch((error) =>{ | |||
| // }) | |||
| // }else{ | |||
| // return uni.showToast({ | |||
| // icon:"none", | |||
| // title:"头像和昵称不能为空!" | |||
| // }) | |||
| // } | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| .default-btn{ | |||
| background-color: #fff; | |||
| } | |||
| .default-btn::after{ | |||
| content: ""; | |||
| border: none; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,86 @@ | |||
| <template> | |||
| <view> | |||
| <u-sticky bgColor="#ffffff"> | |||
| <u-tabs :list="nav" :current="current" lineColor="#669A32" :activeStyle="{ | |||
| color: '#669A32', | |||
| transform: 'scale(1.05)' | |||
| }" :scrollable="true" itemStyle="padding-left: 20rpx; padding-right: 20rpx;font-size:22rpx; height: 80rpx;" | |||
| @click="tabClick"></u-tabs> | |||
| </u-sticky> | |||
| <view class="se-p-40"> | |||
| <view class="se-px-40 se-mb-30 se-py-30 se-bgc-white se-br-40 se-bs-b" v-for="(items,indexs) in 20" | |||
| :key="indexs"> | |||
| <view class="se-flex se-flex-h-sb se-fw-6 se-fs-32 se-pb-20"> | |||
| <view class="se-flex"> | |||
| <text>环卫车租赁</text> | |||
| </view> | |||
| <view class="se-c-green se-fw-4"> | |||
| 已预约 | |||
| </view> | |||
| </view> | |||
| <view class="se-flex"> | |||
| <view class="se-w-160 se-h-160"> | |||
| <image class="se-w-160 se-h-160 se-br-10" src="https://cdn.uviewui.com/uview/album/1.jpg" | |||
| mode=""></image> | |||
| </view> | |||
| <view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs"> | |||
| <view class="se-fw-6 se-c-black se-fs-30 se-display-ib">客户名称:李先生</view> | |||
| <view class="se-fs-24 se-c-text-third se-display-ib">电话:1318969845</view> | |||
| <view class="se-fs-24 se-c-text-third se-display-ib">租赁地址:广东省广州市番禺区石桥镇</view> | |||
| </view> | |||
| </view> | |||
| <view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20"> | |||
| <view class="se-fs-24 se-display-ib"></view> | |||
| <view | |||
| class="se-display-ib se-px-20 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-bgc-green se-ta-c se-fs-24 se-fs-24 se-c-white se-b"> | |||
| <text>电话联系</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| components: { | |||
| }, | |||
| data() { | |||
| return { | |||
| current: 0, | |||
| nav: [{ | |||
| name: '全部', | |||
| }, { | |||
| name: '新车', | |||
| }, { | |||
| name: '二手车' | |||
| }, { | |||
| name: '租赁车辆' | |||
| }, | |||
| { | |||
| name: '环卫设备及配件' | |||
| } | |||
| ], | |||
| list: [{}, | |||
| {}, | |||
| {}, | |||
| {}, | |||
| {}, | |||
| {}, | |||
| {}, | |||
| {}, | |||
| {}, | |||
| ] | |||
| } | |||
| }, | |||
| methods: { | |||
| tabClick(event) { | |||
| this.current = event.index | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| </style> | |||
| @ -0,0 +1,193 @@ | |||
| <template> | |||
| <view class="u-page"> | |||
| <view class="se-pt-50 se-pb-40 se-px-40 se-bgc-green se-c-white se-pos"> | |||
| <view class="se-flex"> | |||
| <image src="@/static/image/header.png" class="se-br-p-50 se-w-100 se-h-100" mode=""></image> | |||
| <view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs"> | |||
| <view class="se-flex"> | |||
| <text class="se-fw-6 se-fs-30">热心小肖</text> | |||
| <!-- <view class="se-flex se-flex-ai-c se-ml-20"> | |||
| <image class="se-a-25 se-mr-10" src="@/static/image/pencil.png" mode=""></image> | |||
| <text class="se-fs-22">修改资料</text> | |||
| </view> --> | |||
| </view> | |||
| <view class="se-fs-24 se-display-ib"> | |||
| <text>手机号:</text> | |||
| <text class="se-ml-20">13189698114</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="se-m-30 se-mt-30 se-pl-30 se-pr-20 se-br-20 se-bgc-white"> | |||
| <view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onReservation()"> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <image class="se-a-30" src="@/static/image/482011.png" mode=""></image> | |||
| <text class="se-ml-20 se-fs-24 se-fw-5">预约信息</text> | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <u-icon name="arrow-right"></u-icon> | |||
| </view> | |||
| </view> | |||
| <view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onRelease"> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <image class="se-a-30" src="@/static/image/482014.png" mode=""></image> | |||
| <text class="se-ml-20 se-fs-24 se-fw-5">我的发布</text> | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <u-icon name="arrow-right"></u-icon> | |||
| </view> | |||
| </view> | |||
| <view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onApply()"> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <image class="se-a-30" src="@/static/image/482013.png" mode=""></image> | |||
| <text class="se-ml-20 se-fs-24 se-fw-5">我的寻车申请</text> | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <u-icon name="arrow-right"></u-icon> | |||
| </view> | |||
| </view> | |||
| <view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onInvite"> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <image class="se-a-30" src="@/static/image/482012.png" mode=""></image> | |||
| <text class="se-ml-20 se-fs-24 se-fw-5">我的邀请</text> | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <u-icon name="arrow-right"></u-icon> | |||
| </view> | |||
| </view> | |||
| <view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onRecommend"> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <image class="se-a-30" src="@/static/image/482012.png" mode=""></image> | |||
| <text class="se-ml-20 se-fs-24 se-fw-5">我的推荐</text> | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <u-icon name="arrow-right"></u-icon> | |||
| </view> | |||
| </view> | |||
| <view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onCustomerService"> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <image class="se-a-30" src="@/static/image/470868.png" mode=""></image> | |||
| <text class="se-ml-20 se-fs-24 se-fw-5">在线客服</text> | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <u-icon name="arrow-right"></u-icon> | |||
| </view> | |||
| </view> | |||
| <view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onVersion"> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <image class="se-a-30" src="@/static/image/470868.png" mode=""></image> | |||
| <text class="se-ml-20 se-fs-24 se-fw-5">关于我们</text> | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <u-icon name="arrow-right"></u-icon> | |||
| </view> | |||
| </view> | |||
| <view class="se-py-30 se-px-20 se-flex se-flex-h-sb" @click="onLogOut"> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <text class="se-fs-24 se-fw-5">退出登录</text> | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c"> | |||
| <u-icon name="arrow-right"></u-icon> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| data() { | |||
| return { | |||
| } | |||
| }, | |||
| methods: { | |||
| onInvite(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/invite/index" | |||
| }) | |||
| }, | |||
| onRecommend(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/recommend/index" | |||
| }) | |||
| }, | |||
| onRelease(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/release/index" | |||
| }) | |||
| }, | |||
| onApply(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/apply/index" | |||
| }) | |||
| }, | |||
| onSystem(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/system/index" | |||
| }) | |||
| }, | |||
| onReservation(){ | |||
| uni.navigateTo({ | |||
| url:"/pages/reservation/index" | |||
| }) | |||
| }, | |||
| onVersion(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/version/index" | |||
| }) | |||
| }, | |||
| onLogOut(){ | |||
| uni.showModal({ | |||
| title:"温馨提示", | |||
| content:"确定退出当前登录", | |||
| cancelText:"取消", | |||
| confirmText:"确定", | |||
| success:(res)=> { | |||
| console.info(res) | |||
| if(res.confirm==true){ | |||
| uni.removeStorageSync("userInfo") | |||
| uni.removeStorageSync("token") | |||
| uni.removeStorageSync("sessionKey") | |||
| uni.navigateTo({ | |||
| url:"/pages/auth/index" | |||
| }) | |||
| } | |||
| } | |||
| }) | |||
| }, | |||
| onCustomerService(){ | |||
| let that = this | |||
| // let obj = that.$utils.getkeyContent('phone') | |||
| if (uni.canIUse('makePhoneCall')) { | |||
| uni.makePhoneCall({ | |||
| phoneNumber: "13156957887", // 电话号码 | |||
| success: function () { | |||
| console.log('拨打电话成功'); | |||
| }, | |||
| fail: function () { | |||
| console.log('拨打电话失败'); | |||
| } | |||
| }); | |||
| } else { | |||
| console.log('你的设备不支持拨打电话功能'); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| page { | |||
| background-color: #f5f5f5 !important; | |||
| } | |||
| .se-grid { | |||
| display: grid; | |||
| grid-template-columns: 1fr 1fr 1fr 1fr; | |||
| gap: 10rpx; | |||
| padding-bottom: 4rpx; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,147 @@ | |||
| <template> | |||
| <view class="se-m-20 se-p-20 se-br-10"> | |||
| <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80"> | |||
| <u-form-item label="类型" prop="type"> | |||
| <u--input v-model="form.type" placeholder="请填写类型"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="车辆型号" prop="model"> | |||
| <u--input v-model="form.model" placeholder="请填写车辆型号"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="年限" prop="date"> | |||
| <u--input v-model="form.date" placeholder="请填写年限"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="公里数" prop="distance"> | |||
| <u--input v-model="form.distance" placeholder="请填写公里数"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="联系人" prop="contacts"> | |||
| <u--input v-model="form.contacts" placeholder="请填写联系人"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="联系电话" prop="phone"> | |||
| <u--input v-model="form.phone" placeholder="请填写联系电话"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="备注" labelPosition="top" prop="remark"> | |||
| <u--textarea class="se-mt-20" v-model="form.remark" count | |||
| placeholder="请填写备注"></u--textarea> | |||
| </u-form-item> | |||
| <u-form-item> | |||
| <view class="se-px-20 se-pt-20"> | |||
| <view class="se-px-20 se-pb-80 se-fs-20 se-flex"> | |||
| <view @click="onSubmit" | |||
| class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-green"> | |||
| <text>确认申请</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| </u--form> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| components:{ | |||
| }, | |||
| data() { | |||
| return { | |||
| form: { | |||
| type:"",//类型 | |||
| model:"",//车辆型号 | |||
| date:"",//时间 | |||
| distance:"",//距离 | |||
| price:"",//价格 | |||
| contacts:"",//联系人 | |||
| phone:"",//联系人电话 | |||
| remark:"",//备注 | |||
| }, | |||
| rules: { | |||
| type:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写类型', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| model:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请选择车辆型号', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| date:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写时间', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| distance:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写公里数', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| price:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写价格', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| contacts:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写联系人', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| phone:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写联系电话', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| } | |||
| } | |||
| }, | |||
| onLoad(options) { | |||
| }, | |||
| watch: { | |||
| }, | |||
| methods: { | |||
| onSubmit() { | |||
| this.$refs.uForm.validate().then(res => { | |||
| uni.$u.toast('校验通过') | |||
| }).catch(errors => { | |||
| // uni.$u.toast('校验失败') | |||
| }) | |||
| } | |||
| }, | |||
| onReady() { | |||
| this.$refs.uForm.setRules(this.rules) | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| page { | |||
| background-color: #f5f5f5 !important; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,152 @@ | |||
| <template> | |||
| <view> | |||
| <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80"> | |||
| <view class="se-p-20"> | |||
| <view class="se-p-20 se-bgc-white se-br-10 se-fs-20"> | |||
| <u-form-item label="公司名称" prop="company"> | |||
| <u--input v-model="form.company" placeholder="请输入公司名称"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="联系人" prop="name"> | |||
| <u--input v-model="form.name" placeholder="请输入姓名名称"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="联系电话" prop="mobile"> | |||
| <u--input v-model="form.mobile" placeholder="请输入联系方式"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="公司地址" prop="address"> | |||
| <u--input v-model="form.address" placeholder="请输入公司地址"></u--input> | |||
| </u-form-item> | |||
| </view> | |||
| </view> | |||
| <view class="se-p-20"> | |||
| <view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20"> | |||
| <u-form-item prop="file" labelWidth="0"> | |||
| <view class="se-flex se-flex-v-sa"> | |||
| <view class="se-py-20 se-w-p-100 se-flex"> | |||
| <view class="line-green"></view> | |||
| <view class="se-ml-10"> | |||
| 营业执照上传 | |||
| </view> | |||
| </view> | |||
| <view class="se-py-20 se-w-p-100"> | |||
| <u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="1" | |||
| multiple :maxCount="10"></u-upload> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| </view> | |||
| </view> | |||
| <view class="se-px-20 se-pt-20"> | |||
| <view class="se-px-20 se-pb-80 se-fs-20 se-flex"> | |||
| <view @click="submit" | |||
| class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-green"> | |||
| <text>确认</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </u--form> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| form: { | |||
| name: '', | |||
| mobile: '', | |||
| company:'', | |||
| address:'', | |||
| fileList:[], | |||
| file: '' | |||
| }, | |||
| rules: { | |||
| name: [{ | |||
| type: 'string', | |||
| required: true, | |||
| message: '请输入姓名名称', | |||
| trigger: ['blur', 'change'] | |||
| }], | |||
| mobile: [ | |||
| { | |||
| required: true, | |||
| message: '请输入手机号', | |||
| trigger: ['change','blur'], | |||
| }, | |||
| { | |||
| validator: (rule, value, callback) => { | |||
| return uni.$u.test.mobile(value); | |||
| }, | |||
| message: '手机号码不正确', | |||
| trigger: ['change','blur'], | |||
| }, | |||
| ], | |||
| company: [{ | |||
| type: 'string', | |||
| required: true, | |||
| message: '请输入公司名称', | |||
| trigger: ['blur', 'change'] | |||
| }], | |||
| address: [{ | |||
| type: 'string', | |||
| required: true, | |||
| message: '请输入公司地址', | |||
| trigger: ['blur', 'change'] | |||
| }], | |||
| file: [{ | |||
| type: 'string', | |||
| required: true, | |||
| message: '请选择营业执照', | |||
| trigger: ['blur', 'change'] | |||
| }] | |||
| }, | |||
| } | |||
| }, | |||
| watch: { | |||
| fileList(newValue, oldValue) { | |||
| if (newValue.length > 0) { | |||
| this.form.file = '有' | |||
| } else { | |||
| this.form.file = '' | |||
| } | |||
| } | |||
| }, | |||
| onReady() { | |||
| this.$refs.uForm.setRules(this.rules) | |||
| }, | |||
| methods: { | |||
| submit() { | |||
| uni.switchTab({ | |||
| url:"/pages/home/index" | |||
| }) | |||
| this.$refs.uForm.validate().then(res => { | |||
| uni.$u.toast('校验通过') | |||
| }).catch(errors => { | |||
| // uni.$u.toast('校验失败') | |||
| }) | |||
| }, | |||
| deletePic(event) { | |||
| this.form.fileList.splice(event.index, 1) | |||
| }, | |||
| async afterRead(e) { | |||
| let self = this | |||
| e.file.forEach(file => { | |||
| self.$Oss.ossUpload(file.url).then(url => { | |||
| self.form.fileList.push({ | |||
| url | |||
| }) | |||
| }) | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .line-green { | |||
| width: 8rpx; | |||
| height: 32rpx; | |||
| background: #669A32; | |||
| border-radius: 4rpx; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,88 @@ | |||
| <template> | |||
| <view> | |||
| <view class="se-flex se-bgc-white se-fs-26 se-h-80 se-b-b"> | |||
| <view class="se-flex-1 se-flex se-flex-h-c"> | |||
| <text class="se-mr-10">分类</text> | |||
| <u-icon name="arrow-down-fill" color="#666666"></u-icon> | |||
| </view> | |||
| <view class="se-flex-1 se-b-l se-b-r se-flex se-flex-h-c"> | |||
| <text class="se-mr-10">时间</text> | |||
| <u-icon name="arrow-down-fill" color="#666666"></u-icon> | |||
| </view> | |||
| <view class="se-flex-1 se-flex se-flex-h-c"> | |||
| <text class="se-mr-10">公里数</text> | |||
| <u-icon name="arrow-down-fill" color="#666666"></u-icon> | |||
| </view> | |||
| </view> | |||
| <view class="se-grid-2"> | |||
| <view class="items-box se-br-5 se-px-10" v-for="(items,indexs) in 10" :key="indexs" @click="onDetail(items)"> | |||
| <image class="se-w-p-100 se-h-200 se-py-5" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode=""></image> | |||
| <view class="se-c-black se-fs-24 se-fw-6 se-mt-10"> | |||
| HOUS环卫车 | |||
| </view> | |||
| <view class="se-flex se-mt-10"> | |||
| <view class="se-tag"> | |||
| 品牌名 | |||
| </view> | |||
| <view class="se-tag"> | |||
| 品牌名 | |||
| </view> | |||
| <view class="se-tag"> | |||
| 品牌名 | |||
| </view> | |||
| </view> | |||
| <view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20" style="align-items: flex-end;"> | |||
| <view class="se-fs-24 se-flex se-flex-v-c" style="align-items: flex-start;"> | |||
| <text class="se-c-orange se-fs-30 se-fw-6 se-pb-10"><text class="se-fs-24">¥</text>6000<text class="se-fs-24">元</text></text> | |||
| <text class="se-c-66">浏览量999+</text> | |||
| </view> | |||
| <view class="se-display-ib se-bgc-orange se-px-15 se-br-40 se-flex-h-c se-h-40 se-lh-40 se-ta-c se-fs-22 se-c-white se-b"> | |||
| <text>查看详情</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| onDetail(event){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/detail/index" | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| .items-box{ | |||
| background: #ffffff; | |||
| border-radius: 8rpx; | |||
| box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(0,0,0,0.05); | |||
| padding: 20rpx; | |||
| } | |||
| .se-tag{ | |||
| padding: 5rpx 10rpx; | |||
| background: #fff2df; | |||
| border-radius: 4rpx; | |||
| border: 2rpx solid rgba(0,0,0,0.00); | |||
| font-size: 16rpx; | |||
| font-family: PingFang SC, PingFang SC-Bold; | |||
| font-weight: 700; | |||
| text-align: center; | |||
| color: #fab143; | |||
| margin-left: 10rpx; | |||
| } | |||
| .se-tag:first-child{ | |||
| margin-left: 0rpx; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,173 @@ | |||
| <template> | |||
| <view> | |||
| <view class="se-w-vw-100 se-h-500"> | |||
| <u-swiper :radius="0" :list="list" :height="250" :autoplay="false"></u-swiper> | |||
| </view> | |||
| <view class="se-py-20 se-flex se-bgc-white"> | |||
| <view class="se-w-vw-90 se-pl-30"> | |||
| <view class=" se-c-black se-fw-6 se-fs-32"> | |||
| 环卫车 | |||
| </view> | |||
| <view class="se-display-ib se-c-red se-fs-32 se-br-8 se-px-10 se-py-5"> | |||
| ¥3600 | |||
| </view> | |||
| </view> | |||
| <view class="se-pr-30 se-flex se-flex-v-c"> | |||
| <text>浏览量1000+</text> | |||
| <!-- <button style="justify-content: center;" class="se-w-140 se-flex se-flex-ai-c se-h-60 se-lh-60 se-fs-22 se-bgc-green se-c-white se-py-0 se-br-30 se-px-20 se-m-0" open-type="share"> | |||
| <uv-icon name="share" color="#fff"></uv-icon> | |||
| <text class="se-fs-20 se-pl-5">分享</text> | |||
| </button> --> | |||
| </view> | |||
| </view> | |||
| <view class="se-mt-20 se-bgc-white se-px-20 se-py-10 se-ta-l se-c-black se-py-20 se-flex se-flex-ai-c se-fs-24"> | |||
| <text>型号:</text> | |||
| <text class="se-ml-10">阿萨德防守打法2水岸东方</text> | |||
| </view> | |||
| <view class="se-pt-20"> | |||
| <view class="se-p-20 se-c-black se-fs-28"> | |||
| 产品参数 | |||
| </view> | |||
| <view> | |||
| <image class="se-w-p-100" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode="widthFix"></image> | |||
| <image class="se-w-p-100" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode="widthFix"></image> | |||
| <image class="se-w-p-100" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode="widthFix"></image> | |||
| </view> | |||
| </view> | |||
| <view class="se-pos-fixed se-bgc-white se-b-ts se-w-vw-100 se-h-160" style="bottom: 0px;left: 0rpx;"> | |||
| <view class=" se-flex se-flex-h-sb se-py-20"> | |||
| <button style="justify-content: center;" class="default-btn se-w-140 se-flex se-flex-v-c se-fs-22 se-c-black se-py-0 se-br-30 se-px-20 se-m-0" open-type="share"> | |||
| <u-icon name="share" color="#000"></u-icon> | |||
| <text class="se-fs-20 se-pl-5 se-c-black">分享</text> | |||
| </button> | |||
| <view class="se-flex se-flex-ai-c se-px-40 se-py-20"> | |||
| <view @click="onCustomerService()" class="se-flex se-flex-ai-c se-px-60 se-h-60 se-c-green se-fs-24 se-c-black se-b" style="border-radius: 30rpx 0 0 30rpx;"> | |||
| 联系电话 | |||
| </view> | |||
| <view @click="open()" class="se-flex se-flex-ai-c se-px-60 se-h-60 se-bgc-green se-fs-24 se-c-white se-b" style="border-radius: 0 30rpx 30rpx 0;"> | |||
| 预约看车 | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <u-popup :show="show" @close="close" @open="open"> | |||
| <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80"> | |||
| <view class="se-bgc-white se-py-30"> | |||
| <view class="se-px-40 se-py-20 se-c-black se-fs-30 se-fw-6"> | |||
| 预约租车 | |||
| </view> | |||
| <view class="se-px-20 se-pb-20 se-mx-20 se-bgc-white se-br-20"> | |||
| <u-form-item label="联系姓名" prop="name" borderBottom> | |||
| <u--input v-model="form.name" border="none" placeholder="请输入联系姓名"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="联系电话" prop="mobile" borderBottom> | |||
| <u--input v-model="form.mobile" type="number" border="none" placeholder="请输入联系电话"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="所在地区" prop="address" borderBottom> | |||
| <u--input v-model="form.address" type="text" border="none" placeholder="请输入所在地区"></u--input> | |||
| </u-form-item> | |||
| <u-form-item> | |||
| <view @click="submit" | |||
| class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-green"> | |||
| <text>确认</text> | |||
| </view> | |||
| </u-form-item> | |||
| </view> | |||
| </view> | |||
| </u--form> | |||
| </u-popup> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| show:false, | |||
| list:[ | |||
| 'https://cdn.uviewui.com/uview/swiper/swiper1.png', | |||
| 'https://cdn.uviewui.com/uview/swiper/swiper2.png', | |||
| 'https://cdn.uviewui.com/uview/swiper/swiper3.png', | |||
| ], | |||
| form:{ | |||
| name:"", | |||
| mobile:"", | |||
| address: '' | |||
| }, | |||
| rules:{ | |||
| name: [ | |||
| { | |||
| required: true, | |||
| message: '请输入联系姓名', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| mobile:[ | |||
| { | |||
| required: true, | |||
| message: '请输入联系电话', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| address: [ | |||
| { | |||
| required: true, | |||
| message: '请选择地址', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ] | |||
| } | |||
| } | |||
| }, | |||
| methods:{ | |||
| submit() { | |||
| this.$refs.uForm.validate().then(res => { | |||
| uni.$u.toast('校验通过') | |||
| }).catch(errors => { | |||
| uni.$u.toast('校验失败') | |||
| }) | |||
| }, | |||
| onCustomerService(){ | |||
| let that = this | |||
| // let obj = that.$utils.getkeyContent('phone') | |||
| if (uni.canIUse('makePhoneCall')) { | |||
| uni.makePhoneCall({ | |||
| // phoneNumber: obj.keyContent, // 电话号码 | |||
| phoneNumber:"13189698115", | |||
| success: function () { | |||
| console.log('拨打电话成功'); | |||
| }, | |||
| fail: function () { | |||
| console.log('拨打电话失败'); | |||
| } | |||
| }); | |||
| } else { | |||
| console.log('你的设备不支持拨打电话功能'); | |||
| } | |||
| }, | |||
| open() { | |||
| this.show = true | |||
| }, | |||
| close() { | |||
| this.show = false | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| page{ | |||
| background-color: #f5f5f5; | |||
| } | |||
| </style> | |||
| <style lang="scss" scoped> | |||
| .default-btn{ | |||
| background-color: transparent; | |||
| } | |||
| .default-btn::after{ | |||
| content: ""; | |||
| border: none; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,42 @@ | |||
| <template> | |||
| <view class="se-p-60"> | |||
| <view class="se-p-40 se-flex se-bgc-white se-br-20 se-bs se-flex-v-sa"> | |||
| <text class="se-pb-50 se-pt-100">邀请好友</text> | |||
| <image class="se-a-300 se-br-20" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode=""></image> | |||
| <text class="se-pt-50 se-pb-80">邀请码:TKAFGED</text> | |||
| </view> | |||
| <view class="se-px-100 se-pt-80 se-fs-20 se-flex"> | |||
| <view @click="onSubmit" | |||
| class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-green"> | |||
| <text>保存到本地</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| data() { | |||
| return { | |||
| } | |||
| }, | |||
| watch: { | |||
| }, | |||
| methods: { | |||
| onSubmit(){ | |||
| console.info("保存成功") | |||
| } | |||
| }, | |||
| onReady() { | |||
| }, | |||
| } | |||
| </script> | |||
| <style> | |||
| page { | |||
| background-color: #f5f5f5; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,26 @@ | |||
| <template> | |||
| <view class="se-p-20"> | |||
| <view class="se-c-black se-fw-6 se-fs-28"> | |||
| 我国将加快改善农村生活条件我国将加快改善农村生活条件我国将加快改善农村生活条件 | |||
| </view> | |||
| <view class="se-mt-20"> | |||
| <image class="se-w-p-100" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode="widthFix"></image> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| </style> | |||
| @ -0,0 +1,38 @@ | |||
| <template> | |||
| <view > | |||
| <view class="se-flex se-bgc-white se-m-20 se-p-20 se-br-20" v-for="(items,indexs) in 20" :key="indexs" @click="onDetail(items)"> | |||
| <image class="se-w-240 se-h-180 se-br-20" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode=""></image> | |||
| <view class="se-flex se-flex-v se-flex-1 se-px-20"> | |||
| <view class="se-c-black se-fw-6 se-fs-28 se-toe-1 se-pt-5"> | |||
| 我国将加快改善农村生活条件我国将加快改善农村生活条件我国将加快改善农村生活条件 | |||
| </view> | |||
| <view class="se-c-33 se-fs-24 se-lh-40 se-toe-3 se-pt-10"> | |||
| 我国将加快改善农村生活条件我国将加快改善农村生活条件我国将加快改善农村生活条件我国将加快改善农村生活条件我国将加快改善农村生活条件我国将加快改善农村生活条件 | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| onDetail(event){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/news/detail" | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| page{ | |||
| background-color: #f5f5f5; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,139 @@ | |||
| <template> | |||
| <view> | |||
| <u--form labelPosition="top" :model="form" :rules="rules" ref="uForm" labelWidth="80"> | |||
| <view class="se-p-20"> | |||
| <view class="se-p-20 se-bgc-white se-br-10 se-fs-20"> | |||
| <u-form-item label="姓名" prop="name"> | |||
| <u--input v-model="form.name" placeholder="请输入姓名名称"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="身份证号码" prop="idCard"> | |||
| <u--input v-model="form.idCard" placeholder="请输入详细地址"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="联系电话" prop="mobile"> | |||
| <u--input v-model="form.mobile" placeholder="请输入联系方式"></u--input> | |||
| </u-form-item> | |||
| </view> | |||
| </view> | |||
| <view class="se-p-20"> | |||
| <view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20"> | |||
| <u-form-item prop="file" labelWidth="2"> | |||
| <view class="se-flex se-flex-v-sa"> | |||
| <view class="se-py-20 se-w-p-100 se-flex"> | |||
| <view class="line-green"></view> | |||
| <view class="se-ml-10"> | |||
| 身份证上传(正反面) | |||
| </view> | |||
| </view> | |||
| <view class="se-py-20 se-w-p-100"> | |||
| <u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="1" | |||
| multiple :maxCount="10"></u-upload> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| </view> | |||
| </view> | |||
| <view class="se-px-20 se-pt-20"> | |||
| <view class="se-px-20 se-pb-80 se-fs-20 se-flex"> | |||
| <view @click="submit" | |||
| class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-green"> | |||
| <text>确认</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </u--form> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| fileList: [], | |||
| form: { | |||
| name: '', | |||
| idCard:'', | |||
| mobile: '', | |||
| file: '' | |||
| }, | |||
| rules: { | |||
| name: [{ | |||
| type: 'string', | |||
| required: true, | |||
| message: '请输入姓名名称', | |||
| trigger: ['blur', 'change'] | |||
| }], | |||
| mobile: [ | |||
| { | |||
| required: true, | |||
| message: '请输入手机号', | |||
| trigger: ['change','blur'], | |||
| }, | |||
| { | |||
| validator: (rule, value, callback) => { | |||
| return uni.$u.test.mobile(value); | |||
| }, | |||
| message: '手机号码不正确', | |||
| trigger: ['change','blur'], | |||
| }, | |||
| ], | |||
| file: [{ | |||
| type: 'string', | |||
| required: true, | |||
| message: '请选择身份证照片', | |||
| trigger: ['blur', 'change'] | |||
| }] | |||
| }, | |||
| } | |||
| }, | |||
| watch: { | |||
| fileList(newValue, oldValue) { | |||
| if (newValue.length > 0) { | |||
| this.form.file = '有' | |||
| } else { | |||
| this.form.file = '' | |||
| } | |||
| } | |||
| }, | |||
| onReady() { | |||
| this.$refs.uForm.setRules(this.rules) | |||
| }, | |||
| methods: { | |||
| submit() { | |||
| uni.switchTab({ | |||
| url:"/pages/home/index" | |||
| }) | |||
| this.$refs.uForm.validate().then(res => { | |||
| uni.$u.toast('校验通过') | |||
| }).catch(errors => { | |||
| // uni.$u.toast('校验失败') | |||
| }) | |||
| }, | |||
| deletePic(event) { | |||
| this.fileList.splice(e.index, 1) | |||
| }, | |||
| async afterRead(e) { | |||
| let self = this | |||
| e.file.forEach(file => { | |||
| self.$Oss.ossUpload(file.url).then(url => { | |||
| self.fileList.push({ | |||
| url | |||
| }) | |||
| }) | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| page{ | |||
| background-color: #ffffff; | |||
| } | |||
| </style> | |||
| <style lang="scss" scoped> | |||
| .line-green { | |||
| width: 8rpx; | |||
| height: 32rpx; | |||
| background: #669A32; | |||
| border-radius: 4rpx; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,53 @@ | |||
| <template> | |||
| <view> | |||
| <view class="se-px-20 se-py-20 se-bgc-white"> | |||
| <u-tabs :activeStyle="{ | |||
| color: '#669A32', | |||
| transform: 'scale(1.05)' | |||
| }" lineColor="#669A32" :list="list" @click="onClick"></u-tabs> | |||
| </view> | |||
| <view class="se-m-20"> | |||
| <view class="se-bgc-white se-br-20 se-p-20 se-mb-20 se-flex" v-for="(items,indexs) in 20" :key="indexs"> | |||
| <image class="se-a-80 se-br-p-50" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode=""></image> | |||
| <view class="se-flex se-flex-v se-flex-1 se-px-20"> | |||
| <view class="se-c-black se-fw-6 se-fs-26 se-toe-1 se-pt-5"> | |||
| 用户138400******* | |||
| </view> | |||
| <view class="se-c-33 se-fs-24 se-lh-40 se-toe-3 se-pt-10"> | |||
| 加入100天 | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| data(){ | |||
| return{ | |||
| list:[ | |||
| { | |||
| name: '直接用户', | |||
| }, { | |||
| name: '间推用户', | |||
| } | |||
| ] | |||
| } | |||
| }, | |||
| watch: { | |||
| }, | |||
| methods:{ | |||
| onClick(index){ | |||
| console.info(index) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| page{ | |||
| background-color: #f5f5f5; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,314 @@ | |||
| <template> | |||
| <view class="se-m-20 se-p-20 se-br-10"> | |||
| <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80"> | |||
| <u-form-item labelWidth="0"> | |||
| <view class="se-fs-26 se-c-black se-py-10"> | |||
| 请选择您要发布的车辆类型: | |||
| </view> | |||
| <view class="se-flex se-flex-ai-c se-flex-ff-rw"> | |||
| <view class="se-py-10 se-px-30 se-fs-22 se-br-10 se-mr-15 se-mt-10" :class="item.select ? 'se-bgc-green se-c-white se-b-green' : 'se-b se-c-text'" @click="handleType(index)" v-for="(item,index) in typeList" :key="index"> | |||
| {{item.text}} | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| <u-form-item label="产品名称"> | |||
| <view class="se-flex se-flex-h-c"> | |||
| <u--input v-model="form.title" type="text" class="se-w-200" placeholder="请填写产品名称"></u--input> | |||
| </view> | |||
| </u-form-item> | |||
| <u-form-item label="区域" prop="area"> | |||
| <u--input readonly v-model="form.area" placeholder="请选择地址" border="bottom"></u--input> | |||
| <u-icon slot="right" name="arrow-right"></u-icon> | |||
| </u-form-item> | |||
| <u-form-item label="时间" prop="date"> | |||
| <u--input v-model="form.date" placeholder="请填写时间"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="公里数" prop="distance"> | |||
| <u--input v-model="form.distance" placeholder="请填写时间"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="租赁价格" prop="price"> | |||
| <u--input v-model="form.price" placeholder="请填写价格"></u--input> | |||
| <div slot="right" class="se-c-green">¥/月</div> | |||
| </u-form-item> | |||
| <u-form-item label="联系人" prop="contacts"> | |||
| <u--input v-model="form.contacts" placeholder="请填写联系人"></u--input> | |||
| </u-form-item> | |||
| <u-form-item label="联系人电话" prop="phone"> | |||
| <u--input v-model="form.phone" placeholder="请填写电话"></u--input> | |||
| </u-form-item> | |||
| <u-form-item prop="file" labelWidth="0"> | |||
| <view class="se-flex se-flex-v-sa"> | |||
| <view class="se-py-20 se-w-p-100 se-flex"> | |||
| 车辆照片(前) | |||
| </view> | |||
| <view class="se-py-20 se-w-p-100"> | |||
| <u-upload :fileList="form.fileFrontList" @afterRead="afterFront" @delete="delFront" :maxCount="1"></u-upload> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| <u-form-item prop="file" labelWidth="0"> | |||
| <view class="se-flex se-flex-v-sa"> | |||
| <view class="se-py-20 se-w-p-100 se-flex"> | |||
| 车辆照片(后) | |||
| </view> | |||
| <view class="se-py-20 se-w-p-100"> | |||
| <u-upload :fileList="form.fileBackList" @afterRead="afterBack" @delete="delBack" :maxCount="1"></u-upload> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| <u-form-item prop="file" labelWidth="0"> | |||
| <view class="se-flex se-flex-v-sa"> | |||
| <view class="se-py-20 se-w-p-100 se-flex"> | |||
| 车辆照片(左) | |||
| </view> | |||
| <view class="se-py-20 se-w-p-100"> | |||
| <u-upload :fileList="form.fileLeftList" @afterRead="afterLeft" @delete="delLeft" :maxCount="1"></u-upload> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| <u-form-item prop="file" labelWidth="0"> | |||
| <view class="se-flex se-flex-v-sa"> | |||
| <view class="se-py-20 se-w-p-100 se-flex"> | |||
| 车辆照片(右) | |||
| </view> | |||
| <view class="se-py-20 se-w-p-100"> | |||
| <u-upload :fileList="form.fileRightList" @afterRead="afterRight" @delete="delRight" :maxCount="1"></u-upload> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| <u-form-item prop="file" labelWidth="0"> | |||
| <view class="se-flex se-flex-v-sa"> | |||
| <view class="se-py-20 se-w-p-100 se-flex"> | |||
| 车辆照片(驾驶室) | |||
| </view> | |||
| <view class="se-py-20 se-w-p-100"> | |||
| <u-upload :fileList="form.fileCabList" @afterRead="afterCab" @delete="delCab" :maxCount="1"></u-upload> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| <u-form-item label="车辆介绍" labelPosition="top" prop="introduce"> | |||
| <u--textarea v-model="form.introduce" class="se-mt-20" count | |||
| placeholder="请填写车辆介绍"></u--textarea> | |||
| </u-form-item> | |||
| <u-form-item> | |||
| <view class="se-px-20 se-pt-20"> | |||
| <view class="se-px-20 se-pb-80 se-fs-20 se-flex"> | |||
| <view @click="onSubmit" | |||
| class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-green"> | |||
| <text>发布订单</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </u-form-item> | |||
| </u--form> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| components:{ | |||
| }, | |||
| data() { | |||
| return { | |||
| typeList:[ | |||
| { | |||
| text:"新车", | |||
| value:"xin", | |||
| select:true | |||
| }, | |||
| { | |||
| text:"二手车", | |||
| value:"ershouche", | |||
| select:false | |||
| }, | |||
| { | |||
| text:"租赁车辆", | |||
| value:"all", | |||
| select:false | |||
| } | |||
| ], | |||
| form: { | |||
| title:"",//产品名称 | |||
| area:"",//区域 | |||
| address:'', | |||
| date:"",//时间 | |||
| distance:"",//距离 | |||
| price:"",//价格 | |||
| contacts:"",//联系人 | |||
| phone:"",//联系人电话 | |||
| fileFrontList:[],//车辆照片前 | |||
| fileBackList:[],//车辆照片后 | |||
| fileLeftList:[],//车辆照片左 | |||
| fileRightList:[],//车辆照片右 | |||
| fileCabList:[],//车辆照片 驾驶室 | |||
| introduce:"",//车辆介绍 | |||
| }, | |||
| rules: { | |||
| title:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写产品名称', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| area:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请选择所在地区', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| date:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写时间', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| distance:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写公里数', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| price:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写价格', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| contacts:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写联系人', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| phone:[ | |||
| { | |||
| type: 'string', | |||
| required: true, | |||
| message: '请填写联系电话', | |||
| trigger: ['blur', 'change'] | |||
| } | |||
| ], | |||
| } | |||
| } | |||
| }, | |||
| onLoad(options) { | |||
| }, | |||
| watch: { | |||
| }, | |||
| methods: { | |||
| handleType(index){ | |||
| this.typeList.forEach(items=>{ | |||
| items.select = false | |||
| }) | |||
| this.typeList[index].select = !this.typeList[index].select | |||
| }, | |||
| // 前 | |||
| delFront(event) { | |||
| this.form.fileFrontList.splice(event.index, 1) | |||
| }, | |||
| async afterFront(e) { | |||
| let self = this | |||
| e.file.forEach(file => { | |||
| self.$Oss.ossUpload(file.url).then(url => { | |||
| self.form.fileFrontList.push({ | |||
| url | |||
| }) | |||
| }) | |||
| }) | |||
| }, | |||
| // 后 | |||
| delBack(event) { | |||
| this.form.fileBackList.splice(event.index, 1) | |||
| }, | |||
| async afterBack(e) { | |||
| let self = this | |||
| e.file.forEach(file => { | |||
| self.$Oss.ossUpload(file.url).then(url => { | |||
| self.form.fileBackList.push({ | |||
| url | |||
| }) | |||
| }) | |||
| }) | |||
| }, | |||
| // 左 | |||
| delLeft(event) { | |||
| this.form.fileLeftList.splice(event.index, 1) | |||
| }, | |||
| async afterLeft(e) { | |||
| let self = this | |||
| e.file.forEach(file => { | |||
| self.$Oss.ossUpload(file.url).then(url => { | |||
| self.form.fileLeftList.push({ | |||
| url | |||
| }) | |||
| }) | |||
| }) | |||
| }, | |||
| // 左 | |||
| delRight(event) { | |||
| this.form.fileRightList.splice(event.index, 1) | |||
| }, | |||
| async afterRight(e) { | |||
| let self = this | |||
| e.file.forEach(file => { | |||
| self.$Oss.ossUpload(file.url).then(url => { | |||
| self.form.fileRightList.push({ | |||
| url | |||
| }) | |||
| }) | |||
| }) | |||
| }, | |||
| // 车辆照片(驾驶室) | |||
| delCab(event) { | |||
| this.form.fileCabList.splice(event.index, 1) | |||
| }, | |||
| async afterCab(e) { | |||
| let self = this | |||
| e.file.forEach(file => { | |||
| self.$Oss.ossUpload(file.url).then(url => { | |||
| self.form.fileCabList.push({ | |||
| url | |||
| }) | |||
| }) | |||
| }) | |||
| }, | |||
| onSubmit() { | |||
| console.info(this.form) | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/success/index" | |||
| }) | |||
| this.$refs.uForm.validate().then(res => { | |||
| uni.$u.toast('校验通过') | |||
| }).catch(errors => { | |||
| // uni.$u.toast('校验失败') | |||
| }) | |||
| } | |||
| }, | |||
| onReady() { | |||
| this.$refs.uForm.setRules(this.rules) | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| page { | |||
| background-color: transparent; | |||
| forced-color-adjust: none; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,43 @@ | |||
| <template> | |||
| <view class="u-page"> | |||
| <view class="se-flex se-flex-v-sa se-pt-140"> | |||
| <u-icon name="checkmark-circle-fill" color="#31a836" size="50"></u-icon> | |||
| <view class="se-c-black se-fw-6 se-fs-32 se-ta-c se-mt-20"> | |||
| 发布成功 | |||
| </view> | |||
| </view> | |||
| <view class="se-px-40 se-mt-140"> | |||
| <view class="se-px-20 se-pb-80 se-fs-20 se-flex"> | |||
| <view @click="onOrderDetail()" | |||
| class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-green"> | |||
| <text>确认</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| onOrderDetail(){ | |||
| uni.navigateTo({ | |||
| url:"/pages_subpack/order-detail/index" | |||
| }) | |||
| }, | |||
| onCancel(){ | |||
| uni.navigateBack({ | |||
| delta:1 | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| </style> | |||
| @ -0,0 +1,17 @@ | |||
| <template> | |||
| <view> | |||
| <view class="se-flex se-flex-v-c se-pt-180"> | |||
| <image class="se-a-150" src="@/static/image/logo.png" mode=""></image> | |||
| <text class="se-c-black se-fs-28 se-pt-30">8.12.1</text> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| } | |||
| </script> | |||
| <style> | |||
| </style> | |||
| @ -0,0 +1 @@ | |||
| export default {} | |||
| @ -0,0 +1,15 @@ | |||
| import Vue from 'vue' | |||
| import Vuex from 'vuex' | |||
| import data from './modules/data' | |||
| import user from './modules/user' | |||
| import getters from './getters' | |||
| Vue.use(Vuex) | |||
| export default new Vuex.Store({ | |||
| modules: { | |||
| data, | |||
| user | |||
| }, | |||
| getters | |||
| }) | |||
| @ -0,0 +1,17 @@ | |||
| export default { | |||
| state: { | |||
| isTurntableShow:false, | |||
| isShareShow:false, | |||
| }, | |||
| mutations: { | |||
| mutationsTurntable(state,status) { | |||
| state.isTurntableShow = status | |||
| }, | |||
| mutationsShareShow(state,status) { | |||
| state.isShareShow = status | |||
| }, | |||
| }, | |||
| actions: {} | |||
| } | |||
| @ -0,0 +1,35 @@ | |||
| export default { | |||
| state: { | |||
| token:"", | |||
| userInfo : {}, //用户信息 | |||
| }, | |||
| mutations: { | |||
| onAuth(state){ | |||
| }, | |||
| setUserInfo(state,obj){ | |||
| state.userInfo = obj.userInfo | |||
| state.token = obj.token | |||
| }, | |||
| logout(state){ | |||
| uni.showModal({ | |||
| title: '确认退出登录吗', | |||
| success(r) { | |||
| if(r.confirm){ | |||
| state.userInfo = {} | |||
| state.token = "" | |||
| uni.removeStorageSync('token') | |||
| uni.redirectTo({ | |||
| url: '/pages/index/index' | |||
| }) | |||
| } | |||
| } | |||
| }) | |||
| }, | |||
| }, | |||
| actions: {} | |||
| } | |||
| @ -0,0 +1,12 @@ | |||
| .u-tabs__wrapper__nav__line { | |||
| bottom: 0 !important; | |||
| } | |||
| .u-button { | |||
| border-radius: 10rpx !important; | |||
| } | |||
| .se-bgi { | |||
| background-repeat: no-repeat; | |||
| background-size: 100%; | |||
| } | |||
| @ -0,0 +1,4 @@ | |||
| @import './bs.scss'; | |||
| @import './component.scss'; | |||
| @import './layout.scss'; | |||
| @import './ui.scss'; | |||
| @ -0,0 +1,45 @@ | |||
| $header-height: calc(var(--status-bar-height) + 90rpx); | |||
| $app-height: calc(var(--status-bar-height) + 70rpx); | |||
| $header-app-height: calc(var(--status-bar-height) + 170rpx); | |||
| .se { | |||
| &-layout { | |||
| &-has-header { | |||
| padding-top: $header-height; | |||
| } | |||
| &:has(.se-app) { | |||
| padding-top: $header-app-height; | |||
| .se-header { | |||
| height: 100rpx; | |||
| padding-top: 0; | |||
| top: 70rpx; | |||
| } | |||
| } | |||
| } | |||
| &-page { | |||
| padding: 20rpx; | |||
| } | |||
| &-header { | |||
| width: 100%; | |||
| height: $header-height; | |||
| padding-top: var(--status-bar-height); | |||
| position: fixed; | |||
| left: 0; | |||
| top: 0; | |||
| z-index: 9; | |||
| } | |||
| &-app { | |||
| width: 100%; | |||
| height: $app-height; | |||
| padding-top: var(--status-bar-height); | |||
| position: fixed; | |||
| left: 0; | |||
| top: 0; | |||
| z-index: 9; | |||
| } | |||
| } | |||
| @ -0,0 +1,98 @@ | |||
| .u-popup__content,.uni-page-head,.u-tabbar__content,.u-navbar__content,.u-transition{ | |||
| width: 750rpx !important; | |||
| max-width: 750px; | |||
| margin: 0 auto; | |||
| } | |||
| .se-header,.se-bottom, | |||
| .se-app{ | |||
| > view { | |||
| width: 750rpx !important; | |||
| max-width: 750px; | |||
| margin: 0 auto; | |||
| } | |||
| } | |||
| .se-bottom{ | |||
| width: 750rpx !important; | |||
| max-width: 750px; | |||
| } | |||
| .uni-tabbar-bottom { | |||
| bottom: 0; | |||
| .uni-tabbar { | |||
| width: 750rpx !important; | |||
| max-width: 750px; | |||
| position: absolute !important; | |||
| left: 50% !important; | |||
| transform: translateX(-50%); | |||
| } | |||
| } | |||
| html{ | |||
| height: 100%; | |||
| background-color: #fff; | |||
| } | |||
| .uni-body{ | |||
| height: auto; | |||
| background-color: #fff; | |||
| } | |||
| uni-app{ | |||
| height: unset; | |||
| uni-page { | |||
| display: block; | |||
| height: 100%; | |||
| .uni-input-input{ | |||
| padding-left:2rpx; | |||
| font-size: 22rpx; | |||
| } | |||
| uni-page-head .uni-page-head{ | |||
| height: 88rpx; | |||
| height: calc(88rpx + constant(safe-area-inset-top)); | |||
| height: calc(88rpx + env(safe-area-inset-top)); | |||
| padding: 0rpx 10rpx; | |||
| } | |||
| uni-page-head .uni-page-head__title{ | |||
| line-height: 88rpx; | |||
| } | |||
| uni-page-head .uni-page-head~.uni-placeholder { | |||
| width: 100%; | |||
| height: 88rpx; | |||
| height: calc(88rpx + constant(safe-area-inset-top)); | |||
| height: calc(88rpx + env(safe-area-inset-top)); | |||
| } | |||
| uni-page-body { | |||
| color: #333333; | |||
| font-size: 28rpx; | |||
| } | |||
| uni-page-wrapper{ | |||
| background: #fff; | |||
| } | |||
| uni-slider .uni-slider-handle-wrapper { | |||
| height: 20rpx; | |||
| } | |||
| } | |||
| } | |||
| // 控制 tabbar 选中样式 | |||
| // .uni-tabbar__icon__diff { | |||
| // width: 100rpx !important; | |||
| // height: 100rpx !important; | |||
| // } | |||
| .uni-page-head { | |||
| border-bottom: 1px solid #dddddd; | |||
| } | |||
| .refresh { | |||
| animation: rotating 300ms linear infinite reverse; | |||
| } | |||
| @keyframes rotating { | |||
| from { | |||
| transform: rotate(0deg); | |||
| } | |||
| to { | |||
| transform: rotate(-360deg); | |||
| } | |||
| } | |||
| @ -0,0 +1,13 @@ | |||
| @import '../mixin/flex.scss'; | |||
| .se { | |||
| @for $i from 0 through 1000 { | |||
| @if $i % 5 == 0 { | |||
| &-a-#{$i} { | |||
| @include flex-v-c; | |||
| width: $i + rpx; | |||
| height: $i + rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,58 @@ | |||
| @import '../mixin/color.scss'; | |||
| .se { | |||
| &-b { | |||
| border: 1rpx solid $border; | |||
| &-ts + &-ts { | |||
| border-top: 1rpx solid $border; | |||
| } | |||
| &-ls + &-ls { | |||
| border-left: 1rpx solid $border; | |||
| } | |||
| @each $s, $l in t top, r right, b bottom, l left { | |||
| &-#{$s} { | |||
| border-#{$l}: 1rpx solid $border; | |||
| } | |||
| } | |||
| @each $name in $names { | |||
| $i: index($names, $name); | |||
| &-#{$name} { | |||
| border: 1rpx solid nth($colors, $i); | |||
| } | |||
| } | |||
| &-n { | |||
| border: none; | |||
| } | |||
| } | |||
| &-br { | |||
| @for $i from 0 through 100 { | |||
| @if $i % 1 == 0 { | |||
| &-#{$i} { | |||
| border-radius: $i + rpx; | |||
| } | |||
| } | |||
| } | |||
| &-p-50 { | |||
| border-radius: 50%; | |||
| } | |||
| } | |||
| &-bs { | |||
| box-shadow: 0 3rpx 9rpx 0 rgba(0, 0, 0, 0.06); | |||
| &-t { | |||
| box-shadow: -2rpx -2rpx 12rpx rgba(0, 0, 0, 0.1); | |||
| } | |||
| &-b { | |||
| box-shadow: 2rpx 2rpx 12rpx rgba(0, 0, 0, 0.1); | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,46 @@ | |||
| @import '../mixin/color.scss'; | |||
| .se { | |||
| &-c { | |||
| @each $name in $names { | |||
| $i: index($names, $name); | |||
| &-#{$name} { | |||
| color: nth($colors, $i); | |||
| } | |||
| } | |||
| &-n { | |||
| color: unset; | |||
| } | |||
| } | |||
| &-bgc { | |||
| @each $name in $names { | |||
| $i: index($names, $name); | |||
| &-#{$name} { | |||
| background-color: nth($colors, $i); | |||
| } | |||
| } | |||
| @each $name in $names-lg { | |||
| $i: index($names-lg, $name); | |||
| &-#{$name} { | |||
| background-image: nth($colors-lg, $i); | |||
| } | |||
| } | |||
| &-n { | |||
| background: none; | |||
| background-color: unset; | |||
| background-image: none; | |||
| } | |||
| } | |||
| &-o { | |||
| @for $i from 0 through 10 { | |||
| &-#{$i} { | |||
| opacity: $i / 10; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,69 @@ | |||
| @import '../mixin/flex.scss'; | |||
| .se { | |||
| &-flex { | |||
| @include flex; | |||
| &-if { | |||
| display: inline-flex !important; | |||
| } | |||
| &-ff { | |||
| &-rw { | |||
| flex-flow: row wrap !important; | |||
| } | |||
| &-cw { | |||
| flex-flow: column wrap !important; | |||
| } | |||
| } | |||
| @each $s in h, v { | |||
| &-#{$s} { | |||
| @include flex; | |||
| @if $s == h { | |||
| @include rn; | |||
| } @else { | |||
| @include cn; | |||
| } | |||
| @each $ss, $ll in fs flex-start, c center, fe flex-end, sb space-between, sa space-around { | |||
| &-#{$ss} { | |||
| @if $s == h { | |||
| @include flex-rn; | |||
| } @else { | |||
| @include flex-cn; | |||
| } | |||
| justify-content: $ll; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @for $i from 0 through 10 { | |||
| &-#{$i} { | |||
| flex: $i; | |||
| } | |||
| } | |||
| @each $s, $l in fs flex-start, c center, fe flex-end, sb space-between, sa space-around, s stretch { | |||
| &-ac-#{$s} { | |||
| align-content: $l; | |||
| } | |||
| } | |||
| @each $s, $l in fs flex-start, c center, fe flex-end, s stretch, b baseline { | |||
| &-ai-#{$s} { | |||
| align-items: $l; | |||
| } | |||
| } | |||
| @each $s, $l in fs flex-start, c center, fe flex-end, s stretch, b baseline, a auto { | |||
| &-as-#{$s} { | |||
| align-self: $l; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,17 @@ | |||
| .se { | |||
| &-fs { | |||
| @for $i from 0 through 100 { | |||
| &-#{$i} { | |||
| font-size: $i + rpx; | |||
| } | |||
| } | |||
| } | |||
| &-fw { | |||
| @for $i from 0 through 10 { | |||
| &-#{$i} { | |||
| font-weight: $i * 100; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,28 @@ | |||
| @mixin pos { | |||
| left: 0; | |||
| right: 0; | |||
| top: 0; | |||
| bottom: 0; | |||
| } | |||
| .se { | |||
| &-full { | |||
| width: 100%; | |||
| height: 100%; | |||
| &-vw { | |||
| width: 100vw; | |||
| height: 100vh; | |||
| } | |||
| &-fixed { | |||
| @include pos; | |||
| position: fixed; | |||
| } | |||
| &-abs { | |||
| @include pos; | |||
| position: absolute; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,39 @@ | |||
| .se { | |||
| &-h { | |||
| @for $i from 0 through 1000 { | |||
| @if $i % 5 == 0 { | |||
| &-#{$i} { | |||
| height: $i + rpx; | |||
| } | |||
| } | |||
| @if $i <=100 { | |||
| &-p-#{$i} { | |||
| height: $i * 1%; | |||
| } | |||
| &-vh-#{$i} { | |||
| height: $i + vh; | |||
| } | |||
| } | |||
| } | |||
| &-n { | |||
| height: unset; | |||
| } | |||
| } | |||
| &-lh { | |||
| @for $i from 0 through 200 { | |||
| @if $i % 5 == 0 { | |||
| &-#{$i} { | |||
| line-height: $i + rpx; | |||
| } | |||
| } | |||
| } | |||
| &-n { | |||
| line-height: unset; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,10 @@ | |||
| @import './area.scss'; | |||
| @import './border.scss'; | |||
| @import './color.scss'; | |||
| @import './flex.scss'; | |||
| @import './font.scss'; | |||
| @import './full.scss'; | |||
| @import './height.scss'; | |||
| @import './pm.scss'; | |||
| @import './pos.scss'; | |||
| @import './width.scss'; | |||
| @ -0,0 +1,47 @@ | |||
| .se { | |||
| @for $i from 0 through 200 { | |||
| @if $i % 5 == 0 or $i < 20 { | |||
| &-p { | |||
| &-#{$i} { | |||
| padding: $i + rpx; | |||
| } | |||
| &x-#{$i} { | |||
| padding-left: $i + rpx; | |||
| padding-right: $i + rpx; | |||
| } | |||
| &y-#{$i} { | |||
| padding-top: $i + rpx; | |||
| padding-bottom: $i + rpx; | |||
| } | |||
| } | |||
| &-m { | |||
| &-#{$i} { | |||
| margin: $i + rpx; | |||
| } | |||
| &x-#{$i} { | |||
| margin-left: $i + rpx; | |||
| margin-right: $i + rpx; | |||
| } | |||
| &y-#{$i} { | |||
| margin-top: $i + rpx; | |||
| margin-bottom: $i + rpx; | |||
| } | |||
| } | |||
| @each $s, $l in t top, r right, b bottom, l left { | |||
| &-p#{$s}-#{$i} { | |||
| padding-#{$l}: $i + rpx; | |||
| } | |||
| &-m#{$s}-#{$i} { | |||
| margin-#{$l}: $i + rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,82 @@ | |||
| .se { | |||
| &-pos { | |||
| position: relative; | |||
| &-fixed { | |||
| position: fixed !important; | |||
| } | |||
| &-lt { | |||
| position: absolute; | |||
| left: 0; | |||
| top: 0; | |||
| } | |||
| &-lc { | |||
| position: absolute; | |||
| left: 0; | |||
| top: 50%; | |||
| transform: translateY(-50%); | |||
| } | |||
| &-lb { | |||
| position: absolute; | |||
| left: 0; | |||
| bottom: 0; | |||
| } | |||
| &-ct { | |||
| position: absolute; | |||
| left: 50%; | |||
| top: 0; | |||
| transform: translateX(-50%); | |||
| } | |||
| &-cc { | |||
| position: absolute; | |||
| left: 50%; | |||
| top: 50%; | |||
| transform: translate(-50%, -50%); | |||
| } | |||
| &-cb { | |||
| position: absolute; | |||
| left: 50%; | |||
| bottom: 0; | |||
| transform: translateX(-50%); | |||
| } | |||
| &-rt { | |||
| position: absolute; | |||
| right: 0; | |||
| top: 0; | |||
| } | |||
| &-rc { | |||
| position: absolute; | |||
| right: 0; | |||
| top: 50%; | |||
| transform: translateY(-50%); | |||
| } | |||
| &-rb { | |||
| position: absolute; | |||
| right: 0; | |||
| bottom: 0; | |||
| } | |||
| } | |||
| &-zi { | |||
| &-s { | |||
| z-index: 9; | |||
| } | |||
| &-m { | |||
| z-index: 999; | |||
| } | |||
| &-l { | |||
| z-index: 99999; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,25 @@ | |||
| .se { | |||
| &-w { | |||
| @for $i from 0 through 1000 { | |||
| @if $i % 5 == 0 { | |||
| &-#{$i} { | |||
| width: $i + rpx; | |||
| } | |||
| } | |||
| @if $i <=100 { | |||
| &-p-#{$i} { | |||
| width: $i * 1%; | |||
| } | |||
| &-vw-#{$i} { | |||
| width: $i + vw; | |||
| } | |||
| } | |||
| } | |||
| &-n { | |||
| width: unset; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,4 @@ | |||
| @import './core/index.scss'; | |||
| @import './out/index.scss'; | |||
| @import './bs/index.scss'; | |||
| @import './theme/index.scss'; | |||
| @ -0,0 +1,39 @@ | |||
| @import '../theme/color.scss'; | |||
| $white: #ffffff; | |||
| $white-mask: rgba(255, 255, 255, 0.7); | |||
| $white-lg: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.7)); | |||
| $black: #000000; | |||
| $black-mask: rgba(0, 0, 0, 0.3); | |||
| $black-lg: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.3)); | |||
| $gray: #999999; | |||
| $c-33: #333333; | |||
| $c-66: #666666; | |||
| $c-99: #999999; | |||
| $c-dd: #dddddd; | |||
| $c-f5: #f5f5f5; | |||
| $c-f9: #f9f9f9; | |||
| $blue: #409eff; | |||
| $blue-lg: linear-gradient(to right, #0aa4ae, #305fb2, #6203b8); | |||
| $green: #669A32; | |||
| $green-lg: linear-gradient(to right, #669A32, #669A32); | |||
| $yellow: #ffff00; | |||
| $yellow-lg: linear-gradient(to right, #ffff00, #e6a23c); | |||
| $orange: #FF7A31; | |||
| $orange-lg: linear-gradient(to right, #e6a23c, #FF7A31); | |||
| $red: #f56c6c; | |||
| $red-lg: linear-gradient(to right, #f56c6c, #409eff); | |||
| // $border: #dddddd; | |||
| // $active: #409eff; | |||
| // $active-lg: linear-gradient(to right, #409eff, #dddddd); | |||
| // $cancel: #999999; | |||
| // $confirm: #409eff; | |||
| $names: white, white-mask, black, black-mask, gray, 33, 66, 99, dd, f5,f9, blue, green, yellow, orange, red, active, cancel, confirm; | |||
| $colors: $white, $white-mask, $black, $black-mask, $gray, $c-33, $c-66, $c-99, $c-dd, $c-f5,$c-f9, $blue, $green, $yellow, $orange, $red, $active, $cancel, $confirm; | |||
| $names-lg: white-lg, black-lg, blue-lg, green-lg, yellow-lg, orange-lg, red-lg, active-lg; | |||
| $colors-lg: $white-lg, $black-lg, $blue-lg, $green-lg, $yellow-lg, $orange-lg, $red-lg, $active-lg; | |||
| @ -0,0 +1,33 @@ | |||
| @mixin flex { | |||
| display: flex; | |||
| } | |||
| @mixin rn { | |||
| flex-flow: row nowrap; | |||
| } | |||
| @mixin cn { | |||
| flex-flow: column nowrap; | |||
| } | |||
| @mixin flex-rn { | |||
| @include flex; | |||
| @include rn; | |||
| align-items: center; | |||
| } | |||
| @mixin flex-cn { | |||
| @include flex; | |||
| @include cn; | |||
| align-items: center; | |||
| } | |||
| @mixin flex-h-c { | |||
| @include flex-rn; | |||
| justify-content: center; | |||
| } | |||
| @mixin flex-v-c { | |||
| @include flex-cn; | |||
| justify-content: center; | |||
| } | |||
| @ -0,0 +1,20 @@ | |||
| @mixin scrollbar { | |||
| // &::-webkit-scrollbar { | |||
| // width: 15px; | |||
| // height: 15px; | |||
| // } | |||
| // &::-webkit-scrollbar-thumb { | |||
| // // -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); | |||
| // background-color: rgba(0, 0, 0, 0.2); | |||
| // background-clip: content-box; | |||
| // border: 5px solid transparent; | |||
| // border-radius: 100px; | |||
| // } | |||
| // &::-webkit-scrollbar-track { | |||
| // // -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1); | |||
| // // background-color: rgba(0, 0, 0, 0.1); | |||
| // // border-radius: 100px; | |||
| // } | |||
| } | |||
| @ -0,0 +1,65 @@ | |||
| * { | |||
| -webkit-overflow-scrolling: touch; | |||
| -webkit-touch-callout: text; | |||
| -webkit-user-select: text; | |||
| user-select: text; | |||
| // touch-action: pan-y; | |||
| } | |||
| * { | |||
| box-sizing: border-box; | |||
| padding: 0; | |||
| margin: 0; | |||
| } | |||
| * { | |||
| &:hover, | |||
| &:focus, | |||
| &:active { | |||
| outline: none; | |||
| } | |||
| } | |||
| html { | |||
| height: 100%; | |||
| // overflow: hidden; | |||
| } | |||
| body { | |||
| height: 100%; | |||
| background-color: #f5f5f5; | |||
| color: #333333; | |||
| } | |||
| ul, | |||
| li, | |||
| ol { | |||
| list-style: none; | |||
| } | |||
| img, | |||
| button, | |||
| input, | |||
| textarea { | |||
| border: none; | |||
| outline: none; | |||
| resize: none; | |||
| } | |||
| img { | |||
| display: block; | |||
| } | |||
| a { | |||
| text-decoration: none; | |||
| } | |||
| // iframe { | |||
| // display: none; | |||
| // } | |||
| #app { | |||
| height: 100%; | |||
| font-size: 28rpx; | |||
| word-break: break-all; | |||
| } | |||
| @ -0,0 +1,33 @@ | |||
| @import '../mixin/flex.scss'; | |||
| @mixin btn { | |||
| @include flex-h-c; | |||
| display: inline-flex; | |||
| border-radius: 20rpx; | |||
| padding: 0 40rpx; | |||
| } | |||
| .se { | |||
| &-btn { | |||
| &-s, | |||
| &-m, | |||
| &-l { | |||
| @include btn; | |||
| } | |||
| &-s { | |||
| height: 60rpx; | |||
| font-size: 24rpx; | |||
| } | |||
| &-m { | |||
| height: 80rpx; | |||
| font-size: 28rpx; | |||
| } | |||
| &-l { | |||
| height: 100rpx; | |||
| font-size: 32rpx; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,75 @@ | |||
| @import '../mixin/scrollbar.scss'; | |||
| .se { | |||
| &-clearfix { | |||
| &::after { | |||
| content: ' '; | |||
| display: block; | |||
| visibility: hidden; | |||
| height: 0; | |||
| font-size: 0; | |||
| clear: both; | |||
| } | |||
| } | |||
| &-scroll { | |||
| @include scrollbar; | |||
| overflow: auto; | |||
| &-x { | |||
| @include scrollbar; | |||
| overflow-x: auto; | |||
| &-n { | |||
| overflow-x: hidden; | |||
| } | |||
| } | |||
| &-y { | |||
| @include scrollbar; | |||
| overflow-y: auto; | |||
| &-n { | |||
| overflow-y: hidden; | |||
| } | |||
| } | |||
| &-n { | |||
| overflow: hidden; | |||
| } | |||
| } | |||
| &-display { | |||
| &-b { | |||
| display: block; | |||
| } | |||
| &-ib { | |||
| display: inline-block; | |||
| } | |||
| &-n { | |||
| display: none; | |||
| } | |||
| } | |||
| &-float { | |||
| &-l { | |||
| float: left; | |||
| } | |||
| &-r { | |||
| float: right; | |||
| } | |||
| } | |||
| &-cursor { | |||
| &-p { | |||
| cursor: pointer; | |||
| } | |||
| &-d { | |||
| cursor: default; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,7 @@ | |||
| @import './base.scss'; | |||
| @import './btn.scss'; | |||
| @import './common.scss'; | |||
| @import './input.scss'; | |||
| @import './shape.scss'; | |||
| @import './text.scss'; | |||
| @import './transition.scss'; | |||
| @ -0,0 +1,88 @@ | |||
| @import '../mixin/flex.scss'; | |||
| @import '../mixin/color.scss'; | |||
| @mixin required { | |||
| &.se-input-required { | |||
| ::before { | |||
| content: '*'; | |||
| color: $red; | |||
| } | |||
| } | |||
| } | |||
| @mixin name { | |||
| .se-input-name { | |||
| min-width: 80rpx; | |||
| &::after { | |||
| content: ':'; | |||
| } | |||
| } | |||
| } | |||
| @mixin icon { | |||
| .se-input-icon { | |||
| font-size: 20rpx; | |||
| } | |||
| } | |||
| @mixin input { | |||
| .se-input-inner { | |||
| -webkit-appearance: none; | |||
| flex: 1; | |||
| width: 100%; | |||
| height: 100%; | |||
| background-color: transparent; | |||
| color: $c-99; | |||
| &::-webkit-input-placeholder { | |||
| color: $c-99; | |||
| } | |||
| &:disabled { | |||
| -webkit-opacity: 1; | |||
| -webkit-text-fill-color: $c-99; | |||
| background-color: transparent; | |||
| color: $c-99; | |||
| } | |||
| } | |||
| } | |||
| .se { | |||
| &-input { | |||
| &-s { | |||
| @include flex-h-c; | |||
| @include required; | |||
| @include name; | |||
| @include icon; | |||
| @include input; | |||
| height: 30rpx; | |||
| } | |||
| &-m { | |||
| @include flex-h-c; | |||
| @include required; | |||
| @include name; | |||
| @include icon; | |||
| @include input; | |||
| height: 40rpx; | |||
| } | |||
| &-l { | |||
| @include flex-h-c; | |||
| @include required; | |||
| @include name; | |||
| @include icon; | |||
| @include input; | |||
| height: 50rpx; | |||
| } | |||
| } | |||
| &-textarea { | |||
| @include flex-h-c; | |||
| @include required; | |||
| @include name; | |||
| @include icon; | |||
| @include input; | |||
| } | |||
| } | |||
| @ -0,0 +1,52 @@ | |||
| @import '../mixin/flex.scss'; | |||
| @mixin badge { | |||
| @include flex-h-c; | |||
| display: inline-flex; | |||
| border-radius: 5rpx; | |||
| padding: 5rpx 10rpx; | |||
| } | |||
| @mixin circle { | |||
| @include flex-h-c; | |||
| display: inline-flex; | |||
| border-radius: 50%; | |||
| overflow: hidden; | |||
| } | |||
| .se { | |||
| &-badge { | |||
| &-d { | |||
| @include badge; | |||
| } | |||
| &-c { | |||
| @include badge; | |||
| padding: 5rpx 20rpx; | |||
| border-radius: 20rpx; | |||
| } | |||
| &-m { | |||
| @include badge; | |||
| border-radius: 0 10rpx 10rpx 10rpx; | |||
| } | |||
| &-r { | |||
| @include badge; | |||
| padding: 5rpx 20rpx; | |||
| border-radius: 20rpx 0 0 20rpx; | |||
| } | |||
| } | |||
| &-circle { | |||
| @for $i from 0 through 200 { | |||
| @if $i % 5 == 0 { | |||
| &-#{$i} { | |||
| @include circle; | |||
| width: $i + rpx; | |||
| height: $i + rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,92 @@ | |||
| @mixin toe { | |||
| -webkit-box-orient: vertical; | |||
| display: -webkit-box; | |||
| text-overflow: ellipsis; | |||
| overflow: hidden; | |||
| } | |||
| .se { | |||
| &-ta { | |||
| &-l { | |||
| text-align: left; | |||
| } | |||
| &-c { | |||
| text-align: center; | |||
| } | |||
| &-r { | |||
| text-align: right; | |||
| } | |||
| } | |||
| &-td { | |||
| &-lt { | |||
| text-decoration: line-through; | |||
| } | |||
| &-u { | |||
| text-decoration: underline; | |||
| } | |||
| &-n { | |||
| text-decoration: none; | |||
| } | |||
| } | |||
| &-ti-em-2 { | |||
| text-indent: 2em; | |||
| } | |||
| &-toe { | |||
| @for $i from 0 through 10 { | |||
| &-#{$i} { | |||
| @include toe; | |||
| -webkit-line-clamp: $i; | |||
| lines: $i; | |||
| } | |||
| } | |||
| } | |||
| &-va { | |||
| &-t { | |||
| vertical-align: top; | |||
| } | |||
| &-m { | |||
| vertical-align: middle; | |||
| } | |||
| &-b { | |||
| vertical-align: bottom; | |||
| } | |||
| &-bl { | |||
| vertical-align: baseline; | |||
| } | |||
| } | |||
| &-ws { | |||
| &-nw { | |||
| white-space: nowrap; | |||
| } | |||
| &-nm { | |||
| white-space: normal; | |||
| } | |||
| } | |||
| &-wb { | |||
| &-ba { | |||
| word-break: break-all; | |||
| } | |||
| &-bw { | |||
| word-break: break-word; | |||
| } | |||
| &-ka { | |||
| word-break: keep-all; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,61 @@ | |||
| @mixin transition($time) { | |||
| will-change: transform; | |||
| transition: all ease $time; | |||
| } | |||
| @mixin transform($type) { | |||
| opacity: 0; | |||
| transform: $type; | |||
| } | |||
| .se { | |||
| &-fade-enter-active, | |||
| &-fade-leave-active { | |||
| @include transition(0.3s); | |||
| } | |||
| &-fade-enter-from, | |||
| &-fade-leave-to { | |||
| @include transform(''); | |||
| } | |||
| &-fade-transform-enter-active, | |||
| &-fade-transform-leave-active { | |||
| @include transition(0.3s); | |||
| } | |||
| &-fade-transform-enter-from { | |||
| @include transform(translateX(-30px)); | |||
| } | |||
| &-fade-transform-leave-to { | |||
| @include transform(translateX(30px)); | |||
| } | |||
| &-slide-fade-enter-active, | |||
| &-slide-fade-leave-active { | |||
| @include transition(0.3s); | |||
| } | |||
| &-slide-fade-enter-from, | |||
| &-slide-fade-leave-to { | |||
| @include transform(translateX(30px)); | |||
| } | |||
| &-slide-right-enter-active, | |||
| &-slide-right-leave-active, | |||
| &-slide-left-enter-active, | |||
| &-slide-left-leave-active { | |||
| @include transition(0.3s); | |||
| } | |||
| &-slide-right-enter-from, | |||
| &-slide-left-leave-to { | |||
| @include transform(translateX(-100%)); | |||
| } | |||
| &-slide-left-enter-from, | |||
| &-slide-right-leave-to { | |||
| @include transform(translateX(100%)); | |||
| } | |||
| } | |||
| @ -0,0 +1,57 @@ | |||
| $text: #ffffff; | |||
| $text-active: #1678ff; | |||
| $text-gray: #72709e; | |||
| $page: #000223; | |||
| $area: #1b1844; | |||
| $area-l: #272b55; | |||
| $select: #272b55; | |||
| $dialog: #272b55; | |||
| $mask: rgba(0, 0, 0, 0.8); | |||
| $image: rgba(0, 0, 0, 0.8); | |||
| $image-lg: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8)); | |||
| $gold-lg: linear-gradient(to right, #e9cfc9, #f6e2dd); | |||
| // mixin/color.scss | |||
| $border: #27243d; | |||
| $active: #1678ff; | |||
| $active-lg: linear-gradient(to right, #1678ff, #abbaf0); | |||
| $cancel: #201c54; | |||
| $confirm: #1678ff; | |||
| // mixin/color.scss | |||
| $names-c: text, text-active, text-gray; | |||
| $colors-c: $text, $text-active, $text-gray; | |||
| $names-bgc: page, area, area-l, select, dialog, mask, image; | |||
| $colors-bgc: $page, $area, $area-l, $select, $dialog, $mask, $image; | |||
| $names-lg: image-lg, gold-lg; | |||
| $colors-lg: $image-lg, $gold-lg; | |||
| .se { | |||
| &-c { | |||
| @each $name in $names-c { | |||
| $i: index($names-c, $name); | |||
| &-#{$name} { | |||
| color: nth($colors-c, $i); | |||
| } | |||
| } | |||
| } | |||
| &-bgc { | |||
| @each $name in $names-bgc { | |||
| $i: index($names-bgc, $name); | |||
| &-#{$name} { | |||
| background-color: nth($colors-bgc, $i); | |||
| } | |||
| } | |||
| @each $name in $names-lg { | |||
| $i: index($names-lg, $name); | |||
| &-#{$name} { | |||
| background-image: nth($colors-lg, $i); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,2 @@ | |||
| // @import './black.scss'; | |||
| @import './white.scss'; | |||
| @ -0,0 +1 @@ | |||
| @import './color.scss'; | |||
| @ -0,0 +1,63 @@ | |||
| $text: #333333; | |||
| $text-sub: #666666; | |||
| $text-third: #999999; | |||
| $text-active: #1678ff; | |||
| $text-red: #ea4e3d; | |||
| $text-green: #669A32; | |||
| $text-orange: #EB553B; | |||
| $page: #f5f5f5; | |||
| $area: #ffffff; | |||
| $area-l: #f5f5f5; | |||
| $select: #f5f5f5; | |||
| $dialog: #ffffff; | |||
| $green: #669A32; | |||
| $orange: #EB553B; | |||
| $mask: rgba(0, 0, 0, 0.3); | |||
| $image: rgba(0, 0, 0, 0.3); | |||
| $image-lg: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.3)); | |||
| $gold-lg: linear-gradient(to right, #e9cfc9, #f6e2dd); | |||
| // mixin/color.scss | |||
| $border: #dddddd; | |||
| $active: #1678ff; | |||
| $active-lg: linear-gradient(to right, #1678ff, #abbaf0); | |||
| $cancel: #e0e0e0; | |||
| $confirm: #1678ff; | |||
| // mixin/color.scss | |||
| $names-c: text, text-sub, text-active, text-red, text-third, text-green, text-orange; | |||
| $colors-c: $text, $text-sub, $text-active, $text-red, $text-third, $text-green, $text-orange; | |||
| $names-bgc: page, area, area-l, select, dialog, mask, image, active, green, orange; | |||
| $colors-bgc: $page, $area, $area-l, $select, $dialog, $mask, $image, $active, $green, $orange; | |||
| $names-lg: image-lg, gold-lg; | |||
| $colors-lg: $image-lg, $gold-lg; | |||
| .se { | |||
| &-c { | |||
| @each $name in $names-c { | |||
| $i: index($names-c, $name); | |||
| &-#{$name} { | |||
| color: nth($colors-c, $i); | |||
| } | |||
| } | |||
| } | |||
| &-bgc { | |||
| @each $name in $names-bgc { | |||
| $i: index($names-bgc, $name); | |||
| &-#{$name} { | |||
| background-color: nth($colors-bgc, $i); | |||
| } | |||
| } | |||
| @each $name in $names-lg { | |||
| $i: index($names-lg, $name); | |||
| &-#{$name} { | |||
| background-image: nth($colors-lg, $i); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,69 @@ | |||
| ``` | |||
| . | |||
| ├── common #演示需要的一些文件 | |||
| │ ├── api.js | |||
| │ ├── config.js | |||
| │ ├── demo.scss | |||
| │ ├── mixin.js | |||
| │ └── props.js | |||
| ├── components #演示项目封装的组件 | |||
| │ └── page-nav | |||
| │ └── page-nav.vue | |||
| ├── pages #页面 | |||
| │ ├── componentsA #分包A | |||
| │ │ ├── ... | |||
| │ │ ├── ... | |||
| │ ├── componentsB #分包B | |||
| │ │ ├── ... | |||
| │ │ ├── ... | |||
| │ ├── componentsC #分包C | |||
| │ │ ├── ... | |||
| │ │ ├── ... | |||
| │ └── example #演示项目首页 | |||
| │ ├── components.config.js #演示页面数据 | |||
| │ └── components.nvue #主演示页面 | |||
| ├── static #演示项目需要的一些文件 | |||
| │ ├── app-plus | |||
| │ │ └── mp-html | |||
| │ ├── common | |||
| │ │ └── js | |||
| │ └── uview | |||
| │ ├── common | |||
| │ └── example | |||
| ├── store | |||
| │ └── index.js | |||
| ├── uni_modules | |||
| │ └── uview-ui #uView2.0主包 | |||
| │ ├── LICENSE | |||
| │ ├── README.md | |||
| │ ├── changelog.md | |||
| │ ├── components #所有的组件 | |||
| │ ├── index.js | |||
| │ ├── index.scss | |||
| │ ├── libs | |||
| │ ├── package.json | |||
| │ └── theme.scss | |||
| ├── unpackage | |||
| │ └── res | |||
| │ └── icons | |||
| ├── util | |||
| │ └── request | |||
| │ ├── index.js | |||
| │ ├── requestInterceptors.js | |||
| │ └── responseInterceptors.js | |||
| ├── App.vue | |||
| ├── LICENSE | |||
| ├── main.js | |||
| ├── manifest.json | |||
| ├── package-lock.json | |||
| ├── pages.json #页面配置 | |||
| ├── package.json | |||
| ├── README.md | |||
| ├── template.h5.html #h5模板 | |||
| ├── tree.md | |||
| ├── uni.scss | |||
| └── vue.config.js | |||
| created by beiqiao. | |||
| ``` | |||
| @ -0,0 +1,151 @@ | |||
| /** | |||
| * 下方引入的为uView UI的集成样式文件,为scss预处理器,其中包含了一些"u-"开头的自定义变量 | |||
| * 使用的时候,请将下面的一行复制到您的uniapp项目根目录的uni.scss中即可 | |||
| * uView自定义的css类名和scss变量,均以"u-"开头,不会造成冲突,请放心使用 | |||
| */ | |||
| /* 行为相关颜色 */ | |||
| $uni-color-primary: #007aff; | |||
| $uni-color-success: #4cd964; | |||
| $uni-color-warning: #f0ad4e; | |||
| $uni-color-error: #dd524d; | |||
| /* 文字基本颜色 */ | |||
| $uni-text-color: #333; //基本色 | |||
| $uni-text-color-inverse: #fff; //反色 | |||
| $uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息 | |||
| $uni-text-color-placeholder: #808080; | |||
| $uni-text-color-disable: #c0c0c0; | |||
| /* 背景颜色 */ | |||
| $uni-bg-color: #ffffff; | |||
| $uni-bg-color-grey: #f8f8f8; | |||
| $uni-bg-color-hover: #f1f1f1; //点击状态颜色 | |||
| $uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色 | |||
| /* 边框颜色 */ | |||
| $uni-border-color: #c8c7cc; | |||
| /* 尺寸变量 */ | |||
| /* 文字尺寸 */ | |||
| $uni-font-size-sm: 12px; | |||
| $uni-font-size-base: 14px; | |||
| $uni-font-size-lg: 16px; | |||
| /* 图片尺寸 */ | |||
| $uni-img-size-sm: 20px; | |||
| $uni-img-size-base: 26px; | |||
| $uni-img-size-lg: 40px; | |||
| /* Border Radius */ | |||
| $uni-border-radius-sm: 2px; | |||
| $uni-border-radius-base: 3px; | |||
| $uni-border-radius-lg: 6px; | |||
| $uni-border-radius-circle: 50%; | |||
| /* 水平间距 */ | |||
| $uni-spacing-row-sm: 5px; | |||
| $uni-spacing-row-base: 10px; | |||
| $uni-spacing-row-lg: 15px; | |||
| /* 垂直间距 */ | |||
| $uni-spacing-col-sm: 4px; | |||
| $uni-spacing-col-base: 8px; | |||
| $uni-spacing-col-lg: 12px; | |||
| /* 透明度 */ | |||
| $uni-opacity-disabled: 0.3; // 组件禁用态的透明度 | |||
| /* 文章场景相关 */ | |||
| $uni-color-title: #2c405a; // 文章标题颜色 | |||
| $uni-font-size-title: 20px; | |||
| $uni-color-subtitle: #555555; // 二级标题颜色 | |||
| $uni-font-size-subtitle: 26px; | |||
| $uni-color-paragraph: #3f536e; // 文章段落颜色 | |||
| $uni-font-size-paragraph: 15px; | |||
| @import '@/uni_modules/uview-ui/theme.scss'; | |||
| .line-orange { | |||
| width: 8rpx; | |||
| height: 32rpx; | |||
| background: #ff7a31; | |||
| border-radius: 4rpx; | |||
| } | |||
| .se-bgc-ffd{ | |||
| background-color: #FFDFDB; | |||
| } | |||
| /* fix uview */ | |||
| $u-primary: #1678ff; | |||
| uni-modal { | |||
| z-index: 9999; | |||
| .uni-modal { | |||
| max-width: 600rpx; | |||
| width: 600rpx; | |||
| border-radius: 15.38rpx; | |||
| padding: 20rpx 20rpx 50rpx 20rpx; | |||
| .uni-modal__hd { | |||
| font-weight: 500; | |||
| padding: 20rpx 10rpx 30rpx 10rpx; | |||
| color: #666666; | |||
| .uni-modal__title{ | |||
| font-size: 32rpx; | |||
| } | |||
| } | |||
| .uni-modal__bd { | |||
| padding:0rpx 10rpx 60rpx 10rpx; | |||
| color: #000000; | |||
| line-height: 38rpx; | |||
| font-size: 24rpx; | |||
| } | |||
| .uni-modal__ft{ | |||
| height: 70rpx; | |||
| line-height: 65rpx; | |||
| padding: 0rpx 20rpx 0rpx 20rpx; | |||
| .uni-modal__btn { | |||
| font-size: 24rpx; | |||
| border: 2rpx solid $u-primary; | |||
| color: $u-primary; | |||
| border-radius: 12rpx; | |||
| &::after { | |||
| border-left: 0px solid #ffffff; | |||
| } | |||
| } | |||
| .uni-modal__btn_default{ | |||
| color: $u-primary !important; | |||
| } | |||
| .uni-modal__btn_primary{ | |||
| color: #ffffff !important; | |||
| background-color: $u-primary; | |||
| } | |||
| .uni-modal__btn+.uni-modal__btn{ | |||
| margin-left: 30rpx; | |||
| } | |||
| } | |||
| .uni-modal__ft:after { | |||
| border-top: 0rpx solid #fff; | |||
| } | |||
| .uni-modal__textarea{ | |||
| margin: 20rpx; | |||
| font-size: 14px; | |||
| height: 140px; | |||
| border-radius: 10px; | |||
| background: #f5f5f5; | |||
| } | |||
| } | |||
| } | |||
| .se-grid { | |||
| display: grid; | |||
| grid-template-columns: 1fr 1fr 1fr; | |||
| gap: 10rpx; | |||
| } | |||
| .se-grid-2 { | |||
| display: grid; | |||
| grid-template-columns: 1fr 1fr; | |||
| gap: 20rpx; | |||
| padding: 20rpx; | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| MIT License | |||
| Copyright (c) 2023 www.uviewui.com | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||
| of this software and associated documentation files (the "Software"), to deal | |||
| in the Software without restriction, including without limitation the rights | |||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
| copies of the Software, and to permit persons to whom the Software is | |||
| furnished to do so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| @ -0,0 +1,66 @@ | |||
| <p align="center"> | |||
| <img alt="logo" src="https://uviewui.com/common/logo.png" width="120" height="120" style="margin-bottom: 10px;"> | |||
| </p> | |||
| <h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView 2.0</h3> | |||
| <h3 align="center">多平台快速开发的UI框架</h3> | |||
| [](https://github.com/umicro/uView2.0) | |||
| [](https://github.com/umicro/uView2.0) | |||
| [](https://github.com/umicro/uView2.0/issues) | |||
| [](https://uviewui.com) | |||
| [](https://gitee.com/umicro/uView2.0/releases) | |||
| [](https://en.wikipedia.org/wiki/MIT_License) | |||
| ## 说明 | |||
| uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 | |||
| ## [官方文档:https://uviewui.com](https://uviewui.com) | |||
| ## 预览 | |||
| 您可以通过**微信**扫码,查看最佳的演示效果。 | |||
| <br> | |||
| <br> | |||
| <img src="https://uviewui.com/common/weixin_mini_qrcode.png" width="220" height="220" > | |||
| ## 链接 | |||
| - [官方文档](https://www.uviewui.com/) | |||
| - [更新日志](https://www.uviewui.com/components/changelog.html) | |||
| - [升级指南](https://www.uviewui.com/components/changeGuide.html) | |||
| - [关于我们](https://www.uviewui.com/cooperation/about.html) | |||
| ## 交流反馈 | |||
| 欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html) | |||
| ## 关于PR | |||
| > 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。 | |||
| > 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! | |||
| ## 安装 | |||
| #### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593) | |||
| 请通过[官网安装文档](https://www.uviewui.com/components/install.html)了解更详细的内容 | |||
| ## 快速上手 | |||
| 请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 | |||
| ## 使用方法 | |||
| 配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 | |||
| ```html | |||
| <template> | |||
| <u-button text="按钮"></u-button> | |||
| </template> | |||
| ``` | |||
| ## 版权信息 | |||
| uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 | |||