@ -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,19 @@ | |||||
<script> | |||||
export default { | |||||
onLaunch: function() { | |||||
console.log('App Launch') | |||||
}, | |||||
onShow: function() { | |||||
console.log('App Show') | |||||
}, | |||||
onHide: function() { | |||||
console.log('App Hide') | |||||
} | |||||
} | |||||
</script> | |||||
<style lang="scss"> | |||||
@import '@/uni_modules/uv-ui-tools/index.scss'; | |||||
@import './styles/index.scss'; | |||||
</style> |
@ -0,0 +1,21 @@ | |||||
MIT License | |||||
Copyright (c) 2023 www.uvui.cn | |||||
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,164 @@ | |||||
<p align="center"> | |||||
<span> </span><img alt="logo" src="https://www.uvui.cn/common/logo.png" width="120" height="120"> | |||||
</p> | |||||
<h3 align="center">uv-ui</h3> | |||||
<h3 align="center">兼容vue3+2多平台快速开发的UI框架</h3> | |||||
[](https://gitee.com/climblee/uv-ui) | |||||
[](https://gitee.com/climblee/uv-ui) | |||||
[](https://github.com/climblee/uv-ui) | |||||
[](https://github.com/climblee/uv-ui/issues) | |||||
[](https://www.uvui.cn) | |||||
[](https://www.uvui.cn/components/changelog.html) | |||||
[](https://en.wikipedia.org/wiki/MIT_License) | |||||
## 温馨提示:如需下载uv-ui示例项目,请不要使用【下载插件ZIP】按钮。 | |||||
### uvui官方群1:<a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=aaoyDvfV7nSee9vzWfzyZM1vKlu3xrNZ&authKey=pdU6HDpyzGUoc1QvQvCmzCbwzsoHgBbToF%2F0ChP4lNjPIPgWHGRE4I99XYGiTcNI&noverify=0&group_code=549833913" target="_blank">549833913</a> | |||||
### uvui官方群2:<a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=2QbEeKBn6ysCyQ09V4mgst1W8onxFybQ&authKey=aMTGL5zCYwsinG%2FeH0qMlAqXAdyKr5AjXVf2oMnsmj7NCg%2F2HraMU%2FNFxELLIPvp&noverify=0&group_code=206060892" target="_blank">206060892</a> | |||||
## uvui特点 | |||||
1. **uv-ui的前世今生**,`uv-ui` 是基于 `uview2.x` 版本改造而来。重命名也是为了避开发布冲突和很多组件 `u-`在 `nvue` 中不能使用的情况,所以这才诞生了`uv-ui`。感谢 `uview-ui` 作者的开源奉献,再次为开源点赞。 同时 `uv-ui` 也是无条件开源。 | |||||
2. **全端兼容**,`uv-ui`支持vue3、vue2、app-vue、app-nvue、h5、小程序等。`uv-ui`的组件都是多端自适应的,底层会抹平很多小程序平台的差异或bug。 | |||||
3. **扩展配置**,`uv-ui`内置的方法默认不再挂载到`uni`对象之上,也就意味着默认情况下不能在项目中直接使用`uni.$uv.xxx`使用内置方法。但是可以通过扩展可以解决,通过如下方式进行配置即可,使用方式请参考[扩展配置](https://www.uvui.cn/components/setting.html)。其中包括[ JS工具库](https://www.uvui.cn/components/setting.html#%E6%89%A9%E5%B1%95%E9%85%8D%E7%BD%AE-js%E5%B7%A5%E5%85%B7%E5%BA%93)、[ 自定义主题](https://www.uvui.cn/components/setting.html#%E6%89%A9%E5%B1%95%E9%85%8D%E7%BD%AE-%E8%87%AA%E5%AE%9A%E4%B9%89%E4%B8%BB%E9%A2%98)、[ 基础样式](https://www.uvui.cn/components/setting.html#%E6%89%A9%E5%B1%95%E9%85%8D%E7%BD%AE-%E5%9F%BA%E7%A1%80%E6%A0%B7%E5%BC%8F)、[ setconfig](https://www.uvui.cn/components/setting.html#%E6%89%A9%E5%B1%95%E9%85%8D%E7%BD%AE-setconfig)等。 | |||||
## 预览 | |||||
通过微信(APP下载不支持微信扫码)或浏览器扫码查看演示效果。 | |||||
<img src="https://mp-31ed6237-7b7b-4597-8448-a53d6d6031cf.cdn.bspapp.com/uvui/download-wx.png" width="200" /> <img src="https://mp-31ed6237-7b7b-4597-8448-a53d6d6031cf.cdn.bspapp.com/uvui/download-app.png" width="200" /> <img src="https://mp-31ed6237-7b7b-4597-8448-a53d6d6031cf.cdn.bspapp.com/uvui/download-h5.png" width="200" /> | |||||
## 链接 | |||||
- [官方文档](https://www.uvui.cn) | |||||
- [演示地址](https://h5.uvui.cn) | |||||
- [更新日志](https://www.uvui.cn/components/changelog.html) | |||||
- [关于我们](https://www.uvui.cn/cooperation/about.html) | |||||
- <a href="#list">组件列表</a> | |||||
## 交流反馈 | |||||
欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uvui.cn/components/addQQGroup.html) | |||||
## 快速开始 | |||||
方式一:`uv-ui` 强烈建议通过 `下载插件并导入HbuilderX` 导入组件。 | |||||
方式二:下载完整 [uv-ui项目](https://ext.dcloud.net.cn/plugin?id=12287) 将 `uni_modules` 复制到自己的项目。 | |||||
方式三:通过 `npm i @climblee/uv-ui` 下载,此方法需要配置 easycom,配置详情可查看[安装](https://www.uvui.cn/components/install.html)。 | |||||
请通过[快速上手](https://www.uvui.cn/components/quickstart.html)了解更详细的内容。 | |||||
**注意:导入插件后,建议`HBuilderX`重新运行项目,可能新导入的插件不能实时更新而导致不能运行。** | |||||
## 使用方法 | |||||
组件导入 `uni_modules` 后,直接在项目中使用,无需通过import引入组件。 | |||||
```html | |||||
<template> | |||||
<uv-icon name="baidu" size="30" color="#909399"></uv-icon> | |||||
</template> | |||||
``` | |||||
## 扩展功能 | |||||
`uv-ui` 内置了强大的工具函数、请求封装等,可以根据自身需求进行扩展配置,详情请查看[扩展配置](https://www.uvui.cn/components/setting.html)。 | |||||
**注意:只有[扩展配置](https://www.uvui.cn/components/setting.html)后才能在自己的项目页面中使用组件库内置方法和变量等**。 | |||||
<div id="list"></div> | |||||
## 组件列表 | |||||
下表为 `uv-ui` 的扩展组件清单,点击每个组件**点击下载&安装**即可在详情页面导入组件到项目下,导入后建议重新运行即可直接使用,组件无需import和注册。 | |||||
| 组件名 | 组件说明 | | |||||
| --- | --- | | |||||
| uv-skeletons | [新版骨架屏(推荐)](https://www.uvui.cn/components/skeletons.html) | | |||||
| uv-calendars | [新版日历(推荐)](https://www.uvui.cn/components/calendars.html) | | |||||
| uv-drop-down | [下拉筛选](https://www.uvui.cn/components/dropDown.html) | | |||||
| uv-scroll-list | [横向滚动列表](https://www.uvui.cn/components/scrollList.html) | | |||||
| uv-vtabs | [垂直选项卡](https://www.uvui.cn/components/vtabs.html) | | |||||
| uv-pick-color | [颜色选择器](https://www.uvui.cn/components/pickColor.html) | | |||||
| uv-qrcode | [二维码](https://www.uvui.cn/components/qrcode.html) | | |||||
| uv-waterfall | [瀑布流](https://www.uvui.cn/components/waterfall.html) | | |||||
| uv-row | [Layout 布局](https://www.uvui.cn/components/layout.html) | | |||||
| uv-icon | [图标](https://www.uvui.cn/components/icon.html) | | |||||
| uv-button | [按钮](https://www.uvui.cn/components/button.html) | | |||||
| uv-text | [文本](https://www.uvui.cn/components/text.html) | | |||||
| uv-link | [超链接](https://www.uvui.cn/components/link.html) | | |||||
| uv-image | [图片](https://www.uvui.cn/components/image.html) | | |||||
| uv-transition | [动画](https://www.uvui.cn/components/transition.html) | | |||||
| uv-form | [表单](https://www.uvui.cn/components/form.html) | | |||||
| uv-input | [增强输入框](https://www.uvui.cn/components/input.html) | | |||||
| uv-textarea | [增强文本域](https://www.uvui.cn/components/textarea.html) | | |||||
| uv-checkbox | [复选框](https://www.uvui.cn/components/checkbox.html) | | |||||
| uv-radio | [单选框](https://www.uvui.cn/components/radio.html) | | |||||
| uv-switch | [开关选择器](https://www.uvui.cn/components/switch.html) | | |||||
| uv-calendar | [日历](https://www.uvui.cn/components/calendar.html) | | |||||
| uv-picker | [选择器](https://www.uvui.cn/components/picker.html) | | |||||
| uv-datetime-picker | [时间选择器](https://www.uvui.cn/components/datetimePicker.html) | | |||||
| uv-code | [验证码倒计时](https://www.uvui.cn/components/code.html) | | |||||
| uv-keyboard | [键盘](https://www.uvui.cn/components/keyboard.html) | | |||||
| uv-rate | [评分](https://www.uvui.cn/components/rate.html) | | |||||
| uv-search | [多功能搜索框](https://www.uvui.cn/components/search.html) | | |||||
| uv-number-box | [步进器](https://www.uvui.cn/components/numberBox.html) | | |||||
| uv-upload | [上传](https://www.uvui.cn/components/upload.html) | | |||||
| uv-slider | [滑动选择器](https://www.uvui.cn/components/slider.html) | | |||||
| uv-list | [列表](https://www.uvui.cn/components/list.html) | | |||||
| uv-index-list | [索引列表](https://www.uvui.cn/components/indexList.html) | | |||||
| uv-tags | [标签](https://www.uvui.cn/components/tag.html) | | |||||
| uv-line-progress | [线形进度条](https://www.uvui.cn/components/lineProgress.html) | | |||||
| uv-badge | [徽标数](https://www.uvui.cn/components/badge.html) | | |||||
| uv-count-down | [倒计时](https://www.uvui.cn/components/countDown.html) | | |||||
| uv-count-to | [数字滚动](https://www.uvui.cn/components/countTo.html) | | |||||
| uv-avatar | [头像](https://www.uvui.cn/components/avatar.html) | | |||||
| uv-skeleton | [骨架屏](https://www.uvui.cn/components/skeleton.html) | | |||||
| uv-loading-icon | [加载动画](https://www.uvui.cn/components/loadingIcon.html) | | |||||
| uv-loading-page | [加载页](https://www.uvui.cn/components/loadingPage.html) | | |||||
| uv-load-more | [加载更多](https://www.uvui.cn/components/loadMore.html) | | |||||
| uv-empty | [内容为空](https://www.uvui.cn/components/empty.html) | | |||||
| uv-tooltip | [长按提示](https://www.uvui.cn/components/tooltip.html) | | |||||
| uv-alert | [警告提示](https://www.uvui.cn/components/alert.html) | | |||||
| uv-toast | [消息提示](https://www.uvui.cn/components/toast.html) | | |||||
| uv-notice-bar | [滚动通知](https://www.uvui.cn/components/noticeBar.html) | | |||||
| uv-notify | [消息提示](https://www.uvui.cn/components/notify.html) | | |||||
| uv-no-network | [无网络提示](https://www.uvui.cn/components/noNetwork.html) | | |||||
| uv-popup | [弹出层](https://www.uvui.cn/components/popup.html) | | |||||
| uv-modal | [模态框](https://www.uvui.cn/components/modal.html) | | |||||
| uv-cell | [单元格](https://www.uvui.cn/components/cell.html) | | |||||
| uv-swipe-action | [滑动单元格](https://www.uvui.cn/components/swipeAction.html) | | |||||
| uv-swiper | [轮播图](https://www.uvui.cn/components/swiper.html) | | |||||
| uv-collapse | [折叠面板](https://www.uvui.cn/components/collapse.html) | | |||||
| uv-grid | [宫格布局](https://www.uvui.cn/components/grid.html) | | |||||
| uv-album | [相册](https://www.uvui.cn/components/album.html) | | |||||
| uv-tabbar | [底部导航栏](https://www.uvui.cn/components/tabbar.html) | | |||||
| uv-back-top | [返回顶部](https://www.uvui.cn/components/backTop.html) | | |||||
| uv-navbar | [自定义导航栏](https://www.uvui.cn/components/navbar.html) | | |||||
| uv-action-sheet | [底部操作菜单](https://www.uvui.cn/components/actionSheet.html) | | |||||
| uv-tabs | [标签选项卡](https://www.uvui.cn/components/tabs.html) | | |||||
| uv-steps | [步骤条](https://www.uvui.cn/components/steps.html) | | |||||
| uv-subsection | [分段器](https://www.uvui.cn/components/subsection.html) | | |||||
| uv-sticky | [吸顶](https://www.uvui.cn/components/sticky.html) | | |||||
| uv-parse | [富文本解析器](https://www.uvui.cn/components/parse.html) | | |||||
| uv-overlay | [遮罩层](https://www.uvui.cn/components/overlay.html) | | |||||
| uv-code-input | [验证码输入](https://www.uvui.cn/components/codeInput.html) | | |||||
| uv-read-more | [展开阅读更多](https://www.uvui.cn/components/readMore.html) | | |||||
| uv-line | [线条](https://www.uvui.cn/components/line.html) | | |||||
| uv-gap | [间隔槽](https://www.uvui.cn/components/gap.html) | | |||||
| uv-divider | [分割线](https://www.uvui.cn/components/divider.html) | | |||||
## 版权信息 | |||||
uv-ui遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uv-ui应用到您的产品中。 | |||||
## 作者想说 | |||||
- 开源真的不易,不图大家的钱财,所以希望大家多多鼓励支持,希望不要恶意评论,有问题加群快速解决。 | |||||
- 遇到BUG,是一件很正常的事情,是程序肯定就有BUG,所以希望大家能以理解的心态去提出BUG,然后作者才有动力去努力修复。 | |||||
- 最后觉得好用的小伙伴,不要吝啬你的双手,给个好评就是给我们最大的鼓励。 | |||||
# 恶评者手下留情,有事加QQ群解决:549833913 |
@ -0,0 +1,11 @@ | |||||
const { http } = uni.$uv | |||||
// 获取菜单 | |||||
console.info(`http`,http) | |||||
export const fetchMenu = (params, config = {}) => http.get('/applet/index/getRecommendDocs', params, config) | |||||
/** | |||||
* 登录的接口 | |||||
*/ | |||||
// 微信登录接口 | |||||
export const wxLogin = (params) => http.get('/api/login/login', {params:params}) |
@ -0,0 +1,3 @@ | |||||
export default { | |||||
baseUrl: 'https://api.book118.com' | |||||
} |
@ -0,0 +1,244 @@ | |||||
<template> | |||||
<uv-popup ref="popup" mode="bottom" :popup="false" :mask="true" :closeable="true" :safe-area-inset-bottom="true" | |||||
close-icon-color="#ffffff" :z-index="uZIndex" :maskCloseAble="maskCloseAble" @close="close"> | |||||
<uv-tabs v-if="value" lineColor="#a0cd63" :list="genTabsList" :scrollable="true" :current="tabsIndex" @change="tabsChange" ref="tabs"></uv-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%"> | |||||
<uv-cell-group> | |||||
<uv-cell v-for="(item,index) in provinces" :title="item.label" :arrow="false" :name="index" :key="index" | |||||
@click="provinceChange"> | |||||
<template v-slot:right-icon> | |||||
<uv-icon v-if="isChooseP&&province===index" size="34" color="#a0cd63" name="checkbox-mark"></uv-icon> | |||||
</template> | |||||
</uv-cell> | |||||
</uv-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%"> | |||||
<uv-cell-group v-if="isChooseP"> | |||||
<uv-cell v-for="(item,index) in citys" :title="item.label" :arrow="false" :name="index" :key="index" | |||||
@click="cityChange"> | |||||
<template v-slot:right-icon> | |||||
<uv-icon v-if="isChooseC&&city===index" size="34" color="#a0cd63" name="checkbox-mark"></uv-icon> | |||||
</template> | |||||
</uv-cell> | |||||
</uv-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%"> | |||||
<uv-cell-group v-if="isChooseC"> | |||||
<uv-cell v-for="(item,index) in areas" :title="item.label" :arrow="false" :name="index" :key="index" | |||||
@click="areaChange"> | |||||
<template v-slot:right-icon> | |||||
<uv-icon v-if="isChooseA&&area===index" size="34" color="#a0cd63" name="checkbox-mark"></uv-icon> | |||||
</template> | |||||
</uv-cell> | |||||
</uv-cell-group> | |||||
</scroll-view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</uv-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: true | |||||
}, | |||||
// 默认显示的地区,可传类似["河北省", "秦皇岛市", "北戴河区"] | |||||
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 : 99; | |||||
} | |||||
}, | |||||
methods: { | |||||
open(){ | |||||
this.$refs.popup.open(); | |||||
}, | |||||
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.$refs.popup.close(); | |||||
}, | |||||
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,52 @@ | |||||
import Vue from 'vue' | |||||
import utils from './utils/utils.js' | |||||
import uvUI from '@/uni_modules/uv-ui-tools' | |||||
console.info(`uvUI`,uvUI) | |||||
Vue.use(uvUI); | |||||
// 当前环境 | |||||
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.$uv.setConfig({ | |||||
config: { | |||||
unit: 'rpx' | |||||
}, | |||||
}) | |||||
Vue.prototype.$config = utils.deepMergeObject(defaultConfig, config[type]) | |||||
export default Vue.prototype.$config |
@ -0,0 +1,20 @@ | |||||
<!DOCTYPE html> | |||||
<html lang="en"> | |||||
<head> | |||||
<meta charset="UTF-8" /> | |||||
<script> | |||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || | |||||
CSS.supports('top: constant(a)')) | |||||
document.write( | |||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + | |||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />') | |||||
</script> | |||||
<title></title> | |||||
<!--preload-links--> | |||||
<!--app-context--> | |||||
</head> | |||||
<body> | |||||
<div id="app"><!--app-html--></div> | |||||
<script type="module" src="/main.js"></script> | |||||
</body> | |||||
</html> |
@ -0,0 +1,38 @@ | |||||
import App from './App' | |||||
import uvUI from '@/uni_modules/uv-ui-tools' | |||||
import { Request } from '@/util/request/index' | |||||
// #ifndef VUE3 | |||||
import Vue from 'vue' | |||||
import './uni.promisify.adaptor' | |||||
Vue.config.productionTip = false | |||||
App.mpType = 'app' | |||||
import store from './store' | |||||
Vue.prototype.$store = store | |||||
import './config.js' | |||||
import './utils/index.js' | |||||
const app = new Vue({ | |||||
...App, | |||||
store, | |||||
}) | |||||
app.$mount() | |||||
Request(app) | |||||
// #endif | |||||
// #ifdef VUE3 | |||||
import { | |||||
createSSRApp | |||||
} from 'vue' | |||||
export function createApp() { | |||||
const app = createSSRApp(App) | |||||
Request(app) | |||||
return { | |||||
app | |||||
} | |||||
} | |||||
// #endif |
@ -0,0 +1,107 @@ | |||||
{ | |||||
"name" : "tenancy-wechat-uniapp", | |||||
"appid" : "__UNI__09A45BC", | |||||
"description" : "", | |||||
"versionName" : "1.0.0", | |||||
"versionCode" : "100", | |||||
"transformPx" : false, | |||||
"app-plus" : { | |||||
"usingComponents" : true, | |||||
"nvueStyleCompiler" : "uni-app", | |||||
"compilerVersion" : 3, | |||||
"splashscreen" : { | |||||
"alwaysShowBeforeRender" : true, | |||||
"waiting" : true, | |||||
"autoclose" : true, | |||||
"delay" : 0 | |||||
}, | |||||
"modules" : { | |||||
"Canvas" : "nvue canvas" | |||||
}, | |||||
"distribute" : { | |||||
"android" : { | |||||
"permissions" : [ | |||||
"<uses-feature android:name=\"android.hardware.camera\"/>", | |||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||||
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>" | |||||
] | |||||
}, | |||||
"ios" : { | |||||
"dSYMs" : 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" | |||||
} | |||||
} | |||||
}, | |||||
"splashscreen" : { | |||||
"androidStyle" : "common" | |||||
} | |||||
}, | |||||
"nvueLaunchMode" : "", | |||||
"renderer" : "native" | |||||
}, | |||||
"quickapp" : {}, | |||||
"mp-weixin" : { | |||||
"appid" : "", | |||||
"setting" : { | |||||
"urlCheck" : false, | |||||
"es6" : true, | |||||
"postcss" : true, | |||||
"minified" : true | |||||
}, | |||||
"usingComponents" : true | |||||
}, | |||||
"mp-alipay" : { | |||||
"usingComponents" : true | |||||
}, | |||||
"mp-baidu" : { | |||||
"usingComponents" : true | |||||
}, | |||||
"mp-toutiao" : { | |||||
"usingComponents" : true | |||||
}, | |||||
"uniStatistics" : { | |||||
"enable" : false | |||||
}, | |||||
"vueVersion" : "3", | |||||
"h5" : { | |||||
"router" : { | |||||
"mode" : "history" | |||||
}, | |||||
"title" : "tenancy" | |||||
} | |||||
} |
@ -0,0 +1,141 @@ | |||||
{ | |||||
"pages": [ | |||||
{ | |||||
"path": "pages/home/index", | |||||
"style": { | |||||
"navigationBarTitleText": "租房" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/auth/index", | |||||
"style": { | |||||
"navigationBarTitleText": "微信登录", | |||||
"navigationStyle":"custom" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/login/index", | |||||
"style": { | |||||
"navigationStyle":"custom" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/discover/index", | |||||
"style": { | |||||
"navigationBarTitleText": "发现" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/user/index", | |||||
"style": { | |||||
"navigationBarTitleText": "我的", | |||||
"navigationStyle":"default", | |||||
"navigationBarBackgroundColor": "#1EC77A", | |||||
"navigationBarTextStyle": "white" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/message/index", | |||||
"style": { | |||||
"navigationBarTitleText": "消息" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/apply/index", | |||||
"style": { | |||||
"navigationBarTitleText": "申请" | |||||
} | |||||
} | |||||
], | |||||
"subPackages": [ | |||||
{ | |||||
"root": "pages_subpack", | |||||
"pages": [ | |||||
{ | |||||
"path": "category/index", | |||||
"style": { | |||||
"navigationBarTitleText": "分类" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "detail/index", | |||||
"style": { | |||||
"navigationBarTitleText": "详情" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "release/index", | |||||
"style": { | |||||
"navigationBarTitleText": "发布" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "broker/index", | |||||
"style": { | |||||
"navigationBarTitleText": "经纪人" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "homeowner/index", | |||||
"style": { | |||||
"navigationBarTitleText": "房东" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "success/index", | |||||
"style": { | |||||
"navigationBarTitleText": "登录成功" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "house/index", | |||||
"style": { | |||||
"navigationBarTitleText": "房屋发布" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "realname/index", | |||||
"style": { | |||||
"navigationBarTitleText": "实名认证" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "successful/index", | |||||
"style": { | |||||
"navigationBarTitleText": "申请成功" | |||||
} | |||||
} | |||||
] | |||||
} | |||||
], | |||||
"globalStyle": { | |||||
"navigationBarTextStyle": "white", | |||||
"navigationBarTitleText": "租房", | |||||
"navigationBarBackgroundColor": "#1EC77A", | |||||
"backgroundColor": "#1EC77A" | |||||
}, | |||||
"tabBar": { | |||||
"color": "#666666", | |||||
"selectedColor": "#1EC77A", | |||||
"backgroundColor": "#ffffff", | |||||
"list": [ | |||||
{ | |||||
"pagePath": "pages/home/index", | |||||
"iconPath": "static/bar/home.png", | |||||
"selectedIconPath": "static/bar/home_selected.png", | |||||
"text": "首页" | |||||
}, { | |||||
"pagePath": "pages/discover/index", | |||||
"iconPath": "static/bar/find.png", | |||||
"selectedIconPath": "static/bar/find_selected.png", | |||||
"text": "发现" | |||||
}, { | |||||
"pagePath": "pages/user/index", | |||||
"iconPath": "static/bar/user.png", | |||||
"selectedIconPath": "static/bar/user_selected.png", | |||||
"text": "我的" | |||||
} | |||||
] | |||||
}, | |||||
"uniIdRouter": {} | |||||
} |
@ -0,0 +1,36 @@ | |||||
<template> | |||||
<view> | |||||
<view class="se-flex se-flex-v-c se-pt-40"> | |||||
<image class="se-w-500 se-h-400" src="@/static/image/82x.png" mode=""></image> | |||||
<text class="se-c-33 se-fs-24">您还不是房东,请先提交申请</text> | |||||
</view> | |||||
<view class="se-px-80 se-py-40 se-mt-50"> | |||||
<view class="se-c-white se-py-20 se-fs-26 se-bgc-orange se-br-40 se-ta-c" @click="onNavigator()"> | |||||
立即申请 | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
} | |||||
}, | |||||
methods:{ | |||||
onNavigator(){ | |||||
uni.navigateTo({ | |||||
url:"/pages_subpack/realname/index" | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
</style> |
@ -0,0 +1,120 @@ | |||||
<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"> | |||||
<uv-checkbox-group @change="checkboxChange" v-model="checked"> | |||||
<uv-checkbox name="1" activeColor="#07C160" label-size="12" shape="circle" label="阅读并同意"></uv-checkbox> | |||||
<text class="se-c-green" @click="open()">《隐私政策》</text> | |||||
<text class="se-c-green" @click="open()">《服务条款》</text> | |||||
</uv-checkbox-group> | |||||
</view> | |||||
</view> | |||||
<uv-popup ref="popup" :round="20" mode="center" bg-color="transparent" :close-on-click-overlay="false"> | |||||
<view class="se-w-600 se-bgc-white se-br-40 se-p-40"> | |||||
<view class="se-flex se-flex-h-c"> | |||||
<image class="se-a-80" src="@/static/image/6588.png" mode=""></image> | |||||
</view> | |||||
<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> | |||||
</uv-popup> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
import { fetchMenu,wxLogin } from "@/common/api.js" | |||||
export default { | |||||
name : 'Auth', | |||||
data() { | |||||
return { | |||||
checked:[], | |||||
show:false | |||||
} | |||||
}, | |||||
methods: { | |||||
open(){ | |||||
this.$refs.popup.open(); | |||||
}, | |||||
checkboxChange(n) { | |||||
console.log('change', n); | |||||
}, | |||||
onCancel(){ | |||||
this.$refs.popup.close(); | |||||
this.checked=[]; | |||||
}, | |||||
onAgree(){ | |||||
this.$refs.popup.close(); | |||||
this.checked=['1']; | |||||
}, | |||||
onLogin(){ | |||||
let that = this | |||||
if(that.checked.length==0){ | |||||
return uni.showToast({ | |||||
icon: "none", | |||||
title: "请勾选隐私协议" | |||||
}) | |||||
} | |||||
uni.showLoading({ | |||||
title: '登录中...' | |||||
}) | |||||
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,52 @@ | |||||
<template> | |||||
<view class="se-p-20"> | |||||
<view class="se-p-20 se-bgc-white se-br-20 se-mb-20" v-for="(items,indexs) in 5" :key="indexs"> | |||||
<view class="se-flex se-flex-h"> | |||||
<image class="se-a-80" src="../../static/image/6588.png" mode=""></image> | |||||
<view class="se-flex se-flex-v se-ml-30"> | |||||
<text class="se-fs-28 se-c-black">天越翔园 4室2厅 66.45㎡ </text> | |||||
<view class="se-flex se-flex-ai-c se-pt-10"> | |||||
<text class="se-c-red se-fs-30 se-fw-6">450万</text> | |||||
<text class="se-c-66 se-fs-22 se-ml-20">罗湖 莲塘</text> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<view class="se-c-black se-fs-26 se-lh-40 se-pt-20"> | |||||
三层复试,中空挑高,厅出大阳台,使用率超高,天越翔园 | |||||
</view> | |||||
<view class="se-br-10 se-py-20"> | |||||
<video class="se-br-10 se-w-p-100 se-h-360" src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/2minute-demo.mp4" controls></video> | |||||
</view> | |||||
<view class="se-bgc-f5 se-br-10 se-py-20 se-px-10 se-c-black se-fs-24 se-flex se-flex-ai-c"> | |||||
<image class="se-a-30 se-br-p-50" src="../../static/image/6588.png" mode=""></image> | |||||
<text class="se-ml-10 se-fw-6">程敏</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-pos-fixed se-pos-rc" style="right: 30rpx;"> | |||||
<image @click="onNavigator()" class="se-a-150" src="@/static/image/discover.png" mode=""></image> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
} | |||||
}, | |||||
methods:{ | |||||
onNavigator(){ | |||||
uni.navigateTo({ | |||||
url:"/pages_subpack/release/index" | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
</style> |
@ -0,0 +1,176 @@ | |||||
<template> | |||||
<view> | |||||
<view class="se-px-40 se-py-20"> | |||||
<view class="se-bgc-white se-br-50 se-c-black se-px-20 se-py-5 se-flex se-flex-h-sb se-fs-26"> | |||||
<view class="se-b-r se-pl-10 se-pr-20 se-flex se-flex-h se-h-40 se-lh-40 " @click="handleAreaChange()"> | |||||
<text class="se-pr-20 nobreak">{{city}}</text> | |||||
<uv-icon name="arrow-down-fill"></uv-icon> | |||||
</view> | |||||
<view class="se-ml-20"> | |||||
<uv-search :showAction="false" bgColor="transparent" placeholder="请输入租房信息" v-model="keyword"></uv-search> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<view class="backdrop se-mb-20"> | |||||
<image class="se-w-vw-100 se-h-400" src="@/static/image/banner.png" mode=""></image> | |||||
</view> | |||||
<view class="se-grid se-bgc-white se-py-30 se-mt-300"> | |||||
<navigator url="/pages_subpack/category/index" v-for="(item, index) in nav" :key="index" class="se-flex-v-c se-mb-20"> | |||||
<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 v-for="(item, index) in nav" :key="index" class="se-flex-v-c se-mb-20" @click="onNav"> | |||||
<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> | |||||
</view> --> | |||||
</view> | |||||
<view class="se-mt-20 se-bgc-white se-px-20 se-py-10 se-ta-l se-c-orange se-flex se-flex-ai-c se-fs-24"> | |||||
<image class="se-a-80" src="@/static/image/aed60x.png" mode=""></image> | |||||
<text class="se-ml-10">今日有20套租房信息新发布....</text> | |||||
</view> | |||||
<view class="se-bgc-white se-my-20"> | |||||
<uv-tabs :list="list" :activeStyle="{color:'#000000'}" :inactiveStyle="{color:'#666666'}" :lineColor="`url(${lineBg}) 100% 100%`"></uv-tabs> | |||||
</view> | |||||
<view class="se-pb-200"> | |||||
<view @click="onDetail(item)" class="se-my-10 se-mx-20 se-px-20 se-py-20 se-br-20 se-bgc-white se-flex" v-for="(item,index) in 20" :key="index"> | |||||
<view class="se-pos se-w-260 se-h-180"> | |||||
<image class="se-a-80 se-pos-lt" src="../../static/image/2x.png" mode=""></image> | |||||
<image class="se-w-260 se-h-180 se-br-10" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode=""></image> | |||||
</view> | |||||
<view class="se-pl-10 se-w-p-100"> | |||||
<view class="se-c-black se-fs-28"> | |||||
整租·四季峰景四期 2室2厅1卫 | |||||
</view> | |||||
<view class="se-flex se-flex-h-sb se-flex-ai-c se-fs-24 se-mt-10 se-c-66"> | |||||
<text>精装修</text> | |||||
<text>1年</text> | |||||
</view> | |||||
<view class="se-flex se-flex-h-sb se-flex-ai-c se-mt-10"> | |||||
<view class="se-display-ib se-c-white se-bgc-orange se-fs-22 se-br-8 se-px-10 se-py-5"> | |||||
全新首租 | |||||
</view> | |||||
<view class="se-c-66 se-flex se-flex-ai-c"> | |||||
<uv-icon name="eye"></uv-icon> | |||||
<text class="se-ml-5 se-fs-18">999+</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-flex-h-sb se-flex-ai-c se-mt-10"> | |||||
<text class="se-c-red se-fs-28 se-fw-6">¥1500元/月</text> | |||||
<text class="se-c-66 se-fs-22">四季峰景四期</text> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<!-- 地址 --> | |||||
<citySelect ref="citySelectRef" :zIndex="0" @city-change="handleCityChange"></citySelect> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
import citySelect from "@/components/cityselect/index.vue" | |||||
import { fetchMenu } from '@/common/api.js'; | |||||
const lineBg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAANCAYAAAC3mX7tAAAAAXNSR0IArs4c6QAAAbxJREFUOE+lk0FrE1EUhc+ZDOhMigjZdNcWdCPJqNCdlkZw4TKL2mVwkKLQ/gAFRcEu/AEKuumDrEopNEsXSlNoV+2iTYIbBdNdNwGpmRmFyVx5oQk6mYSpvt1799z7zTnvDQPlBAJcRGxZOLXotn7Gz8ftZePaROCZP+IaEh36a04LxFS8mMmgcKFcb54H9Kvi5LtdNIZ6BMf0lVMDMD88UJ7abuP1eUDeWuEZyVcJPZ/oKeclgRcJxRMrG17l4udOGthZbF8ATMb1IvKcXiU/y66xnziM2LQf1O+nAfnq+hYgpSStCeMmdcFXzi6AWyMGrlvZcGmUs54T31QQLIzo37Pd+u0eKFD5osDYHvPlJyLyNopYnbgUtrSuc2pOG4aUSC4nxTWYFXHOfni02wPp5anCO4KP0sSUViOQ91m38VjrByDZLprBt/ZHkAkvMO3oP3QiO9ZM7i7v1MK/QHoj6sblQLrV/4ZpCDMluoff++iBo/6Bdua32m/+NUYdlz2dW+k7GQnqF84eyOqY1xjPcw8Rn+iLTwp6yFFcpP8zhLxHsgjBFRrI9WKO0AbxVURqMOVDttw8GHeTvwFKoZ4cmcUYJAAAAABJRU5ErkJggg=="; | |||||
export default{ | |||||
components:{ | |||||
citySelect | |||||
}, | |||||
data(){ | |||||
return{ | |||||
city:"长沙市", | |||||
keyword:"", | |||||
lineBg: lineBg, | |||||
nav:[ | |||||
{ | |||||
img:"../../static/image/nav1.png", | |||||
name:"闲置散居农房" | |||||
}, | |||||
{ | |||||
img:"../../static/image/nav2.png", | |||||
name:"集体建设用地" | |||||
}, | |||||
{ | |||||
img:"../../static/image/nav3.png", | |||||
name:"鱼塘" | |||||
}, | |||||
{ | |||||
img:"../../static/image/nav4.png", | |||||
name:"林地" | |||||
}, | |||||
{ | |||||
img:"../../static/image/nav5.png", | |||||
name:"经营性建设用地" | |||||
}, | |||||
{ | |||||
img:"../../static/image/nav6.png", | |||||
name:"耕地" | |||||
}, | |||||
{ | |||||
img:"../../static/image/nav7.png", | |||||
name:"出租房" | |||||
}, | |||||
{ | |||||
img:"../../static/image/nav8.png", | |||||
name:"二手房" | |||||
} | |||||
], | |||||
list: [ | |||||
{ | |||||
name: '近期热销' | |||||
}, { | |||||
name: '城市' | |||||
}, { | |||||
name: '分区' | |||||
}, { | |||||
name: '闲置资源分类' | |||||
} | |||||
], | |||||
} | |||||
}, | |||||
mounted() { | |||||
this.getHttpData() | |||||
}, | |||||
methods:{ | |||||
getHttpData() { | |||||
const res = fetchMenu(); | |||||
console.log(res) | |||||
}, | |||||
handleAreaChange(){ | |||||
this.$refs.citySelectRef.open() | |||||
}, | |||||
handleCityChange(e) { | |||||
console.info(e) | |||||
this.city = e.city.label | |||||
// this.form.area = e.province.label + '-' + e.city.label + '-' + e.area.label; | |||||
}, | |||||
onDetail(event){ | |||||
uni.navigateTo({ | |||||
url:"/pages_subpack/detail/index" | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
.se-grid{ | |||||
border-top-right-radius: 50rpx; | |||||
border-top-left-radius: 50rpx; | |||||
} | |||||
.backdrop{ | |||||
width: 750rpx; | |||||
height: 350rpx; | |||||
position: absolute; | |||||
top: 0; | |||||
left: 0; | |||||
z-index: -1; | |||||
/* border-radius: 0 0 14% 14%; */ | |||||
} | |||||
.nobreak { | |||||
white-space: nowrap; | |||||
} | |||||
</style> |
@ -0,0 +1,46 @@ | |||||
<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> | |||||
<image class="se-w-100 se-h-100" src="@/static/image/header.png" mode=""></image> | |||||
</view> | |||||
<view class=" se-b-b se-flex se-h-140 se-lh-140 se-flex-h-sb"> | |||||
<text>昵称</text> | |||||
<input class="se-h-80 se-lh-80 se-w-320" placeholder-class="se-fs-24 se-ta-r" placeholder="请输入名称" type="text" /> | |||||
</view> | |||||
</view> | |||||
<view class="se-mx-40"> | |||||
<view 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> | |||||
export default { | |||||
name : 'Login', | |||||
data() { | |||||
return { | |||||
} | |||||
}, | |||||
methods: { | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
</style> |
@ -0,0 +1,37 @@ | |||||
<template> | |||||
<view> | |||||
<view class="se-flex se-m-20 se-bgc-white se-br-10 se-p-20" v-for="(items,indexs) in 8" :key="indexs" @click="onNavigator()"> | |||||
<image class="se-a-80 se-br-10 " src="@/static/image/logo.png" mode=""></image> | |||||
<view class="se-pl-10 se-w-p-85"> | |||||
<view class="se-flex se-flex-h-sb se-flex-ai-c se-c-black se-fs-28 se-c-black"> | |||||
<text>租房小王子</text> | |||||
<text class="se-c-text-sub se-fs-24">12:56</text> | |||||
</view> | |||||
<view class="se-c-text-sub se-fs-26">[整租·四季峰景四期 2室1厅1卫]</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
list:[] | |||||
} | |||||
}, | |||||
methods:{ | |||||
onNavigator(){ | |||||
// uni.navigateTo({ | |||||
// url:"/pages_subpack/release/index" | |||||
// }) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
</style> |
@ -0,0 +1,90 @@ | |||||
<template> | |||||
<view class="u-page"> | |||||
<view class="se-pt-50 se-pb-120 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-120 se-h-120" 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-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"> | |||||
<view class="se-flex se-flex-ai-c"> | |||||
<image class="se-a-30" src="@/static/image/47086.png" mode=""></image> | |||||
<text class="se-ml-20 se-fs-24 se-fw-5">房东中心</text> | |||||
</view> | |||||
<view class="se-flex se-flex-ai-c"> | |||||
<uv-icon name="arrow-right"></uv-icon> | |||||
</view> | |||||
</view> | |||||
<view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b"> | |||||
<view class="se-flex se-flex-ai-c"> | |||||
<image class="se-a-30" src="@/static/image/47100.png" mode=""></image> | |||||
<text class="se-ml-20 se-fs-24 se-fw-5">经纪人中心</text> | |||||
</view> | |||||
<view class="se-flex se-flex-ai-c"> | |||||
<uv-icon name="arrow-right"></uv-icon> | |||||
</view> | |||||
</view> | |||||
<view class="se-py-30 se-px-20 se-flex se-flex-h-sb"> | |||||
<view class="se-flex se-flex-ai-c"> | |||||
<image class="se-a-30" src="@/static/image/47186.png" mode=""></image> | |||||
<text class="se-ml-20 se-fs-24 se-fw-5">关于我们</text> | |||||
</view> | |||||
<view class="se-flex se-flex-ai-c"> | |||||
<uv-icon name="arrow-right"></uv-icon> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
data() { | |||||
return { | |||||
} | |||||
}, | |||||
methods: { | |||||
onCustomerService(){ | |||||
uni.showModal({ | |||||
title: '联系客服', | |||||
content: '确定拨打客服电话?', | |||||
success: function (res) { | |||||
if (res.confirm) { | |||||
console.log('用户点击确定'); | |||||
} else if (res.cancel) { | |||||
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,71 @@ | |||||
<template> | |||||
<view class="se-p-30"> | |||||
<uv-form labelPosition="top" :model="form" :rules="rules" ref="form"> | |||||
<uv-form-item label="账号" prop="name" > | |||||
<uv-input v-model="form.name" type="text" placeholder="请输入账号" customStyle="border-radius: 30px;margin-top:5px;background-color: #ffffff;padding:5px 20px;" border="none"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="密码" prop="password"> | |||||
<uv-input v-model="form.password" type="password" placeholder="请输入密码" customStyle="border-radius: 30px;margin-top:5px;background-color: #ffffff;padding:5px 20px;" border="none"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item> | |||||
<uv-button type="primary" text="登录" customStyle="margin-top: 30px;background-color: #1EC7B6;border-radius: 30px;" @click="submit"></uv-button> | |||||
</uv-form-item> | |||||
</uv-form> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
form:{ | |||||
name:"", | |||||
password:"" | |||||
}, | |||||
rules:{ | |||||
name:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入账号', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
password:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入密码', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
] | |||||
} | |||||
} | |||||
}, | |||||
methods:{ | |||||
submit() { | |||||
uni.navigateTo({ | |||||
url:"/pages_subpack/house/index" | |||||
}) | |||||
this.$refs.form.validate().then(res => { | |||||
uni.showToast({ | |||||
icon: 'none', | |||||
title: '校验通过' | |||||
}) | |||||
}).catch(errors => { | |||||
uni.showToast({ | |||||
icon: 'none', | |||||
title: '校验失败' | |||||
}) | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
</style> |
@ -0,0 +1,227 @@ | |||||
<template> | |||||
<view> | |||||
<view class="se-bgc-white se-pb-20 se-pt-30 se-px-40"> | |||||
<uv-search @search="onSearch()" placeholder="搜索租房信息" :showAction="false" v-model="keyword"></uv-search> | |||||
</view> | |||||
<view class="se-pb-10 se-px-40 se-bgc-white"> | |||||
<uv-drop-down ref="dropDown" sign="dropDown_1" text-active-color="#20CD7D" | |||||
:extra-icon="{name:'arrow-down-fill',color:'#666',size:'26rpx'}" | |||||
:extra-active-icon="{name:'arrow-up-fill',color:'#20CD7D',size:'26rpx'}" :defaultValue="defaultValue" | |||||
:custom-style="{padding: '0rpx 0rpx',borderBottom:'1rpx solid transparent'}" @click="selectMenu"> | |||||
<uv-drop-down-item name="region" type="2" :label="dropItem('region').label" :value="dropItem('region').value"> | |||||
</uv-drop-down-item> | |||||
<uv-drop-down-item name="rent" type="2" :label="dropItem('rent').label" :value="dropItem('rent').value"> | |||||
</uv-drop-down-item> | |||||
<uv-drop-down-item name="type" type="2" :label="dropItem('type').label" :value="dropItem('type').value"> | |||||
</uv-drop-down-item> | |||||
<uv-drop-down-item name="duration" type="2" :label="dropItem('duration').label" :value="dropItem('duration').value"> | |||||
</uv-drop-down-item> | |||||
<!-- <uv-drop-down-item name="vip_type" type="1" label='VIP文档' :value="dropItem('vip_type').value"> | |||||
</uv-drop-down-item> --> | |||||
</uv-drop-down> | |||||
<uv-drop-down-popup sign="dropDown_1" :click-overlay-on-close="true" :currentDropItem="currentDropItem" | |||||
@clickItem="clickItem" @popupChange="change"></uv-drop-down-popup> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
onPageScroll() { | |||||
// 滚动后及时更新位置 | |||||
this.$refs.dropDown.init(); | |||||
}, | |||||
computed: { | |||||
dropItem(name) { | |||||
return (name) => { | |||||
const result = {}; | |||||
const find = this.result.find(item => item.name === name); | |||||
if (find) { | |||||
result.label = find.label; | |||||
result.value = find.value; | |||||
} else { | |||||
result.label = this[name].label; | |||||
result.value = this[name].value; | |||||
} | |||||
return result; | |||||
} | |||||
}, | |||||
// 获取当前下拉筛选项 | |||||
currentDropItem() { | |||||
return this[this.activeName]; | |||||
} | |||||
}, | |||||
data() { | |||||
return { | |||||
keyword: "", | |||||
// 表示value等于这些值,就属于默认值 | |||||
defaultValue: ['all', 'all', 'all','all'], | |||||
// 筛选结果 | |||||
result: [], | |||||
region:{ | |||||
label: '区域', | |||||
value: 'all', | |||||
activeIndex: 0, | |||||
color: '#333', | |||||
activeColor: '#20CD7D', | |||||
child: [{ | |||||
label: '全部区域', | |||||
value: 'all' | |||||
}, { | |||||
label: '湖南', | |||||
value: 'hunan' | |||||
}, { | |||||
label: '广州', | |||||
value: 'guangzhou' | |||||
}] | |||||
}, | |||||
rent:{ | |||||
label: '租金', | |||||
value: 'all', | |||||
activeIndex: 0, | |||||
color: '#333', | |||||
activeColor: '#20CD7D', | |||||
child: [{ | |||||
label: '全部', | |||||
value: 'all' | |||||
}, { | |||||
label: '0-2k', | |||||
value: '2000' | |||||
}, { | |||||
label: '2k-4k', | |||||
value: '4000' | |||||
}, { | |||||
label: '4k-6k', | |||||
value: '6000' | |||||
}, { | |||||
label: '6k+', | |||||
value: '6000+' | |||||
}] | |||||
}, | |||||
type: { | |||||
label: '类型', | |||||
value: 'all', | |||||
activeIndex: 0, | |||||
color: '#333', | |||||
activeColor: '#20CD7D', | |||||
child: [{ | |||||
label: '全部', | |||||
value: 'all' | |||||
}, { | |||||
label: '闲置散居农房', | |||||
value: 'nongfang' | |||||
}, { | |||||
label: '鱼塘', | |||||
value: 'yutang' | |||||
}, { | |||||
label: '耕地', | |||||
value: 'gengdi' | |||||
}] | |||||
}, | |||||
duration:{ | |||||
label: '年限', | |||||
value: 'all', | |||||
activeIndex: 0, | |||||
color: '#333', | |||||
activeColor: '#20CD7D', | |||||
child: [{ | |||||
label: '全部', | |||||
value: 'all' | |||||
}, { | |||||
label: '5年内', | |||||
value: '0-5' | |||||
}, { | |||||
label: '5-10年', | |||||
value: '5-10' | |||||
}, { | |||||
label: '10-20年', | |||||
value: '10-20' | |||||
}] | |||||
}, | |||||
activeName: 'region', | |||||
vip_type: { | |||||
label: 'VIP文档', | |||||
value: 0, | |||||
activeIndex: 0 | |||||
} | |||||
} | |||||
}, | |||||
methods: { | |||||
onSearch(){ | |||||
this.$emit("onSearch",this.keyword) | |||||
}, | |||||
change(e) { | |||||
console.log('弹窗打开状态:', e); | |||||
}, | |||||
/** | |||||
* 点击每个筛选项回调 | |||||
* @param {Object} e { name, active, type } = e | |||||
*/ | |||||
selectMenu(e) { | |||||
const { | |||||
name, | |||||
active, | |||||
type | |||||
} = e; | |||||
this.activeName = name; | |||||
// type 等于1 的需要特殊处理:type不等于1可以忽略 | |||||
if (type == 1) { | |||||
this.clickItem({ | |||||
name: 'vip_type', | |||||
label: 'VIP文档', | |||||
value: e.active ? 1 : 0 | |||||
}); | |||||
} else { | |||||
const find = this.result.find(item => item.name == this.activeName); | |||||
if (find) { | |||||
const findIndex = this[this.activeName].child.findIndex(item => item.label == find.label && item | |||||
.value == find.value); | |||||
this[this.activeName].activeIndex = findIndex; | |||||
} else { | |||||
this[this.activeName].activeIndex = 0; | |||||
} | |||||
} | |||||
}, | |||||
/** | |||||
* 点击菜单回调处理 | |||||
* @param {Object} item 选中项 { label,value } = e | |||||
*/ | |||||
clickItem(e) { | |||||
// 下面有重新赋值,所以用let | |||||
let { | |||||
label, | |||||
value | |||||
} = e; | |||||
const findIndex = this.result.findIndex(item => item.name == this.activeName); | |||||
if (this.defaultValue.indexOf(value) > -1 && this[this.activeName].label) { | |||||
label = this[this.activeName].label; | |||||
} | |||||
// 已经存在筛选项 | |||||
if (findIndex > -1) { | |||||
this.$set(this.result, findIndex, { | |||||
name: this.activeName, | |||||
label, | |||||
value | |||||
}) | |||||
} else { | |||||
this.result.push({ | |||||
name: this.activeName, | |||||
label, | |||||
value | |||||
}); | |||||
} | |||||
this.result = this.result.filter(item => this.defaultValue.indexOf(item.value) == -1); | |||||
// uni.showModal({ | |||||
// content: `筛选的值:${JSON.stringify(this.result)}` | |||||
// }) | |||||
console.info(this.result) | |||||
this.$emit("onParent",this.result) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
</style> |
@ -0,0 +1,61 @@ | |||||
<template> | |||||
<view class="uv-page"> | |||||
<searchVue @onSearch="onSearch($event)" @onParent="onDropDown($event)" /> | |||||
<view class="se-my-10 se-mx-20 se-px-20 se-py-20 se-br-20 se-bgc-white se-flex" v-for="(item,index) in 20" :key="index"> | |||||
<view class="se-pos se-w-260 se-h-180"> | |||||
<image class="se-a-80 se-pos-lt" src="../../static/image/2x.png" mode=""></image> | |||||
<image class="se-w-260 se-h-180 se-br-10" src="https://cdn.uviewui.com/uview/swiper/swiper1.png" mode=""></image> | |||||
</view> | |||||
<view class="se-pl-10 se-w-p-100"> | |||||
<view class="se-c-black se-fs-28"> | |||||
整租·四季峰景四期 2室2厅1卫 | |||||
</view> | |||||
<view class="se-flex se-flex-h-sb se-flex-ai-c se-fs-24 se-mt-10 se-c-66"> | |||||
<text>精装修</text> | |||||
<text>1年</text> | |||||
</view> | |||||
<view class="se-flex se-flex-h-sb se-flex-ai-c se-mt-10"> | |||||
<view class="se-display-ib se-c-white se-bgc-orange se-fs-22 se-br-8 se-px-10 se-py-5"> | |||||
全新首租 | |||||
</view> | |||||
<view class="se-c-66 se-flex se-flex-ai-c"> | |||||
<uv-icon name="eye"></uv-icon> | |||||
<text class="se-ml-5 se-fs-18">999+</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-flex-h-sb se-flex-ai-c se-mt-10"> | |||||
<text class="se-c-red se-fs-28 se-fw-6">¥1500元/月</text> | |||||
<text class="se-c-66 se-fs-22">四季峰景四期</text> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
import searchVue from './component/search.vue' | |||||
export default{ | |||||
components:{ | |||||
searchVue | |||||
}, | |||||
data(){ | |||||
return{ | |||||
keyword:"", | |||||
} | |||||
}, | |||||
methods:{ | |||||
onSearch(event){ | |||||
console.info(event) | |||||
}, | |||||
onDropDown(event){ | |||||
console.info(event[0].value) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
</style> |
@ -0,0 +1,262 @@ | |||||
<template> | |||||
<view> | |||||
<view class="se-w-vw-100 se-h-500"> | |||||
<uv-swiper :radius="0" :list="list" :height="250" keyName="url" :autoplay="false"></uv-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"> | |||||
整租·四季峰景四期·2室1厅1卫整租·四季峰景四期·2室1厅1卫整租·四季峰景四期·2室1厅1卫 | |||||
</view> | |||||
<view class="se-display-ib se-c-white se-bgc-orange se-fs-22 se-br-8 se-px-10 se-py-5"> | |||||
全新首租 | |||||
</view> | |||||
</view> | |||||
<view class="se-w-vw-10 se-pr-30 se-flex se-flex-v-c"> | |||||
<uv-icon name="photo"></uv-icon> | |||||
<text class="se-c-black se-fs-20">分享</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-mt-30 se-bgc-white se-py-30 se-flex se-flex-h-fs"> | |||||
<view class="se-flex-1 se-flex-v-sa"> | |||||
<text class="se-c-66 se-fw-5">价格</text> | |||||
<text class="se-c-red se-fw-6 se-mt-20">2000元/月</text> | |||||
</view> | |||||
<view class="se-flex-1 se-flex-v-sa"> | |||||
<text class="se-c-66 se-fw-5">户型</text> | |||||
<text class="se-c-red se-fw-6 se-mt-20">2000元/月</text> | |||||
</view> | |||||
<view class="se-flex-1 se-flex-v-sa"> | |||||
<text class="se-c-66 se-fw-5">面积</text> | |||||
<text class="se-c-red se-fw-6 se-mt-20">90平方米</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-mt-30 se-p-40 se-bgc-white"> | |||||
<view class="se-flex se-flex-ai-c se-pb-10"> | |||||
<view class="line-green"></view> | |||||
<view class="se-ml-10 se-fs-32 se-c-black se-fw-6"> | |||||
房源信息 | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">编号</text> | |||||
<text class="se-c-black">232355214</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">房屋结构</text> | |||||
<text class="se-c-black">两室一厅</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-2 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">房屋地址</text> | |||||
<text class="se-c-black se-fw-6">湖南省长沙市天心区芙蓉街道四季峰景四期</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex bgc-active-lg se-py-20 se-br-10"> | |||||
<view class="se-w-p-85 se-pl-30"> | |||||
<view class=" se-c-black se-fw-6 se-fs-24"> | |||||
具体地址:长沙市天心区桂花坪街道231号 | |||||
</view> | |||||
<view class="se-fs-22 se-py-5"> | |||||
距离你1.4km 骑行9分钟 步行18分钟 | |||||
</view> | |||||
</view> | |||||
<view class="se-w-p-15 se-pr-30 se-flex se-flex-v-c"> | |||||
<uv-icon name="photo"></uv-icon> | |||||
<text class="se-c-black se-fs-20 se-mt-10">导航</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-2 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">房屋周边</text> | |||||
<text class="se-c-black se-fw-6">超市·幼儿园·医院·学校·小吃街等</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">房间数量</text> | |||||
<text class="se-c-black">2</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">菜地</text> | |||||
<text class="se-c-black">40㎡</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">距离场镇距离</text> | |||||
<text class="se-c-black">2km</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">距离成都西三环</text> | |||||
<text class="se-c-black">2km</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">房屋主体是否改造</text> | |||||
<text class="se-c-black">否</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">房屋面积</text> | |||||
<text class="se-c-black">90㎡</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">院子总面积</text> | |||||
<text class="se-c-black">30㎡</text> | |||||
</view> | |||||
<view class="se-flex-2 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">房屋朝向及海拔</text> | |||||
<text class="se-c-black">90坐南朝北 600</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">是否经过安置</text> | |||||
<text class="se-c-black">是</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">交通</text> | |||||
<text class="se-c-black">交通便利</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">坟包及电塔 工厂噪音</text> | |||||
<text class="se-c-black">无</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">水电气网</text> | |||||
<text class="se-c-black">正常</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">停车</text> | |||||
<text class="se-c-black">100元/月</text> | |||||
</view> | |||||
<view class="se-flex-2 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">付款方式及押金</text> | |||||
<text class="se-c-black">押一付三(押金¥2000)</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">租期</text> | |||||
<text class="se-c-black">1年</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">非正常死亡</text> | |||||
<text class="se-c-black">无</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">邻居对房东评价</text> | |||||
<text class="se-c-black">为人和善</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">佣金</text> | |||||
<text class="se-c-black">200</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">钥匙</text> | |||||
<text class="se-c-black">2</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">户主家庭职业</text> | |||||
<text class="se-c-black">医生</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-fs-24"> | |||||
<view class="se-flex-1 se-py-20"> | |||||
<text class="se-c-66 se-mr-20">报建手续</text> | |||||
<text class="se-c-black">完整</text> | |||||
</view> | |||||
<view class="se-flex-1 se-py-20 se-flex se-flex-h-fe"> | |||||
<text class="se-c-66 se-mr-20">户主年龄</text> | |||||
<text class="se-c-black">40岁</text> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<view class="se-mt-30 se-p-40 se-bgc-white"> | |||||
<view class="se-flex se-flex-ai-c se-pb-10"> | |||||
<view class="line-green"></view> | |||||
<view class="se-ml-10 se-fs-32 se-c-black se-fw-6"> | |||||
产权证照片 | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-mt-20"> | |||||
<image class="se-w-320 se-h-180 se-br-5" src="../../static/image/logo.png" mode=""></image> | |||||
<image class="se-w-320 se-h-180 se-br-5 se-ml-10" src="../../static/image/logo.png" mode=""></image> | |||||
</view> | |||||
</view> | |||||
<view class="se-mt-30 se-p-40 se-bgc-white"> | |||||
<view class="se-flex se-flex-ai-c se-pb-10"> | |||||
<view class="line-green"></view> | |||||
<view class="se-ml-10 se-fs-32 se-c-black se-fw-6"> | |||||
房东评价 | |||||
</view> | |||||
</view> | |||||
<view class="se-mt-30" v-for="(items,indexs) in 5" :key="indexs"> | |||||
<view class="se-flex se-w-p-100"> | |||||
<view class="se-flex se-flex-1"> | |||||
<image class="se-a-80 se-br-p-50" src="../../static/image/6588.png" mode=""></image> | |||||
<view class="se-flex se-flex-v-sa se-flex-ai-fs se-ml-10"> | |||||
<text class="se-c-33 se-fs-26">IYU466930948</text> | |||||
<text class="se-c-66 se-fs-22">2024.04.18</text> | |||||
</view> | |||||
</view> | |||||
<view class="se-flex se-flex-1 se-flex-h-fe"> | |||||
<uv-rate :count="5" activeColor="#FCD618" v-model="rate"></uv-rate> | |||||
</view> | |||||
</view> | |||||
<view class="se-lh-40 se-mt-10 se-fs-24 se-c-33"> | |||||
房东人很不错,当时疫情没在房子里面住,直接给我免了一个月房租,真的很感动,平时有什么需要维修的地方联系他也会很快处理☺☺☺ | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
rate:3, | |||||
list: [{ | |||||
url: 'https://cdn.uviewui.com/uview/resources/video.mp4', | |||||
title: '昨夜星辰昨夜风,画楼西畔桂堂东', | |||||
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png' | |||||
}, { | |||||
url: 'https://cdn.uviewui.com/uview/swiper/swiper2.png', | |||||
title: '身无彩凤双飞翼,心有灵犀一点通' | |||||
}, { | |||||
url: 'https://cdn.uviewui.com/uview/swiper/swiper3.png', | |||||
title: '谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳' | |||||
}] | |||||
} | |||||
}, | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
.line-green { | |||||
width: 8rpx; | |||||
height: 32rpx; | |||||
background: #20CD7D; | |||||
border-radius: 4rpx; | |||||
} | |||||
.bgc-active-lg{ | |||||
background-color: #F1FFF9; | |||||
} | |||||
</style> |
@ -0,0 +1,60 @@ | |||||
<template> | |||||
<view class="se-p-30"> | |||||
<uv-form labelPosition="top" :model="form" :rules="rules" ref="form"> | |||||
<uv-form-item label="经纪人邀请码" prop="invite" labelWidth="220"> | |||||
<uv-input v-model="form.invite" type="text" placeholder="请输入邀请码" customStyle="border-radius: 30px;margin-top:5px;background-color: #ffffff;padding:5px 20px;" border="none"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item> | |||||
<uv-button type="primary" text="登录" customStyle="margin-top: 30px;background-color: #1EC77A;border-radius: 30px;" @click="submit"></uv-button> | |||||
</uv-form-item> | |||||
</uv-form> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
form:{ | |||||
invite:"", | |||||
password:"" | |||||
}, | |||||
rules:{ | |||||
invite:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入邀请码', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
] | |||||
} | |||||
} | |||||
}, | |||||
methods:{ | |||||
submit() { | |||||
uni.navigateTo({ | |||||
url:"/pages_subpack/house/index" | |||||
}) | |||||
this.$refs.form.validate().then(res => { | |||||
uni.showToast({ | |||||
icon: 'none', | |||||
title: '校验通过' | |||||
}) | |||||
}).catch(errors => { | |||||
uni.showToast({ | |||||
icon: 'none', | |||||
title: '校验失败' | |||||
}) | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
</style> |
@ -0,0 +1,359 @@ | |||||
<template> | |||||
<view class="se-p-40 se-bgc-white"> | |||||
<uv-form labelPosition="left" :model="form" :rules="rules" ref="form" labelWidth="60" labelStyle="font-size:26rpx;"> | |||||
<uv-form-item label="标题" prop="title" > | |||||
<uv-input v-model="form.title" type="text" placeholder="请输入标题" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="价格" prop="price"> | |||||
<uv-input v-model="form.price" type="text" placeholder="请输入价格" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="户型" prop="house"> | |||||
<uv-input v-model="form.house" type="text" placeholder="请输入户型" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="面积" prop="proportion"> | |||||
<uv-input v-model="form.proportion" type="text" placeholder="请输入面积" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="所属位置" prop="address" @click="handleAreaChange()"> | |||||
<uv-input v-model="form.address" @click="handleAreaChange()" disabled disabledColor="#ffffff" placeholder="所属位置" border="none"> | |||||
</uv-input> | |||||
<template v-slot:right> | |||||
<uv-icon name="arrow-right"></uv-icon> | |||||
</template> | |||||
</uv-form-item> | |||||
<uv-form-item label="编号" prop="number"> | |||||
<uv-input v-model="form.number" type="text" placeholder="请输入编号" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="房屋周边" prop="perimeter"> | |||||
<uv-input v-model="form.perimeter" type="text" placeholder="请输入房屋周边" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="房间数量" prop="housesNumber"> | |||||
<uv-number-box v-model="form.housesNumber" :min="1" :max="10"></uv-number-box> | |||||
</uv-form-item> | |||||
<uv-form-item label="房屋主体是否改造" labelWidth="200" prop="revamp"> | |||||
<uv-radio-group v-model="form.revamp" placement="row"> | |||||
<uv-radio name="1" label="是"></uv-radio> | |||||
<uv-radio name="0" customStyle="margin-left:30rpx;" label="否"></uv-radio> | |||||
</uv-radio-group> | |||||
</uv-form-item> | |||||
<uv-form-item label="是否经过安置" labelWidth="200" prop="resettle"> | |||||
<uv-radio-group v-model="form.resettle" placement="row"> | |||||
<uv-radio name="1" label="是"></uv-radio> | |||||
<uv-radio name="0" customStyle="margin-left:30rpx;" label="否"></uv-radio> | |||||
</uv-radio-group> | |||||
</uv-form-item> | |||||
<uv-form-item label="院子总面积" labelWidth="100" prop="yardProportion"> | |||||
<uv-input v-model="form.yardProportion" type="text" placeholder="请输入院子总面积" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="坟包及电塔工厂噪音" labelWidth="150" prop="noise"> | |||||
<uv-input v-model="form.noise" type="text" placeholder="请输入坟包及电塔工厂噪音" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="水电气网" prop="net"> | |||||
<uv-input v-model="form.net" type="text" placeholder="请输入水电气网" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="停车" prop="park"> | |||||
<uv-input v-model="form.park" type="text" placeholder="请输入停车" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="付款方式及押金" labelWidth="120" prop="deposit"> | |||||
<uv-input v-model="form.deposit" type="text" placeholder="请输入押金" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="天府市民云房屋信息档案查询" labelWidth="100" prop="archival" labelPosition="top"> | |||||
<uv-input v-model="form.archival" type="text" placeholder="请输入天府市民云房屋信息档案查询" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="租期" prop="tenancy"> | |||||
<uv-input v-model="form.tenancy" type="text" placeholder="请输入租期" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="邻居对房东的评价" labelWidth="120" prop="evaluate"> | |||||
<uv-input v-model="form.evaluate" type="text" placeholder="请输入邻居对房东的评价" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="非正常死亡" labelWidth="80" prop="death"> | |||||
<uv-input v-model="form.death" type="text" placeholder="请输入非正常死亡" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="钥匙" prop="key"> | |||||
<uv-input v-model="form.key" type="text" placeholder="请输入钥匙" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="佣金" prop="commission"> | |||||
<uv-input v-model="form.commission" type="text" placeholder="请输入佣金" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="报建手续" prop="procedures"> | |||||
<uv-input v-model="form.procedures" type="text" placeholder="请输入报建手续" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="产权证照片" labelWidth="250" prop="isOwnershipList" labelPosition="top"> | |||||
<uv-upload customStyle="margin-top:20rpx;" :fileList="form.ownershipList" @afterRead="afterOwnershipRead" @delete="deleteOwnershipPic" name="1" | |||||
multiple :maxCount="10"></uv-upload> | |||||
</uv-form-item> | |||||
<uv-form-item label="房屋照片/视频" labelWidth="250" prop="isHouseList" labelPosition="top"> | |||||
<uv-upload customStyle="margin-top:20rpx;" :fileList="form.houseList" @afterRead="afterHouseRead" @delete="deleteHousePic" name="1" | |||||
multiple :maxCount="10"></uv-upload> | |||||
</uv-form-item> | |||||
<uv-form-item label="备注" prop="remark" labelPosition="top"> | |||||
<uv-input v-model="form.remark" type="text" placeholder="请输入备注" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item> | |||||
<uv-button type="primary" text="确认发布" customStyle="margin-top: 30px;background-color: #1EC77A;border-radius: 30px;" @click="submit"></uv-button> | |||||
</uv-form-item> | |||||
</uv-form> | |||||
<!-- 地址 --> | |||||
<citySelect ref="citySelectRef" :zIndex="0" @city-change="handleCityChange"></citySelect> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
import citySelect from "@/components/cityselect/index.vue" | |||||
export default{ | |||||
components:{ | |||||
citySelect | |||||
}, | |||||
data(){ | |||||
return{ | |||||
form:{ | |||||
title:"",//标题 | |||||
price:"",//价格 | |||||
house:"",//户型 | |||||
proportion:"",//面积 | |||||
address:"",//所属位置 | |||||
number:"",//编号 | |||||
perimeter:"",//房屋周边 | |||||
housesNumber:1,//房间数量 | |||||
revamp:0,//房屋主体是否改造 | |||||
resettle:0,//是否经过安置 | |||||
yardProportion:"",//院子总面积 | |||||
noise:"",//噪音 | |||||
net:"",//水电气网 | |||||
park:"",//停车 | |||||
deposit:"",//押金 | |||||
archival:"",//档案查询 | |||||
tenancy:"",//租期 | |||||
evaluate:"",//评价 | |||||
death:"",//非正常死亡 | |||||
key:"",//钥匙 | |||||
commission:"",//佣金 | |||||
procedures:"",//手续 | |||||
isOwnershipList:"", | |||||
ownershipList:[], | |||||
isHouseList:"", | |||||
houseList:[], | |||||
remark:"" | |||||
}, | |||||
rules:{ | |||||
title:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入账号', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
price:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入价格', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
house:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入户型', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
proportion:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入面积', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
number:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入编号', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
perimeter:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入房屋周边', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
yardProportion:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入院子总面积', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
noise:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入坟包及电塔工厂噪音', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
net:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入水电气网', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
park:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入停车', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
deposit:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入押金', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
archival:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入天府市民云房屋信息档案查询', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
tenancy:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入租期', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
evaluate:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入邻居对房东的评价', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
death:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入非正常死亡', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
key:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入钥匙', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
commission:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入佣金', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
procedures:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入报建手续', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
} | |||||
} | |||||
}, | |||||
watch: { | |||||
'form.ownershipList'(newValue, oldValue) { | |||||
if (newValue.length > 0) { | |||||
this.form.isOwnershipList = '有' | |||||
} else { | |||||
this.form.isOwnershipList = '' | |||||
} | |||||
}, | |||||
'form.houseList'(newValue, oldValue) { | |||||
if (newValue.length > 0) { | |||||
this.form.isHouseList = '有' | |||||
} else { | |||||
this.form.isHouseList = '' | |||||
} | |||||
} | |||||
}, | |||||
onReady() { | |||||
this.$refs.form.setRules(this.rules) | |||||
}, | |||||
methods:{ | |||||
deleteHousePic(event) { | |||||
this.form.houseList.splice(event.index, 1) | |||||
}, | |||||
async afterHouseRead(e) { | |||||
let self = this | |||||
e.file.forEach(file => { | |||||
self.$Oss.ossUpload(file.url).then(url => { | |||||
self.form.houseList.push({ | |||||
url | |||||
}) | |||||
}) | |||||
}) | |||||
}, | |||||
deleteOwnershipPic(event) { | |||||
this.form.ownershipList.splice(event.index, 1) | |||||
}, | |||||
async afterOwnershipRead(e) { | |||||
let self = this | |||||
e.file.forEach(file => { | |||||
self.$Oss.ossUpload(file.url).then(url => { | |||||
self.form.ownershipList.push({ | |||||
url | |||||
}) | |||||
}) | |||||
}) | |||||
}, | |||||
handleAreaChange(){ | |||||
this.$refs.citySelectRef.open() | |||||
}, | |||||
handleCityChange(e) { | |||||
this.form.address = e.province.label + '-' + e.city.label + '-' + e.area.label; | |||||
}, | |||||
submit() { | |||||
this.$refs.form.validate().then(res => { | |||||
uni.showToast({ | |||||
icon: 'none', | |||||
title: '校验通过' | |||||
}) | |||||
}).catch(errors => { | |||||
uni.showToast({ | |||||
icon: 'none', | |||||
title: '校验失败' | |||||
}) | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
</style> |
@ -0,0 +1,104 @@ | |||||
<template> | |||||
<view class="se-p-30"> | |||||
<uv-form labelPosition="top" :labelWidth="200" :model="form" :rules="rules" ref="form"> | |||||
<uv-form-item label="姓名" prop="name" > | |||||
<uv-input v-model="form.name" type="text" placeholder="请输入姓名" customStyle="border-radius: 30px;margin-top:5px;background-color: #ffffff;padding:5px 20px;" border="none"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="身份证号码" prop="idcard"> | |||||
<uv-input v-model="form.idcard" type="text" placeholder="请输入身份证号码" customStyle="border-radius: 30px;margin-top:5px;background-color: #ffffff;padding:5px 20px;" border="none"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="联系方式" prop="phone"> | |||||
<uv-input v-model="form.phone" type="number" placeholder="请输入联系方式" customStyle="border-radius: 30px;margin-top:5px;background-color: #ffffff;padding:5px 20px;" border="none"></uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item> | |||||
<view class="se-flex se-flex-v"> | |||||
<text class="se-c-black se-fw-6 se-fs-30">请上传身份证正反面照片</text> | |||||
<text class="se-fs-26 se-mt-10 se-c-text">信息仅用身份核实,上传后可增加曝光机会</text> | |||||
</view> | |||||
<view class="se-my-20 se-p-20 se-flex se-flex-h-sa se-br-10" style="background: #f9f1e9;"> | |||||
<image class="se-w-350 se-h-240" src="@/static/image/47719x.png" mode=""></image> | |||||
<view class="se-br-10 se-py-10 se-px-20 se-c-white se-bgc-orange" style="background-color: #FF9F39;"> | |||||
点击上传 | |||||
</view> | |||||
</view> | |||||
<view class="se-c-text-sub se-ta-c se-fs-24"> | |||||
(确保文字清晰、可辨、避免遮挡、不全、反光) | |||||
</view> | |||||
<view class="se-my-20 se-p-20 se-flex se-flex-h-sa se-br-10" style="background: #f9f1e9;"> | |||||
<image class="se-w-350 se-h-240" src="@/static/image/47719x.png" mode=""></image> | |||||
<view class="se-br-10 se-py-10 se-px-20 se-c-white se-bgc-orange" style="background-color: #FF9F39;"> | |||||
点击上传 | |||||
</view> | |||||
</view> | |||||
</uv-form-item> | |||||
<uv-form-item> | |||||
<uv-button type="primary" text="申请" customStyle="margin-top: 10px;border-color: #FF9F39;background-color: #FF9F39;border-radius: 30px;" @click="submit"></uv-button> | |||||
</uv-form-item> | |||||
</uv-form> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
form:{ | |||||
name:"", | |||||
idcard:"", | |||||
phone:"" | |||||
}, | |||||
rules:{ | |||||
name:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入姓名', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
idcard:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入身份证号码', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
], | |||||
phone:[ | |||||
{ | |||||
type: 'string', | |||||
required: true, | |||||
message: '请输入联系方式', | |||||
trigger: ['blur', 'change'] | |||||
} | |||||
] | |||||
} | |||||
} | |||||
}, | |||||
methods:{ | |||||
submit() { | |||||
uni.navigateTo({ | |||||
url:"/pages_subpack/successful/index" | |||||
}) | |||||
this.$refs.form.validate().then(res => { | |||||
uni.showToast({ | |||||
icon: 'none', | |||||
title: '校验通过' | |||||
}) | |||||
}).catch(errors => { | |||||
uni.showToast({ | |||||
icon: 'none', | |||||
title: '校验失败' | |||||
}) | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
page{ | |||||
background-color: #f5f5f5; | |||||
} | |||||
</style> |
@ -0,0 +1,26 @@ | |||||
<template> | |||||
<view class=" se-p-30"> | |||||
<navigator url="/pages_subpack/homeowner/index" class="se-flex se-mt-50 se-flex-ai-c se-flex-h-c se-bgc-active se-c-white se-fs-28 se-py-20 se-px-250 se-br-30" style="background-color: #1EC77A;"> | |||||
我是房东 | |||||
</navigator> | |||||
<navigator url="/pages_subpack/broker/index" class="se-flex se-mt-50 se-flex-ai-c se-flex-h-c se-bgc-active se-c-white se-fs-28 se-py-20 se-px-250 se-br-30" style="background-color: #1EC7B6;"> | |||||
我是经纪人 | |||||
</navigator> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
} | |||||
}, | |||||
methods:{ | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
</style> |
@ -0,0 +1,29 @@ | |||||
<template> | |||||
<view class="se-p-30"> | |||||
<view class="se-flex se-flex-v-c se-mt-120"> | |||||
<image class="se-a-130" src="../../static/image/47052.png" mode=""></image> | |||||
<text class="se-fw-6 se-c-black se-mt-30">登录成功</text> | |||||
</view> | |||||
<view class="se-px-20 se-mt-100"> | |||||
<navigator url="/pages_subpack/house/index" class="se-flex se-mt-20 se-flex-ai-c se-flex-h-c se-c-white se-fs-28 se-py-20 se-px-250 se-br-30" style="background-color: #1EC77A;"> | |||||
去发布 | |||||
</navigator> | |||||
<navigator url="/pages/home/index" class="se-flex se-mt-40 se-flex-ai-c se-flex-h-c se-bgc-cancel se-b se-c-33 se-fs-28 se-py-20 se-px-250 se-br-30"> | |||||
退出登录 | |||||
</navigator> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default{ | |||||
data(){ | |||||
return{ | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
</style> |
@ -0,0 +1,8 @@ | |||||
<template> | |||||
</template> | |||||
<script> | |||||
</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 500 { | |||||
@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: #1EC77A; | |||||
$green-lg: linear-gradient(to right, #1EC77A, #ffff00); | |||||
$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,21 @@ | |||||
body { | |||||
height: 100%; | |||||
background-color: #f5f5f5; | |||||
color: #333333; | |||||
} | |||||
button, | |||||
input, | |||||
textarea { | |||||
border: none; | |||||
outline: none; | |||||
resize: 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: #1EC77A; | |||||
$text-orange: #FF9F39; | |||||
$page: #f5f5f5; | |||||
$area: #ffffff; | |||||
$area-l: #f5f5f5; | |||||
$select: #f5f5f5; | |||||
$dialog: #ffffff; | |||||
$green: #1EC77A; | |||||
$orange: #FF9F39; | |||||
$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,14 @@ | |||||
/** | |||||
* 下方引入的为uvUI的集成样式文件,为scss预处理器,其中包含了一些"uv-"开头的自定义变量 | |||||
* 使用的时候,请将下面的一行复制到您的uniapp项目根目录的uni.scss中即可 | |||||
* uvUI自定义的css类名和scss变量,均以"uv-"开头,不会造成冲突,请放心使用 | |||||
* @import '@/uni_modules/uv-ui-tools/theme.scss'; | |||||
*/ | |||||
.se-grid { | |||||
width: 100%; | |||||
display: grid; | |||||
grid-template-columns: 1fr 1fr 1fr 1fr; | |||||
gap: 10rpx; | |||||
} | |||||
@ -0,0 +1,7 @@ | |||||
## 1.0.2(2023-07-02) | |||||
uv-action-sheet 由于弹出层uv-popup的修改,打开和关闭方法更改,详情参考文档:https://www.uvui.cn/components/actionSheet.html | |||||
## 1.0.1(2023-05-16) | |||||
1. 优化组件依赖,修改后无需全局引入,组件导入即可使用 | |||||
2. 优化部分功能 | |||||
## 1.0.0(2023-05-10) | |||||
uv-action-sheet 底部操作菜单 |