提交登录,与老人信息列表页
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'
|
grantType: data.grantType || 'password'
|
||||||
};
|
};
|
||||||
return request({
|
return request({
|
||||||
url: '/auth/login',
|
url: '/login',
|
||||||
headers: {
|
headers: {
|
||||||
isToken: false,
|
isToken: false,
|
||||||
isEncrypt: true
|
isEncrypt: true
|
||||||
|
@ -52,7 +52,7 @@ export function register(data) {
|
||||||
// 获取用户详细信息
|
// 获取用户详细信息
|
||||||
export function getInfo() {
|
export function getInfo() {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/user/getInfo',
|
url: '/getInfo',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ export function getInfo() {
|
||||||
// 退出方法
|
// 退出方法
|
||||||
export function logout() {
|
export function logout() {
|
||||||
return request({
|
return request({
|
||||||
url: '/auth/logout',
|
url: '/logout',
|
||||||
method: 'post'
|
method: 'post'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ export function logout() {
|
||||||
// 获取验证码
|
// 获取验证码
|
||||||
export function getCodeImg() {
|
export function getCodeImg() {
|
||||||
return request({
|
return request({
|
||||||
url: '/auth/code',
|
url: '/captchaImage',
|
||||||
headers: {
|
headers: {
|
||||||
isToken: false
|
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"
|
"path": "code/index"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
"root": "RTInfo/pages",
|
||||||
|
"pages": [
|
||||||
|
{
|
||||||
|
"path": "index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "老人信息"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
"color": "#000000",
|
"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>
|
<template>
|
||||||
<view class="normal-login-container">
|
<view class="normal-login-container">
|
||||||
<view class="logo-content align-center justify-center flex">
|
<view class="logo-content align-center justify-center flex">
|
||||||
<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
<!-- <image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
||||||
</image>
|
</image> -->
|
||||||
<text class="title">移动端登录</text>
|
<text class="title">{{ areaConfig.title }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="login-form-content">
|
<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>
|
<view class="iconfont icon-friendfill icon"></view>
|
||||||
<select v-model="loginForm.tenantId" class="downlist">
|
<select v-model="loginForm.tenantId" class="downlist">
|
||||||
<option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></option>
|
<option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></option>
|
||||||
</select>
|
</select>
|
||||||
<!-- <input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" /> -->
|
</view> -->
|
||||||
</view>
|
|
||||||
<view class="input-item flex align-center">
|
<view class="input-item flex align-center">
|
||||||
<view class="iconfont icon-user icon"></view>
|
<view class="iconfont icon-user icon"></view>
|
||||||
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
|
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
|
||||||
|
@ -44,17 +43,22 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import modal from '@/plugins/modal'
|
import modal from '@/plugins/modal'
|
||||||
import {getCodeImg,getTenantList} from '@/api/login'
|
import {getCodeImg,getTenantList} from '@/api/login'
|
||||||
import {ref} from "vue";
|
import {ref,computed} from "vue";
|
||||||
import config from '@/config.js'
|
import config from '@/config.js'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
const codeUrl = ref("");
|
const codeUrl = ref("");
|
||||||
const captchaEnabled = ref(true);
|
const captchaEnabled = ref(true);
|
||||||
const tenantEnabled = ref(true);
|
const tenantEnabled = ref(true);
|
||||||
const globalConfig = ref(config);
|
const globalConfig = ref(config);
|
||||||
|
|
||||||
|
// 计算属性
|
||||||
|
const areaConfig = computed(() => {
|
||||||
|
return store.state.config.areaConfig;
|
||||||
|
});
|
||||||
const loginForm = ref({
|
const loginForm = ref({
|
||||||
tenantId: '000000',
|
tenantId: '000000',
|
||||||
username: "admin",
|
username: "admin",
|
||||||
password: "admin123",
|
password: "EdqD*W^n9mOw#9E",
|
||||||
code: "",
|
code: "",
|
||||||
uuid: ''
|
uuid: ''
|
||||||
});
|
});
|
||||||
|
@ -67,26 +71,26 @@
|
||||||
const {
|
const {
|
||||||
data
|
data
|
||||||
} = res;
|
} = 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
|
// captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
||||||
if (captchaEnabled.value) {
|
// if (captchaEnabled.value) {
|
||||||
codeUrl.value = 'data:image/gif;base64,' + data.img
|
codeUrl.value = 'data:image/gif;base64,' + res.img
|
||||||
loginForm.value.uuid = data.uuid
|
loginForm.value.uuid = res.uuid
|
||||||
}
|
// }
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
function getTenant() {
|
function getTenant() {
|
||||||
getTenantList().then(res => {
|
// getTenantList().then(res => {
|
||||||
const data = res.data;
|
// const data = res.data;
|
||||||
tenantEnabled.value = data.tenantEnabled === undefined ? true : data.tenantEnabled;
|
// tenantEnabled.value = data.tenantEnabled === undefined ? true : data.tenantEnabled;
|
||||||
if (tenantEnabled.value) {
|
// if (tenantEnabled.value) {
|
||||||
tenantList.value = data.voList;
|
// tenantList.value = data.voList;
|
||||||
if (tenantList.value != null && tenantList.value.length !== 0) {
|
// if (tenantList.value != null && tenantList.value.length !== 0) {
|
||||||
loginForm.value.tenantId = tenantList.value[0].tenantId;
|
// loginForm.value.tenantId = tenantList.value[0].tenantId;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
};
|
};
|
||||||
async function handleLogin() {
|
async function handleLogin() {
|
||||||
if (loginForm.value.username === "") {
|
if (loginForm.value.username === "") {
|
||||||
|
@ -116,9 +120,8 @@
|
||||||
function loginSuccess(result) {
|
function loginSuccess(result) {
|
||||||
// 设置用户信息
|
// 设置用户信息
|
||||||
store.dispatch('GetInfo').then(res => {
|
store.dispatch('GetInfo').then(res => {
|
||||||
|
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/index'
|
url: '/pages/work'
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="work-container">
|
<view class="work-container">
|
||||||
<!-- 轮播图 -->
|
<!-- 轮播图 -->
|
||||||
<uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
|
<uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
|
||||||
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
|
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
|
||||||
<swiper-item v-for="(item, index) in data" :key="index">
|
<swiper-item v-for="(item, index) in data" :key="index">
|
||||||
<view class="swiper-item" @click="clickBannerItem(item)">
|
<view class="swiper-item" @click="clickBannerItem(item)">
|
||||||
<image :src="item.image" mode="aspectFill" :draggable="false" />
|
<image :src="item.image" mode="aspectFill" :draggable="false" />
|
||||||
</view>
|
</view>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
</uni-swiper-dot>
|
</uni-swiper-dot>
|
||||||
|
|
||||||
<!-- 宫格组件 -->
|
<!-- 宫格组件 -->
|
||||||
<uni-section title="系统管理" type="line"></uni-section>
|
<uni-section title="系统管理" type="line"></uni-section>
|
||||||
<view class="grid-body">
|
<view class="grid-body">
|
||||||
<uni-grid :column="4" :showBorder="false" @change="changeGrid">
|
<uni-grid :column="4" :showBorder="false" @change="changeGrid">
|
||||||
<uni-grid-item>
|
<!-- <uni-grid-item>
|
||||||
<view class="grid-item-box">
|
<view class="grid-item-box">
|
||||||
<uni-icons type="person-filled" size="30"></uni-icons>
|
<uni-icons type="person-filled" size="30"></uni-icons>
|
||||||
<text class="text">用户管理</text>
|
<text class="text">用户管理</text>
|
||||||
|
@ -68,117 +68,133 @@
|
||||||
<uni-icons type="wallet-filled" size="30"></uni-icons>
|
<uni-icons type="wallet-filled" size="30"></uni-icons>
|
||||||
<text class="text">日志管理</text>
|
<text class="text">日志管理</text>
|
||||||
</view>
|
</view>
|
||||||
</uni-grid-item>
|
</uni-grid-item> -->
|
||||||
</uni-grid>
|
<uni-grid-item>
|
||||||
</view>
|
<view class="grid-item-box">
|
||||||
</view>
|
<uni-icons type="wallet-filled" size="30"></uni-icons>
|
||||||
|
<text class="text">老人信息</text>
|
||||||
|
</view>
|
||||||
|
</uni-grid-item>
|
||||||
|
</uni-grid>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from "vue";
|
import {
|
||||||
import modal from "@/plugins/modal"
|
ref
|
||||||
const current=ref(0);
|
} from "vue";
|
||||||
const swiperDotIndex=ref(0);
|
import modal from "@/plugins/modal"
|
||||||
const data=ref([{
|
const current = ref(0);
|
||||||
image: '/static/images/banner/banner01.jpg'
|
const swiperDotIndex = ref(0);
|
||||||
},
|
const data = ref([{
|
||||||
{
|
image: '/static/images/banner/banner01.jpg'
|
||||||
image: '/static/images/banner/banner02.jpg'
|
},
|
||||||
},
|
{
|
||||||
{
|
image: '/static/images/banner/banner02.jpg'
|
||||||
image: '/static/images/banner/banner03.jpg'
|
},
|
||||||
}
|
{
|
||||||
]);
|
image: '/static/images/banner/banner03.jpg'
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
function clickBannerItem(item) {
|
function clickBannerItem(item) {
|
||||||
console.info(item)
|
console.info(item)
|
||||||
};
|
};
|
||||||
|
|
||||||
function changeSwiper(e) {
|
function changeSwiper(e) {
|
||||||
current.value = e.detail.current
|
current.value = e.detail.current
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeGrid(e) {
|
function changeGrid(e) {
|
||||||
modal.showToast({
|
if (e.detail.index === 0) {
|
||||||
title: '模块建设中',
|
uni.navigateTo({
|
||||||
mask: false,
|
url:'/RTInfo/pages/index'
|
||||||
icon:'loading',
|
})
|
||||||
duration: 1000
|
} else {
|
||||||
});
|
modal.showToast({
|
||||||
|
title: '模块建设中',
|
||||||
|
mask: false,
|
||||||
|
icon: 'loading',
|
||||||
|
duration: 1000
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
page {
|
page {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
view {
|
view {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* #endif */
|
/* #endif */
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
margin-top: 10rpx;
|
margin-top: 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.grid-item-box {
|
.grid-item-box {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
display: flex;
|
display: flex;
|
||||||
/* #endif */
|
/* #endif */
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 15px 0;
|
padding: 15px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.uni-margin-wrap {
|
.uni-margin-wrap {
|
||||||
width: 690rpx;
|
width: 690rpx;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
.swiper {
|
.swiper {
|
||||||
height: 300rpx;
|
height: 300rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.swiper-box {
|
.swiper-box {
|
||||||
height: 150px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.swiper-item {
|
.swiper-item {
|
||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
display: flex;
|
display: flex;
|
||||||
/* #endif */
|
/* #endif */
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
height: 300rpx;
|
height: 300rpx;
|
||||||
line-height: 300rpx;
|
line-height: 300rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 500px) {
|
@media screen and (min-width: 500px) {
|
||||||
.uni-swiper-dot-box {
|
.uni-swiper-dot-box {
|
||||||
width: 400px;
|
width: 400px;
|
||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
/* #endif */
|
/* #endif */
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image {
|
.image {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
|
@ -1,9 +1,11 @@
|
||||||
import user from '@/store/modules/user'
|
import user from '@/store/modules/user'
|
||||||
|
import config from '@/store/modules/config'
|
||||||
import getters from './getters'
|
import getters from './getters'
|
||||||
import { createStore } from "vuex";
|
import { createStore } from "vuex";
|
||||||
const store = createStore({
|
const store = createStore({
|
||||||
modules: {
|
modules: {
|
||||||
user,
|
user,
|
||||||
|
config
|
||||||
},
|
},
|
||||||
getters
|
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 { getToken, setToken, removeToken } from '@/utils/auth'
|
||||||
import { UserState, UserForm } from '@/types/store'
|
import { UserState, UserForm } from '@/types/store'
|
||||||
import { Module } from 'vuex'
|
import { Module } from 'vuex'
|
||||||
|
import store from '@/store'
|
||||||
const baseUrl = config.baseUrl
|
const baseUrl = config.baseUrl
|
||||||
|
|
||||||
const user: Module<UserState, UserState> = {
|
const user : Module<UserState, UserState> = {
|
||||||
state: {
|
state: {
|
||||||
token: getToken(),
|
token: getToken(),
|
||||||
name: storage.get(constant.name),
|
name: storage.get(constant.name),
|
||||||
avatar: storage.get(constant.avatar),
|
user: storage.get(constant.user),
|
||||||
roles: storage.get(constant.roles),
|
avatar: storage.get(constant.avatar),
|
||||||
permissions: storage.get(constant.permissions)
|
roles: storage.get(constant.roles),
|
||||||
},
|
permissions: storage.get(constant.permissions),
|
||||||
mutations: {
|
addRoutes: storage.get(constant.addRoutes), //动态路由
|
||||||
SET_TOKEN: (state, token: string) => {
|
},
|
||||||
state.token = token
|
mutations: {
|
||||||
},
|
SET_TOKEN: (state, token : string) => {
|
||||||
SET_NAME: (state, name: string) => {
|
state.token = token
|
||||||
state.name = name
|
},
|
||||||
storage.set(constant.name, name)
|
SET_NAME: (state, name : string) => {
|
||||||
},
|
state.name = name
|
||||||
SET_AVATAR: (state, avatar: string) => {
|
storage.set(constant.name, name)
|
||||||
state.avatar = avatar
|
},
|
||||||
storage.set(constant.avatar, avatar)
|
SET_USER: (state, user) => {
|
||||||
},
|
state.user = user
|
||||||
SET_ROLES: (state, roles: Array<string>) => {
|
storage.set(constant.user, user)
|
||||||
state.roles = roles
|
},
|
||||||
storage.set(constant.roles, roles)
|
SET_AVATAR: (state, avatar : string) => {
|
||||||
},
|
state.avatar = avatar
|
||||||
SET_PERMISSIONS: (state, permissions: Array<string>) => {
|
storage.set(constant.avatar, avatar)
|
||||||
state.permissions = permissions
|
},
|
||||||
storage.set(constant.permissions, permissions)
|
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: {
|
actions: {
|
||||||
// 登录
|
// 登录
|
||||||
Login({ commit }, userInfo: UserForm) {
|
Login({ commit }, userInfo : UserForm) {
|
||||||
// const username = userInfo.username
|
// const username = userInfo.username
|
||||||
// const password = userInfo.password
|
// const password = userInfo.password
|
||||||
// const code = userInfo.code
|
// const code = userInfo.code
|
||||||
// const uuid = userInfo.uuid
|
// const uuid = userInfo.uuid
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
login(userInfo).then((res: any) => {
|
login(userInfo).then((res : any) => {
|
||||||
const data = res.data;
|
console.log(777)
|
||||||
setToken(data.access_token)
|
if (res.code != 200) {
|
||||||
commit('SET_TOKEN', data.access_token)
|
reject(res.msg)
|
||||||
resolve(data)
|
} else {
|
||||||
}).catch(error => {
|
setToken(res.token)
|
||||||
reject(error)
|
commit('SET_TOKEN', res.token)
|
||||||
})
|
resolve()
|
||||||
})
|
}
|
||||||
},
|
}).catch(error => {
|
||||||
|
console.log(666)
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
GetInfo({ commit }) {
|
GetInfo({ commit }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
getInfo().then((res: any) => {
|
getInfo().then((res : any) => {
|
||||||
const data=res.data;
|
//console.log('res', res)
|
||||||
const user = data.user
|
const user = res.user
|
||||||
const avatar = (user == null || user.avatar == "" || user.avatar == null) ? "/static/images/profile.jpg" : baseUrl + user.avatar
|
const avatar = (user == null || user.avatar == "" || user.avatar == null) ?
|
||||||
const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
|
require("@/static/images/profile.jpg") : store.state.config.areaConfig
|
||||||
if (data.roles && data.roles.length > 0) {
|
.baseUrl + user.avatar
|
||||||
commit('SET_ROLES', data.roles)
|
const username = (user == null || user.userName == "" || user.userName ==
|
||||||
commit('SET_PERMISSIONS', data.permissions)
|
null) ? "" : user.userName
|
||||||
} else {
|
if (res.roles && res.roles.length > 0) {
|
||||||
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
commit('SET_ROLES', res.roles)
|
||||||
}
|
commit('SET_PERMISSIONS', res.permissions)
|
||||||
commit('SET_NAME', username)
|
} else {
|
||||||
commit('SET_AVATAR', avatar)
|
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
||||||
resolve(res)
|
}
|
||||||
}).catch(error => {
|
commit('SET_NAME', username)
|
||||||
reject(error)
|
commit('SET_AVATAR', avatar)
|
||||||
})
|
commit('SET_USER', user)
|
||||||
})
|
resolve(res)
|
||||||
},
|
}).catch(error => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 退出系统
|
// 退出系统
|
||||||
LogOut({ commit, state }) {
|
LogOut({ commit, state }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
logout().then((res) => {
|
logout(state.token).then((res) => {
|
||||||
commit('SET_TOKEN', '')
|
commit('SET_TOKEN', '')
|
||||||
commit('SET_ROLES', [])
|
commit('SET_ROLES', [])
|
||||||
commit('SET_PERMISSIONS', [])
|
commit('SET_PERMISSIONS', [])
|
||||||
removeToken()
|
commit('SET_ROUTES', null)
|
||||||
storage.clean()
|
removeToken()
|
||||||
resolve(res)
|
storage.clean()
|
||||||
}).catch(error => {
|
resolve(res)
|
||||||
reject(error)
|
}).catch(error => {
|
||||||
})
|
reject(error)
|
||||||
})
|
})
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default user
|
export default user
|
|
@ -26,7 +26,7 @@ const request = <T>(config:RequestConfig):Promise<ResponseData<T>> => {
|
||||||
uni.request({
|
uni.request({
|
||||||
method: config.method || 'GET',
|
method: config.method || 'GET',
|
||||||
timeout: config.timeout || timeout,
|
timeout: config.timeout || timeout,
|
||||||
url: config.baseUrl || baseUrl + config.url,
|
url: store.state.config.areaConfig.baseUrl+ config.url,
|
||||||
data: config.data,
|
data: config.data,
|
||||||
header: config.header,
|
header: config.header,
|
||||||
dataType: 'json'
|
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