提交登录,与老人信息列表页
This commit is contained in:
parent
0c04e9fc08
commit
68b2d7ec79
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,299 @@
|
|||
<template>
|
||||
<view style="width: 100%">
|
||||
<view class="u-page">
|
||||
<u-loading-page :loading="loading" bg-color="#e8e8e8"></u-loading-page>
|
||||
|
||||
<u-row customStyle="margin: 5px">
|
||||
<u-col span="9">
|
||||
<u-search style="z-index: 999" :disabled="true" bgColor="rgb(255 255 255)" placeholder="搜索"
|
||||
shape="round" @click="handle_SearchBox_click" :showAction="false" :animation="true"></u-search>
|
||||
</u-col>
|
||||
<u-col span="3">
|
||||
<u-button type="primary"
|
||||
@click="handel_plus_click"
|
||||
size="small" shape="circle"
|
||||
class="custom-style"
|
||||
plain text="创建">
|
||||
</u-button>
|
||||
</u-col>
|
||||
</u-row>
|
||||
<u-popup :show="show" @close="close" @open="open">
|
||||
<view style="width: 93%; align-self: center">
|
||||
<u--form labelWidth="auto" labelPosition="left" :model="queryParamsForm" :rules="rules" ref="form1">
|
||||
<u-form-item label="长者姓名" prop="name" borderBottom ref="item1">
|
||||
<u--input inputAlign="center" shape="square" border="none" v-model="queryParamsForm.name">
|
||||
</u--input>
|
||||
</u-form-item>
|
||||
<u-form-item label="身份证号码" prop="idNumber" borderBottom ref="item1">
|
||||
<u--input inputAlign="center" shape="square" border="none"
|
||||
v-model="queryParamsForm.idNumber">
|
||||
</u--input>
|
||||
</u-form-item>
|
||||
</u--form>
|
||||
<u-row customStyle="margin:10px">
|
||||
<u-col span="12">
|
||||
<u-button class="custom-style" type="primary" size="small" @click="handel_search_click">搜索
|
||||
</u-button>
|
||||
</u-col>
|
||||
</u-row>
|
||||
<u-row customStyle="margin:10px">
|
||||
<u-col span="12">
|
||||
<u-button class="custom-style" type="primary" size="small" @click="handel_reset_click">重置
|
||||
</u-button>
|
||||
</u-col>
|
||||
</u-row>
|
||||
</view>
|
||||
</u-popup>
|
||||
<u-row customStyle="margin-bottom: 10px ">
|
||||
<u-col span="12">
|
||||
<u-empty v-if="DataList.length == 0" mode="list"></u-empty>
|
||||
<u-cell-group customStyle="background-color: white;" v-else>
|
||||
<u-cell v-for="(item, index) in DataList" size="large" isLink clickable
|
||||
:title="getItemTitle(item)" :label="getItemLabel(item)" :name="item.id"
|
||||
@click="handel_cell_click">
|
||||
</u-cell>
|
||||
</u-cell-group>
|
||||
<uni-load-more :status="status" :contentText="loadText" @clickLoadMore="MyonLoad" />
|
||||
</u-col>
|
||||
</u-row>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
transformPostBody,
|
||||
transformRequestURL,
|
||||
} from "@/utils/requestParams.js";
|
||||
|
||||
import {
|
||||
GetAgeByIdCard
|
||||
} from "@/utils/stringFormat.js";
|
||||
|
||||
import {
|
||||
QueryRTInfoList
|
||||
} from "@/api/elder/RTInfo.js";
|
||||
import mixin from "@/mixins/myLoadMore";
|
||||
import {
|
||||
onLoad,
|
||||
|
||||
onShow,
|
||||
onHide,
|
||||
onReady
|
||||
} from '@dcloudio/uni-app'
|
||||
import {
|
||||
computed,
|
||||
ref,
|
||||
reactive,
|
||||
onMounted
|
||||
} from 'vue';
|
||||
// let {status,
|
||||
// finished,
|
||||
// DataList,
|
||||
// total,
|
||||
// loadText,
|
||||
// MyonLoad} = mixin()
|
||||
onShow(() => {
|
||||
queryParams.pageNum = 1
|
||||
getList();
|
||||
console.log('111setup中的onShow', queryParams);
|
||||
})
|
||||
|
||||
onHide(() => {
|
||||
console.log('setup中的onHide');
|
||||
})
|
||||
|
||||
onReady(() => {
|
||||
console.log('setup中的onReady');
|
||||
})
|
||||
let finished = ref(false)
|
||||
let loadText = reactive({
|
||||
contentdown: "点击加载更多",
|
||||
contentrefresh: "正在加载",
|
||||
contentnomore: "没有更多数据了",
|
||||
})
|
||||
|
||||
let MyonLoad = (e) => {
|
||||
if (status.value == "more") {
|
||||
fetch();
|
||||
finished.value = true;
|
||||
e.detail = {
|
||||
status: "loading",
|
||||
};
|
||||
}
|
||||
return e;
|
||||
}
|
||||
let DataList = ref([])
|
||||
let total = ref(0)
|
||||
let queryParams = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 20, //每次加载更多数据量
|
||||
startAge: undefined,
|
||||
endAge: undefined,
|
||||
areaCode: undefined,
|
||||
});
|
||||
let queryParamsForm = reactive({
|
||||
idNumber: undefined,
|
||||
name: undefined,
|
||||
sex: undefined,
|
||||
currentState: undefined,
|
||||
selfCareAbility: undefined,
|
||||
urbanRural: undefined,
|
||||
capabilityAssess: undefined,
|
||||
livingStatus: undefined,
|
||||
pensionMode: undefined,
|
||||
childStatus: undefined,
|
||||
});
|
||||
let rules = reactive({});
|
||||
let loading = ref(false);
|
||||
let show = ref(false);
|
||||
let chartData = reactive({});
|
||||
// 计算属性
|
||||
let status = computed(() => {
|
||||
if (DataList.value.length < total.value) {
|
||||
return "more";
|
||||
} else {
|
||||
finished.value = true;
|
||||
return "nomore";
|
||||
}
|
||||
});
|
||||
onMounted(() => {
|
||||
getServerData()
|
||||
});
|
||||
//条件搜索框
|
||||
function handle_SearchBox_click() {
|
||||
show.value = true;
|
||||
}
|
||||
|
||||
function open() {}
|
||||
|
||||
function close() {
|
||||
show.value = false;
|
||||
}
|
||||
//条件搜索按钮点击
|
||||
function handel_search_click() {
|
||||
finished.value = false; //重置搜索完结
|
||||
queryParams.pageNum = 1; //重置搜索页
|
||||
DataList.value = []; //清空原结果集
|
||||
getList();
|
||||
show.value = false; //关闭搜索框
|
||||
}
|
||||
//条件重置按钮点击
|
||||
function handel_reset_click() {
|
||||
queryParams = {
|
||||
pageNum: 1,
|
||||
pageSize: 15, //每次加载更多数据量
|
||||
startAge: undefined,
|
||||
endAge: undefined,
|
||||
areaCode: undefined,
|
||||
};
|
||||
queryParamsForm = {
|
||||
idNumber: undefined,
|
||||
name: undefined,
|
||||
sex: undefined,
|
||||
currentState: undefined,
|
||||
selfCareAbility: undefined,
|
||||
urbanRural: undefined,
|
||||
capabilityAssess: undefined,
|
||||
livingStatus: undefined,
|
||||
pensionMode: undefined,
|
||||
childStatus: undefined,
|
||||
};
|
||||
handel_search_click();
|
||||
}
|
||||
//跳转新增页
|
||||
function handel_plus_click() {
|
||||
// this.$tab.navigateTo("/pages/RTInfo/add");
|
||||
}
|
||||
//跳转详情页
|
||||
function handel_cell_click(id) {
|
||||
// this.$tab.navigateTo("/pages/RTInfo/detail?id=" + id.name);
|
||||
}
|
||||
//加载更多合并结果
|
||||
function fetch() {
|
||||
queryParams.pageNum = queryParams.pageNum + 1; //加载下一页
|
||||
QueryRTInfoList(queryParams, queryParamsForm).then(
|
||||
(res) => {
|
||||
if (res.code == 200) {
|
||||
let list = [...DataList.value]
|
||||
let list2 = res.rows.filter(
|
||||
(item) => !list.some((i) => i.id === item.id)
|
||||
)
|
||||
// DataList =list.concat(
|
||||
// res.rows.filter(
|
||||
// (item) => !list.some((i) => i.id === item.id)
|
||||
// )
|
||||
// );
|
||||
DataList.value=[...list,...list2]
|
||||
total.value = res.total;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
//获取老人信息列表
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
QueryRTInfoList(queryParams, queryParamsForm).then(
|
||||
(res) => {
|
||||
if (res.code == 200) {
|
||||
DataList.value = res.rows;
|
||||
total.value = res.total;
|
||||
}
|
||||
loading.value = false;
|
||||
}
|
||||
);
|
||||
}
|
||||
//获取老人简介
|
||||
function getItemTitle(item) {
|
||||
let result = "";
|
||||
// "name": "薛荣珍",
|
||||
// "sex": "女",
|
||||
// "age": "87",
|
||||
if (item.name) result += item.name + " ";
|
||||
if (item.sex) result += item.sex + " ";
|
||||
if (item.idNumber) result += GetAgeByIdCard(item.idNumber) + "岁";
|
||||
return result;
|
||||
}
|
||||
//获取老人住址
|
||||
// "permanentProvince": "山西省",
|
||||
// "permanentCity": "威海文登市",
|
||||
// "permanentDistrict": "离石区",
|
||||
// "permanentTown": "",
|
||||
// "permanentVillage": "城东社区",
|
||||
// "permanentStreet": "滨河街道",
|
||||
// "permanentResidenceAdd": "滨河佳苑后散户5排4院",
|
||||
function getItemLabel(item) {
|
||||
let result = "";
|
||||
//if (item.permanentProvince) result += item.permanentProvince
|
||||
//if (item.permanentCity) result += item.permanentCity
|
||||
if (item.permanentDistrict) result += item.permanentDistrict;
|
||||
// if (item.permanentTown) result += item.permanentTown
|
||||
if (item.permanentStreet) result += item.permanentStreet;
|
||||
if (item.permanentVillage) result += item.permanentVillage;
|
||||
if (item.permanentResidenceAdd) result += item.permanentResidenceAdd;
|
||||
return result;
|
||||
}
|
||||
|
||||
function getServerData() {
|
||||
// 模拟从服务器获取数据时的延时
|
||||
setTimeout(() => {
|
||||
let res = {
|
||||
categories: ['2016', '2017', '2018', '2019', '2020', '2021'],
|
||||
series: [{
|
||||
name: '目标值',
|
||||
data: [35, 36, 31, 33, 13, 34],
|
||||
},
|
||||
{
|
||||
name: '完成量',
|
||||
data: [18, 27, 21, 24, 6, 28],
|
||||
},
|
||||
],
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
}, 500);
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
|
@ -0,0 +1,85 @@
|
|||
import request from '@/utils/request'
|
||||
import store from '@/store/index.ts' // store
|
||||
import auth from '@/plugins/auth.ts'
|
||||
import {
|
||||
transformPostBody,
|
||||
transformRequestURL
|
||||
} from "@/utils/requestParams.js";
|
||||
|
||||
// 查询老人信息列表
|
||||
export function QueryRTInfoList_Role(UrlParams, body) {
|
||||
if (!auth.hasRole("admin")) { //没有admin权限的情况下添加请求条件
|
||||
body.queryParam.permanentDistrict = store.state.user.user.remark
|
||||
}
|
||||
return request({
|
||||
url: '/elder/rtInfo/page',
|
||||
method: 'post',
|
||||
params: transformRequestURL(UrlParams),
|
||||
data: transformPostBody(body)
|
||||
})
|
||||
}
|
||||
|
||||
export function QueryRTInfoList(UrlParams, body) {
|
||||
return request({
|
||||
url: '/elder/rtInfo/page',
|
||||
method: 'post',
|
||||
params: transformRequestURL(UrlParams),
|
||||
data: transformPostBody(body)
|
||||
})
|
||||
}
|
||||
|
||||
// 查询指定老人详细信息
|
||||
export function getRTInfo(Id) {
|
||||
return request({
|
||||
url: '/elder/rtInfo/' + Id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增老人信息
|
||||
export function addRTInfo(data) {
|
||||
// console.log('addRTInfo',{
|
||||
// url: '/elder/rtInfo/save',
|
||||
// method: 'post',
|
||||
// data: data
|
||||
// });
|
||||
return request({
|
||||
url: '/elder/rtInfo/save',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改老人信息
|
||||
export function updateRTInfo(data) {
|
||||
// console.log('updateRTInfo',{
|
||||
// url: '/elder/rtInfo/update',
|
||||
// method: 'post',
|
||||
// data: data
|
||||
// });
|
||||
return request({
|
||||
url: '/elder/rtInfo/update',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除老人信息
|
||||
export function delRTInfo(Ids) {
|
||||
return request({
|
||||
url: '/elder/rtInfo/delete',
|
||||
method: 'delete',
|
||||
data: Ids
|
||||
})
|
||||
}
|
||||
|
||||
//dev-api/system/administrativeDivisions/getAdministrativeDivisions
|
||||
// 查询分级行政区域
|
||||
export function getAdministrativeDivisions(UrlParams) {
|
||||
return request({
|
||||
url: '/system/administrativeDivisions/getAdministrativeDivisions',
|
||||
method: 'get',
|
||||
params: UrlParams,
|
||||
data: null
|
||||
})
|
||||
}
|
|
@ -11,7 +11,7 @@ export function login(data) {
|
|||
grantType: data.grantType || 'password'
|
||||
};
|
||||
return request({
|
||||
url: '/auth/login',
|
||||
url: '/login',
|
||||
headers: {
|
||||
isToken: false,
|
||||
isEncrypt: true
|
||||
|
@ -52,7 +52,7 @@ export function register(data) {
|
|||
// 获取用户详细信息
|
||||
export function getInfo() {
|
||||
return request({
|
||||
url: '/system/user/getInfo',
|
||||
url: '/getInfo',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ export function getInfo() {
|
|||
// 退出方法
|
||||
export function logout() {
|
||||
return request({
|
||||
url: '/auth/logout',
|
||||
url: '/logout',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ export function logout() {
|
|||
// 获取验证码
|
||||
export function getCodeImg() {
|
||||
return request({
|
||||
url: '/auth/code',
|
||||
url: '/captchaImage',
|
||||
headers: {
|
||||
isToken: false
|
||||
},
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
module.exports = {
|
||||
HengShui: {
|
||||
name: '衡水',
|
||||
baseUrl: 'http://121.17.30.201:10075',
|
||||
// baseUrl: 'http://localhost:10200',
|
||||
title: '衡水市居家和社区管理系统',
|
||||
enableRememberPassword: true, //是否显示记住密码勾选框
|
||||
requireCheckinPhoto: false, //签到时,是否需要拍照
|
||||
addCheckinWatermark: false, //签到时,是否给照片加水印
|
||||
watermark_before_after_GZSG: false, //改造施工前后,照片加水印
|
||||
watermark_before_after_SMFW: false, //上门服务前后,照片加水印
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
export * from './lvliang'
|
||||
export * from './wendeng'
|
||||
export * from './hengshui'
|
||||
export * from './loudi'
|
||||
export * from './weinan'
|
||||
export * from './qujing'
|
||||
export * from './ziyang'
|
|
@ -0,0 +1,14 @@
|
|||
module.exports = {
|
||||
LouDi: {
|
||||
name: '娄底',
|
||||
// baseUrl: 'http://116.162.216.63:10075',//旧的
|
||||
baseUrl: 'http://122.9.137.144:10075',
|
||||
// baseUrl: 'http://localhost:10200',
|
||||
title: '娄底市居家和社区管理系统',
|
||||
enableRememberPassword: true, //是否显示记住密码勾选框
|
||||
requireCheckinPhoto: true, //签到时,是否需要拍照
|
||||
addCheckinWatermark: true, //签到时,是否给照片加水印
|
||||
watermark_before_after_GZSG: true, //改造施工前后,照片加水印
|
||||
watermark_before_after_SMFW: true, //上门服务前后,照片加水印
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
module.exports = {
|
||||
LvLiang: {
|
||||
name: '吕梁',
|
||||
baseUrl: 'http://114.116.112.154:8080',
|
||||
title: '吕梁市居家和社区管理系统',
|
||||
enableRememberPassword: true, //是否显示记住密码勾选框
|
||||
requireCheckinPhoto: false, //签到时,是否需要拍照
|
||||
addCheckinWatermark: false, //签到时,是否给照片加水印
|
||||
watermark_before_after_GZSG: false, //改造施工前后,照片加水印
|
||||
watermark_before_after_SMFW: false, //上门服务前后,照片加水印
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
module.exports = {
|
||||
QuJing: {
|
||||
name: '曲靖',
|
||||
baseUrl: 'http://114.116.112.154:10140',
|
||||
title: '曲靖市居家和社区管理系统',
|
||||
enableRememberPassword: true, //是否显示记住密码勾选框
|
||||
requireCheckinPhoto: false, //签到时,是否需要拍照
|
||||
addCheckinWatermark: false, //签到时,是否给照片加水印
|
||||
watermark_before_after_GZSG: false, //改造施工前后,照片加水印
|
||||
watermark_before_after_SMFW: false, //上门服务前后,照片加水印
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
module.exports = {
|
||||
WeiNan: {
|
||||
name: '渭南',
|
||||
baseUrl: 'http://114.116.112.154:10125',
|
||||
title: '渭南市居家和社区管理系统',
|
||||
enableRememberPassword: true, //是否显示记住密码勾选框
|
||||
requireCheckinPhoto: false, //签到时,是否需要拍照
|
||||
addCheckinWatermark: false, //签到时,是否给照片加水印
|
||||
watermark_before_after_GZSG: false, //改造施工前后,照片加水印
|
||||
watermark_before_after_SMFW: false, //上门服务前后,照片加水印
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
module.exports = {
|
||||
WenDeng: {
|
||||
name: '文登',
|
||||
baseUrl: 'http://114.116.112.154:10200',
|
||||
// baseUrl: 'http://192.168.1.7:10200', //真机调试
|
||||
// baseUrl: 'http://localhost:10200',
|
||||
title: '威海文登市居家和社区管理系统',
|
||||
enableRememberPassword: true, //是否显示记住密码勾选框
|
||||
requireCheckinPhoto: false, //签到时,是否需要拍照
|
||||
addCheckinWatermark: false, //签到时,是否给照片加水印
|
||||
watermark_before_after_GZSG: false, //改造施工前后,照片加水印
|
||||
watermark_before_after_SMFW: false, //上门服务前后,照片加水印
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
module.exports = {
|
||||
ZiYang: {
|
||||
name: '资阳',
|
||||
baseUrl: 'http://101.205.145.234:10001',
|
||||
// baseUrl: 'http://122.9.137.144:10150',
|
||||
// baseUrl: 'http://101.205.145.234:6379',
|
||||
title: '资阳市居家和社区管理系统',
|
||||
enableRememberPassword: true, //是否显示记住密码勾选框
|
||||
requireCheckinPhoto: false, //签到时,是否需要拍照
|
||||
addCheckinWatermark: false, //签到时,是否给照片加水印
|
||||
watermark_before_after_GZSG: false, //改造施工前后,照片加水印
|
||||
watermark_before_after_SMFW: false, //上门服务前后,照片加水印
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
import {
|
||||
ref,reactive,computed
|
||||
} from 'vue'
|
||||
|
||||
export default function() {
|
||||
let finished = ref(false)
|
||||
let DataList = ref([])
|
||||
let total = ref(0)
|
||||
let loadText = reactive({
|
||||
contentdown: "点击加载更多",
|
||||
contentrefresh: "正在加载",
|
||||
contentnomore: "没有更多数据了",
|
||||
})
|
||||
// 计算属性
|
||||
let status = computed(() => {
|
||||
console.log(222,DataList,DataList.value.length < total.value,DataList.value.length ,total.value)
|
||||
if (DataList.value.length < total.value) {
|
||||
return "more";
|
||||
} else {
|
||||
finished.value = true;
|
||||
return "nomore";
|
||||
}
|
||||
});
|
||||
let MyonLoad = (e) => {
|
||||
if (status.value == "more") {
|
||||
fetch();
|
||||
finished.value = true;
|
||||
e.detail = {
|
||||
status: "loading",
|
||||
};
|
||||
}
|
||||
return e;
|
||||
}
|
||||
return {
|
||||
status,
|
||||
finished,
|
||||
DataList,
|
||||
total,
|
||||
loadText,
|
||||
MyonLoad
|
||||
}
|
||||
}
|
|
@ -237,7 +237,18 @@
|
|||
"path": "code/index"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"root": "RTInfo/pages",
|
||||
"pages": [
|
||||
{
|
||||
"path": "index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "老人信息"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tabBar": {
|
||||
"color": "#000000",
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<image class="logo" src="@/static/logo.png"></image>
|
||||
<view class="text-area">
|
||||
<text class="title">Hello RuoYi-Vue</text>
|
||||
</view>
|
||||
<view class="text-area">
|
||||
<up-text type="primary" text="uview-plus"></up-text>
|
||||
</view>
|
||||
<view class="charts-box">
|
||||
<qiun-data-charts type="column" :chartData="chartData" />
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue';
|
||||
|
||||
const chartData = ref({});
|
||||
|
||||
onMounted(() => { getServerData() });
|
||||
|
||||
function getServerData() {
|
||||
// 模拟从服务器获取数据时的延时
|
||||
setTimeout(() => {
|
||||
let res = {
|
||||
categories: ['2016', '2017', '2018', '2019', '2020', '2021'],
|
||||
series: [
|
||||
{
|
||||
name: '目标值',
|
||||
data: [35, 36, 31, 33, 13, 34],
|
||||
},
|
||||
{
|
||||
name: '完成量',
|
||||
data: [18, 27, 21, 24, 6, 28],
|
||||
},
|
||||
],
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
}, 500);
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
height: 200rpx;
|
||||
width: 200rpx;
|
||||
margin-top: 200rpx;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-bottom: 50rpx;
|
||||
}
|
||||
|
||||
.text-area {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 36rpx;
|
||||
color: #8f8f94;
|
||||
}
|
||||
|
||||
.charts-box {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
}
|
||||
</style>
|
|
@ -1,18 +1,17 @@
|
|||
<template>
|
||||
<view class="normal-login-container">
|
||||
<view class="logo-content align-center justify-center flex">
|
||||
<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
||||
</image>
|
||||
<text class="title">移动端登录</text>
|
||||
<!-- <image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
||||
</image> -->
|
||||
<text class="title">{{ areaConfig.title }}</text>
|
||||
</view>
|
||||
<view class="login-form-content">
|
||||
<view class="input-item flex align-center" v-if="tenantEnabled">
|
||||
<!-- <view class="input-item flex align-center" v-if="tenantEnabled">
|
||||
<view class="iconfont icon-friendfill icon"></view>
|
||||
<select v-model="loginForm.tenantId" class="downlist">
|
||||
<option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></option>
|
||||
</select>
|
||||
<!-- <input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" /> -->
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="input-item flex align-center">
|
||||
<view class="iconfont icon-user icon"></view>
|
||||
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
|
||||
|
@ -44,17 +43,22 @@
|
|||
<script setup>
|
||||
import modal from '@/plugins/modal'
|
||||
import {getCodeImg,getTenantList} from '@/api/login'
|
||||
import {ref} from "vue";
|
||||
import {ref,computed} from "vue";
|
||||
import config from '@/config.js'
|
||||
import store from '@/store'
|
||||
const codeUrl = ref("");
|
||||
const captchaEnabled = ref(true);
|
||||
const tenantEnabled = ref(true);
|
||||
const globalConfig = ref(config);
|
||||
|
||||
// 计算属性
|
||||
const areaConfig = computed(() => {
|
||||
return store.state.config.areaConfig;
|
||||
});
|
||||
const loginForm = ref({
|
||||
tenantId: '000000',
|
||||
username: "admin",
|
||||
password: "admin123",
|
||||
password: "EdqD*W^n9mOw#9E",
|
||||
code: "",
|
||||
uuid: ''
|
||||
});
|
||||
|
@ -67,26 +71,26 @@
|
|||
const {
|
||||
data
|
||||
} = res;
|
||||
captchaEnabled.value = data.captchaEnabled === undefined ? true : data.captchaEnabled;
|
||||
// captchaEnabled.value = data.captchaEnabled === undefined ? true : data.captchaEnabled;
|
||||
// captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
||||
if (captchaEnabled.value) {
|
||||
codeUrl.value = 'data:image/gif;base64,' + data.img
|
||||
loginForm.value.uuid = data.uuid
|
||||
}
|
||||
// if (captchaEnabled.value) {
|
||||
codeUrl.value = 'data:image/gif;base64,' + res.img
|
||||
loginForm.value.uuid = res.uuid
|
||||
// }
|
||||
})
|
||||
};
|
||||
|
||||
function getTenant() {
|
||||
getTenantList().then(res => {
|
||||
const data = res.data;
|
||||
tenantEnabled.value = data.tenantEnabled === undefined ? true : data.tenantEnabled;
|
||||
if (tenantEnabled.value) {
|
||||
tenantList.value = data.voList;
|
||||
if (tenantList.value != null && tenantList.value.length !== 0) {
|
||||
loginForm.value.tenantId = tenantList.value[0].tenantId;
|
||||
}
|
||||
}
|
||||
})
|
||||
// getTenantList().then(res => {
|
||||
// const data = res.data;
|
||||
// tenantEnabled.value = data.tenantEnabled === undefined ? true : data.tenantEnabled;
|
||||
// if (tenantEnabled.value) {
|
||||
// tenantList.value = data.voList;
|
||||
// if (tenantList.value != null && tenantList.value.length !== 0) {
|
||||
// loginForm.value.tenantId = tenantList.value[0].tenantId;
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
};
|
||||
async function handleLogin() {
|
||||
if (loginForm.value.username === "") {
|
||||
|
@ -116,9 +120,8 @@
|
|||
function loginSuccess(result) {
|
||||
// 设置用户信息
|
||||
store.dispatch('GetInfo').then(res => {
|
||||
|
||||
uni.switchTab({
|
||||
url: '/pages/index'
|
||||
url: '/pages/work'
|
||||
});
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
<template>
|
||||
<view class="work-container">
|
||||
<!-- 轮播图 -->
|
||||
<uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
|
||||
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
|
||||
<swiper-item v-for="(item, index) in data" :key="index">
|
||||
<view class="swiper-item" @click="clickBannerItem(item)">
|
||||
<image :src="item.image" mode="aspectFill" :draggable="false" />
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</uni-swiper-dot>
|
||||
<view class="work-container">
|
||||
<!-- 轮播图 -->
|
||||
<uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
|
||||
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
|
||||
<swiper-item v-for="(item, index) in data" :key="index">
|
||||
<view class="swiper-item" @click="clickBannerItem(item)">
|
||||
<image :src="item.image" mode="aspectFill" :draggable="false" />
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</uni-swiper-dot>
|
||||
|
||||
<!-- 宫格组件 -->
|
||||
<uni-section title="系统管理" type="line"></uni-section>
|
||||
<view class="grid-body">
|
||||
<uni-grid :column="4" :showBorder="false" @change="changeGrid">
|
||||
<uni-grid-item>
|
||||
<!-- 宫格组件 -->
|
||||
<uni-section title="系统管理" type="line"></uni-section>
|
||||
<view class="grid-body">
|
||||
<uni-grid :column="4" :showBorder="false" @change="changeGrid">
|
||||
<!-- <uni-grid-item>
|
||||
<view class="grid-item-box">
|
||||
<uni-icons type="person-filled" size="30"></uni-icons>
|
||||
<text class="text">用户管理</text>
|
||||
|
@ -68,117 +68,133 @@
|
|||
<uni-icons type="wallet-filled" size="30"></uni-icons>
|
||||
<text class="text">日志管理</text>
|
||||
</view>
|
||||
</uni-grid-item>
|
||||
</uni-grid>
|
||||
</view>
|
||||
</view>
|
||||
</uni-grid-item> -->
|
||||
<uni-grid-item>
|
||||
<view class="grid-item-box">
|
||||
<uni-icons type="wallet-filled" size="30"></uni-icons>
|
||||
<text class="text">老人信息</text>
|
||||
</view>
|
||||
</uni-grid-item>
|
||||
</uni-grid>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import modal from "@/plugins/modal"
|
||||
const current=ref(0);
|
||||
const swiperDotIndex=ref(0);
|
||||
const data=ref([{
|
||||
image: '/static/images/banner/banner01.jpg'
|
||||
},
|
||||
{
|
||||
image: '/static/images/banner/banner02.jpg'
|
||||
},
|
||||
{
|
||||
image: '/static/images/banner/banner03.jpg'
|
||||
}
|
||||
]);
|
||||
import {
|
||||
ref
|
||||
} from "vue";
|
||||
import modal from "@/plugins/modal"
|
||||
const current = ref(0);
|
||||
const swiperDotIndex = ref(0);
|
||||
const data = ref([{
|
||||
image: '/static/images/banner/banner01.jpg'
|
||||
},
|
||||
{
|
||||
image: '/static/images/banner/banner02.jpg'
|
||||
},
|
||||
{
|
||||
image: '/static/images/banner/banner03.jpg'
|
||||
}
|
||||
]);
|
||||
|
||||
function clickBannerItem(item) {
|
||||
console.info(item)
|
||||
console.info(item)
|
||||
};
|
||||
|
||||
function changeSwiper(e) {
|
||||
current.value = e.detail.current
|
||||
}
|
||||
function changeGrid(e) {
|
||||
modal.showToast({
|
||||
title: '模块建设中',
|
||||
mask: false,
|
||||
icon:'loading',
|
||||
duration: 1000
|
||||
});
|
||||
current.value = e.detail.current
|
||||
}
|
||||
|
||||
function changeGrid(e) {
|
||||
if (e.detail.index === 0) {
|
||||
uni.navigateTo({
|
||||
url:'/RTInfo/pages/index'
|
||||
})
|
||||
} else {
|
||||
modal.showToast({
|
||||
title: '模块建设中',
|
||||
mask: false,
|
||||
icon: 'loading',
|
||||
duration: 1000
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/* #ifndef APP-NVUE */
|
||||
page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-sizing: border-box;
|
||||
background-color: #fff;
|
||||
min-height: 100%;
|
||||
height: auto;
|
||||
}
|
||||
/* #ifndef APP-NVUE */
|
||||
page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-sizing: border-box;
|
||||
background-color: #fff;
|
||||
min-height: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
view {
|
||||
font-size: 14px;
|
||||
line-height: inherit;
|
||||
}
|
||||
view {
|
||||
font-size: 14px;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
/* #endif */
|
||||
/* #endif */
|
||||
|
||||
.text {
|
||||
text-align: center;
|
||||
font-size: 26rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
.text {
|
||||
text-align: center;
|
||||
font-size: 26rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.grid-item-box {
|
||||
flex: 1;
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 15px 0;
|
||||
}
|
||||
.grid-item-box {
|
||||
flex: 1;
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 15px 0;
|
||||
}
|
||||
|
||||
.uni-margin-wrap {
|
||||
width: 690rpx;
|
||||
width: 100%;
|
||||
;
|
||||
}
|
||||
.uni-margin-wrap {
|
||||
width: 690rpx;
|
||||
width: 100%;
|
||||
;
|
||||
}
|
||||
|
||||
.swiper {
|
||||
height: 300rpx;
|
||||
}
|
||||
.swiper {
|
||||
height: 300rpx;
|
||||
}
|
||||
|
||||
.swiper-box {
|
||||
height: 150px;
|
||||
}
|
||||
.swiper-box {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.swiper-item {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #fff;
|
||||
height: 300rpx;
|
||||
line-height: 300rpx;
|
||||
}
|
||||
.swiper-item {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #fff;
|
||||
height: 300rpx;
|
||||
line-height: 300rpx;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 500px) {
|
||||
.uni-swiper-dot-box {
|
||||
width: 400px;
|
||||
/* #ifndef APP-NVUE */
|
||||
margin: 0 auto;
|
||||
/* #endif */
|
||||
margin-top: 8px;
|
||||
}
|
||||
@media screen and (min-width: 500px) {
|
||||
.uni-swiper-dot-box {
|
||||
width: 400px;
|
||||
/* #ifndef APP-NVUE */
|
||||
margin: 0 auto;
|
||||
/* #endif */
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.image {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.image {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,9 +1,11 @@
|
|||
import user from '@/store/modules/user'
|
||||
import config from '@/store/modules/config'
|
||||
import getters from './getters'
|
||||
import { createStore } from "vuex";
|
||||
const store = createStore({
|
||||
modules: {
|
||||
user,
|
||||
config
|
||||
},
|
||||
getters
|
||||
});
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
import storage from '@/utils/storage';
|
||||
import config from '@/config'
|
||||
|
||||
const state = {
|
||||
totalConfig: config, //全部配置
|
||||
areaConfig: {
|
||||
name: '娄底',
|
||||
// baseUrl: 'http://116.162.216.63:10075',//旧的
|
||||
baseUrl: 'http://122.9.137.144:10075',
|
||||
// baseUrl: 'http://localhost:10200',
|
||||
title: '娄底市居家和社区管理系统',
|
||||
enableRememberPassword: true, //是否显示记住密码勾选框
|
||||
requireCheckinPhoto: true, //签到时,是否需要拍照
|
||||
addCheckinWatermark: true, //签到时,是否给照片加水印
|
||||
watermark_before_after_GZSG: true, //改造施工前后,照片加水印
|
||||
watermark_before_after_SMFW: true, //上门服务前后,照片加水印
|
||||
}, //当前选择的区域的配置
|
||||
selectedArea: uni.getStorage('selectedArea'), //当前选择的区域
|
||||
}
|
||||
|
||||
const mutations = {
|
||||
SET_CONFIG(state, totalConfig) {
|
||||
state.totalConfig = totalConfig
|
||||
},
|
||||
SET_SELECTED_AREA(state, key) {
|
||||
state.selectedArea = key
|
||||
},
|
||||
SET_AREA_CONFIG(state, area) {
|
||||
state.areaConfig = area;
|
||||
},
|
||||
}
|
||||
|
||||
const actions = {
|
||||
//设置全部配置到state-config
|
||||
setConfig({
|
||||
commit
|
||||
}, totalConfig) {
|
||||
commit('SET_CONFIG', totalConfig)
|
||||
},
|
||||
//设置当前区域到state-selectedArea,同时设置当前区域配置到state-areaConfig
|
||||
setSelectedArea({
|
||||
state,
|
||||
commit
|
||||
}, key) {
|
||||
commit('SET_SELECTED_AREA', state.totalConfig[key], key)
|
||||
commit('SET_AREA_CONFIG', state.totalConfig[key])
|
||||
},
|
||||
initAreaConfig({
|
||||
state,
|
||||
commit
|
||||
}, key) {
|
||||
commit('SET_AREA_CONFIG', state.totalConfig[key])
|
||||
},
|
||||
//切换区域
|
||||
selectArea({
|
||||
dispatch,
|
||||
state
|
||||
}, key, isSaveStorage = true) {
|
||||
if (state.totalConfig[key]) {
|
||||
dispatch('setSelectedArea', key)
|
||||
if (isSaveStorage) {
|
||||
storage.set('selectedArea', key) //保存到本地
|
||||
}
|
||||
} else {
|
||||
console.log('没有找到该区域配置');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
|
@ -5,97 +5,117 @@ import { login, logout, getInfo } from '@/api/login'
|
|||
import { getToken, setToken, removeToken } from '@/utils/auth'
|
||||
import { UserState, UserForm } from '@/types/store'
|
||||
import { Module } from 'vuex'
|
||||
|
||||
import store from '@/store'
|
||||
const baseUrl = config.baseUrl
|
||||
|
||||
const user: Module<UserState, UserState> = {
|
||||
state: {
|
||||
token: getToken(),
|
||||
name: storage.get(constant.name),
|
||||
avatar: storage.get(constant.avatar),
|
||||
roles: storage.get(constant.roles),
|
||||
permissions: storage.get(constant.permissions)
|
||||
},
|
||||
mutations: {
|
||||
SET_TOKEN: (state, token: string) => {
|
||||
state.token = token
|
||||
},
|
||||
SET_NAME: (state, name: string) => {
|
||||
state.name = name
|
||||
storage.set(constant.name, name)
|
||||
},
|
||||
SET_AVATAR: (state, avatar: string) => {
|
||||
state.avatar = avatar
|
||||
storage.set(constant.avatar, avatar)
|
||||
},
|
||||
SET_ROLES: (state, roles: Array<string>) => {
|
||||
state.roles = roles
|
||||
storage.set(constant.roles, roles)
|
||||
},
|
||||
SET_PERMISSIONS: (state, permissions: Array<string>) => {
|
||||
state.permissions = permissions
|
||||
storage.set(constant.permissions, permissions)
|
||||
}
|
||||
},
|
||||
const user : Module<UserState, UserState> = {
|
||||
state: {
|
||||
token: getToken(),
|
||||
name: storage.get(constant.name),
|
||||
user: storage.get(constant.user),
|
||||
avatar: storage.get(constant.avatar),
|
||||
roles: storage.get(constant.roles),
|
||||
permissions: storage.get(constant.permissions),
|
||||
addRoutes: storage.get(constant.addRoutes), //动态路由
|
||||
},
|
||||
mutations: {
|
||||
SET_TOKEN: (state, token : string) => {
|
||||
state.token = token
|
||||
},
|
||||
SET_NAME: (state, name : string) => {
|
||||
state.name = name
|
||||
storage.set(constant.name, name)
|
||||
},
|
||||
SET_USER: (state, user) => {
|
||||
state.user = user
|
||||
storage.set(constant.user, user)
|
||||
},
|
||||
SET_AVATAR: (state, avatar : string) => {
|
||||
state.avatar = avatar
|
||||
storage.set(constant.avatar, avatar)
|
||||
},
|
||||
SET_ROLES: (state, roles : Array<string>) => {
|
||||
state.roles = roles
|
||||
storage.set(constant.roles, roles)
|
||||
},
|
||||
SET_PERMISSIONS: (state, permissions : Array<string>) => {
|
||||
state.permissions = permissions
|
||||
storage.set(constant.permissions, permissions)
|
||||
},
|
||||
SET_ROUTES: (state, routes) => {
|
||||
state.addRoutes = routes
|
||||
storage.set(constant.addRoutes, routes)
|
||||
},
|
||||
},
|
||||
|
||||
actions: {
|
||||
// 登录
|
||||
Login({ commit }, userInfo: UserForm) {
|
||||
// const username = userInfo.username
|
||||
// const password = userInfo.password
|
||||
// const code = userInfo.code
|
||||
// const uuid = userInfo.uuid
|
||||
return new Promise((resolve, reject) => {
|
||||
login(userInfo).then((res: any) => {
|
||||
const data = res.data;
|
||||
setToken(data.access_token)
|
||||
commit('SET_TOKEN', data.access_token)
|
||||
resolve(data)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
actions: {
|
||||
// 登录
|
||||
Login({ commit }, userInfo : UserForm) {
|
||||
// const username = userInfo.username
|
||||
// const password = userInfo.password
|
||||
// const code = userInfo.code
|
||||
// const uuid = userInfo.uuid
|
||||
return new Promise((resolve, reject) => {
|
||||
login(userInfo).then((res : any) => {
|
||||
console.log(777)
|
||||
if (res.code != 200) {
|
||||
reject(res.msg)
|
||||
} else {
|
||||
setToken(res.token)
|
||||
commit('SET_TOKEN', res.token)
|
||||
resolve()
|
||||
}
|
||||
}).catch(error => {
|
||||
console.log(666)
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取用户信息
|
||||
GetInfo({ commit }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getInfo().then((res: any) => {
|
||||
const data=res.data;
|
||||
const user = data.user
|
||||
const avatar = (user == null || user.avatar == "" || user.avatar == null) ? "/static/images/profile.jpg" : baseUrl + user.avatar
|
||||
const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
|
||||
if (data.roles && data.roles.length > 0) {
|
||||
commit('SET_ROLES', data.roles)
|
||||
commit('SET_PERMISSIONS', data.permissions)
|
||||
} else {
|
||||
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
||||
}
|
||||
commit('SET_NAME', username)
|
||||
commit('SET_AVATAR', avatar)
|
||||
resolve(res)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 获取用户信息
|
||||
GetInfo({ commit }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getInfo().then((res : any) => {
|
||||
//console.log('res', res)
|
||||
const user = res.user
|
||||
const avatar = (user == null || user.avatar == "" || user.avatar == null) ?
|
||||
require("@/static/images/profile.jpg") : store.state.config.areaConfig
|
||||
.baseUrl + user.avatar
|
||||
const username = (user == null || user.userName == "" || user.userName ==
|
||||
null) ? "" : user.userName
|
||||
if (res.roles && res.roles.length > 0) {
|
||||
commit('SET_ROLES', res.roles)
|
||||
commit('SET_PERMISSIONS', res.permissions)
|
||||
} else {
|
||||
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
||||
}
|
||||
commit('SET_NAME', username)
|
||||
commit('SET_AVATAR', avatar)
|
||||
commit('SET_USER', user)
|
||||
resolve(res)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 退出系统
|
||||
LogOut({ commit, state }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
logout().then((res) => {
|
||||
commit('SET_TOKEN', '')
|
||||
commit('SET_ROLES', [])
|
||||
commit('SET_PERMISSIONS', [])
|
||||
removeToken()
|
||||
storage.clean()
|
||||
resolve(res)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
// 退出系统
|
||||
LogOut({ commit, state }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
logout(state.token).then((res) => {
|
||||
commit('SET_TOKEN', '')
|
||||
commit('SET_ROLES', [])
|
||||
commit('SET_PERMISSIONS', [])
|
||||
commit('SET_ROUTES', null)
|
||||
removeToken()
|
||||
storage.clean()
|
||||
resolve(res)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default user
|
|
@ -26,7 +26,7 @@ const request = <T>(config:RequestConfig):Promise<ResponseData<T>> => {
|
|||
uni.request({
|
||||
method: config.method || 'GET',
|
||||
timeout: config.timeout || timeout,
|
||||
url: config.baseUrl || baseUrl + config.url,
|
||||
url: store.state.config.areaConfig.baseUrl+ config.url,
|
||||
data: config.data,
|
||||
header: config.header,
|
||||
dataType: 'json'
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
//组合后端需要的QueryBody
|
||||
export function transformPostBody(params) {
|
||||
let template = {
|
||||
"queryParam": {},
|
||||
//"order": "ascending",
|
||||
"sort": "updateTime"
|
||||
}
|
||||
if (params) {
|
||||
for (const item in params) {
|
||||
if (params[item]) {
|
||||
template.queryParam[item] = params[item]
|
||||
}
|
||||
}
|
||||
}
|
||||
return template;
|
||||
}
|
||||
|
||||
export function transformPostBody_Device(params) {
|
||||
let template = {
|
||||
"queryParam": {},
|
||||
//"order": "ascending",
|
||||
"sort": "updateTime"
|
||||
}
|
||||
for (const item in params) {
|
||||
if (params[item]) {
|
||||
template.queryParam[item] = params[item]
|
||||
}
|
||||
}
|
||||
return template;
|
||||
}
|
||||
|
||||
//组合后端需要的QueryURL
|
||||
export function transformRequestURL(params) {
|
||||
let template = {}
|
||||
if (!params) { //默认
|
||||
params = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
}
|
||||
}
|
||||
for (const item in params) {
|
||||
if (params[item]) {
|
||||
template[item] = params[item]
|
||||
}
|
||||
}
|
||||
return template;
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
//获取datetime 格式为:2018-01-01 00:00:00
|
||||
export function GetDatetime() {
|
||||
var date = new Date();
|
||||
var year = date.getFullYear();
|
||||
var month = date.getMonth() + 1;
|
||||
var day = date.getDate();
|
||||
var hour = date.getHours();
|
||||
var minute = date.getMinutes();
|
||||
var second = date.getSeconds();
|
||||
if (month >= 1 && month <= 9) {
|
||||
month = "0" + month;
|
||||
}
|
||||
if (day >= 0 && day <= 9) {
|
||||
day = "0" + day;
|
||||
}
|
||||
if (hour >= 0 && hour <= 9) {
|
||||
hour = "0" + hour;
|
||||
}
|
||||
if (minute >= 0 && minute <= 9) {
|
||||
minute = "0" + minute;
|
||||
}
|
||||
if (second >= 0 && second <= 9) {
|
||||
second = "0" + second;
|
||||
}
|
||||
return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' +
|
||||
second;
|
||||
}
|
||||
|
||||
// 通过生日获取年龄
|
||||
export function GetAgeByBirthday(birthday) {
|
||||
const today = new Date();
|
||||
const birthDate = new Date(birthday);
|
||||
let age = today.getFullYear() - birthDate.getFullYear();
|
||||
const monthDifference = today.getMonth() - birthDate.getMonth();
|
||||
|
||||
if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < birthDate.getDate())) {
|
||||
age--;
|
||||
}
|
||||
return age;
|
||||
}
|
||||
|
||||
// 通过身份证号获取年龄
|
||||
export function GetAgeByIdCard(idCard) {
|
||||
if (!idCard) {
|
||||
return "无效的身份证号";
|
||||
}
|
||||
const birthYear = idCard.substring(6, 10);
|
||||
const birthMonth = idCard.substring(10, 12);
|
||||
const birthDay = idCard.substring(12, 14);
|
||||
|
||||
if (!birthYear || !birthMonth || !birthDay) {
|
||||
return "无效的身份证号";
|
||||
}
|
||||
|
||||
const today = new Date();
|
||||
const birthDate = new Date(birthYear + "/" + birthMonth + "/" + birthDay);
|
||||
|
||||
if (isNaN(birthDate.getTime())) {
|
||||
return "无效的身份证号";
|
||||
}
|
||||
|
||||
let age = today.getFullYear() - birthDate.getFullYear();
|
||||
const monthDifference = today.getMonth() - birthDate.getMonth();
|
||||
|
||||
if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < birthDate.getDate())) {
|
||||
age--;
|
||||
}
|
||||
|
||||
return age;
|
||||
}
|
Reference in New Issue