Compare commits

..

No commits in common. 'main' and 'lvtianfang' have entirely different histories.

@ -1,152 +1,34 @@
<script>
import config from "./config";
import store from "@/store";
import { getToken, setToken, removeToken } from "@/utils/auth";
import { getSqByaccesstoken, getUserinfo } from "@/api/jn/login.js";
import permision from "@/utils/permission.js";
export default {
onLaunch: function () {
console.log("初始化进入");
this.initApp();
//#ifdef APP-PLUS
this.requestAndroidPermission("android.permission.ACCESS_FINE_LOCATION");
this.requestAndroidPermission("android.permission.CAMERA");
this.requestAndroidPermission("android.permission.READ_EXTERNAL_STORAGE");
this.requestAndroidPermission("android.permission.RECORD_AUDIO");
//#endif
removeToken();
},
onShow() {
console.log("onShow");
},
methods: {
//
initApp() {
//
this.initConfig();
//
// // #ifdef APP || H5
this.checkLogin();
// //#endif
},
initConfig() {
this.globalData.config = config;
},
checkLogin() {
const launchOptions = uni.getLaunchOptionsSync();
const { query } = launchOptions;
console.log(query, "query");
// console.log(Object.keys(query).length,"query.lengh");
console.log(getToken(), "getToken()");
if (!getToken()) {
if (Object.keys(query).length !== 0) {
console.log("获取query");
// let params = this.getRequestParams();
// console.log(params,"params");
// if (location.href.includes("code=")) {
const code = query.code;
const token = query.token;
uni.setStorageSync("token", token);
// console.log(code,"code");
// console.log(token,"token");
getSqByaccesstoken({
code: code,
})
.then((res) => {
// console.log("accessToken");
uni.setStorageSync("accessToken", res.data.accessToken);
return getUserinfo({
accessToken: res.data.accessToken,
});
})
.then((el) => {
this.$tab.switchTab("/pages/index");
uni.setStorageSync("userInfo", el.data);
setToken(el.data.token);
// location.reload();
console.log("用户信息", el);
});
// }
} else {
// // #ifdef APP
console.log("进入APP判断");
// this.$tab.reLaunch("/pages/myLogin");
uni.reLaunch({
url: "/pages/myLogin",
});
// url
// plus.runtime.openURL( "https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324", this.openErr );
// // #endif
// // #ifdef H5
// location.href = `https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324`
// // #endif
import config from './config'
import store from '@/store'
import { getToken } from '@/utils/auth'
console.log("Before navigateTo or reLaunch");
// this.$tab.reLaunch("/pages/myLogin");
// uni.navigateTo({
// url:'https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324'
// })
}
} else {
this.$tab.reLaunch("/pages/index");
}
},
openErr(err) {
console.log(err, "报错信息");
export default {
onLaunch: function() {
this.initApp()
},
//
getRequestParams() {
let url = location.href;
let requestParams = {};
if (url.indexOf("?") !== -1) {
let str = url.substr(url.indexOf("?") + 1); //?
// console.log(str, '?');
let strs = str.split("&"); //&
// console.log(strs, '&');
for (let i = 0; i < strs.length; i++) {
requestParams[strs[i].split("=")[0]] = decodeURI(
strs[i].split("=")[1]
);
// '=''='
methods: {
//
initApp() {
//
this.initConfig()
//
//#ifdef H5
this.checkLogin()
//#endif
},
initConfig() {
this.globalData.config = config
},
checkLogin() {
if (!getToken()) {
this.$tab.reLaunch('/pages/login')
}
}
// console.log(requestParams, '');
return requestParams;
},
async requestAndroidPermission(permisionID) {
var result = await permision.requestAndroidPermission(permisionID);
var strStatus;
if (result == 1) {
strStatus = "已获得授权";
} else if (result == 0) {
strStatus = "未获得授权";
uni.showModal({
content: "请在设置中打卡相机、麦克风、相册、定位权限",
showCancel: false,
});
console.warn("权限:" + permisionID + strStatus);
// App
this.gotoAppPermissionSetting();
} else {
strStatus = "被永久拒绝权限";
uni.showModal({
content: "请在设置中打卡相机、麦克风、相册、定位权限",
showCancel: false,
});
console.warn("权限:" + permisionID + strStatus);
// App
this.gotoAppPermissionSetting();
}
},
gotoAppPermissionSetting: function () {
permision.gotoAppPermissionSetting();
},
},
};
}
}
</script>
<style lang="scss">
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss";
@import "@/static/scss/index.scss";
@import '@/static/scss/index.scss'
</style>

@ -1,44 +0,0 @@
import request from "@/utils/request";
// 查询活动申请列表
export function listActivity(query) {
return request({
url: "/jn/activity/list",
method: "get",
params: query,
});
}
// 查询活动申请详细
export function getActivity(id) {
return request({
url: "/jn/activity/" + id,
method: "get",
});
}
// 新增活动申请
export function addActivity(data) {
return request({
url: "/jn/activity",
method: "post",
data: data,
});
}
// 修改活动申请
export function updateActivity(data) {
return request({
url: "/jn/activity",
method: "put",
data: data,
});
}
// 删除活动申请
export function delActivity(id) {
return request({
url: "/jn/activity/" + id,
method: "delete",
});
}

@ -1,25 +0,0 @@
import request from "@/utils/request";
// APP打卡
export function clock(data) {
return request({
url: "/jn/record/clock",
method: "post",
data,
});
}
// 获取打卡状态
export function getStatus(data){
return request({
url:"/jn/record/status",
method:"post",
data
})
}
// 判断用户位置
export function judgmentPosition(data){
return request({
url:"/jn/record/judgmentPosition",
method:"post",
data
})
}

@ -1,44 +0,0 @@
import request from "@/utils/request";
// 查询活动申请列表
export function listLevel(query) {
return request({
url: "/jn/level/list",
method: "get",
params: query,
});
}
// 查询活动申请详细
export function getLevel(id) {
return request({
url: "/jn/level/" + id,
method: "get",
});
}
// 新增活动申请
export function addLevel(data) {
return request({
url: "/jn/level",
method: "post",
data: data,
});
}
// 修改活动申请
export function updateLevel(data) {
return request({
url: "/jn/level",
method: "put",
data: data,
});
}
// 删除活动申请
export function delLevel(id) {
return request({
url: "/jn/level/" + id,
method: "delete",
});
}

@ -1,38 +0,0 @@
import request from "@/utils/request";
// getSqByaccesstoken
export function getSqByaccesstoken(params) {
return request({
url: "/jn/single/getSqByaccesstoken",
method: "get",
params,
});
}
export function getCode(params){
return request({
url:"/jn/single/getSq",
method: "get",
params
})
}
export function getUserinfo(params){
return request({
url:"/jn/single/getUserByaccessToken",
method: "get",
params,
// headers:{
// isToken:false,
// }
})
}
// 获取用户的考勤点
export function getUserIdByPoint(params){
return request({
url:"/jn/single/getUserByaccessToken",
method: "get",
params,
})
}

@ -1,44 +0,0 @@
import request from '@/utils/request'
// 查询商家端消息中心列表
export function listNews(query) {
return request({
url: '/jn/news/list',
method: 'get',
params: query
})
}
// 查询商家端消息中心详细
export function getNews(id) {
return request({
url: '/jn/news/' + id,
method: 'get'
})
}
// 新增商家端消息中心
export function addNews(data) {
return request({
url: '/jn/news',
method: 'post',
data: data
})
}
// 修改商家端消息中心
export function updateNews(data) {
return request({
url: '/jn/news',
method: 'put',
data: data
})
}
// 删除商家端消息中心
export function delNews(id) {
return request({
url: '/jn/news/' + id,
method: 'delete'
})
}

@ -1,41 +0,0 @@
import request from '@/utils/request'
//分页条件查询脱岗违停统计表
export function tgwtList(params) {
return request({
url: "/jn/bTgwttj",
method:'get',
params
})
}
//新增脱岗违停统计表
export function tgwtAdd(data) {
return request({
url: `/jn/bTgwttj`,
method:'post',
data
})
}
//脱岗违停审批
export function tgwtSp(data) {
return request({
url: `/jn/bTgwttj/approval`,
method:'post',
data
})
}
//脱岗违停发起申诉
export function tgwtSs(data) {
return request({
url: `/jn/bTgwttj/complaint`,
method:'post',
data
})
}
//脱岗违停查询单条
export function tgwtGet(id) {
return request({
url: `/jn/bTgwttj/${id}`,
method:'get',
})
}

@ -1,49 +0,0 @@
<template>
<view class="fixedButtom view-global">
<u-button :text="title" :color="color" @click="clickBtn" :customStyle="{
height:'88rpx',
borderRadius: '16rpx'
}"></u-button>
</view>
</template>
<script>
export default {
props: {
color: {
type: String,
default: 'linear-gradient(90deg, #3976F1 0%, #3CA0F6 100%)'
},
title: {
type: String,
default: '申请复核'
}
},
name: "fixedButtom",
data() {
return {
};
},
methods: {
clickBtn() {
this.$emit('click')
}
},
}
</script>
<style lang="scss">
.fixedButtom {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background: #fff;
padding: 20rpx 20rpx calc(20rpx + constant(safe-area-inset-bottom));
/* 兼容 iOS < 11.2 */
padding: 20rpx 20rpx calc(20rpx + env(safe-area-inset-bottom));
/* 兼容 iOS >= 11.2 */
border-top: 1px solid #DCE3EC;
}
</style>

@ -1,13 +1,11 @@
// 应用全局配置
module.exports = {
// baseUrl: "http://39.101.188.84:9037",
TEST_LOGIN:"https://t-jn-development-manager.jsszkd.com/login", // ?clientId=
baseUrl: "https://t-jn-bjh-admin-server.jsszkd.com",
baseUrl: 'https://vue.ruoyi.vip/prod-api',
// baseUrl: 'http://localhost:8080',
// 应用信息
appInfo: {
// 应用名称
name: "JiangNingUmale-App",
name: "ruoyi-app",
// 应用版本
version: "1.1.0",
// 应用logo
@ -15,15 +13,14 @@ module.exports = {
// 官方网站
site_url: "http://ruoyi.vip",
// 政策协议
agreements: [
{
agreements: [{
title: "隐私政策",
url: "https://ruoyi.vip/protocol.html",
url: "https://ruoyi.vip/protocol.html"
},
{
title: "用户服务协议",
url: "https://ruoyi.vip/protocol.html",
},
],
},
};
url: "https://ruoyi.vip/protocol.html"
}
]
}
}

@ -2,29 +2,16 @@ import Vue from 'vue'
import App from './App'
import store from './store' // store
import plugins from './plugins' // plugins
// import './permission' // permission
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
// import Videojs from 'video.js'
// import 'video.js/dist/video-js.css'
// Vue.prototype.$video = Videojs
import 'mui-player/dist/mui-player.min.css'
import fixedButtom from '@/components/fixedButtom/fixedButtom.vue'
Vue.component('fixedButtom', fixedButtom)
import './permission' // permission
Vue.use(plugins)
Vue.config.productionTip = false
Vue.prototype.$store = store
App.mpType = 'app'
const app = new Vue({
...App
...App
})
app.$mount()

@ -1,6 +1,6 @@
{
"name" : "江宁城管app",
"appid" : "__UNI__EE8CBC2",
"name" : "若依移动端",
"appid" : "__UNI__25A9D80",
"description" : "",
"versionName" : "1.1.0",
"versionCode" : "100",
@ -8,82 +8,40 @@
"app-plus" : {
"usingComponents" : true,
"nvueCompiler" : "uni-app",
"compatible" : {
"ignoreVersion" : true //trueHBuilderX1.9.0
},
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
"statusbar" : {
"immersed" : false
},
"modules" : {
"Geolocation" : {}
},
"modules" : {},
"distribute" : {
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
"ios" : {
"dSYMs" : false
},
"sdkConfigs" : {
"ad" : {},
"maps" : {
"amap" : {
"name" : "",
"appkey_ios" : "23a2faa38e7407639db125c7f2cbc571",
"appkey_android" : ""
}
},
"geolocation" : {
"amap" : {
"name" : "amapIryswz1c",
"__platform__" : [ "ios", "android" ],
"appkey_ios" : "19574081fa49df82bdabebfe2146c118",
"appkey_android" : "23a2faa38e7407639db125c7f2cbc571"
}
}
},
"icons" : {
"android" : {
"hdpi" : "static/images/umale/logo2.png",
"xhdpi" : "static/images/umale/logo2.png",
"xxhdpi" : "static/images/umale/logo2.png",
"xxxhdpi" : "static/images/umale/logo2.png"
}
}
"ios" : {},
"sdkConfigs" : {}
}
},
"quickapp" : {},
"mp-weixin" : {
"appid" : "wxceab52cfb9a87f72",
"appid" : "wxccd7e2a0911b3397",
"setting" : {
"urlCheck" : false,
"es6" : false,
@ -93,8 +51,7 @@
"optimization" : {
"subPackages" : true
},
"usingComponents" : true,
"permission" : {}
"usingComponents" : true
},
"vueVersion" : "2",
"h5" : {
@ -107,13 +64,6 @@
"router" : {
"mode" : "hash",
"base" : "./"
},
"sdkConfigs" : {
"maps" : {
"qqmap" : {
"key" : "TYBBZ-A2AKV-MLZPW-UFNQI-HKNVE-BEFZH"
}
}
}
}
}

56
package-lock.json generated

@ -1,56 +0,0 @@
{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"@turf/boolean-point-in-polygon": {
"version": "6.5.0",
"resolved": "https://registry.npmmirror.com/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz",
"integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==",
"requires": {
"@turf/helpers": "^6.5.0",
"@turf/invariant": "^6.5.0"
}
},
"@turf/circle": {
"version": "6.5.0",
"resolved": "https://registry.npmmirror.com/@turf/circle/-/circle-6.5.0.tgz",
"integrity": "sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==",
"requires": {
"@turf/destination": "^6.5.0",
"@turf/helpers": "^6.5.0"
}
},
"@turf/destination": {
"version": "6.5.0",
"resolved": "https://registry.npmmirror.com/@turf/destination/-/destination-6.5.0.tgz",
"integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==",
"requires": {
"@turf/helpers": "^6.5.0",
"@turf/invariant": "^6.5.0"
}
},
"@turf/helpers": {
"version": "6.5.0",
"resolved": "https://registry.npmmirror.com/@turf/helpers/-/helpers-6.5.0.tgz",
"integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw=="
},
"@turf/invariant": {
"version": "6.5.0",
"resolved": "https://registry.npmmirror.com/@turf/invariant/-/invariant-6.5.0.tgz",
"integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==",
"requires": {
"@turf/helpers": "^6.5.0"
}
},
"hls.js": {
"version": "1.4.14",
"resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.4.14.tgz",
"integrity": "sha512-UppQjyvPVclg+6t2KY/Rv03h0+bA5u6zwqVoz4LAC/L0fgYmIaCD7ZCrwe8WI1Gv01be1XL0QFsRbSdIHV/Wbw=="
},
"mui-player": {
"version": "1.8.1",
"resolved": "https://registry.npmmirror.com/mui-player/-/mui-player-1.8.1.tgz",
"integrity": "sha512-5o0SnSyVImxT9XUO6jCMmcJ+ZyAEJeFvdeZDHHPNS/LdwhzWX4yQPNgx8nzRbcUJ749xpqEQ6uVddiexLyvvqg=="
}
}
}

@ -1,336 +1,92 @@
{
"pages": [
// {
// "path": "pages/login",
// "style": {
// "navigationBarTitleText": "首页",
// "navigationStyle": "custom"
// }
// },
// {
// "path": "pages/register",
// "style": {
// "navigationBarTitleText": "注册"
// }
// },
{
"path": "pages/index",
"style": {
"navigationBarTitleText": "首页"
}
},
{
"path": "pages/msg/index",
"style": {
"navigationBarTitleText": "消息列表",
"navigationStyle": "custom"
}
},
{
"path": "pages/msg/index2",
"style": {
"navigationBarTitleText": "消息列表",
"navigationStyle": "custom"
}
},
{
"path": "pages/mine/index",
"style": {
"navigationBarTitleText": "我的",
"navigationStyle": "custom"
}
},
{
"path": "pages/mine/avatar/index",
"style": {
"navigationBarTitleText": "修改头像"
}
},
{
"path": "pages/mine/info/index",
"style": {
"navigationBarTitleText": "个人信息"
}
},
{
"path": "pages/mine/info/edit",
"style": {
"navigationBarTitleText": "编辑资料"
}
},
{
"path": "pages/mine/pwd/index",
"style": {
"navigationBarTitleText": "修改密码"
}
},
{
"path": "pages/mine/setting/index",
"style": {
"navigationBarTitleText": "应用设置"
}
},
{
"path": "pages/mine/help/index",
"style": {
"navigationBarTitleText": "常见问题"
}
},
{
"path": "pages/mine/about/index",
"style": {
"navigationBarTitleText": "关于我们"
}
},
{
"path": "pages/common/webview/index",
"style": {
"navigationBarTitleText": "浏览网页"
}
},
{
"path": "pages/common/textview/index",
"style": {
"navigationBarTitleText": "浏览文本"
}
},
{
"path": "pages/myLogin",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
"pages": [{
"path": "pages/login",
"style": {
"navigationBarTitleText": "登录"
}
],
"subPackages": [
{
"root": "subcontract/work/",
"pages": [
{
"path": "event/index",
"style": {
"navigationBarTitleText": "事件管理",
"navigationStyle": "custom"
}
},
{
"path": "event/add",
"style": {
"navigationBarTitleText": "事件上报",
"navigationStyle": "custom"
}
},
{
"path": "event/deal",
"style": {
"navigationBarTitleText": "处理结果上报",
"navigationStyle": "custom"
}
},
{
"path": "taskmanage/deal",
"style": {
"navigationBarTitleText": "处理结果上报",
"navigationStyle": "custom"
}
},
{
"path": "taskmanage/exam",
"style": {
"navigationBarTitleText": "任务审核",
"navigationStyle": "custom"
}
},
{
"path": "attence/index",
"style": {
"navigationBarTitleText": "考勤打卡",
"navigationStyle": "custom"
}
},
{
"path": "attence/leaveappli",
"style": {
"navigationBarTitleText": "请假申请",
"navigationStyle": "custom"
}
},
{
"path": "taskmanage/index",
"style": {
"navigationBarTitleText": "任务管理",
"navigationStyle": "custom"
}
},
{
"path": "taskmanage/info",
"style": {
"navigationBarTitleText": "任务详情",
"navigationStyle": "custom"
}
},
{
"path": "taskmanage/infoexam",
"style": {
"navigationBarTitleText": "任务详情",
"navigationStyle": "custom"
}
},
{
"path": "taskmanage/back",
"style": {
"navigationBarTitleText": "任务详情",
"navigationStyle": "custom"
}
},
{
"path": "taskmanage/ledger",
"style": {
"navigationBarTitleText": "任务台账",
"navigationStyle": "custom"
}
},
{
"path": "taskmanage/create",
"style": {
"navigationBarTitleText": "任务创建",
"navigationStyle": "custom"
}
}
]
},
{
"root": "subcontract/mine/",
"pages": [
{
"path": "event/index"
},
{
"path": "ChangePassword/ChangePassword",
"style": {
"navigationBarTitleText": "修改密码",
"enablePullDownRefresh": false
}
},
{
"path": "ChangeProfile/ChangeProfile",
"style": {
"navigationBarTitleText": "修改头像",
"enablePullDownRefresh": false
}
}
]
},
{
"root": "subPublic",
"pages": [
{
"path": "Store/Store",
"style": {
"navigationBarTitleText": "店铺详细信息",
"enablePullDownRefresh": false
}
},
{
"path": "waterEducation/index",
"style": {
"navigationBarTitleText": "水生态治理科教",
"enablePullDownRefresh": false
}
}
]
},
{
"root": "subEnterprise",
"pages": [
{
"path": "activity/activity",
"style": {
"navigationBarTitleText": "店铺活动管理",
"enablePullDownRefresh": false
}
},
{
"path": "activity/add",
"style": {
"navigationBarTitleText": "新增店铺活动",
"enablePullDownRefresh": false
}
},
{
"path": "threeGuarantees/index",
"style": {
"navigationBarTitleText": "三包等级凭证",
"enablePullDownRefresh": false
}
},
{
"path": "WorkOrder/WorkOrder",
"style": {
"navigationBarTitleText": "整改工单管理",
"enablePullDownRefresh": false
}
},
{
"path": "WorkOrder/handle",
"style": {
"navigationBarTitleText": "整改工单处理",
"enablePullDownRefresh": false
}
},
{
"path": "prequalification/index",
"style": {
"navigationBarTitleText": "店铺店招预审",
"enablePullDownRefresh": false
}
},
{
"path": "prequalification/add",
"style": {
"navigationBarTitleText": "店铺店招预审填报",
"enablePullDownRefresh": false
}
},
{
"path": "msg/index",
"style": {
"navigationBarTitleText": "消息中心",
"enablePullDownRefresh": false
}
}
]
}, {
"path": "pages/register",
"style": {
"navigationBarTitleText": "注册"
}
],
"preloadRule": {
"pages/index": {
"network": "all",
"packages": ["subcontract/work/"]
},
"pages/mine/index": {
"network": "all",
"packages": ["subcontract/mine/"]
}, {
"path": "pages/index",
"style": {
"navigationBarTitleText": "若依移动端框架",
"navigationStyle": "custom"
}
},
}, {
"path": "pages/work/index",
"style": {
"navigationBarTitleText": "工作台"
}
}, {
"path": "pages/mine/index",
"style": {
"navigationBarTitleText": "我的"
}
}, {
"path": "pages/mine/avatar/index",
"style": {
"navigationBarTitleText": "修改头像"
}
}, {
"path": "pages/mine/info/index",
"style": {
"navigationBarTitleText": "个人信息"
}
}, {
"path": "pages/mine/info/edit",
"style": {
"navigationBarTitleText": "编辑资料"
}
}, {
"path": "pages/mine/pwd/index",
"style": {
"navigationBarTitleText": "修改密码"
}
}, {
"path": "pages/mine/setting/index",
"style": {
"navigationBarTitleText": "应用设置"
}
}, {
"path": "pages/mine/help/index",
"style": {
"navigationBarTitleText": "常见问题"
}
}, {
"path": "pages/mine/about/index",
"style": {
"navigationBarTitleText": "关于我们"
}
}, {
"path": "pages/common/webview/index",
"style": {
"navigationBarTitleText": "浏览网页"
}
}, {
"path": "pages/common/textview/index",
"style": {
"navigationBarTitleText": "浏览文本"
}
}],
"tabBar": {
"color": "#000000",
"selectedColor": "#000000",
"borderStyle": "white",
"backgroundColor": "#ffffff",
"list": [
{
"list": [{
"pagePath": "pages/index",
"iconPath": "static/images/tabbar/home.png",
"selectedIconPath": "static/images/tabbar/home_.png",
"text": "首页"
},
{
"pagePath": "pages/msg/index2",
}, {
"pagePath": "pages/work/index",
"iconPath": "static/images/tabbar/work.png",
"selectedIconPath": "static/images/tabbar/work_.png",
"text": "消息"
},
{
"text": "工作台"
}, {
"pagePath": "pages/mine/index",
"iconPath": "static/images/tabbar/mine.png",
"selectedIconPath": "static/images/tabbar/mine_.png",
@ -341,7 +97,6 @@
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "RuoYi",
"navigationBarBackgroundColor": "#FFFFFF",
"navigationStyle": "custom"
"navigationBarBackgroundColor": "#FFFFFF"
}
}

@ -1,332 +1,43 @@
<!--
* @Author: 张涛
* @Date: 2023-11-06 14:04:41
* @LastEditors: laozt 2721205210@qq.com
* @LastEditTime: 2024-01-18 09:58:33
* @FilePath: \JiangNingUmale-App\pages\index.vue
-->
<template>
<view class="page">
<u-navbar
title="首页"
:placeholder="true"
:isBack="false"
:is-fixed="false"
/>
<view class="welcome">
<text class="title">欢迎登录城市精细化治理系统</text>
<text class="name">{{ userInfo ? userInfo.account : "" }}</text>
<view class="date-weather">
<text class="date"> {{ time ? time : "" }} </text>
<text class="weather"> 天气晴 </text>
</view>
</view>
<view class="main-content">
<view class="work-center">
<view
v-for="(item, index) in grids"
:key="index"
@click="goPath(item)"
style="position: relative"
>
<image :src="item.gridImg" mode="" class="grid-img"></image>
<text class="grid-name" :style="{ color: item.color }"
>{{ item.name }}
</text>
</view>
</view>
<view class="content">
<image class="logo" src="@/static/logo.png"></image>
<view class="text-area">
<text class="title">Hello RuoYi</text>
</view>
</view>
</template>
<script>
// import booleanPointInPolygon from '@turf/boolean-point-in-polygon';
// import { point, feature } from '@turf/helpers';
// import circle from '@turf/circle';
import { getUserIdByPoint } from "@/api/jn/login.js";
import { clock, getStatus, judgmentPosition } from "@/api/jn/clock.js";
import { listNews } from "@/api/jn/news";
// import chujie from "@/plugins/mapJson/chujie.json"
export default {
data() {
return {
grids: [
{
name: "水生态治理科教(公众)",
gridImg: "/static/images/umale/gr8.png",
color: "#0D306B",
subcolor: "",
disable: false,
toPage: "/subPublic/waterEducation/index",
},
{
name: "活动管理(商家)",
gridImg: "/static/images/umale/gr8.png",
color: "#0D306B",
subcolor: "",
disable: false,
toPage: "/subEnterprise/activity/activity",
},
{
name: "消息中心(商家)",
gridImg: "/static/images/umale/gr8.png",
color: "#0D306B",
subcolor: "",
disable: false,
toPage: "/subEnterprise/msg/index",
},
{
name: "门前三包服务(商家)",
gridImg: "/static/images/umale/gr8.png",
color: "#0D306B",
subcolor: "",
disable: false,
toPage: "/subEnterprise/threeGuarantees/index",
},
{
name: "店铺店招预审(商家)",
gridImg: "/static/images/umale/gr8.png",
color: "#0D306B",
subcolor: "",
disable: false,
toPage: "/subEnterprise/prequalification/index",
},
],
userInfo: null,
time: null,
lat: null,
lng: null,
circleLat: null,
circleLng: null,
circleClock: null,
times: null,
queryParams: {
pageNum: 1,
pageSize: 10,
title: "",
status: 0,
},
};
},
// ...
onBackPress(options) {
console.log("返回", options);
if (options.from == "backbutton" || options.from == "navigateBack") {
//
uni.showModal({
title: "退出应用",
content: "您确定要退出应用吗?",
success: function (res) {
if (res.confirm) {
//
uni.exit();
} else if (res.cancel) {
//
}
},
});
return true; //
export default {
onLoad: function() {
}
return false;
},
onLoad() {
// this.getCircle();
this.getUserLocation();
this.times = setInterval(() => {
console.log("获取用户位置信息");
this.getUserLocation();
}, 10000);
},
mounted() {
this.userInfo = uni.getStorageSync("userInfo");
console.log(JSON.stringify(this.userInfo), "用户信息");
const currentDate = new Date();
const year = currentDate.getFullYear(); //
const month = currentDate.getMonth() + 1; // 01
const day = currentDate.getDate(); //
this.time = year + "年" + month + "月" + day + "日";
},
onShow() {
this.getNumber();
},
methods: {
getNumber() {
listNews({ status: 0 }).then((res) => {
if (res.code == 200) {
this.$nextTick(() => {
uni.setTabBarBadge({
//
index: 1, //tabbar
text: res.total + "", //
});
});
}
});
},
goPath(item) {
this.$tab.navigateTo(item.toPage);
},
getUserLocation() {
let that = this;
uni.getLocation({
type: "gcj02", //apigcj02
geocode: true,
success: function (res) {
that.$modal.closeLoading();
that.lat = res.latitude;
that.lng = res.longitude;
judgmentPosition({
userId: that.userInfo.userId,
latitude: res.latitude + "",
longitude: res.longitude + "",
})
.then((position) => {
// console.log(position,"position");
if (position.code == 200 && position.data) {
getStatus({ userId: that.userInfo.userId })
.then((status) => {
if (status.code == 200) {
if (res.data.status == 0) {
let data = {
userId: that.userInfo.userId,
latitude: res.latitude + "",
longitude: res.longitude + "",
};
return clock(data);
}
}
})
.then((daka) => {
if (data == 200) {
clearInterval(that.times);
}
});
}
})
.catch((err) => {
console.log(err, "position失败");
if (err == "未设置考勤组") {
// clearInterval(that.times)
}
});
//
},
fail: function (err) {
console.log("获取定位失败", err);
uni.showToast({
title: "获取地址失败,将导致部分功能不可用",
icon: "none",
});
clearInterval(that.times);
},
});
},
// getCircle(){
// console.log(this.userInfo,"userInfo");
// getUserIdByPoint({id:this.userInfo.userId}).then(res=>{
// console.log(res,"");
// if(res.data.length > 0) {
// this.circleLat = res.data[0].lat;
// this.circleLng = res.data[0].lng;
// this.circleClock = res.data[0].clock;
// }
// })
// },
},
};
}
</script>
<style lang="scss">
.page {
background-color: #f6f7f8;
.welcome {
margin: 20rpx;
height: 281rpx;
background-size: 100%;
background-image: url("@/static/images/umale/intr.png");
background-repeat: no-repeat;
<style>
.content {
display: flex;
flex-direction: column;
padding-left: 31rpx;
padding-top: 45rpx;
.title {
font-size: 36rpx;
font-family: Source Han Sans CN;
color: #ffffff;
text-shadow: 0px 3rpx 6rpx rgba(0, 42, 128, 0.4);
}
.name {
margin-top: 40rpx;
font-size: 40rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #ffffff;
text-shadow: 0px 3rpx 6rpx rgba(0, 42, 128, 0.4);
}
.date-weather {
margin-top: 40rpx;
.date {
font-size: 24rpx;
font-family: Source Han Sans CN;
color: #f0f2f6;
text-shadow: 0px 3rpx 6rpx rgba(0, 42, 128, 0.4);
}
.weather {
margin-left: 50rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
color: #f0f2f6;
text-shadow: 0rpx 3rpx 6rpx rgba(0, 42, 128, 0.4);
}
}
align-items: center;
justify-content: center;
}
.main-content {
position: relative;
.work-center {
// position: absolute;
// top: 10rpx;
width: 100%;
box-sizing: border-box;
padding: 0 30rpx;
display: flex;
flex-wrap: wrap;
& > view {
width: 48%;
height: 210rpx;
margin-bottom: 22rpx;
position: relative;
.grid-img {
height: 100%;
width: 100%;
display: block;
}
.grid-name {
position: absolute;
top: 27rpx;
left: 26rpx;
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
font-size: 36rpx;
font-family: PingFang SC;
font-weight: bold;
}
}
.text-area {
display: flex;
justify-content: center;
}
& > view:nth-child(odd) {
margin-right: 4%;
}
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
}
</style>

@ -1,309 +1,202 @@
<template>
<!-- <view class="normal-login-container">
<view class="view-title">
<text class="title">你好欢迎登录</text>
</view>
<view class="normal-login-container">
<view class="logo-content align-center justify-center flex">
<image
style="width: 100rpx; height: 100rpx"
src="/static/images/umale/logo2.png"
mode="widthFix"
>
<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
</image>
<text class="sutitle">城市精细化治理系统</text>
<text class="title">若依移动端登录</text>
</view>
<view class="login-form-content">
<view class="input-item flex align-center">
<view class="iconfont icon-users icon"></view>
<input
v-model="loginForm.username"
class="input"
type="text"
placeholder="请输入账号"
maxlength="30"
placeholder-class="input-placeholder"
/>
<view class="iconfont icon-user icon"></view>
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
</view>
<view class="input-item flex align-center">
<view class="iconfont icon-passwords icon"></view>
<input
v-model="loginForm.password"
type="password"
class="input"
placeholder="请输入密码"
maxlength="20"
placeholder-class="input-placeholder"
/>
<view class="iconfont icon-password icon"></view>
<input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
</view>
<view
class="input-item flex align-center"
style="width: 60%; margin: 0px"
v-if="captchaEnabled"
>
<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
<view class="iconfont icon-code icon"></view>
<input
v-model="loginForm.code"
type="number"
class="input"
placeholder="请输入验证码"
maxlength="4"
/>
<input v-model="loginForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
<view class="login-code">
<image :src="codeUrl" @click="getCode" class="login-code-img"></image>
</view>
</view>
<view class="action-btn">
<button
@click="handleLogin"
class="login-btn cu-btn block bg-blue lg round"
>
登录
</button>
<button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
</view>
<view class="reg text-center" v-if="register">
<text class="text-grey1">没有账号</text>
<text @click="handleUserRegister" class="text-blue">立即注册</text>
</view>
<view class="xieyi text-center">
<text class="text-grey1">登录即代表同意</text>
<text @click="handleUserAgrement" class="text-blue">用户协议</text>
<text @click="handlePrivacy" class="text-blue">隐私协议</text>
</view>
</view>
</view> -->
<web-view :src="urlParams" ></web-view>
</view>
</template>
<script>
import { getCodeImg } from "@/api/login";
export default {
data() {
return {
codeUrl: "",
captchaEnabled: true,
//
register: false,
globalConfig: getApp().globalData.config,
loginForm: {
username: "admin",
password: "admin123",
code: "",
uuid: "",
},
urlParams: null,
};
},
created() {
// this.getCode();
},
methods: {
//
getRequestParams() {
let url = location.href;
let requestParams = {};
if (url.indexOf("?") !== -1) {
let str = url.substr(url.indexOf("?") + 1); //?
// console.log(str, '?');
let strs = str.split("&"); //&
// console.log(strs, '&');
for (let i = 0; i < strs.length; i++) {
requestParams[strs[i].split("=")[0]] = decodeURI(
strs[i].split("=")[1]
);
// '=''='
import { getCodeImg } from '@/api/login'
export default {
data() {
return {
codeUrl: "",
captchaEnabled: true,
//
register: false,
globalConfig: getApp().globalData.config,
loginForm: {
username: "admin",
password: "admin123",
code: "",
uuid: ''
}
}
// console.log(requestParams, '');
return requestParams;
},
//
handleUserRegister() {
this.$tab.redirectTo(`/pages/register`);
},
//
handlePrivacy() {
let site = this.globalConfig.appInfo.agreements[0];
this.$tab.navigateTo(
`/pages/common/webview/index?title=${site.title}&url=${site.url}`
);
created() {
this.getCode()
},
//
handleUserAgrement() {
let site = this.globalConfig.appInfo.agreements[1];
this.$tab.navigateTo(
`/pages/common/webview/index?title=${site.title}&url=${site.url}`
);
},
//
getCode() {
getCodeImg().then((res) => {
this.captchaEnabled =
res.captchaEnabled === undefined ? true : res.captchaEnabled;
if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid;
}
});
},
//
async handleLogin() {
if (this.loginForm.username === "") {
this.$modal.msgError("请输入您的账号");
} else if (this.loginForm.password === "") {
this.$modal.msgError("请输入您的密码");
} else if (this.loginForm.code === "" && this.captchaEnabled) {
this.$modal.msgError("请输入验证码");
} else {
this.$modal.loading("登录中,请耐心等待...");
this.pwdLogin();
}
},
//
async pwdLogin() {
this.$store
.dispatch("Login", this.loginForm)
.then(() => {
this.$modal.closeLoading();
this.loginSuccess();
methods: {
//
handleUserRegister() {
this.$tab.redirectTo(`/pages/register`)
},
//
handlePrivacy() {
let site = this.globalConfig.appInfo.agreements[0]
this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
},
//
handleUserAgrement() {
let site = this.globalConfig.appInfo.agreements[1]
this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
},
//
getCode() {
getCodeImg().then(res => {
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
if (this.captchaEnabled) {
this.codeUrl = 'data:image/gif;base64,' + res.img
this.loginForm.uuid = res.uuid
}
})
.catch(() => {
},
//
async handleLogin() {
if (this.loginForm.username === "") {
this.$modal.msgError("请输入您的账号")
} else if (this.loginForm.password === "") {
this.$modal.msgError("请输入您的密码")
} else if (this.loginForm.code === "" && this.captchaEnabled) {
this.$modal.msgError("请输入验证码")
} else {
this.$modal.loading("登录中,请耐心等待...")
this.pwdLogin()
}
},
//
async pwdLogin() {
this.$store.dispatch('Login', this.loginForm).then(() => {
this.$modal.closeLoading()
this.loginSuccess()
}).catch(() => {
if (this.captchaEnabled) {
this.getCode();
this.getCode()
}
});
},
//
loginSuccess(result) {
//
this.$store.dispatch("GetInfo").then((res) => {
this.$tab.reLaunch("/pages/index");
});
},
},
};
})
},
//
loginSuccess(result) {
//
this.$store.dispatch('GetInfo').then(res => {
this.$tab.reLaunch('/pages/index')
})
}
}
}
</script>
<style lang="scss">
page {
background-color: #ffffff;
}
.normal-login-container {
width: 100vw;
height: 100vh;
background-image: url("@/static/images/umale/login_bg.png");
background-size: 100% 100%;
background-repeat: no-repeat;
background-position-x: 0rpx;
background-position-y: 0rpx;
padding-top: 256rpx;
.view-title {
margin-left: 45rpx;
.title {
font-size: 56rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #2e2f31;
letter-spacing: 4rpx;
}
page {
background-color: #ffffff;
}
.logo-content {
.normal-login-container {
width: 100%;
font-size: 21px;
text-align: center;
padding-top: 15%;
image {
border-radius: 4px;
}
.logo-content {
width: 100%;
font-size: 21px;
text-align: center;
padding-top: 15%;
.sutitle {
margin-left: 10px;
font-size: 40rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #367bef;
letter-spacing: 4rpx;
}
}
image {
border-radius: 4px;
}
.login-form-content {
text-align: center;
margin: 20px auto;
margin-top: 15%;
width: 80%;
.title {
margin-left: 10px;
}
}
.input-item {
.login-form-content {
text-align: center;
margin: 20px auto;
height: 98rpx;
background: #ffffff;
border: 2rpx solid #dce3ec;
box-shadow: 0rpx 0rpx 20rpx rgba(57, 118, 241, 0.06);
opacity: 1;
border-radius: 49rpx;
margin-top: 15%;
width: 80%;
.input-item {
margin: 20px auto;
background-color: #f5f6f7;
height: 45px;
border-radius: 20px;
.icon {
font-size: 38rpx;
margin-left: 10px;
color: #999;
}
.icon {
font-size: 38rpx;
margin-left: 36rpx;
color: #999;
}
.input {
width: 100%;
font-size: 14px;
line-height: 20px;
text-align: left;
padding-left: 15px;
}
.icon-users {
width: 36rpx;
height: 36rpx;
background-image: url("@/static/images/umale/user.png");
background-size: cover;
background-repeat: no-repeat;
}
.icon-passwords {
width: 36rpx;
height: 36rpx;
background-image: url("@/static/images/umale/pwd.png");
background-size: cover;
background-repeat: no-repeat;
.login-btn {
margin-top: 40px;
height: 45px;
}
.input {
width: 100%;
font-size: 36rpx;
line-height: 20px;
font-family: PingFang SC;
font-weight: 400;
letter-spacing: 4rpx;
text-align: left;
padding-left: 15px;
.reg {
margin-top: 15px;
}
.input-placeholder {
color: #bcbcbc;
.xieyi {
color: #333;
margin-top: 20px;
}
}
.login-btn {
margin-top: 40px;
height: 98rpx;
background: linear-gradient(180deg, #4787f3 0%, #1868ef 100%);
box-shadow: 0 14rpx 25rpx -10rpx rgba(57, 118, 241, 1);
border-radius: 49rpx;
}
.reg {
margin-top: 15px;
}
.xieyi {
color: #333;
margin-top: 20px;
}
.login-code {
height: 38px;
float: right;
.login-code-img {
.login-code {
height: 38px;
position: absolute;
margin-left: 10px;
width: 200rpx;
float: right;
.login-code-img {
height: 38px;
position: absolute;
margin-left: 10px;
width: 200rpx;
}
}
}
}
}
</style>

@ -1,258 +1,198 @@
<template>
<view class="mine-container">
<view class="mine-bg"></view>
<view class="mine-main" :style="{ top: statusBarHeight + 'px' }">
<view class="mine-name">我的</view>
<view class="user-cell">
<image
class="user-image"
src="/static/images/user-image.png"
mode="aspectFill"
@click="handleProfile()"
></image>
<view class="user-systeam">
<view class="user-isLogin">{{ userInfo ? userInfo.account : "登录/注册" }}</view>
<view class="user-hint">欢迎来到系统</view>
<view class="mine-container" :style="{height: `${windowHeight}px`}">
<!--顶部个人信息栏-->
<view class="header-section">
<view class="flex padding justify-between">
<view class="flex align-center">
<view v-if="!avatar" class="cu-avatar xl round bg-white">
<view class="iconfont icon-people text-gray icon"></view>
</view>
<image v-if="avatar" @click="handleToAvatar" :src="avatar" class="cu-avatar xl round" mode="widthFix">
</image>
<view v-if="!name" @click="handleToLogin" class="login-tip">
点击登录
</view>
<view v-if="name" @click="handleToInfo" class="user-info">
<view class="u_title">
用户名{{ name }}
</view>
</view>
</view>
<view @click="handleToInfo" class="flex align-center">
<text>个人信息</text>
<view class="iconfont icon-right"></view>
</view>
</view>
</view>
<view class="content-section">
<view class="mine-actions grid col-4 text-center">
<view class="action-item" @click="handleJiaoLiuQun">
<view class="iconfont icon-friendfill text-pink icon"></view>
<text class="text">交流群</text>
</view>
<view class="action-item" @click="handleBuilding">
<view class="iconfont icon-service text-blue icon"></view>
<text class="text">在线客服</text>
</view>
<view class="action-item" @click="handleBuilding">
<view class="iconfont icon-community text-mauve icon"></view>
<text class="text">反馈社区</text>
</view>
<view class="action-item" @click="handleBuilding">
<view class="iconfont icon-dianzan text-green icon"></view>
<text class="text">点赞我们</text>
</view>
</view>
<view class="mine-cell-group">
<u-cell-group :border="false">
<u-cell icon="setting-fill" title="我的事件" :isLink="true" @click="myEvent">
<image
src="/static/images/cell1-mine.png"
mode="aspectFill"
slot="icon"
class="cell-icon"
>
</image>
</u-cell>
<u-cell icon="setting-fill" title="我的任务" :isLink="true" @click="myTask">
<image
src="/static/images/cell2-mine.png"
mode="aspectFill"
slot="icon"
class="cell-icon"
>
</image>
</u-cell>
<!-- <u-cell icon="setting-fill" title="我的考勤" :isLink="true">
<image
src="/static/images/cell3-mine.png"
mode="aspectFill"
slot="icon"
class="cell-icon"
>
</image>
</u-cell>
<u-cell icon="setting-fill" title="我的请假" :isLink="true">
<image
src="/static/images/cell4-mine.png"
mode="aspectFill"
slot="icon"
class="cell-icon"
>
</image>
</u-cell>
<u-cell
icon="setting-fill"
title="修改密码"
:isLink="true"
url="/subcontract/mine/ChangePassword/ChangePassword"
>
<image
src="/static/images/cell5-mine.png"
mode="aspectFill"
slot="icon"
class="cell-icon"
>
</image>
</u-cell> -->
<u-cell
:border="false"
icon="setting-fill"
title="检查更新"
:isLink="true"
value="版本1.0.1"
>
<image
src="/static/images/cell6-mine.png"
mode="aspectFill"
slot="icon"
class="cell-icon"
>
</image>
</u-cell>
</u-cell-group>
<view class="menu-list">
<view class="list-cell list-cell-arrow" @click="handleToEditInfo">
<view class="menu-item-box">
<view class="iconfont icon-user menu-icon"></view>
<view>编辑资料</view>
</view>
</view>
<view class="list-cell list-cell-arrow" @click="handleHelp">
<view class="menu-item-box">
<view class="iconfont icon-help menu-icon"></view>
<view>常见问题</view>
</view>
</view>
<view class="list-cell list-cell-arrow" @click="handleAbout">
<view class="menu-item-box">
<view class="iconfont icon-aixin menu-icon"></view>
<view>关于我们</view>
</view>
</view>
<view class="list-cell list-cell-arrow" @click="handleToSetting">
<view class="menu-item-box">
<view class="iconfont icon-setting menu-icon"></view>
<view>应用设置</view>
</view>
</view>
</view>
<u-button
@click="editCG"
class="view-global"
:text="userInfo ? '退出登录' : '前往登录'"
:color="userInfo ? 'linear-gradient(90deg, #EA3330 0%, #F8404C 100%)' : 'linear-gradient(90deg, #3976F1 0%, #3CA0F6 100%)'"
:customStyle="{
height: '88rpx',
borderRadius: '24rpx',
}"
></u-button>
</view>
</view>
</template>
<script>
import {
removeToken
} from '@/utils/auth'
import { listNews } from "@/api/jn/news";
export default {
data() {
return {
statusBarHeight: null,
userInfo:null,
};
},
onLoad() {
this.statusBarHeight = uni.$u.sys().statusBarHeight; //
},
mounted() {
this.userInfo = uni.getStorageSync("userInfo")
},
onShow() {
this.getNumber();
},
methods: {
getNumber(){
listNews({status: 0}).then((res) => {
if(res.code == 200) {
this.$nextTick(()=>{
uni.setTabBarBadge({
//
index: 1, //tabbar
text: res.total + '', //
});
})
}
})
},
//
handleProfile() {
uni.$u.route({
url: "/subcontract/mine/ChangeProfile/ChangeProfile",
});
},
// 退,
editCG(){
if(this.userInfo) {
this.$modal.confirm('确定注销并退出系统吗?').then(() => {
removeToken();
this.$tab.reLaunch("/pages/myLogin");
})
import storage from '@/utils/storage'
}
},
//
myEvent(){
uni.$u.route({
url: "/subcontract/mine/event/index",
});
},
//
myTask(){
uni.$u.route({
url: "/subcontract/mine/task/task",
});
}
},
};
export default {
data() {
return {
name: this.$store.state.user.name,
version: getApp().globalData.config.appInfo.version
}
},
computed: {
avatar() {
return this.$store.state.user.avatar
},
windowHeight() {
return uni.getSystemInfoSync().windowHeight - 50
}
},
methods: {
handleToInfo() {
this.$tab.navigateTo('/pages/mine/info/index')
},
handleToEditInfo() {
this.$tab.navigateTo('/pages/mine/info/edit')
},
handleToSetting() {
this.$tab.navigateTo('/pages/mine/setting/index')
},
handleToLogin() {
this.$tab.reLaunch('/pages/login')
},
handleToAvatar() {
this.$tab.navigateTo('/pages/mine/avatar/index')
},
handleLogout() {
this.$modal.confirm('确定注销并退出系统吗?').then(() => {
this.$store.dispatch('LogOut').then(() => {
this.$tab.reLaunch('/pages/index')
})
})
},
handleHelp() {
this.$tab.navigateTo('/pages/mine/help/index')
},
handleAbout() {
this.$tab.navigateTo('/pages/mine/about/index')
},
handleJiaoLiuQun() {
this.$modal.showToast('QQ群①133713780、②146013835')
},
handleBuilding() {
this.$modal.showToast('模块建设中~')
}
}
}
</script>
<style lang="scss" scoped>
.mine-bg {
height: 380rpx;
width: 100%;
background: url("@/static/images/mineBg.png");
background-size: 100% 100%;
}
.mine-main {
position: fixed;
top: 0;
left: 0;
z-index: 10;
width: 100%;
box-sizing: border-box;
padding: 0 30rpx;
.mine-name {
height: 44px;
line-height: 44px;
font-size: 40rpx;
font-weight: bold;
color: #ffffff;
text-align: center;
letter-spacing: 2px;
margin-bottom: 130rpx;
<style lang="scss">
page {
background-color: #f5f6f7;
}
.user-cell {
display: flex;
align-items: center;
box-sizing: border-box;
padding: 25rpx 45rpx;
background-color: #ffffff;
border-radius: 24rpx;
box-shadow: 0rpx 6rpx 20rpx rgba(57, 118, 241, 0.1);
.mine-container {
width: 100%;
height: 100%;
.user-image {
height: 128rpx;
width: 128rpx;
border-radius: 50%;
margin-right: 20rpx;
}
.user-isLogin {
font-size: 44rpx;
font-weight: bold;
color: #34373b;
}
.header-section {
padding: 15px 15px 45px 15px;
background-color: #3c96f3;
color: white;
.user-hint {
font-size: 28rpx;
font-weight: 400;
color: #aec1d9;
margin-top: 20rpx;
}
}
.login-tip {
font-size: 18px;
margin-left: 10px;
}
.mine-cell-group {
margin-top: 50rpx;
background: #ffffff;
box-shadow: 0rpx 6rpx 20rpx rgba(57, 118, 241, 0.1);
border-radius: 24rpx;
box-sizing: border-box;
padding: 0rpx 20rpx;
overflow: hidden;
margin-bottom: 39rpx;
}
}
.cu-avatar {
border: 2px solid #eaeaea;
.icon {
font-size: 40px;
}
}
.user-info {
margin-left: 15px;
.cell-icon {
display: inline-block;
height: 39rpx;
width: 37rpx;
margin-right: 25rpx;
}
.u_title {
font-size: 18px;
line-height: 30px;
}
}
}
.content-section {
position: relative;
top: -50px;
/deep/.u-cell .u-cell__body {
padding: 30rpx 20rpx;
}
.mine-actions {
margin: 15px 15px;
padding: 20px 0px;
border-radius: 8px;
background-color: white;
/deep/.u-cell__title .u-cell__title-text {
font-size: 34rpx;
font-weight: 500;
color: #34373b;
}
.action-item {
.icon {
font-size: 28px;
}
/deep/.u-cell__body .u-cell__value {
font-size: 28rpx;
font-weight: 400;
color: #616367;
}
.text {
display: block;
font-size: 13px;
margin: 8px 0px;
}
}
}
}
}
</style>

@ -1,135 +0,0 @@
<template>
<view class="app-container">
<u-navbar title="消息列表" :autoBack="true" :placeholder="true" leftIcon="">
<view slot="right">
<text class="nav-right">全部清空</text>
</view>
</u-navbar>
<u-search
height="75rpx"
placeholder="搜索关键词"
v-model="keyword"
shape="square"
:showAction="false"
class="view-global"
bgColor="#fff"
></u-search>
<view class="msg-list">
<view class="msg-item view-global">
<view class="msg-icon" style="background-color: #367bef">
<u-badge
bgColor="#FE3434"
max="99"
value="9"
:absolute="true"
:offset="[0, 0]"
></u-badge>
<image src="/static/images/msg3.png" mode="aspectFill"></image>
</view>
<view class="msg-middle">
<view class="middle-main">执法二队-李小强</view>
<view class="middle-sub">这是一条普通的消息详情</view>
</view>
<view class="msg-date">19:18</view>
</view>
<view class="msg-item view-global">
<view class="msg-icon" style="background-color: #32b78b">
<u-badge
bgColor="#FE3434"
max="99"
value="99"
:absolute="true"
:offset="[0, 0]"
></u-badge>
<image src="/static/images/msg2.png" mode="aspectFill"></image>
</view>
<view class="msg-middle">
<view class="middle-main">消息通知</view>
<view class="middle-sub">这是一条普通的消息详情</view>
</view>
<view class="msg-date">19:18</view>
</view>
<view class="msg-item view-global">
<view class="msg-icon" style="background-color: #f08941">
<u-badge
bgColor="#FE3434"
max="99"
value="0"
:absolute="true"
:offset="[0, 0]"
></u-badge>
<image src="/static/images/msg1.png" mode="aspectFill"></image>
</view>
<view class="msg-middle">
<view class="middle-main">告警消息</view>
<view class="middle-sub">这是一条普通的消息详情</view>
</view>
<view class="msg-date">19:18</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
keyword: "",
};
},
onLoad() {},
};
</script>
<style lang="scss" scoped>
.msg-list {
.msg-item {
display: flex;
align-items: center;
background-color: #fff;
border-radius: 16rpx;
margin-top: 30rpx;
box-sizing: border-box;
padding: 20rpx;
.msg-icon {
position: relative;
height: 94rpx;
width: 94rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
image {
height: 44rpx;
width: 44rpx;
}
}
.msg-middle {
flex: 1;
box-sizing: border-box;
padding-left: 20rpx;
.middle-main {
font-size: 32rpx;
font-weight: bold;
color: #2e2f31;
}
.middle-sub {
margin-top: 12rpx;
font-size: 28rpx;
font-weight: 400;
color: #616367;
}
}
.msg-date {
font-size: 24rpx;
font-weight: 400;
color: #9da2ab;
}
}
}
</style>

@ -1,196 +0,0 @@
<template>
<view class="app-container">
<u-navbar title="消息列表" :autoBack="true" :placeholder="true" leftIcon="">
<view slot="right" @click="onAllclear">
<text class="nav-right">全部清空</text>
</view>
</u-navbar>
<u-search
height="75rpx"
placeholder="搜索关键词"
v-model="queryParams.title"
shape="square"
:showAction="false"
:clearabled="true"
class="view-global"
bgColor="#fff"
@search="onSearch"
@clear="onClear"
></u-search>
<view class="msg-list">
<view
class="msg-item view-global"
v-for="(item, index) in listMsgs"
:key="index"
>
<view class="msg-icon" style="background-color: #367bef">
<!-- value="9" -->
<u-badge
bgColor="#FE3434"
max="99"
:absolute="true"
:offset="[0, 0]"
></u-badge>
<image src="/static/images/msg3.png" mode="aspectFill"></image>
</view>
<view class="msg-middle">
<view class="middle-main">{{ item.title }}</view>
<view class="middle-sub">{{ item.content }}</view>
</view>
<view class="msg-date">{{ item.createTime }}</view>
</view>
<!-- <view class="msg-item view-global">
<view class="msg-icon" style="background-color: #32b78b">
<u-badge
bgColor="#FE3434"
max="99"
value="99"
:absolute="true"
:offset="[0, 0]"
></u-badge>
<image src="/static/images/msg2.png" mode="aspectFill"></image>
</view>
<view class="msg-middle">
<view class="middle-main">消息通知</view>
<view class="middle-sub">这是一条普通的消息详情</view>
</view>
<view class="msg-date">19:18</view>
</view>
<view class="msg-item view-global">
<view class="msg-icon" style="background-color: #f08941">
<u-badge
bgColor="#FE3434"
max="99"
value="0"
:absolute="true"
:offset="[0, 0]"
></u-badge>
<image src="/static/images/msg1.png" mode="aspectFill"></image>
</view>
<view class="msg-middle">
<view class="middle-main">告警消息</view>
<view class="middle-sub">这是一条普通的消息详情</view>
</view>
<view class="msg-date">19:18</view>
</view> -->
</view>
</view>
</template>
<script>
import { listNews, delNews } from "../../api/jn/news";
export default {
data() {
return {
listMsgs: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
title: "",
status: 0
},
};
},
onLoad() {
},
onShow() {
this.ListMsg();
},
methods: {
onAllclear() {
this.$modal.confirm('确定删除所有消息吗?').then(() => {
let ids = [];
this.listMsgs.forEach(element => {
ids.push(element.id);
});
if(ids.length == 0) {
return;
} else {
delNews(ids).then((res) => {
console.log(JSON.stringify(res),"删除接口");
if(res.code == 200) {
this.ListMsg();
}
});
}
})
},
onSearch() {
this.ListMsg();
},
onClear() {
this.queryParams.title = "";
this.ListMsg();
},
ListMsg() {
listNews(this.queryParams).then((res) => {
// console.log(res);
this.listMsgs = res.rows;
if(res.code == 200) {
uni.setTabBarBadge({
//
index: 1, //tabbar
text: res.total + '', //
});
}
});
},
},
};
</script>
<style lang="scss" scoped>
.msg-list {
.msg-item {
display: flex;
align-items: center;
background-color: #fff;
border-radius: 16rpx;
margin-top: 30rpx;
box-sizing: border-box;
padding: 20rpx;
.msg-icon {
position: relative;
height: 94rpx;
width: 94rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
image {
height: 44rpx;
width: 44rpx;
}
}
.msg-middle {
flex: 1;
box-sizing: border-box;
padding-left: 20rpx;
.middle-main {
font-size: 32rpx;
font-weight: bold;
color: #2e2f31;
}
.middle-sub {
margin-top: 12rpx;
font-size: 28rpx;
font-weight: 400;
color: #616367;
}
}
.msg-date {
font-size: 24rpx;
font-weight: 400;
color: #9da2ab;
}
}
}
</style>

@ -1,88 +0,0 @@
<template>
<view class="content">
<view class="param">{{ param }}</view>
</view>
</template>
<script>
import { getToken, setToken, removeToken } from "@/utils/auth";
import { getSqByaccesstoken, getUserinfo } from "@/api/jn/login.js";
export default {
data() {
return {
style: {
"padding-top": 0,
},
statusBarHeight: 0,
isApp: true,
webview: null,
param: "",
};
},
created() {},
mounted() {},
onLoad(options) {
let _this = this;
// #ifdef APP-PLUS
let curwebview = this.$mp.page.$getAppWebview();
this.webview = plus.webview.open(
"https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324",
""
);
curwebview.append(this.webview);
this.webview.show();
this.webview.overrideUrlLoading({ mode: "reject" }, (e) => {
//,!url,.OK.json
console.warn("参数为:" + e.url);
// http://39.101.188.84:9999/demo/JiangNingUmale-App/#/?code=ckyb2r&clientId=641775453324&token=pygHmfvDNt4YxbucxXiIm0dN8d0IuLmd
// URL
var url = e.url;
console.warn("1:" + url);
//
var code = _this.getQueryString("code", url);
var clientId = _this.getQueryString("clientId", url);
var token = _this.getQueryString("token", url);
console.warn("code:" + _this.getQueryString("code", url));
console.warn("clientId:" + _this.getQueryString("clientId", url));
console.warn("token:" + _this.getQueryString("token", url));
if (token) {
uni.setStorageSync("token", token);
getSqByaccesstoken({ code: code,}).then((res) => {
// console.log("accessToken");
uni.setStorageSync("accessToken", res.data.accessToken);
return getUserinfo({accessToken: res.data.accessToken});
}).then((el) => {
this.$tab.switchTab("/pages/index");
uni.setStorageSync("userInfo", el.data);
setToken(el.data.token);
// location.reload();
console.log("用户信息", el);
});
}
});
// #endif
},
methods: {
getQueryString(name, url) {
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
const lastIndex = url.lastIndexOf("/");
const result = url.substring(lastIndex + 1);
const newUrl = result.replace(/\?/g, "&");
let r = newUrl.match(reg);
// console.log(r);
if (r != null) {
return decodeURIComponent(r[2]);
}
return null;
},
},
};
</script>
<style lang="less">
.content {
text-align: center;
}
</style>

@ -0,0 +1,183 @@
<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>
<!-- 宫格组件 -->
<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>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="staff-filled" size="30"></uni-icons>
<text class="text">角色管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="color" size="30"></uni-icons>
<text class="text">菜单管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="settings-filled" size="30"></uni-icons>
<text class="text">部门管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="heart-filled" size="30"></uni-icons>
<text class="text">岗位管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="bars" size="30"></uni-icons>
<text class="text">字典管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="gear-filled" size="30"></uni-icons>
<text class="text">参数设置</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="chat-filled" size="30"></uni-icons>
<text class="text">通知公告</text>
</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>
export default {
data() {
return {
current: 0,
swiperDotIndex: 0,
data: [{
image: '/static/images/banner/banner01.jpg'
},
{
image: '/static/images/banner/banner02.jpg'
},
{
image: '/static/images/banner/banner03.jpg'
}
]
}
},
methods: {
clickBannerItem(item) {
console.info(item)
},
changeSwiper(e) {
this.current = e.detail.current
},
changeGrid(e) {
this.$modal.showToast('模块建设中~')
}
}
}
</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;
}
view {
font-size: 14px;
line-height: inherit;
}
/* #endif */
.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;
}
.uni-margin-wrap {
width: 690rpx;
width: 100%;
;
}
.swiper {
height: 300rpx;
}
.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;
}
@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%;
}
}
</style>

@ -1,10 +1,11 @@
import { getToken, setToken, removeToken } from '@/utils/auth'
import { getToken } from '@/utils/auth'
// 登录页面
const loginPage = "/pages/myLogin"
const loginPage = "/pages/login"
// 页面白名单
const whiteList = [
'/pages/myLogin', '/pages/index', '/pages/login', '/pages/register', '/pages/common/webview/index'
'/pages/login', '/pages/register', '/pages/common/webview/index'
]
// 检查地址白名单
@ -18,7 +19,6 @@ let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"]
list.forEach(item => {
uni.addInterceptor(item, {
invoke(to) {
console.log(to,"去往的页面");
if (getToken()) {
if (to.url === loginPage) {
uni.reLaunch({ url: "/" })
@ -26,10 +26,10 @@ list.forEach(item => {
return true
} else {
if (checkWhite(to.url)) {
return true
return true
}
uni.reLaunch({ url: loginPage })
return false
uni.reLaunch({ url: loginPage })
return false
}
},
fail(err) {

@ -1,34 +0,0 @@
{
"type": "Feature",
"properties": {},
"geometry": {
"coordinates": [
[
120.73261373376607,
31.25073977461639
],
[
120.74078042393268,
31.25402113805667
],
[
120.74372043239208,
31.246387719524122
],
[
120.73541763072382,
31.244013786751168
],
[
120.73261373376607,
31.25073977461639
],
[
120.7328587344706,
31.250832864512475
]
],
"type": "LineString"
}
}
}

@ -1,34 +0,0 @@
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"coordinates": [
[
120.72749571970576,
31.258029375430894
],
[
120.73064263167993,
31.253765297491498
],
[
120.73807247779501,
31.256410834495384
],
[
120.7349777967234,
31.260395743950383
],
[
120.72746960425354,
31.258029375430894
]
],
"type": "LineString"
}
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 911 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 833 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 833 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save