集成师傅服务经销端
@ -0,0 +1,16 @@
|
|||||||
|
######################################################################
|
||||||
|
# Build Tools
|
||||||
|
|
||||||
|
/unpackage/*
|
||||||
|
/node_modules/*
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# Development Tools
|
||||||
|
|
||||||
|
/.idea/*
|
||||||
|
/.vscode/*
|
||||||
|
/.hbuilderx/*
|
||||||
|
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
|
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 238 KiB |
After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 201 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 130 KiB |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 150 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 208 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 114 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 173 KiB |
After Width: | Height: | Size: 125 KiB |
After Width: | Height: | Size: 125 KiB |
After Width: | Height: | Size: 148 KiB |
After Width: | Height: | Size: 128 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 248 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 102 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 110 KiB |
After Width: | Height: | Size: 131 KiB |
After Width: | Height: | Size: 62 KiB |
@ -0,0 +1,65 @@
|
|||||||
|
<!-- <template>
|
||||||
|
<view class="content">
|
||||||
|
<router-view></router-view>
|
||||||
|
<view class="text-area">
|
||||||
|
<text class="title">Hello 芋道</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template> -->
|
||||||
|
<script>
|
||||||
|
import config from './config'
|
||||||
|
import store from '@/store'
|
||||||
|
import {
|
||||||
|
getAccessToken,
|
||||||
|
getAccessTokensacacas
|
||||||
|
} from '@/utils/auth'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
onLaunch: function () {
|
||||||
|
this.initApp()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 初始化应用
|
||||||
|
initApp() {
|
||||||
|
// 初始化应用配置
|
||||||
|
this.initConfig()
|
||||||
|
// 检查用户登录状态
|
||||||
|
//#ifdef H5
|
||||||
|
this.checkLogin()
|
||||||
|
//#endif
|
||||||
|
},
|
||||||
|
initConfig() {
|
||||||
|
this.globalData.config = config
|
||||||
|
},
|
||||||
|
checkLogin() {
|
||||||
|
if (!getAccessToken()) {
|
||||||
|
this.$tab.reLaunch('/pages/login')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import "uview-ui/index.scss";
|
||||||
|
@import '@/static/scss/index.scss';
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.gradient-background {
|
||||||
|
/* 设置渐变背景,从上到下,从浅蓝色到白色 */
|
||||||
|
background: linear-gradient(to bottom, #0d74d2 0%, #FFFFFF 25%);
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
/* 如果需要模糊效果,可以添加 backdrop-filter */
|
||||||
|
backdrop-filter: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gradient-backgroundTwo {
|
||||||
|
/* 设置渐变背景,从上到下,从浅蓝色到白色 */
|
||||||
|
background: linear-gradient(to bottom, #0d74d2 0%, #ececec 25%);
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
/* 如果需要模糊效果,可以添加 backdrop-filter */
|
||||||
|
backdrop-filter: none;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 芋道
|
||||||
|
|
||||||
|
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,134 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
const homeApi = {
|
||||||
|
DeviceCustomer: () => { //累计收益
|
||||||
|
return request({
|
||||||
|
url: '/AppServerController/statisticMoneyDeviceCustomer',
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
myTicket: (parms) => {
|
||||||
|
return request({ //我的工单
|
||||||
|
url: `/AppServerController/myTicket?pageNo=${parms.pageNo}&pageSize=10&worderType=&worderStatus=${parms.worderStatus}&worderContent=${parms.worderContent || ''}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
myTicketsh: (parms) => {
|
||||||
|
return request({ //师傅端我的工单
|
||||||
|
url: `/AppServerController/myTicketsh?pageNo=${parms.pageNo}&pageSize=10&worderType=&worderStatus=${parms.worderStatus}&worderContent=${parms.worderContent || ''}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
myTicketStatistics: () => {
|
||||||
|
return request({ //我的统计工单
|
||||||
|
url: '/AppServerController/myTicketStatistics',
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getUserPage: (params) => { //用户分页查询
|
||||||
|
return request({
|
||||||
|
url: '/AppServerController/getUserPage',
|
||||||
|
'method': 'GET',
|
||||||
|
params:params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
monthOrders: (params) => { //工单列表
|
||||||
|
return request({
|
||||||
|
url: '/AppServerController/monthOrders',
|
||||||
|
'method': 'GET',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
myTicketDay: (parms) => { //按日期查询我的工单统计
|
||||||
|
return request({
|
||||||
|
url: `/AppServerController/myTicketDayStatistics?day=${parms}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
appListMaster: (parms) => { //派单时查询师傅分页
|
||||||
|
return request({
|
||||||
|
url: `/AppServerController/appListMaster?pageNo=${parms.page}&pageSize=10&customerName=${parms.customerName}&customerPhone=${parms.customerPhone}&customerAreaId=${parms.customerAreaId}&worderId=${parms.worderId}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
appDistributeMaster: (data) => { //派单
|
||||||
|
return request({
|
||||||
|
url: `/AppServerController/appDistributeMaster`,
|
||||||
|
'method': 'POST',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
reschedulingTime: (data) => { //改约时间
|
||||||
|
return request({
|
||||||
|
url: `/AppServerController/reschedulingTime`,
|
||||||
|
'method': 'PUT',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getDeviceMgmtTab: (parms) => { //获得设备管理分页
|
||||||
|
return request({
|
||||||
|
url: `/AppServerController/getDeviceMgmtTab?pageNo=${parms.page}&pageSize=10&id=${parms.id}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getUserProduct: (parms) => { //设备详情
|
||||||
|
return request({
|
||||||
|
url: `/userClient2/getUserProduct?id=${parms}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getFilterDetailsByDeviceId: (parms) => { //滤芯详情
|
||||||
|
return request({
|
||||||
|
url: `/userClient2/getFilterDetailsByDeviceId?deviceId=${parms}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
restFilterS: (parms) => { //滤芯重置
|
||||||
|
return request({
|
||||||
|
url: `/tdproduct/td-product/restFilterS?filterId=${parms[0]}&deviceId=${parms[1]}&filterRestFlow=${parms[2]}&filterMaxFlow=${parms[3]}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
create: (data) => { //设备充值
|
||||||
|
return request({
|
||||||
|
url: `/dproductrecharge/D-product-recharge/create`,
|
||||||
|
'method': 'POST',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
unbindTheDevice: (data) => { //解绑设备
|
||||||
|
return request({
|
||||||
|
url: `/AppServerController/unbindTheDevice?id=${data}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
pushUserOrder: (params) => { //设备报修
|
||||||
|
return request({
|
||||||
|
url: `/userClient2/pushUserOrder`,
|
||||||
|
'method': 'GET',
|
||||||
|
params:params,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
notice: (dada) => { //公告列表
|
||||||
|
return request({
|
||||||
|
url: `/AppServerController/getNoticePage?pageNo=${dada}&pageSize=10`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getNotice: (dada) => { //公告详情
|
||||||
|
return request({
|
||||||
|
url: `/AppServerController/getNotice?id=${dada}`,
|
||||||
|
'method': 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 师傅管理
|
||||||
|
getMasterList: (data) => {
|
||||||
|
return request({
|
||||||
|
url: `/system/user/masterManage`,
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
export default homeApi
|
@ -0,0 +1,34 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 登录方法
|
||||||
|
export function login(username, password, captchaVerification) {
|
||||||
|
const data = {
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
captchaVerification
|
||||||
|
}
|
||||||
|
return request({
|
||||||
|
url: '/system/auth/logins',
|
||||||
|
headers: {
|
||||||
|
isToken: false
|
||||||
|
},
|
||||||
|
'method': 'POST',
|
||||||
|
'data': data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取用户详细信息
|
||||||
|
export function getInfo() {
|
||||||
|
return request({
|
||||||
|
url: '/system/auth/get-permission-info',
|
||||||
|
'method': 'GET'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 退出方法
|
||||||
|
export function logout() {
|
||||||
|
return request({
|
||||||
|
url: '/system/auth/logout',
|
||||||
|
'method': 'POST'
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,124 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
import upload from '@/utils/upload'
|
||||||
|
|
||||||
|
const MasterApi = {
|
||||||
|
// 获得工单
|
||||||
|
getWorkOrderNum: () => {
|
||||||
|
return request({
|
||||||
|
url: '/AppMasterController/masterHomeStatistics',
|
||||||
|
method: 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getAnnouncements: () => {
|
||||||
|
return request({
|
||||||
|
url: '/AppMasterController/intervalOrder',
|
||||||
|
method: 'GET',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getMasterOrderList: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/AppMasterController/queryCoverageArea',
|
||||||
|
method: 'GET',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询字典数据
|
||||||
|
// dictData
|
||||||
|
//字典
|
||||||
|
dictData: (params) => {
|
||||||
|
return request({
|
||||||
|
url: '/userClient2/getDictDataList',
|
||||||
|
method: 'GET',
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 工单详情
|
||||||
|
getWorderById: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/userClient2/getWorderById',
|
||||||
|
method: 'get',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 接单、退单
|
||||||
|
updateOrder: (params) => {
|
||||||
|
return request({
|
||||||
|
url: '/AppMasterController/acceptRejectOrder',
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 完结工单上传
|
||||||
|
uploadFile: (data) => {
|
||||||
|
return upload({
|
||||||
|
url: '/admin-api/infra/file/upload',
|
||||||
|
method: 'post',
|
||||||
|
filePath: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 评价
|
||||||
|
evaluateApi: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/userClient2/savefeedBack',
|
||||||
|
method: 'get',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 收益明细
|
||||||
|
getProfitList: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/AppUserBalanceController/getUserBalance',
|
||||||
|
method: 'get',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 收益分析
|
||||||
|
getProfitAnalyseList: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/earningsAnalysisController/earningsAnalysiHome',
|
||||||
|
method: 'get',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 修改密码
|
||||||
|
updatePassword: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/userClient2/updatePassword',
|
||||||
|
method: 'get',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 我的总资产
|
||||||
|
getMyInfo: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/earningsAnalysisController/myInfo',
|
||||||
|
method: 'get',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 提现记录
|
||||||
|
getWithdrawList: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/duserbalancewithdraw/D-user-balance-withdraw/pageWithdrawSuccess',
|
||||||
|
method: 'get',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 提现/AppUserBalanceController/applyWithdraw
|
||||||
|
withdrawDeposit: (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/AppUserBalanceController/applyWithdraw',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MasterApi
|
@ -0,0 +1,42 @@
|
|||||||
|
import upload from '@/utils/upload'
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 用户密码重置
|
||||||
|
export function updateUserPwd(oldPassword, newPassword) {
|
||||||
|
const data = {
|
||||||
|
oldPassword,
|
||||||
|
newPassword
|
||||||
|
}
|
||||||
|
return request({
|
||||||
|
url: '/system/user/profile/update-password',
|
||||||
|
method: 'PUT',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户个人信息
|
||||||
|
export function getUserProfile() {
|
||||||
|
return request({
|
||||||
|
url: '/system/user/profile/get',
|
||||||
|
method: 'GET'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改用户个人信息
|
||||||
|
export function updateUserProfile(data) {
|
||||||
|
return request({
|
||||||
|
url: '/system/user/profile/update',
|
||||||
|
method: 'PUT',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户头像上传
|
||||||
|
export function uploadAvatar(data) {
|
||||||
|
return upload({
|
||||||
|
url: '/system/user/profile/update-avatar',
|
||||||
|
method: 'PUT',
|
||||||
|
name: data.name,
|
||||||
|
filePath: data.filePath
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,167 @@
|
|||||||
|
<template>
|
||||||
|
<view class="uni-section">
|
||||||
|
<view class="uni-section-header" @click="onClick">
|
||||||
|
<view class="uni-section-header__decoration" v-if="type" :class="type" />
|
||||||
|
<slot v-else name="decoration"></slot>
|
||||||
|
|
||||||
|
<view class="uni-section-header__content">
|
||||||
|
<text :style="{'font-size':titleFontSize,'color':titleColor}" class="uni-section__content-title" :class="{'distraction':!subTitle}">{{ title }}</text>
|
||||||
|
<text v-if="subTitle" :style="{'font-size':subTitleFontSize,'color':subTitleColor}" class="uni-section-header__content-sub">{{ subTitle }}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="uni-section-header__slot-right">
|
||||||
|
<slot name="right"></slot>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="uni-section-content" :style="{padding: _padding}">
|
||||||
|
<slot />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Section 标题栏
|
||||||
|
* @description 标题栏
|
||||||
|
* @property {String} type = [line|circle|square] 标题装饰类型
|
||||||
|
* @value line 竖线
|
||||||
|
* @value circle 圆形
|
||||||
|
* @value square 正方形
|
||||||
|
* @property {String} title 主标题
|
||||||
|
* @property {String} titleFontSize 主标题字体大小
|
||||||
|
* @property {String} titleColor 主标题字体颜色
|
||||||
|
* @property {String} subTitle 副标题
|
||||||
|
* @property {String} subTitleFontSize 副标题字体大小
|
||||||
|
* @property {String} subTitleColor 副标题字体颜色
|
||||||
|
* @property {String} padding 默认插槽 padding
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'UniSection',
|
||||||
|
emits:['click'],
|
||||||
|
props: {
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
titleFontSize: {
|
||||||
|
type: String,
|
||||||
|
default: '14px'
|
||||||
|
},
|
||||||
|
titleColor:{
|
||||||
|
type: String,
|
||||||
|
default: '#333'
|
||||||
|
},
|
||||||
|
subTitle: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
subTitleFontSize: {
|
||||||
|
type: String,
|
||||||
|
default: '12px'
|
||||||
|
},
|
||||||
|
subTitleColor: {
|
||||||
|
type: String,
|
||||||
|
default: '#999'
|
||||||
|
},
|
||||||
|
padding: {
|
||||||
|
type: [Boolean, String],
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
_padding(){
|
||||||
|
if(typeof this.padding === 'string'){
|
||||||
|
return this.padding
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.padding?'10px':''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
title(newVal) {
|
||||||
|
if (uni.report && newVal !== '') {
|
||||||
|
uni.report('title', newVal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onClick() {
|
||||||
|
this.$emit('click')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" >
|
||||||
|
$uni-primary: #2979ff !default;
|
||||||
|
|
||||||
|
.uni-section {
|
||||||
|
background-color: #fff;
|
||||||
|
.uni-section-header {
|
||||||
|
position: relative;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
padding: 12px 10px;
|
||||||
|
font-weight: normal;
|
||||||
|
|
||||||
|
&__decoration{
|
||||||
|
margin-right: 6px;
|
||||||
|
background-color: $uni-primary;
|
||||||
|
&.line {
|
||||||
|
width: 4px;
|
||||||
|
height: 12px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.circle {
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-top-right-radius: 50px;
|
||||||
|
border-top-left-radius: 50px;
|
||||||
|
border-bottom-left-radius: 50px;
|
||||||
|
border-bottom-right-radius: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.square {
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: column;
|
||||||
|
flex: 1;
|
||||||
|
color: #333;
|
||||||
|
|
||||||
|
.distraction {
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
&-sub {
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__slot-right{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-section-content{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,14 @@
|
|||||||
|
import CryptoJS from 'crypto-js'
|
||||||
|
/**
|
||||||
|
* @word 要加密的内容
|
||||||
|
* @keyWord String 服务器随机返回的关键字
|
||||||
|
* */
|
||||||
|
export function aesEncrypt(word, keyWord = "XwKsGlMcdPMEhR1B") {
|
||||||
|
var key = CryptoJS.enc.Utf8.parse(keyWord);
|
||||||
|
var srcs = CryptoJS.enc.Utf8.parse(word);
|
||||||
|
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
|
||||||
|
mode: CryptoJS.mode.ECB,
|
||||||
|
padding: CryptoJS.pad.Pkcs7
|
||||||
|
});
|
||||||
|
return encrypted.toString();
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
import config from '@/config'
|
||||||
|
const baseUrl = config.baseUrl
|
||||||
|
export const myRequest = (option = {}) => {
|
||||||
|
return new Promise((reslove, reject) => {
|
||||||
|
uni.request({
|
||||||
|
url: baseUrl + option.url,
|
||||||
|
data: option.data,
|
||||||
|
method: option.method || "GET",
|
||||||
|
success: (result) => {
|
||||||
|
reslove(result)
|
||||||
|
},
|
||||||
|
fail: (error) => {
|
||||||
|
reject(error)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
// 应用全局配置
|
||||||
|
module.exports = {
|
||||||
|
// baseUrl: 'http://221.176.140.236:48080',
|
||||||
|
baseUrl: 'http://192.168.10.64:48080',
|
||||||
|
baseApi: '/admin-api',
|
||||||
|
NewBaseApi: '/app-api',
|
||||||
|
tenantId: 179,
|
||||||
|
// 应用信息
|
||||||
|
appInfo: {
|
||||||
|
// 应用名称
|
||||||
|
name: 'yudao-app',
|
||||||
|
// 应用版本
|
||||||
|
version: '1.0.0',
|
||||||
|
// 应用logo
|
||||||
|
logo: '/static/logo.png',
|
||||||
|
// 官方网站
|
||||||
|
site_url: 'https://iocoder.cn',
|
||||||
|
// 政策协议
|
||||||
|
agreements: [{
|
||||||
|
title: '隐私政策',
|
||||||
|
url: 'https://iocoder.cn',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '用户服务协议',
|
||||||
|
url: 'https://iocoder.cn',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import App from './App'
|
||||||
|
import store from './store' // store
|
||||||
|
import plugins from './plugins' // plugins
|
||||||
|
import './permission' // permission
|
||||||
|
import uView from 'uview-ui'
|
||||||
|
import VueCompositionAPI from '@vue/composition-api'
|
||||||
|
Vue.use(uView)
|
||||||
|
|
||||||
|
Vue.use(plugins)
|
||||||
|
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
Vue.prototype.$store = store
|
||||||
|
Vue.use(VueCompositionAPI)
|
||||||
|
|
||||||
|
App.mpType = 'app'
|
||||||
|
|
||||||
|
const app = new Vue({
|
||||||
|
...App,
|
||||||
|
})
|
||||||
|
|
||||||
|
app.$mount()
|