Compare commits
No commits in common. 'master' and 'dev-jingling' have entirely different histories.
master
...
dev-jingling
@ -1,3 +1 @@
|
||||
jnpf-java-boot/log/jnpf-boot/
|
||||
.idea/
|
||||
log/
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"eggHelper.serverPort": 35684
|
||||
}
|
@ -1,213 +1,213 @@
|
||||
{
|
||||
"name" : "易回收平台",
|
||||
"appid" : "__UNI__663111E",
|
||||
"description" : "专注信息化平台、软件开发、app开发",
|
||||
"versionName" : "3.4.76",
|
||||
"versionCode" : 139,
|
||||
"transformPx" : false,
|
||||
"app-plus" : {
|
||||
"compatible" : {
|
||||
"ignoreVersion" : true
|
||||
},
|
||||
/* 5+App特有相关 */
|
||||
"usingComponents" : true,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : false,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
"modules" : {
|
||||
"Maps" : {},
|
||||
"OAuth" : {},
|
||||
"Speech" : {},
|
||||
"Barcode" : {},
|
||||
"Camera" : {},
|
||||
"Push" : {}
|
||||
},
|
||||
/* 模块配置 */
|
||||
"distribute" : {
|
||||
/* 应用发布信息 */
|
||||
"android" : {
|
||||
/* android打包配置 */
|
||||
"permissions" : [
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
],
|
||||
"schemes" : "jnpf",
|
||||
"minSdkVersion" : 22,
|
||||
"targetSdkVersion" : 26,
|
||||
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ]
|
||||
},
|
||||
"ios" : {
|
||||
"privacyDescription" : {
|
||||
"NSPhotoLibraryUsageDescription" : "以便于修改头像等功能图片上传",
|
||||
"NSPhotoLibraryAddUsageDescription" : "以便于修改头像等功能图片上传",
|
||||
"NSCameraUsageDescription" : "以便于修改头像等功能图片上传",
|
||||
"NSLocationAlwaysAndWhenInUseUsageDescription" : "以便于定位当前位置等功能",
|
||||
"NSLocationAlwaysUsageDescription" : "以便于定位当前位置等功能",
|
||||
"NSLocationWhenInUseUsageDescription" : "以便于定位当前位置等功能",
|
||||
"NSMicrophoneUsageDescription" : "以便于使用语音、录制音频等功能",
|
||||
"NSCalendarsUsageDescription" : "以便于更好的办公",
|
||||
"NSContactsUsageDescription" : "以便于更好的沟通",
|
||||
"NSSpeechRecognitionUsageDescription" : "",
|
||||
"NSAppleMusicUsageDescription" : "以便于修改头像等功能媒体资料上传",
|
||||
"NSFaceIDUsageDescription" : "以便于使用快捷登录等功能"
|
||||
},
|
||||
"idfa" : false,
|
||||
"urltypes" : "jnpf",
|
||||
"capabilities" : {
|
||||
"entitlements" : {
|
||||
"com.apple.developer.associated-domains" : [ "applinks:unlink.java.jnpfsoft.com" ]
|
||||
}
|
||||
}
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"sdkConfigs" : {
|
||||
"payment" : {},
|
||||
"maps" : {
|
||||
"baidu" : {
|
||||
"appkey_ios" : "CA6mx9NZ9DhTYxjVKB7Bkgr6KxpzMfO4",
|
||||
"appkey_android" : "1vlnkDFaZz4GxAHMMk6kwGRcZr1OfBau"
|
||||
}
|
||||
},
|
||||
"ad" : {},
|
||||
"oauth" : {
|
||||
"weixin" : {
|
||||
"appid" : "wx95396c4c5f44c077",
|
||||
"appsecret" : "c128e69c3cabe00c468fb177e393b6a0",
|
||||
"UniversalLinks" : "https://unlink.java.jnpfsoft.com/uni-universallinks/__UNI__1A48209/"
|
||||
}
|
||||
},
|
||||
"speech" : {},
|
||||
"push" : {
|
||||
"unipush" : {}
|
||||
}
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios" : {
|
||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||
"ipad" : {
|
||||
"app" : "unpackage/res/icons/76x76.png",
|
||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||
"notification" : "unpackage/res/icons/20x20.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||
"settings" : "unpackage/res/icons/29x29.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone" : {
|
||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
},
|
||||
"splashscreen" : {
|
||||
"android" : {
|
||||
"hdpi" : "unpackage/res/startup/startup.png",
|
||||
"xhdpi" : "unpackage/res/startup/startup.png",
|
||||
"xxhdpi" : "unpackage/res/startup/startup.png"
|
||||
},
|
||||
"ios" : {
|
||||
"iphone" : {
|
||||
"portrait-896h@3x" : "unpackage/res/startup/startup.png",
|
||||
"landscape-896h@3x" : "",
|
||||
"portrait-896h@2x" : "unpackage/res/startup/startup.png",
|
||||
"landscape-896h@2x" : "",
|
||||
"retina35" : "unpackage/res/startup/startup.png",
|
||||
"retina40l" : "",
|
||||
"retina40" : "unpackage/res/startup/startup.png",
|
||||
"retina47l" : "",
|
||||
"retina47" : "unpackage/res/startup/startup.png",
|
||||
"iphonex" : "unpackage/res/startup/startup.png",
|
||||
"iphonexl" : "",
|
||||
"retina55l" : "",
|
||||
"retina55" : "unpackage/res/startup/startup.png"
|
||||
}
|
||||
},
|
||||
"androidStyle" : "default"
|
||||
}
|
||||
},
|
||||
"nativePlugins" : {}
|
||||
},
|
||||
/* SDK配置 */
|
||||
"quickapp" : {},
|
||||
/* 快应用特有相关 */
|
||||
"mp-weixin" : {
|
||||
/* 小程序特有相关 */
|
||||
"appid" : "wxf82bcc798891a29d",
|
||||
"setting" : {
|
||||
"urlCheck" : true,
|
||||
"es6" : true,
|
||||
"postcss" : true,
|
||||
"minified" : true
|
||||
},
|
||||
"usingComponents" : true,
|
||||
"permission" : {
|
||||
"scope.userLocation" : {
|
||||
"desc" : "你的位置信息将用于小程序位置接口的效果展示"
|
||||
}
|
||||
},
|
||||
// "uniStatistics" : {
|
||||
// "enable" : false
|
||||
// },
|
||||
"optimization" : {
|
||||
"subPackages" : true
|
||||
}
|
||||
},
|
||||
"h5" : {
|
||||
"sdkConfigs" : {
|
||||
"maps" : {}
|
||||
},
|
||||
"title" : "易回收平台",
|
||||
"template" : "template.h5.html",
|
||||
"domain" : "https://app.java.jnpfsoft.com",
|
||||
"router" : {
|
||||
"mode" : "history"
|
||||
},
|
||||
"devServer" : {
|
||||
"disableHostCheck" : true,
|
||||
"proxy" : {
|
||||
"/api" : {
|
||||
"target" : "http://192.168.20.23:8080",
|
||||
"changeOrigin" : true,
|
||||
"secure" : false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"_spaceID" : "8e84eea8-6922-4033-8e86-67ad7442e692"
|
||||
}
|
||||
"name": "jnpf java版",
|
||||
"appid": "__UNI__663111E",
|
||||
"description": "专注信息化平台、软件开发、app开发",
|
||||
"versionName": "3.4.76",
|
||||
"versionCode": 139,
|
||||
"transformPx": false,
|
||||
"app-plus": {
|
||||
"compatible": {
|
||||
"ignoreVersion": true
|
||||
},
|
||||
/* 5+App特有相关 */
|
||||
"usingComponents": true,
|
||||
"splashscreen": {
|
||||
"alwaysShowBeforeRender": false,
|
||||
"waiting": true,
|
||||
"autoclose": true,
|
||||
"delay": 0
|
||||
},
|
||||
"modules": {
|
||||
"Maps": {},
|
||||
"OAuth": {},
|
||||
"Speech": {},
|
||||
"Barcode": {},
|
||||
"Camera": {},
|
||||
"Push": {}
|
||||
},
|
||||
/* 模块配置 */
|
||||
"distribute": {
|
||||
/* 应用发布信息 */
|
||||
"android": {
|
||||
/* android打包配置 */
|
||||
"permissions": [
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
],
|
||||
"schemes": "jnpf",
|
||||
"minSdkVersion": 22,
|
||||
"targetSdkVersion": 26,
|
||||
"abiFilters": ["armeabi-v7a", "arm64-v8a"]
|
||||
},
|
||||
"ios": {
|
||||
"privacyDescription": {
|
||||
"NSPhotoLibraryUsageDescription": "以便于修改头像等功能图片上传",
|
||||
"NSPhotoLibraryAddUsageDescription": "以便于修改头像等功能图片上传",
|
||||
"NSCameraUsageDescription": "以便于修改头像等功能图片上传",
|
||||
"NSLocationAlwaysAndWhenInUseUsageDescription": "以便于定位当前位置等功能",
|
||||
"NSLocationAlwaysUsageDescription": "以便于定位当前位置等功能",
|
||||
"NSLocationWhenInUseUsageDescription": "以便于定位当前位置等功能",
|
||||
"NSMicrophoneUsageDescription": "以便于使用语音、录制音频等功能",
|
||||
"NSCalendarsUsageDescription": "以便于更好的办公",
|
||||
"NSContactsUsageDescription": "以便于更好的沟通",
|
||||
"NSSpeechRecognitionUsageDescription": "",
|
||||
"NSAppleMusicUsageDescription": "以便于修改头像等功能媒体资料上传",
|
||||
"NSFaceIDUsageDescription": "以便于使用快捷登录等功能"
|
||||
},
|
||||
"idfa": false,
|
||||
"urltypes": "jnpf",
|
||||
"capabilities": {
|
||||
"entitlements": {
|
||||
"com.apple.developer.associated-domains": ["applinks:unlink.java.jnpfsoft.com"]
|
||||
}
|
||||
}
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"sdkConfigs": {
|
||||
"payment": {},
|
||||
"maps": {
|
||||
"baidu": {
|
||||
"appkey_ios": "CA6mx9NZ9DhTYxjVKB7Bkgr6KxpzMfO4",
|
||||
"appkey_android": "1vlnkDFaZz4GxAHMMk6kwGRcZr1OfBau"
|
||||
}
|
||||
},
|
||||
"ad": {},
|
||||
"oauth": {
|
||||
"weixin": {
|
||||
"appid": "wx95396c4c5f44c077",
|
||||
"appsecret": "c128e69c3cabe00c468fb177e393b6a0",
|
||||
"UniversalLinks": "https://unlink.java.jnpfsoft.com/uni-universallinks/__UNI__1A48209/"
|
||||
}
|
||||
},
|
||||
"speech": {},
|
||||
"push": {
|
||||
"unipush": {}
|
||||
}
|
||||
},
|
||||
"icons": {
|
||||
"android": {
|
||||
"hdpi": "unpackage/res/icons/72x72.png",
|
||||
"xhdpi": "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi": "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi": "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios": {
|
||||
"appstore": "unpackage/res/icons/1024x1024.png",
|
||||
"ipad": {
|
||||
"app": "unpackage/res/icons/76x76.png",
|
||||
"app@2x": "unpackage/res/icons/152x152.png",
|
||||
"notification": "unpackage/res/icons/20x20.png",
|
||||
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x": "unpackage/res/icons/167x167.png",
|
||||
"settings": "unpackage/res/icons/29x29.png",
|
||||
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||
"spotlight": "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x": "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone": {
|
||||
"app@2x": "unpackage/res/icons/120x120.png",
|
||||
"app@3x": "unpackage/res/icons/180x180.png",
|
||||
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||
"notification@3x": "unpackage/res/icons/60x60.png",
|
||||
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||
"settings@3x": "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x": "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x": "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
},
|
||||
"splashscreen": {
|
||||
"android": {
|
||||
"hdpi": "unpackage/res/startup/startup.png",
|
||||
"xhdpi": "unpackage/res/startup/startup.png",
|
||||
"xxhdpi": "unpackage/res/startup/startup.png"
|
||||
},
|
||||
"ios": {
|
||||
"iphone": {
|
||||
"portrait-896h@3x": "unpackage/res/startup/startup.png",
|
||||
"landscape-896h@3x": "",
|
||||
"portrait-896h@2x": "unpackage/res/startup/startup.png",
|
||||
"landscape-896h@2x": "",
|
||||
"retina35": "unpackage/res/startup/startup.png",
|
||||
"retina40l": "",
|
||||
"retina40": "unpackage/res/startup/startup.png",
|
||||
"retina47l": "",
|
||||
"retina47": "unpackage/res/startup/startup.png",
|
||||
"iphonex": "unpackage/res/startup/startup.png",
|
||||
"iphonexl": "",
|
||||
"retina55l": "",
|
||||
"retina55": "unpackage/res/startup/startup.png"
|
||||
}
|
||||
},
|
||||
"androidStyle": "default"
|
||||
}
|
||||
},
|
||||
"nativePlugins": {}
|
||||
},
|
||||
/* SDK配置 */
|
||||
"quickapp": {},
|
||||
/* 快应用特有相关 */
|
||||
"mp-weixin": {
|
||||
/* 小程序特有相关 */
|
||||
"appid": "wx8f5cb90d8ff960a3",
|
||||
"setting": {
|
||||
"urlCheck": true,
|
||||
"es6": true,
|
||||
"postcss": true,
|
||||
"minified": true
|
||||
},
|
||||
"usingComponents": true,
|
||||
"permission": {
|
||||
"scope.userLocation": {
|
||||
"desc": "你的位置信息将用于小程序位置接口的效果展示"
|
||||
}
|
||||
},
|
||||
// "uniStatistics" : {
|
||||
// "enable" : false
|
||||
// },
|
||||
"optimization": {
|
||||
"subPackages": true
|
||||
}
|
||||
},
|
||||
"h5": {
|
||||
"sdkConfigs": {
|
||||
"maps": {}
|
||||
},
|
||||
"title": "jnpf java版",
|
||||
"template": "template.h5.html",
|
||||
"domain": "https://app.java.jnpfsoft.com",
|
||||
"router": {
|
||||
"mode": "history"
|
||||
},
|
||||
"devServer": {
|
||||
"disableHostCheck": true,
|
||||
"proxy": {
|
||||
"/api": {
|
||||
"target": "http://192.168.20.23:8080",
|
||||
"changeOrigin": true,
|
||||
"secure": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"_spaceID": "8e84eea8-6922-4033-8e86-67ad7442e692"
|
||||
}
|
@ -1,12 +1,13 @@
|
||||
{
|
||||
"name": "jnpf-app-next",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"crypto-js": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "jnpf-app-next",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,790 +0,0 @@
|
||||
<template>
|
||||
<view class="apply-v">
|
||||
<uni-nav-bar class="nav" :fixed="true" :statusBar="true" :border="false" height="44">
|
||||
<block slot="default">
|
||||
<view class="nav-left" @click="showSelectBox">
|
||||
<view class="nav-left-text">
|
||||
{{ selectData.name }}
|
||||
</view>
|
||||
<uni-icons class="right-icons" type="arrowdown" color="#000000" size="14"
|
||||
v-if="userInfo.systemIds.length > 1" :class="{ 'select-right-icons': showSelect }" />
|
||||
</view>
|
||||
</block>
|
||||
</uni-nav-bar>
|
||||
<view class="search-box_sticky" :style="{'top':topSearch+'rpx'}">
|
||||
<view class="search-box">
|
||||
<u-search placeholder="请输入关键词搜索" v-model="keyword" height="72" :show-action="false" @change="search"
|
||||
bg-color="#f0f2f6" shape="square">
|
||||
</u-search>
|
||||
</view>
|
||||
</view>
|
||||
<mescroll-body ref="mescrollRef" @down="downCallback" :down="downOption" :sticky="true" @up="upCallback"
|
||||
:up="upOption" :bottombar="false" style="min-height: 100%" @init="mescrollInit">
|
||||
<view class="common-block">
|
||||
<view class="caption">常用功能</view>
|
||||
<view class="u-flex u-flex-wrap">
|
||||
<view class="item u-flex-col u-col-center" v-for="(item, i) in usualList" :key="i"
|
||||
@click="handelClick(item)">
|
||||
<text class="u-font-40 item-icon" :class="item.icon"
|
||||
:style="{ background: item.iconBackground || '#008cff' }" />
|
||||
<text class="u-font-24 u-line-1 item-text">{{ item.fullName}}</text>
|
||||
</view>
|
||||
<view class="item u-flex-col u-col-center" @click="moreApp">
|
||||
<text class="u-font-40 item-icon more">+</text>
|
||||
<text class="u-font-24 u-line-1 item-text">添加</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-m-b-20">
|
||||
<u-tabs :list="tabsMenuList" :current="current" @change="change" :is-scroll="true" name="fullName"
|
||||
:key="key">
|
||||
</u-tabs>
|
||||
</view>
|
||||
<view class="workFlow-list">
|
||||
<view class="part" v-for="(item, i) in menuList" :key="i" v-if="!!current ||(!current && hasChildren)">
|
||||
<view v-if="!!item.children && item.children.length > 0">
|
||||
<view class="caption u-line-1">
|
||||
{{ item.fullName }}
|
||||
</view>
|
||||
<view class="u-flex u-flex-wrap">
|
||||
<view class="item u-flex-col u-col-center" v-for="(child, ii) in item.children" :key="ii"
|
||||
@click="handelClick(child)">
|
||||
<text class="u-font-40 item-icon" :class="child.icon"
|
||||
:style="{ background: child.iconBackground || '#008cff' }" />
|
||||
<text class="u-font-24 u-line-1 item-text">{{child.fullName}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<NoData v-if="!!current && (!Array.isArray(item.children) || !item.children.length)"></NoData>
|
||||
</view>
|
||||
<NoData v-else></NoData>
|
||||
</view>
|
||||
</mescroll-body>
|
||||
<u-popup v-model="passwordShow" mode="center" length="auto">
|
||||
<view class="jnpf-wrap jnpf-wrap-workflow">
|
||||
<u-form :model="dataForm" :rules="rules" ref="dataForm" label-position="left" label-width="150"
|
||||
label-align="left">
|
||||
<u-form-item label="旧密码" prop="oldPassword" required>
|
||||
<u-input v-model="dataForm.oldPassword" placeholder="旧密码" type="password"></u-input>
|
||||
</u-form-item>
|
||||
<u-form-item label="新密码" prop="password" required>
|
||||
<u-input v-model="dataForm.password" placeholder="新密码" type="password"></u-input>
|
||||
</u-form-item>
|
||||
<u-form-item label="重复密码" prop="repeatPsd" required>
|
||||
<u-input v-model="dataForm.repeatPsd" placeholder="重复密码" type="password"></u-input>
|
||||
</u-form-item>
|
||||
<u-form-item label="验证码" prop="code" required>
|
||||
<view class="u-flex">
|
||||
<u-input v-model="dataForm.code" placeholder="验证码"></u-input>
|
||||
<view style="flex: 0.1">
|
||||
<u-image :showLoading="true" :src="baseURL + imgUrl" width="130px" height="38px"
|
||||
@click="changeCode">
|
||||
</u-image>
|
||||
</view>
|
||||
</view>
|
||||
</u-form-item>
|
||||
<u-button class="buttom-btn" type="primary" @click.stop="dataFormSubmit">
|
||||
{{ "保存" }}
|
||||
</u-button>
|
||||
</u-form>
|
||||
</view>
|
||||
</u-popup>
|
||||
<u-popup v-model="showSelect" mode="top" class="select-box" height="600px">
|
||||
<view :style="{ 'margin-top': statusBarHeight + 44 + 'px' }"></view>
|
||||
<view v-for="(item, index) in userInfo.systemIds" :key="index" class="select-item"
|
||||
@click="selectItem(item, index)">
|
||||
<text class="u-m-r-12 u-font-40"
|
||||
:class="[item.icon, { currentItem: item.id === userInfo.appSystemId }]" />
|
||||
<text class="item-text sysName"
|
||||
:class="{ currentItem: item.id === userInfo.appSystemId }">{{ item.name }}</text>
|
||||
<u-icon name="checkbox-mark " class="currentItem" v-if="item.id === userInfo.appSystemId"></u-icon>
|
||||
</view>
|
||||
</u-popup>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
getMenuList,
|
||||
getUsualList
|
||||
} from "@/api/apply/apply.js";
|
||||
import NoData from '@/components/noData'
|
||||
import {
|
||||
setMajor,
|
||||
updatePassword,
|
||||
getSystemConfig,
|
||||
updatePasswordMessage,
|
||||
} from "@/api/common";
|
||||
import chat from "@/libs/chat.js";
|
||||
import resources from "@/libs/resources.js";
|
||||
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
|
||||
import IndexMixin from "./mixin.js";
|
||||
import md5Libs from "uview-ui/libs/function/md5";
|
||||
export default {
|
||||
mixins: [MescrollMixin, IndexMixin],
|
||||
components: {
|
||||
NoData
|
||||
},
|
||||
data() {
|
||||
var validatePass = (rule, value, callback) => {
|
||||
// const passwordreg = /(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,16}/
|
||||
//是否包含数字
|
||||
const containsNumbers = /[0-9]+/;
|
||||
//是否包含小写字符
|
||||
const includeLowercaseLetters = /[a-z]+/;
|
||||
//是否包含大写字符
|
||||
const includeUppercaseLetters = /[A-Z]+/;
|
||||
//是否包含字符
|
||||
const containsCharacters = /\W/;
|
||||
if (value === "") {
|
||||
callback(new Error("新密码不能为空"));
|
||||
} else if (this.baseForm.passwordStrengthLimit == 1) {
|
||||
if (this.baseForm.passwordLengthMin) {
|
||||
if (value.length < this.baseForm.passwordLengthMinNumber) {
|
||||
callback(
|
||||
new Error(
|
||||
"新密码长度不能小于" +
|
||||
this.baseForm.passwordLengthMinNumber +
|
||||
"位"
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
if (this.baseForm.containsNumbers) {
|
||||
if (!containsNumbers.test(value)) {
|
||||
callback(new Error("新密码必须包含数字"));
|
||||
}
|
||||
}
|
||||
if (this.baseForm.includeLowercaseLetters) {
|
||||
if (!includeLowercaseLetters.test(value)) {
|
||||
callback(new Error("新密码必须包含小写字母"));
|
||||
}
|
||||
}
|
||||
if (this.baseForm.includeUppercaseLetters) {
|
||||
if (!includeUppercaseLetters.test(value)) {
|
||||
callback(new Error("新密码必须包含大写字字母"));
|
||||
}
|
||||
}
|
||||
if (this.baseForm.containsCharacters) {
|
||||
if (!containsCharacters.test(value)) {
|
||||
callback(new Error("新密码必须包含字符"));
|
||||
}
|
||||
}
|
||||
callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
var validatePass2 = (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("重复密码不能为空"));
|
||||
} else if (value !== this.dataForm.password) {
|
||||
callback(new Error("两次密码输入不一致"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
return {
|
||||
topSearch: 80,
|
||||
passwordShow: false,
|
||||
current: 0,
|
||||
bannerList: [{
|
||||
image: resources.banner.home1Url,
|
||||
},
|
||||
{
|
||||
image: resources.banner.home2Url,
|
||||
},
|
||||
{
|
||||
image: resources.banner.home3Url,
|
||||
},
|
||||
],
|
||||
usualList: [],
|
||||
tabsMenuList: [{
|
||||
fullName: "全部功能",
|
||||
}],
|
||||
menuList: [],
|
||||
downOption: {
|
||||
use: true,
|
||||
auto: true,
|
||||
},
|
||||
upOption: {
|
||||
page: {
|
||||
num: 0,
|
||||
size: 50,
|
||||
time: null,
|
||||
},
|
||||
empty: {
|
||||
use: true,
|
||||
icon: resources.message.nodata,
|
||||
tip: "暂无数据",
|
||||
fixed: false,
|
||||
top: "560rpx",
|
||||
},
|
||||
textNoMore: "",
|
||||
},
|
||||
keyword: "",
|
||||
statusBarHeight: "",
|
||||
userInfo: {
|
||||
systemIds: [],
|
||||
}, //CurrentUser接口中的userInfo数据
|
||||
showSelect: false,
|
||||
selectData: {
|
||||
name: "",
|
||||
id: "",
|
||||
},
|
||||
modelId: "",
|
||||
config: {},
|
||||
fullName: "",
|
||||
key: +new Date(),
|
||||
imgUrl: "",
|
||||
timestamp: "",
|
||||
dataForm: {
|
||||
oldPassword: "",
|
||||
password: "",
|
||||
repeatPsd: "",
|
||||
code: "",
|
||||
timestamp: "",
|
||||
},
|
||||
baseForm: {
|
||||
passwordStrengthLimit: 0,
|
||||
passwordLengthMin: false,
|
||||
passwordLengthMinNumber: 0,
|
||||
containsNumbers: false,
|
||||
includeLowercaseLetters: false,
|
||||
includeUppercaseLetters: false,
|
||||
containsCharacters: false,
|
||||
mandatoryModificationOfInitialPassword: 0,
|
||||
},
|
||||
rules: {
|
||||
oldPassword: [{
|
||||
required: true,
|
||||
message: "旧密码不能为空",
|
||||
trigger: "blur",
|
||||
}, ],
|
||||
password: [{
|
||||
required: true,
|
||||
validator: validatePass,
|
||||
trigger: "blur",
|
||||
}, ],
|
||||
repeatPsd: [{
|
||||
required: true,
|
||||
validator: validatePass2,
|
||||
trigger: "blur",
|
||||
}, ],
|
||||
code: [{
|
||||
required: true,
|
||||
message: "验证码不能为空",
|
||||
trigger: "blur",
|
||||
}, ],
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
baseURL() {
|
||||
return this.define.baseURL;
|
||||
},
|
||||
token() {
|
||||
return this.$store.getters.token;
|
||||
},
|
||||
report() {
|
||||
return this.define.report;
|
||||
},
|
||||
hasChildren() {
|
||||
let hasChildren = false
|
||||
for (let i = 0; i < this.menuList.length; i++) {
|
||||
if (this.menuList[i].children && this.menuList[i].children.length) {
|
||||
hasChildren = true
|
||||
break
|
||||
}
|
||||
}
|
||||
return hasChildren
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
passwordShow(val) {
|
||||
if (val) {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.dataForm.setRules(this.rules);
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
onShow() {
|
||||
this.keyword = ""
|
||||
},
|
||||
onLoad() {
|
||||
if (!this.$store.state.chat.socket) chat.initSocket()
|
||||
uni.$on('updateUsualList', data => {
|
||||
this.getUsualList()
|
||||
})
|
||||
uni.$on('refresh', () => {
|
||||
this.menuList = [];
|
||||
this.current = 0;
|
||||
this.mescroll.resetUpScroll();
|
||||
});
|
||||
this.getStatusBarHeight();
|
||||
this.changeCode()
|
||||
},
|
||||
onUnload() {
|
||||
uni.$off("updateUsualList");
|
||||
},
|
||||
methods: {
|
||||
getStatusBarHeight() {
|
||||
let that = this
|
||||
wx.getSystemInfo({
|
||||
success(res) {
|
||||
that.statusBarHeight = res.statusBarHeight;
|
||||
},
|
||||
});
|
||||
// #ifdef APP-PLUS
|
||||
uni.getSystemInfo({
|
||||
success(res) {
|
||||
that.statusBarHeight = res.statusBarHeight;
|
||||
let topSearch = 75 + that.statusBarHeight * 2
|
||||
that.topSearch = topSearch
|
||||
}
|
||||
})
|
||||
// #endif
|
||||
},
|
||||
changeCode() {
|
||||
let timestamp = Math.random();
|
||||
this.timestamp = timestamp;
|
||||
this.imgUrl = `/api/file/ImageCode/${timestamp}`;
|
||||
},
|
||||
dataFormSubmit() {
|
||||
this.$refs["dataForm"].validate((valid) => {
|
||||
if (valid) {
|
||||
let query = {
|
||||
oldPassword: md5Libs.md5(this.dataForm.oldPassword),
|
||||
password: md5Libs.md5(this.dataForm.password),
|
||||
code: this.dataForm.code,
|
||||
timestamp: this.timestamp,
|
||||
};
|
||||
updatePassword(query)
|
||||
.then((res) => {
|
||||
this.$store.dispatch("user/logout").then(() => {
|
||||
uni.reLaunch({
|
||||
url: "/pages/login/index",
|
||||
});
|
||||
});
|
||||
})
|
||||
.catch(() => {
|
||||
this.changeImg();
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
initSysList(res) {
|
||||
this.userInfo = res;
|
||||
if (this.userInfo.systemIds && this.userInfo.systemIds.length) {
|
||||
this.userInfo.systemIds.forEach((item) => {
|
||||
if (item.id == this.userInfo.appSystemId) this.selectData = item
|
||||
});
|
||||
}
|
||||
updatePasswordMessage();
|
||||
getSystemConfig().then((res) => {
|
||||
if (
|
||||
this.userInfo.changePasswordDate == null &&
|
||||
res.data.mandatoryModificationOfInitialPassword == 1
|
||||
) {
|
||||
this.passwordShow = true;
|
||||
}
|
||||
this.baseForm = res.data;
|
||||
});
|
||||
},
|
||||
search() {
|
||||
this.searchTimer && clearTimeout(this.searchTimer);
|
||||
this.searchTimer = setTimeout(() => {
|
||||
this.list = [];
|
||||
this.mescroll.resetUpScroll();
|
||||
}, 300);
|
||||
},
|
||||
getUsualList() {
|
||||
getUsualList(2).then((res) => {
|
||||
this.usualList = res.data.list.map((o) => {
|
||||
const objectData = o.objectData ? JSON.parse(o.objectData) : {};
|
||||
return {
|
||||
...o,
|
||||
...objectData,
|
||||
};
|
||||
});
|
||||
});
|
||||
},
|
||||
upCallback(keyword) {
|
||||
let query = {
|
||||
keyword: this.keyword,
|
||||
};
|
||||
uni.showLoading({
|
||||
title: '正在加载',
|
||||
mask: true
|
||||
})
|
||||
this.$store.dispatch("user/getCurrentUser").then((res) => {
|
||||
this.initSysList(res);
|
||||
this.getUsualList();
|
||||
getMenuList(query)
|
||||
.then((res) => {
|
||||
let list = res.data.list || [];
|
||||
this.tabsMenuList = [{
|
||||
fullName: "全部功能",
|
||||
}];
|
||||
this.mescroll.endSuccess(list.length);
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
let children = list[i].children;
|
||||
let tabsMenuList = {
|
||||
fullName: list[i].fullName,
|
||||
};
|
||||
this.tabsMenuList.push(tabsMenuList);
|
||||
if (Array.isArray(children) && children.length) {
|
||||
for (let j = 0; j < children.length; j++) {
|
||||
let iconBackground = "",
|
||||
moduleId = "";
|
||||
if (children[j].propertyJson) {
|
||||
let propertyJson = JSON.parse(children[j].propertyJson);
|
||||
iconBackground = propertyJson.iconBackgroundColor || "";
|
||||
moduleId = propertyJson.moduleId || "";
|
||||
}
|
||||
this.$set(children[j], "iconBackground", iconBackground);
|
||||
this.$set(children[j], "moduleId", moduleId);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.list = list;
|
||||
this.menuList = list;
|
||||
uni.hideLoading()
|
||||
this.key = +new Date();
|
||||
this.mescroll.endSuccess(this.menuList.length, false);
|
||||
})
|
||||
.catch(() => {
|
||||
this.mescroll.endSuccess(0);
|
||||
this.mescroll.endErr();
|
||||
});
|
||||
});
|
||||
},
|
||||
change(index) {
|
||||
this.current = index;
|
||||
this.fullName = this.tabsMenuList[index].fullName;
|
||||
this.menuList = this.list;
|
||||
this.keyword = ""
|
||||
if (this.current > 0) this.menuList = [this.list[index - 1]];
|
||||
},
|
||||
search() {
|
||||
this.searchTimer && clearTimeout(this.searchTimer);
|
||||
this.searchTimer = setTimeout(() => {
|
||||
this.list = [];
|
||||
this.menuList = [];
|
||||
this.mescroll.resetUpScroll();
|
||||
}, 300);
|
||||
},
|
||||
moreApp() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/workFlow/allApp/index?type=2",
|
||||
});
|
||||
},
|
||||
handelClick(item) {
|
||||
if (item.type == 2) {
|
||||
uni.navigateTo({
|
||||
url: item.urlAddress +
|
||||
"?menuId=" +
|
||||
item.id +
|
||||
"&fullName=" +
|
||||
item.fullName,
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无此页面");
|
||||
},
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (item.type == 3) {
|
||||
this.modelId = item.moduleId;
|
||||
if (!item.moduleId) {
|
||||
this.$u.toast("暂无此页面");
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: "/pages/apply/dynamicModel/index?config=" +
|
||||
this.base64.encode(JSON.stringify(item), "UTF-8"),
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无此页面");
|
||||
},
|
||||
});
|
||||
}
|
||||
if (item.type == 7 || item.type == 5) {
|
||||
let url =
|
||||
encodeURIComponent(item.urlAddress) + "&fullName=" + item.fullName;
|
||||
if (item.type == 5) {
|
||||
url = encodeURIComponent(
|
||||
`${this.report}/preview.html?id=${item.moduleId}&token=${this.token}&page=1&from=menu`
|
||||
);
|
||||
}
|
||||
if (!item.urlAddress && item.type == 7) {
|
||||
this.$u.toast("暂无此页面");
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: "/pages/apply/externalLink/index?url=" +
|
||||
url +
|
||||
"&fullName=" +
|
||||
item.fullName +
|
||||
"&type=" +
|
||||
item.type,
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无此页面");
|
||||
},
|
||||
});
|
||||
// // #ifdef APP-PLUS
|
||||
// plus.runtime.openURL(item.urlAddress);
|
||||
// // #endif
|
||||
// // #ifndef APP-PLUS
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/apply/externalLink/index?url=' + url,
|
||||
// fail: (err) => {
|
||||
// this.$u.toast("暂无此页面")
|
||||
// }
|
||||
// })
|
||||
// // #endif
|
||||
return;
|
||||
}
|
||||
if (item.type == 8) {
|
||||
if (!item.urlAddress) {
|
||||
this.$u.toast("暂无此页面");
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: "/pages/index/scanProtal?id=" + item.moduleId + "&protalType=1" + "&fullName=" + item
|
||||
.fullName,
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无此页面");
|
||||
},
|
||||
});
|
||||
return
|
||||
}
|
||||
},
|
||||
showSelectBox() {
|
||||
if (this.userInfo.systemIds.length <= 1) return;
|
||||
this.showSelect = !this.showSelect;
|
||||
},
|
||||
selectItem(item, index) {
|
||||
if (item.id === this.userInfo.appSystemId) return
|
||||
let query = {
|
||||
majorId: item.id,
|
||||
majorType: "System",
|
||||
menuType: 1,
|
||||
};
|
||||
setMajor(query).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.changeSelData(item, index);
|
||||
this.keyword = "";
|
||||
this.$u.toast(res.msg);
|
||||
this.mescroll.resetUpScroll();
|
||||
}
|
||||
});
|
||||
},
|
||||
changeSelData(item, index) {
|
||||
this.selectData = item
|
||||
this.userInfo.appSystemId = item.id
|
||||
this.showSelect = false
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #f0f2f6;
|
||||
}
|
||||
|
||||
.apply-v {
|
||||
.search-box_sticky {
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.search-box {
|
||||
padding: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.common-block {
|
||||
background-color: #fff;
|
||||
margin: 20rpx 0;
|
||||
|
||||
.caption {
|
||||
padding: 0 32rpx;
|
||||
font-size: 36rpx;
|
||||
line-height: 100rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.item {
|
||||
margin-bottom: 32rpx;
|
||||
width: 25%;
|
||||
|
||||
.item-icon {
|
||||
width: 88rpx;
|
||||
height: 88rpx;
|
||||
margin-bottom: 8rpx;
|
||||
line-height: 88rpx;
|
||||
text-align: center;
|
||||
border-radius: 20rpx;
|
||||
color: #fff;
|
||||
font-size: 56rpx;
|
||||
|
||||
&.more {
|
||||
background: #ececec;
|
||||
color: #666666;
|
||||
font-size: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.item-text {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 0 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav {
|
||||
z-index: 99999;
|
||||
|
||||
/deep/.uni-navbar__content {
|
||||
z-index: 99999;
|
||||
}
|
||||
|
||||
/deep/.uni-navbar__header-container {
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-left {
|
||||
max-width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.nav-left-text {
|
||||
font-weight: 700;
|
||||
font-size: 32rpx;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.right-icons {
|
||||
font-weight: 700;
|
||||
margin-top: 2px;
|
||||
margin-left: 4px;
|
||||
transition-duration: 0.3s;
|
||||
}
|
||||
|
||||
.select-right-icons {
|
||||
transform: rotate(-180deg);
|
||||
}
|
||||
}
|
||||
|
||||
.select-box {
|
||||
.currentItem {
|
||||
color: #2979ff;
|
||||
}
|
||||
|
||||
.select-item {
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 20rpx;
|
||||
font-size: 30rpx;
|
||||
color: #303133;
|
||||
text-align: left;
|
||||
position: relative;
|
||||
|
||||
&::after {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
left: 2%;
|
||||
top: 0;
|
||||
box-sizing: border-box;
|
||||
width: 96%;
|
||||
height: 1px;
|
||||
transform: scale(1, 0.3);
|
||||
border: 0 solid #e4e7ed;
|
||||
z-index: 2;
|
||||
border-bottom-width: 1px;
|
||||
}
|
||||
|
||||
.sysName {
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
min-width: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-box {
|
||||
overflow-y: overlay;
|
||||
height: 112rpx;
|
||||
width: 100%;
|
||||
padding: 20rpx 20rpx;
|
||||
z-index: 10000;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.banner {
|
||||
padding: 0rpx 20rpx 20rpx;
|
||||
background-color: #fff;
|
||||
|
||||
.u-indicator-item-round.u-indicator-item-round-active {
|
||||
background-color: $u-type-primary;
|
||||
}
|
||||
}
|
||||
|
||||
.notice-bar {
|
||||
margin: 20rpx 20rpx 0;
|
||||
background: #fff;
|
||||
border-radius: 8rpx;
|
||||
z-index: 99;
|
||||
color: #303133 !important;
|
||||
}
|
||||
|
||||
.workFlow-list {
|
||||
// padding: 20rpx 20rpx 0;
|
||||
|
||||
.part {
|
||||
background: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.caption {
|
||||
padding: 0 32rpx;
|
||||
font-size: 36rpx;
|
||||
line-height: 100rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.item {
|
||||
margin-bottom: 32rpx;
|
||||
width: 25%;
|
||||
|
||||
.item-icon {
|
||||
width: 88rpx;
|
||||
height: 88rpx;
|
||||
margin-bottom: 8rpx;
|
||||
line-height: 88rpx;
|
||||
text-align: center;
|
||||
border-radius: 20rpx;
|
||||
color: #fff;
|
||||
font-size: 56rpx;
|
||||
|
||||
&.more {
|
||||
background: #ececec;
|
||||
color: #666666;
|
||||
font-size: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.item-text {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 0 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,127 +0,0 @@
|
||||
<template>
|
||||
<view class="contacts-v">
|
||||
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :sticky="true"
|
||||
:down="downOption" :up="upOption" :bottombar="false">
|
||||
<view class="search-box search-box_sticky">
|
||||
<u-search placeholder="请输入关键词搜索" v-model="keyword" height="72" :show-action="false" @change="search"
|
||||
bg-color="#f0f2f6" shape="square">
|
||||
</u-search>
|
||||
</view>
|
||||
<view class="list-cell u-p-l-20 u-p-r-20" v-for="(item, i) in list" :key="i" @click="detail(item.id)">
|
||||
<view class="u-border-bottom list-item u-font-28 u-flex">
|
||||
<u-avatar :src="baseURL+item.headIcon"></u-avatar>
|
||||
<view class="list-cell-txt">
|
||||
<view class="u-font-30 u-m-b-4" style="color: #303133;font-size: 28rpx;">
|
||||
{{item.realName}}/{{item.account}}
|
||||
</view>
|
||||
<view class="u-font-24 department u-m-t-4">{{item.department}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</mescroll-body>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
getImUser
|
||||
} from '@/api/common.js'
|
||||
import resources from '@/libs/resources.js'
|
||||
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
|
||||
import IndexMixin from './mixin.js'
|
||||
export default {
|
||||
mixins: [MescrollMixin, IndexMixin],
|
||||
data() {
|
||||
return {
|
||||
downOption: {
|
||||
use: true,
|
||||
auto: true
|
||||
},
|
||||
upOption: {
|
||||
page: {
|
||||
num: 0,
|
||||
size: 20,
|
||||
time: null
|
||||
},
|
||||
empty: {
|
||||
use: true,
|
||||
icon: resources.message.nodata,
|
||||
tip: "暂无数据",
|
||||
fixed: true,
|
||||
top: "300rpx",
|
||||
},
|
||||
textNoMore: '没有更多数据',
|
||||
},
|
||||
keyword: '',
|
||||
list: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
baseURL() {
|
||||
return this.define.baseURL
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
upCallback(page) {
|
||||
let query = {
|
||||
currentPage: page.num,
|
||||
pageSize: page.size,
|
||||
keyword: this.keyword
|
||||
}
|
||||
getImUser(query, {
|
||||
load: page.num == 1
|
||||
}).then(res => {
|
||||
this.mescroll.endSuccess(res.data.list.length);
|
||||
if (page.num == 1) this.list = [];
|
||||
const list = res.data.list;
|
||||
this.list = this.list.concat(list);
|
||||
}).catch(() => {
|
||||
this.mescroll.endErr();
|
||||
})
|
||||
},
|
||||
search() {
|
||||
// 节流,避免输入过快多次请求
|
||||
this.searchTimer && clearTimeout(this.searchTimer)
|
||||
this.searchTimer = setTimeout(() => {
|
||||
this.list = [];
|
||||
this.mescroll.resetUpScroll();
|
||||
}, 300)
|
||||
},
|
||||
detail(id) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/message/userDetail/index?userId=' + id,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #eef0f4;
|
||||
}
|
||||
|
||||
.contacts-v {
|
||||
|
||||
.list-cell {
|
||||
width: 100%;
|
||||
background-color: #fff;
|
||||
|
||||
.list-item {
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
color: $u-content-color;
|
||||
height: 136rpx;
|
||||
|
||||
.list-cell-txt {
|
||||
margin-left: 20rpx;
|
||||
|
||||
.department {
|
||||
color: #909399;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,321 +0,0 @@
|
||||
<template>
|
||||
<view class="index-v">
|
||||
<view class="search-box_sticky">
|
||||
<view class="reply-item u-border-bottom u-flex " @click="openPage('/pages/message/message/index?type=')">
|
||||
<view class="reply-item-img-sysMsg reply-item-icon u-flex u-row-center reply-item-icon-color2">
|
||||
<text class="icon-ym icon-ym-xitong" />
|
||||
</view>
|
||||
<view class="reply-item-txt u-flex-1">
|
||||
<view class="reply-item-cell reply-item-title u-flex u-row-between">
|
||||
<text class="title">站内消息</text>
|
||||
<text
|
||||
class="u-font-24">{{msgInfo.messageDate?$u.timeFormat(msgInfo.messageDate, 'mm-dd hh:MM'):''}}</text>
|
||||
</view>
|
||||
<view class="reply-item-cell u-flex u-row-between">
|
||||
<text class="reply-item-txt-msg u-line-1 againColor">{{msgInfo.messageText}}</text>
|
||||
<u-badge type="error" :count="msgInfo.messageCount" :absolute="false"
|
||||
v-if="msgInfo.messageCount" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="reply-item u-border-bottom u-flex " @click="openPage('./contacts')">
|
||||
<view class="reply-item-img-sysMsg reply-item-icon u-flex u-row-center reply-item-icon-color">
|
||||
<text class="icon-ym icon-ym-contacts" />
|
||||
</view>
|
||||
<view class="reply-item-txt u-flex-1">
|
||||
<view class="reply-item-cell reply-item-title u-flex u-row-between" style="margin: 0;">
|
||||
<text class="title">通讯录</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<mescroll-body ref="mescrollRef" @down="downCallback" :sticky="false" :up="upOption" :bottombar="false">
|
||||
<view class="replyList">
|
||||
<view class="flow-list">
|
||||
<view class="flow-list-box">
|
||||
<uni-swipe-action ref="swipeAction">
|
||||
<uni-swipe-action-item v-for="(item, index) in list" :key="item.id" :right-options="options"
|
||||
@click="relocation(item.id)">
|
||||
<view class="reply-item u-border-bottom u-flex" @click="toIm(item)" :id="'item'+index"
|
||||
ref="mydom">
|
||||
<view class="reply-item-img">
|
||||
<u-avatar :src="baseURL+item.headIcon" mode="square" size="96" />
|
||||
</view>
|
||||
<view class="reply-item-txt u-flex-1">
|
||||
<view class="reply-item-cell reply-item-title u-flex u-row-between">
|
||||
<text class="title">{{item.realName}}/{{item.account}}</text>
|
||||
<text class="u-font-24 againColor">{{item.latestDate|toDateText}}</text>
|
||||
</view>
|
||||
<view class="reply-item-cell u-flex u-row-between">
|
||||
<text
|
||||
class="reply-item-txt-msg u-line-1 againColor">{{getMsgText(item.latestMessage,item.messageType)}}</text>
|
||||
<u-badge type="error" :count="item.unreadMessage" :absolute="false" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-swipe-action-item>
|
||||
</uni-swipe-action>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</mescroll-body>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
|
||||
import IndexMixin from './mixin.js'
|
||||
import {
|
||||
mapGetters
|
||||
} from "vuex"
|
||||
import {
|
||||
getIMReply,
|
||||
relocation
|
||||
} from '@/api/message.js'
|
||||
export default {
|
||||
mixins: [MescrollMixin, IndexMixin],
|
||||
data() {
|
||||
return {
|
||||
keyword: '',
|
||||
list: [],
|
||||
options: [{
|
||||
text: '移除',
|
||||
style: {
|
||||
backgroundColor: '#dd524d'
|
||||
}
|
||||
}],
|
||||
upOption: {
|
||||
use: false
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
badgeNum(val) {
|
||||
this.setTabBarBadge()
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['msgInfo']),
|
||||
baseURL() {
|
||||
return this.define.baseURL
|
||||
},
|
||||
report() {
|
||||
return this.define.report
|
||||
},
|
||||
token() {
|
||||
return this.$store.getters.token
|
||||
},
|
||||
},
|
||||
onLoad() {
|
||||
uni.$on('updateList', data => {
|
||||
this.updateReply(data)
|
||||
})
|
||||
uni.$on('updateMsgNum', id => {
|
||||
this.updateMsgNum(id)
|
||||
})
|
||||
},
|
||||
onUnload() {
|
||||
uni.$off('updateList')
|
||||
uni.$off('updateMsgNum')
|
||||
},
|
||||
methods: {
|
||||
relocation(id) {
|
||||
relocation(id).then(res => {
|
||||
getIMReply().then(res => {
|
||||
this.list = res.data.list || [];
|
||||
this.mescroll.endSuccess(res.data.list.length, false);
|
||||
uni.hideLoading()
|
||||
}).catch(() => {
|
||||
this.mescroll.endErr();
|
||||
})
|
||||
}).catch(() => {})
|
||||
},
|
||||
isJSON(str) {
|
||||
try {
|
||||
var obj = JSON.parse(str);
|
||||
if (typeof obj == 'object' && obj) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
downCallback(page) {
|
||||
getIMReply().then(res => {
|
||||
this.list = res.data.list || [];
|
||||
this.mescroll.endSuccess(res.data.list.length, false);
|
||||
uni.hideLoading()
|
||||
}).catch(() => {
|
||||
this.mescroll.endErr();
|
||||
})
|
||||
},
|
||||
search() {
|
||||
return
|
||||
this.searchTimer && clearTimeout(this.searchTimer)
|
||||
this.searchTimer = setTimeout(() => {
|
||||
this.list = [];
|
||||
this.mescroll.resetUpScroll();
|
||||
}, 300)
|
||||
},
|
||||
updateReply(data) {
|
||||
let boo = false
|
||||
const len = this.list.length
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (data.id === this.list[i].id) {
|
||||
this.list[i].unreadMessage += data.unreadMessage
|
||||
this.list[i].latestMessage = data.latestMessage
|
||||
this.list[i].messageType = data.messageType
|
||||
this.list[i].latestDate = data.latestDate
|
||||
boo = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if (boo) return
|
||||
data.unreadMessage = data.unreadMessage
|
||||
this.list.unshift(data)
|
||||
},
|
||||
updateMsgNum(id) {
|
||||
const len = this.list.length
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (id === this.list[i].id) {
|
||||
const num = this.list[i].unreadMessage
|
||||
this.$store.commit('chat/REDUCE_BADGE_NUM', num)
|
||||
this.list[i].unreadMessage = 0
|
||||
break
|
||||
}
|
||||
}
|
||||
},
|
||||
getMsgText(text, type) {
|
||||
if (!text) return ""
|
||||
let message = ''
|
||||
switch (type) {
|
||||
case 'voice':
|
||||
message = '[语音]'
|
||||
break;
|
||||
case 'image':
|
||||
message = '[图片]'
|
||||
break;
|
||||
default:
|
||||
message = text
|
||||
break;
|
||||
}
|
||||
return message
|
||||
},
|
||||
openPage(path) {
|
||||
if (!path) return
|
||||
uni.navigateTo({
|
||||
url: path
|
||||
})
|
||||
},
|
||||
toIm(item) {
|
||||
const name = item.realName + '/' + item.account
|
||||
if (item.unreadMessage) {
|
||||
this.$store.commit('chat/REDUCE_BADGE_NUM', item.unreadMessage)
|
||||
item.unreadMessage = 0
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pages/message/im/index?name=' + name + '&formUserId=' + item.id + '&headIcon=' + item
|
||||
.headIcon
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #f0f2f6;
|
||||
}
|
||||
|
||||
.index-v {
|
||||
.search-box_sticky {
|
||||
margin-bottom: 20rpx;
|
||||
padding: 0 20rpx;
|
||||
}
|
||||
|
||||
.replyList {
|
||||
padding: 0 20rpx;
|
||||
background-color: #fff;
|
||||
|
||||
.againColor {
|
||||
color: #909399;
|
||||
}
|
||||
}
|
||||
|
||||
.reply-item {
|
||||
height: 132rpx;
|
||||
background-color: #fff;
|
||||
|
||||
.reply-item-img-sysMsg {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
border-radius: 16rpx;
|
||||
overflow: hidden;
|
||||
margin-right: 16rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.reply-item-img {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
margin-right: 16rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.reply-item-icon-color {
|
||||
background-color: #2bd34f;
|
||||
}
|
||||
|
||||
.reply-item-icon-color2 {
|
||||
background-color: #3B87F7;
|
||||
}
|
||||
|
||||
.reply-item-icon {
|
||||
|
||||
.icon-ym {
|
||||
color: #fff;
|
||||
font-size: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.reply-item-txt {
|
||||
.reply-item-cell {
|
||||
height: 40rpx;
|
||||
color: #C6C6C6;
|
||||
font-size: 24rpx;
|
||||
|
||||
&.reply-item-title {
|
||||
height: 44rpx;
|
||||
margin-bottom: 4px;
|
||||
|
||||
.title {
|
||||
font-size: 28rpx;
|
||||
color: #303133;
|
||||
}
|
||||
}
|
||||
|
||||
.reply-item-txt-msg {
|
||||
width: 480rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-box_sticky {
|
||||
padding: 0 32rpx;
|
||||
}
|
||||
|
||||
.flow-list .uni-swipe {
|
||||
margin-bottom: 0px !important;
|
||||
border-radius: 0px !important;
|
||||
}
|
||||
|
||||
.flow-list .flow-list-box {
|
||||
margin: 0px !important;
|
||||
}
|
||||
</style>
|
@ -1,27 +0,0 @@
|
||||
import {
|
||||
mapGetters
|
||||
} from "vuex"
|
||||
|
||||
export default {
|
||||
computed: {
|
||||
...mapGetters(['badgeNum']),
|
||||
},
|
||||
onShow() {
|
||||
this.setTabBarBadge()
|
||||
},
|
||||
methods: {
|
||||
setTabBarBadge() {
|
||||
const badgeNum = this.badgeNum
|
||||
if (badgeNum) {
|
||||
uni.setTabBarBadge({
|
||||
index: 3,
|
||||
text: badgeNum > 99 ? '99+' : badgeNum.toString()
|
||||
});
|
||||
} else {
|
||||
uni.removeTabBarBadge({
|
||||
index: 3
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,276 +0,0 @@
|
||||
<template>
|
||||
<view class="my-v" v-if="loading">
|
||||
<view class="u-flex user-box u-p-l-20 u-p-r-10 u-p-b-20">
|
||||
<view class="u-m-r-10">
|
||||
<u-avatar size="140" @click='chooseAvatar' :src='avatarSrc'></u-avatar>
|
||||
</view>
|
||||
<view class="u-flex-1 f-right" @click="personalPage('/pages/my/personalData/index')">
|
||||
<view class="u-font-18 u-m-l-16">{{baseInfo.realName}}</view>
|
||||
<view class="u-m-l-10 u-p-10">
|
||||
<u-icon name="arrow-right" color="#969799" size="28"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-m-t-20">
|
||||
<view class="" style="background-color: #fff;">
|
||||
<u-cell-group style="padding: 0 20rpx;" :border="false">
|
||||
<!-- <u-cell-item title="我的组织" @click="openPage('/pages/my/business/index','Organize')"
|
||||
:title-style="titleStyle">
|
||||
<text class="icon-ym icon-ym-zuzhi u-m-r-16 u-font-36" slot="icon" style="color: #303133;" />
|
||||
</u-cell-item>
|
||||
<u-cell-item title=" 我的岗位" @click="openPage('/pages/my/business/index','Position')"
|
||||
:title-style="titleStyle">
|
||||
<text class="icon-ym icon-ym-position1 u-m-r-16 u-font-36" slot="icon"
|
||||
style="color: #303133;" />
|
||||
</u-cell-item>
|
||||
<u-cell-item title="我的下属" @click="openPage('/pages/my/subordinate/index')"
|
||||
:title-style="titleStyle">
|
||||
<text class="icon-ym icon-ym-generator-section u-m-r-16 u-font-36" slot="icon"
|
||||
style="color: #303133;" />
|
||||
</u-cell-item> -->
|
||||
<u-cell-item title="已完成订单" @click="openPage('/pages/my/business/index','Organize')"
|
||||
:title-style="titleStyle">
|
||||
<text class="icon-ym icon-ym-zuzhi u-m-r-16 u-font-36" slot="icon" style="color: #303133;" />
|
||||
</u-cell-item>
|
||||
<u-cell-item title="联系我们" @click="openPage('/pages/my/business/index','Position')"
|
||||
:title-style="titleStyle">
|
||||
<text class="icon-ym icon-ym-position1 u-m-r-16 u-font-36" slot="icon"
|
||||
style="color: #303133;" />
|
||||
</u-cell-item>
|
||||
<u-cell-item title="自动接单" @click="openPage('/pages/my/subordinate/index')"
|
||||
:title-style="titleStyle">
|
||||
<text class="icon-ym icon-ym-generator-section u-m-r-16 u-font-36" slot="icon"
|
||||
style="color: #303133;" />
|
||||
</u-cell-item>
|
||||
<u-cell-item title="设置" @click="openPage('/pages/my/settings/index')" :title-style="titleStyle"
|
||||
:border-bottom="false">
|
||||
<text class="icon-ym icon-ym-shezhi u-m-r-16 u-font-36" slot="icon" style="color: #303133;" />
|
||||
</u-cell-item>
|
||||
<u-cell-item title="消息列表" @click="openPage('/pages/my/settings/index')" :title-style="titleStyle"
|
||||
:border-bottom="false">
|
||||
<text class="icon-ym icon-ym-shezhi u-m-r-16 u-font-36" slot="icon" style="color: #303133;" />
|
||||
</u-cell-item>
|
||||
</u-cell-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-p-t-20">
|
||||
<view class="logout-cell" hover-class="u-cell-hover" @click="logout">退出登录</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import IndexMixin from './mixin.js'
|
||||
import {
|
||||
UpdateAvatar
|
||||
} from '@/api/common'
|
||||
import {
|
||||
UserSettingInfo
|
||||
} from '@/api/common'
|
||||
export default {
|
||||
mixins: [IndexMixin],
|
||||
data() {
|
||||
return {
|
||||
titleStyle: {
|
||||
color: '#303133'
|
||||
},
|
||||
avatarSrc: '',
|
||||
baseInfo: {},
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
baseURL() {
|
||||
return this.define.comUploadUrl
|
||||
},
|
||||
baseURL2() {
|
||||
return this.define.baseURL
|
||||
},
|
||||
token() {
|
||||
return this.$store.getters.token
|
||||
},
|
||||
report() {
|
||||
return this.define.report
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
UserSettingInfo().then(res => {
|
||||
this.baseInfo = res.data || {}
|
||||
this.avatarSrc = this.baseURL2 + this.baseInfo.avatar
|
||||
this.loading = true
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
chooseAvatar() {
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sizeType: ['original', 'compressed'],
|
||||
success: (res) => {
|
||||
let tempFilePaths = res.tempFilePaths[0]
|
||||
uni.uploadFile({
|
||||
url: this.baseURL + 'userAvatar',
|
||||
filePath: tempFilePaths,
|
||||
name: 'file',
|
||||
header: {
|
||||
'Authorization': this.token
|
||||
},
|
||||
success: (uploadFileRes) => {
|
||||
let data = JSON.parse(uploadFileRes.data)
|
||||
UpdateAvatar(data.data.name).then(res => {
|
||||
this.$u.toast('头像更换成功')
|
||||
this.avatarSrc = this.baseURL2 + data.data.url
|
||||
})
|
||||
},
|
||||
fail: (err) => {
|
||||
this.$u.toast('头像更换失败')
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
openPage(path, type) {
|
||||
if (!path) return
|
||||
let url = !!type ? path + '?majorType=' + type : path
|
||||
uni.navigateTo({
|
||||
url: url
|
||||
})
|
||||
},
|
||||
personalPage(path) {
|
||||
if (!path) return
|
||||
uni.navigateTo({
|
||||
url: path + '?baseInfo=' + encodeURIComponent(JSON
|
||||
.stringify(this.baseInfo))
|
||||
})
|
||||
},
|
||||
isJSON(str) {
|
||||
try {
|
||||
var obj = JSON.parse(str);
|
||||
if (typeof obj == 'object' && obj) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
logout() {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确定退出当前账号吗?',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
this.$store.dispatch('user/logout').then(() => {
|
||||
uni.closeSocket()
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
scanCode() {
|
||||
uni.scanCode({
|
||||
success: res => {
|
||||
if (this.isJSON(res.result.trim())) {
|
||||
const result = JSON.parse(res.result.trim())
|
||||
if (result.t === 'ADP') {
|
||||
let config = {
|
||||
isPreview: 1,
|
||||
moduleId: result.id,
|
||||
previewType: result.previewType
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pages/apply/dynamicModel/index?config=' + this.base64
|
||||
.encode(JSON.stringify(config), "UTF-8"),
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无此页面")
|
||||
}
|
||||
})
|
||||
}
|
||||
if (result.t === 'DFD') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/apply/dynamicModel/scanForm?config=' + JSON.stringify(
|
||||
result),
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无此页面")
|
||||
}
|
||||
})
|
||||
}
|
||||
if (result.t === 'WFP') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/workFlow/scanForm/index?config=' + JSON.stringify(
|
||||
result),
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无")
|
||||
}
|
||||
})
|
||||
}
|
||||
if (result.t === 'report') {
|
||||
let url =
|
||||
`${this.report}/preview.html?id=${result.id}&token=${this.token}&page=1&from=menu`
|
||||
uni.navigateTo({
|
||||
url: '/pages/apply/externalLink/index?url=' +
|
||||
encodeURIComponent(
|
||||
url) + '&fullName= ' + result.fullName,
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无")
|
||||
}
|
||||
})
|
||||
}
|
||||
if (result.t === 'portal') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/scanProtal?id=' + result.id,
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无")
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: '/pages/my/scanResult/index?result=' + res.result,
|
||||
fail: (err) => {
|
||||
this.$u.toast("暂无此页面")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #f0f2f6;
|
||||
}
|
||||
|
||||
.my-v {
|
||||
/deep/ .u-cell {
|
||||
height: 112rpx;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.user-box {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.logout-cell {
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
height: 112rpx;
|
||||
background-color: #fff;
|
||||
color: #d9001b;
|
||||
line-height: 112rpx;
|
||||
}
|
||||
|
||||
.f-right {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,180 +0,0 @@
|
||||
<template>
|
||||
<view class="reportLog-v">
|
||||
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :sticky="true"
|
||||
:down="downOption" :up="upOption" :bottombar="false">
|
||||
<view class="search-box_sticky">
|
||||
<u-tabs :list="tabsList" :current="current" @change="change" :is-scroll='false'>
|
||||
</u-tabs>
|
||||
<!-- <view class="search-box">
|
||||
<u-search placeholder="请输入关键词搜索" v-model="keyword" height="72" :show-action="false" @change="search"
|
||||
bg-color="#f0f2f6" shape="square">
|
||||
</u-search>
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="log-list" v-for="(item, index) in list" :key="index">
|
||||
<u-swipe-action :index="index" :show="item.show" @click="handleClick" @open="open" :options="options"
|
||||
@content-click="goDetail(item.id)">
|
||||
<view class="log-list-txt u-flex-col">
|
||||
<view class="u-font-30 u-flex u-m-b-10 log-title">
|
||||
<text class="title u-line-1">{{item.title}}</text>
|
||||
<text>{{item.creatorTime | date('mm-dd')}}</text>
|
||||
</view>
|
||||
<text class="u-m-t-10">{{userInfo.userName}}/{{userInfo.userAccount}}</text>
|
||||
</view>
|
||||
</u-swipe-action>
|
||||
</view>
|
||||
</mescroll-body>
|
||||
<!-- <view class="com-addBtn" @click="goDetail()">
|
||||
<u-icon name="plus" size="60" color="#fff" />
|
||||
</view> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
getSendList,
|
||||
getReceiveList,
|
||||
delLog,
|
||||
getOrderList
|
||||
} from '@/api/apply/reportLog.js'
|
||||
import resources from '@/libs/resources.js'
|
||||
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
|
||||
export default {
|
||||
mixins: [MescrollMixin],
|
||||
data() {
|
||||
return {
|
||||
downOption: {
|
||||
use: true,
|
||||
auto: true
|
||||
},
|
||||
upOption: {
|
||||
page: {
|
||||
num: 0,
|
||||
size: 20,
|
||||
time: null
|
||||
},
|
||||
empty: {
|
||||
use: true,
|
||||
icon: resources.message.nodata,
|
||||
tip: "暂无数据",
|
||||
fixed: true,
|
||||
top: "300rpx",
|
||||
},
|
||||
textNoMore: '没有更多数据',
|
||||
},
|
||||
current: 0,
|
||||
tabsList: [{
|
||||
name: '待接单'
|
||||
},
|
||||
{
|
||||
name: '进行中'
|
||||
}
|
||||
],
|
||||
keyword: '',
|
||||
list: [],
|
||||
userInfo: {},
|
||||
options: [{
|
||||
text: '删除',
|
||||
style: {
|
||||
backgroundColor: '#dd524d'
|
||||
}
|
||||
}]
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.userInfo = uni.getStorageSync('userInfo') || {}
|
||||
uni.$on('refresh', () => {
|
||||
this.list = [];
|
||||
this.current = 0
|
||||
this.mescroll.resetUpScroll();
|
||||
})
|
||||
},
|
||||
onUnload() {
|
||||
uni.$off('refresh')
|
||||
},
|
||||
methods: {
|
||||
upCallback(page) {
|
||||
const method = this.current ? getReceiveList : getSendList
|
||||
let query = {
|
||||
currentPage: page.num,
|
||||
pageSize: page.size,
|
||||
keyword: this.keyword
|
||||
}
|
||||
|
||||
getOrderList(query, {
|
||||
load: page.num == 1
|
||||
}).then(res => {
|
||||
debugger
|
||||
this.mescroll.endSuccess(res.data.list.length);
|
||||
if (page.num == 1) this.list = [];
|
||||
const list = res.data.list.map(o => ({
|
||||
show: false,
|
||||
...o
|
||||
}));
|
||||
this.list = this.list.concat(list);
|
||||
}).catch(() => {
|
||||
this.mescroll.endErr();
|
||||
})
|
||||
},
|
||||
open(index) {
|
||||
this.list[index].show = true;
|
||||
this.list.map((val, idx) => {
|
||||
if (index != idx) this.list[idx].show = false;
|
||||
})
|
||||
},
|
||||
handleClick(index, index1) {
|
||||
const item = this.list[index]
|
||||
delLog(item.id).then(res => {
|
||||
this.$u.toast(res.msg)
|
||||
this.list.splice(index, 1)
|
||||
if (!this.list.length) this.mescroll.resetUpScroll()
|
||||
})
|
||||
},
|
||||
goDetail(id) {
|
||||
const url = './form?type=' + this.current + (id ? '&id=' + id : '')
|
||||
uni.navigateTo({
|
||||
url: url
|
||||
})
|
||||
},
|
||||
change(index) {
|
||||
this.current = index;
|
||||
this.mescroll.resetUpScroll()
|
||||
},
|
||||
search() {
|
||||
this.searchTimer && clearTimeout(this.searchTimer)
|
||||
this.searchTimer = setTimeout(() => {
|
||||
this.list = [];
|
||||
this.mescroll.resetUpScroll();
|
||||
}, 300)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #f0f2f6;
|
||||
}
|
||||
|
||||
.reportLog-v {
|
||||
|
||||
.log-list {
|
||||
width: 100%;
|
||||
margin-bottom: 20rpx;
|
||||
color: #9a9a9a;
|
||||
|
||||
.log-list-txt {
|
||||
padding: 16rpx 32rpx;
|
||||
|
||||
.log-title {
|
||||
justify-content: space-between;
|
||||
|
||||
.title {
|
||||
color: #333333;
|
||||
width: 500rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,123 +0,0 @@
|
||||
<template>
|
||||
<view class="scan-v">
|
||||
<mescroll-body ref="mescrollRef" @down="downCallback" :down="downOption" :sticky="true" @up="upCallback"
|
||||
:up="upOption" :bottombar="false" style="min-height: 100%" @init="mescrollInit">
|
||||
<view class="portal-v">
|
||||
<view v-if="formData.length">
|
||||
<view class="portal-box" v-for="(item,index) in formData" :key="index">
|
||||
<portalItem :item='item' ref="portalItem" :protalData="formData"></portalItem>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else class="portal-v portal-nodata">
|
||||
<view class="u-flex-col" style="align-items: center;">
|
||||
<u-image width="280rpx" height="280rpx" :src="emptyImg"></u-image>
|
||||
<text class="u-m-t-20" style="color: #909399;">暂无数据</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</mescroll-body>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import portalItem from '@/components/visualPortal/components/index.vue'
|
||||
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js"
|
||||
import {
|
||||
getPreviewPortal
|
||||
} from '@/api/portal/portal.js'
|
||||
import {
|
||||
auth
|
||||
} from '@/api/portal/portal.js'
|
||||
import resources from '@/libs/resources.js'
|
||||
export default {
|
||||
mixins: [MescrollMixin],
|
||||
components: {
|
||||
portalItem
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
id: '',
|
||||
show: false,
|
||||
formData: [],
|
||||
dataList: [],
|
||||
emptyImg: resources.message.nodata,
|
||||
fullName: '',
|
||||
downOption: {
|
||||
use: true,
|
||||
auto: true
|
||||
},
|
||||
upOption: {
|
||||
page: {
|
||||
num: 0,
|
||||
size: 50,
|
||||
time: null
|
||||
},
|
||||
empty: {
|
||||
use: false,
|
||||
},
|
||||
textNoMore: '没有更多数据',
|
||||
},
|
||||
protalType: 1
|
||||
}
|
||||
},
|
||||
onLoad(e) {
|
||||
this.id = e.id
|
||||
this.protalType = e.protalType
|
||||
this.fullName = e.fullName
|
||||
uni.setNavigationBarTitle({
|
||||
title: this.fullName || '门户预览'
|
||||
})
|
||||
uni.$on('refresh', () => {
|
||||
this.formData = [];
|
||||
this.mescroll.resetUpScroll();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
upCallback(keyword) {
|
||||
const method = this.protalType == 1 ? auth : getPreviewPortal
|
||||
if (this.protalType != 1) this.mescroll.lockDownScroll(true);
|
||||
method(this.id).then(res => {
|
||||
let data = res.data.formData ? JSON.parse(res.data.formData) : {};
|
||||
this.formData = data.layout ? JSON.parse(JSON.stringify(data.layout)) : [];
|
||||
this.mescroll.endSuccess(this.formData.length);
|
||||
if (!this.formData.length) return
|
||||
this.handelFormData(data)
|
||||
}).catch(() => {
|
||||
this.mescroll.endSuccess(0);
|
||||
this.mescroll.endErr();
|
||||
})
|
||||
},
|
||||
handelFormData(data) {
|
||||
const loop = (list) => {
|
||||
list.forEach(o => {
|
||||
o.allRefresh = data.refresh
|
||||
o.show = false
|
||||
if (o.visibility && o.visibility.length && o.visibility.includes('app')) o.show =
|
||||
true
|
||||
if (o.children && o.children.length) loop(o.children)
|
||||
})
|
||||
this.key = +new Date()
|
||||
}
|
||||
loop(this.formData)
|
||||
this.dataList = this.formData.filter(o => o.show)
|
||||
if (this.dataList.length < 1) {
|
||||
this.formData = this.dataList
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #f0f2f6;
|
||||
}
|
||||
|
||||
/deep/.portal-nodata {
|
||||
position: absolute;
|
||||
top: 450rpx;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
z-index: 100;
|
||||
background-color: #f0f2f6;
|
||||
}
|
||||
</style>
|
@ -1,409 +0,0 @@
|
||||
<template>
|
||||
<view class="workFlow-v">
|
||||
<view class="search-box_sticky">
|
||||
<view class="head-tabs u-flex">
|
||||
<view class="head-tabs-item" @click="openPage('/pages/workFlow/flowLaunch/index')">
|
||||
<text class="icon-ym icon-ym-flowLaunch-app u-m-r-4 icon-style" />
|
||||
<text>我发起的</text>
|
||||
</view>
|
||||
<view class="head-tabs-item" @click="openPage('/pages/workFlow/flowTodo/index')">
|
||||
<text class="icon-ym icon-ym-flowTodo-app u-m-r-4 icon-style" />
|
||||
<text>待办事宜</text>
|
||||
<u-badge type="error" class="badge" :count="count" :absolute="true" :offset="offset">
|
||||
</u-badge>
|
||||
</view>
|
||||
<view class="head-tabs-item" @click="openPage('/pages/workFlow/flowDone/index')">
|
||||
<text class="icon-ym icon-ym-flowDone-app u-m-r-4 icon-style" />
|
||||
<text>已办事宜</text>
|
||||
</view>
|
||||
<view class="head-tabs-item" @click="openPage('/pages/workFlow/flowCopy/index')">
|
||||
<text class="icon-ym icon-ym-flowCopy-app u-m-r-4 icon-style" />
|
||||
<text>抄送我的</text>
|
||||
</view>
|
||||
<view class="head-tabs-item" @click="openPage('/pages/workFlow/entrust/index')">
|
||||
<text class="icon-ym icon-ym-flowEntrust-app u-m-r-4 icon-style" />
|
||||
<text>流程委托</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="search-box">
|
||||
<u-search placeholder="请输入关键词搜索" v-model="keyword" height="72" :show-action="false" @change="search"
|
||||
bg-color="#f0f2f6" shape="square">
|
||||
</u-search>
|
||||
</view>
|
||||
</view>
|
||||
<mescroll-body ref="mescrollRef" @down="downCallback" :down="downOption" :sticky="false" @up="upCallback"
|
||||
:up="upOption" :bottombar="false" style="min-height: 100%" @init="mescrollInit">
|
||||
<view class="common-block">
|
||||
<view class="caption">常用表单</view>
|
||||
<view class="u-flex u-flex-wrap">
|
||||
<view class="item u-flex-col u-col-center" v-for="(item, i) in usualList" :key="i"
|
||||
@click="handelClick(item, 1)">
|
||||
<text class="u-font-40 item-icon" :class="item.icon"
|
||||
:style="{ background: item.iconBackground || '#008cff' }" />
|
||||
<text class="u-font-24 u-line-1 item-text">{{ item.fullName }}</text>
|
||||
</view>
|
||||
<view class="item u-flex-col u-col-center" @click="moreApp">
|
||||
<text class="u-font-40 item-icon more">+</text>
|
||||
<text class="u-font-24 u-line-1 item-text">添加</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<u-tabs :list="categoryList" :current="current" @change="change" :is-scroll="true" name="fullName">
|
||||
</u-tabs>
|
||||
<view class="workFlow-list">
|
||||
<view class="part">
|
||||
<view class="caption u-line-1" v-if="list.length >= 1">{{
|
||||
current === 0 ? "全部流程" : fullName
|
||||
}}</view>
|
||||
<view class="u-flex u-flex-wrap">
|
||||
<view class="item u-flex-col u-col-center" v-for="(child, ii) in list" :key="ii"
|
||||
@click="handelClick(child)">
|
||||
<text class="u-font-40 item-icon" :class="child.icon"
|
||||
:style="{ background: child.iconBackground || '#008cff' }" />
|
||||
<text class="u-font-24 u-line-1 item-text">{{
|
||||
child.fullName
|
||||
}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</mescroll-body>
|
||||
<u-picker mode="selector" v-model="show" :default-selector="[0]" title="请选择流程" :range="selector"
|
||||
range-key="fullName" @confirm="confirm"></u-picker>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
FlowEngineListAll,
|
||||
FlowEnginePageList,
|
||||
getFlowTodoCount,
|
||||
FlowJsonList,
|
||||
} from "@/api/workFlow/flowEngine";
|
||||
import {
|
||||
getUsualList
|
||||
} from "@/api/apply/apply.js";
|
||||
import resources from "@/libs/resources.js";
|
||||
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
|
||||
import IndexMixin from "./mixin.js";
|
||||
import {
|
||||
mapGetters
|
||||
} from "vuex";
|
||||
export default {
|
||||
mixins: [MescrollMixin, IndexMixin],
|
||||
data() {
|
||||
return {
|
||||
selector: [],
|
||||
show: false,
|
||||
activeFlow: {},
|
||||
templateList: [],
|
||||
count: 0,
|
||||
offset: [-12, 55],
|
||||
usualList: [],
|
||||
downOption: {
|
||||
use: true,
|
||||
auto: true,
|
||||
},
|
||||
className: "",
|
||||
upOption: {
|
||||
page: {
|
||||
num: 0,
|
||||
size: 50,
|
||||
time: null,
|
||||
},
|
||||
empty: {
|
||||
use: true,
|
||||
icon: resources.message.nodata,
|
||||
tip: "暂无数据",
|
||||
fixed: false,
|
||||
top: "560rpx",
|
||||
},
|
||||
textNoMore: "没有更多数据",
|
||||
},
|
||||
keyword: "",
|
||||
category: "",
|
||||
current: 0,
|
||||
categoryList: [{
|
||||
fullName: "全部流程",
|
||||
}, ],
|
||||
list: [],
|
||||
fullName: "",
|
||||
loading: false,
|
||||
selectFlowValue: 0,
|
||||
enCode: "",
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
uni.$on("updateUsualList", (data) => {
|
||||
this.getUsualList();
|
||||
});
|
||||
this.getPaymentMethodOptions();
|
||||
uni.$on("refresh", () => {
|
||||
this.list = [];
|
||||
this.current = 0;
|
||||
this.mescroll.resetUpScroll();
|
||||
});
|
||||
},
|
||||
onUnload() {
|
||||
uni.$off("updateUsualList");
|
||||
},
|
||||
onShow() {
|
||||
this.keyword = ""
|
||||
this.setFlowTodoCount()
|
||||
},
|
||||
methods: {
|
||||
setFlowTodoCount() {
|
||||
const query = {
|
||||
flowCirculateType: [],
|
||||
flowDoneType: [],
|
||||
toBeReviewedType: [],
|
||||
}
|
||||
getFlowTodoCount(query).then((res) => {
|
||||
this.count = res.data.toBeReviewed || 0;
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
openPage(path) {
|
||||
if (!path) return;
|
||||
uni.navigateTo({
|
||||
url: path,
|
||||
});
|
||||
},
|
||||
upCallback(page) {
|
||||
this.$nextTick(() => {
|
||||
this.getUsualList();
|
||||
});
|
||||
let query = {
|
||||
currentPage: page.num,
|
||||
pageSize: page.size,
|
||||
keyword: this.keyword,
|
||||
category: this.category == 0 ? "" : this.category,
|
||||
flowType: 0,
|
||||
};
|
||||
this.loading = false;
|
||||
FlowEnginePageList(query, {
|
||||
load: page.num == 1,
|
||||
})
|
||||
.then((res) => {
|
||||
let resData = res.data.list || [];
|
||||
this.mescroll.endSuccess(resData.length);
|
||||
if (page.num == 1) this.list = [];
|
||||
const list = resData.map((o) => ({
|
||||
show: false,
|
||||
...o,
|
||||
}));
|
||||
this.list = this.list.concat(list);
|
||||
this.loading = true;
|
||||
})
|
||||
.catch(() => {
|
||||
this.mescroll.endErr();
|
||||
});
|
||||
},
|
||||
search() {
|
||||
this.searchTimer && clearTimeout(this.searchTimer);
|
||||
this.searchTimer = setTimeout(() => {
|
||||
this.list = [];
|
||||
this.mescroll.resetUpScroll();
|
||||
}, 300);
|
||||
},
|
||||
|
||||
change(index) {
|
||||
this.current = index;
|
||||
this.fullName = this.categoryList[index].fullName;
|
||||
this.category = this.categoryList[index].id ?
|
||||
this.categoryList[index].id :
|
||||
"";
|
||||
this.list = [];
|
||||
this.mescroll.resetUpScroll();
|
||||
},
|
||||
//获取常用
|
||||
getUsualList() {
|
||||
getUsualList(1).then((res) => {
|
||||
this.usualList = res.data.list.map((o) => {
|
||||
const objectData = o.objectData ? JSON.parse(o.objectData) : {};
|
||||
return {
|
||||
...o,
|
||||
...objectData,
|
||||
};
|
||||
});
|
||||
});
|
||||
},
|
||||
getPaymentMethodOptions() {
|
||||
this.$store
|
||||
.dispatch("base/getDictionaryData", {
|
||||
sort: "WorkFlowCategory",
|
||||
})
|
||||
.then((res) => {
|
||||
res.forEach((i) => {
|
||||
this.categoryList.push(i);
|
||||
});
|
||||
});
|
||||
},
|
||||
moreApp() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/workFlow/allApp/index?categoryList=" +
|
||||
encodeURIComponent(JSON.stringify(this.categoryList)),
|
||||
});
|
||||
},
|
||||
confirm(e) {
|
||||
this.activeFlow = this.templateList[e[0]];
|
||||
this.Jump();
|
||||
},
|
||||
Jump() {
|
||||
const config = {
|
||||
id: "",
|
||||
flowId: this.activeFlow.id,
|
||||
opType: "-1",
|
||||
fullName: this.activeFlow.fullName,
|
||||
enCode: this.enCode,
|
||||
};
|
||||
uni.navigateTo({
|
||||
url: "/pages/workFlow/flowBefore/index?config=" +
|
||||
this.base64.encode(JSON.stringify(config), "UTF-8"),
|
||||
});
|
||||
},
|
||||
handelClick(item, type) {
|
||||
this.enCode = item.enCode;
|
||||
FlowJsonList(item.id, "1").then((res) => {
|
||||
this.templateList = res.data;
|
||||
if (!this.templateList.length) {
|
||||
this.$u.toast("流程不存在");
|
||||
} else {
|
||||
if (this.templateList.length > 1) {
|
||||
this.show = true;
|
||||
this.selector = this.templateList;
|
||||
} else {
|
||||
this.activeFlow = this.templateList[0];
|
||||
this.Jump();
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #f0f2f6;
|
||||
}
|
||||
|
||||
.workFlow-v {
|
||||
.common-block {
|
||||
background: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.caption {
|
||||
padding-left: 32rpx;
|
||||
font-size: 36rpx;
|
||||
line-height: 100rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.item {
|
||||
margin-bottom: 32rpx;
|
||||
width: 25%;
|
||||
|
||||
.item-icon {
|
||||
width: 88rpx;
|
||||
height: 88rpx;
|
||||
margin-bottom: 8rpx;
|
||||
line-height: 88rpx;
|
||||
text-align: center;
|
||||
border-radius: 20rpx;
|
||||
color: #fff;
|
||||
font-size: 56rpx;
|
||||
|
||||
&.more {
|
||||
background: #ececec;
|
||||
color: #666666;
|
||||
font-size: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.item-text {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 0 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-box_sticky {
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.search-box {
|
||||
padding: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head-tabs {
|
||||
width: 100%;
|
||||
padding: 0 32rpx;
|
||||
height: 132rpx;
|
||||
overflow-x: scroll;
|
||||
|
||||
.head-tabs-item {
|
||||
width: 25%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 28rpx;
|
||||
color: #303133;
|
||||
line-height: 40rpx;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
|
||||
.icon-style {
|
||||
font-size: 48rpx;
|
||||
color: #303133;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.workFlow-list {
|
||||
margin-top: 20rpx;
|
||||
|
||||
.part {
|
||||
background: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.caption {
|
||||
padding-left: 32rpx;
|
||||
font-size: 36rpx;
|
||||
line-height: 100rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.item {
|
||||
margin-bottom: 32rpx;
|
||||
width: 25%;
|
||||
|
||||
.item-icon {
|
||||
width: 88rpx;
|
||||
height: 88rpx;
|
||||
margin-bottom: 8rpx;
|
||||
line-height: 88rpx;
|
||||
text-align: center;
|
||||
border-radius: 20rpx;
|
||||
color: #fff;
|
||||
font-size: 56rpx;
|
||||
|
||||
&.more {
|
||||
background: #ececec;
|
||||
color: #666666;
|
||||
font-size: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.item-text {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 0 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,110 +0,0 @@
|
||||
@@ -0,0 +1,70 @@
|
||||
<template>
|
||||
<view>
|
||||
<web-view :src="url"></web-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
getTicketStatus,
|
||||
socialsLogin
|
||||
} from '@/api/common.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
url: '',
|
||||
ticket: '',
|
||||
ssoTimer: null,
|
||||
tenantUserInfo: [],
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
this.url = uni.getStorageSync('ssoUrl')
|
||||
this.ticket = option.ssoTicket
|
||||
this.ssoTimer = setInterval(() => {
|
||||
this.getTicketStatus()
|
||||
}, 1000)
|
||||
},
|
||||
onUnload() {
|
||||
this.clearTimer()
|
||||
},
|
||||
methods: {
|
||||
getTicketStatus() {
|
||||
if (!this.ticket) return
|
||||
getTicketStatus(this.ticket).then(res => {
|
||||
if (res.data.status != 2) {
|
||||
this.clearTimer()
|
||||
// 登录成功
|
||||
if (res.data.status == 1) {
|
||||
uni.showLoading({
|
||||
title: '登录中'
|
||||
})
|
||||
this.$store.commit('user/SET_TOKEN', res.data.value)
|
||||
uni.setStorageSync('token', res.data.value)
|
||||
this.$store.dispatch('user/getCurrentUser').then((res) => {
|
||||
uni.hideLoading()
|
||||
uni.reLaunch({
|
||||
url: '/pages/index/portal'
|
||||
});
|
||||
}).catch(() => {
|
||||
uni.hideLoading()
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index'
|
||||
});
|
||||
})
|
||||
} else if (res.data.status == 4) {
|
||||
uni.setStorageSync('ssoTicket', this.ticket)
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index'
|
||||
});
|
||||
|
||||
} else if (res.data.status == 6) {
|
||||
let tenantUserInfo = JSON.parse(res.data.value)
|
||||
if (tenantUserInfo.length == 1) {
|
||||
uni.showLoading({
|
||||
title: '登录中'
|
||||
})
|
||||
this.$store.commit('user/SET_TOKEN', res.data.value)
|
||||
uni.setStorageSync('token', res.data.value)
|
||||
this.$store.dispatch('user/getCurrentUser').then((res) => {
|
||||
uni.hideLoading()
|
||||
uni.reLaunch({
|
||||
url: '/pages/index/portal'
|
||||
});
|
||||
}).catch(() => {
|
||||
uni.hideLoading()
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index'
|
||||
})
|
||||
})
|
||||
} else {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index?data=' + JSON.stringify(tenantUserInfo)
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.show = false
|
||||
this.ssoUrl = ''
|
||||
uni.showToast({
|
||||
title: res.data.value || '操作超时,请重新点击登录',
|
||||
icon: 'none'
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
clearTimer() {
|
||||
if (this.ssoTimer) {
|
||||
clearInterval(this.ssoTimer)
|
||||
this.ssoTimer = null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@ -1,139 +0,0 @@
|
||||
package jnpf.database.config;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import jnpf.base.UserInfo;
|
||||
import jnpf.constant.PermissionConst;
|
||||
import jnpf.permission.entity.OrganizeEntity;
|
||||
import jnpf.permission.entity.UserEntity;
|
||||
import jnpf.permission.service.OrganizeService;
|
||||
import jnpf.util.DateUtil;
|
||||
import jnpf.util.StringUtil;
|
||||
import jnpf.util.UserProvider;
|
||||
import jnpf.util.context.SpringContext;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* MybatisPlus配置类
|
||||
*
|
||||
* @author Allen Pan
|
||||
* @version V3.4.1
|
||||
* @copyright 长江云息
|
||||
* @date 2019年9月27日 上午9:18
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
//@Configuration
|
||||
//@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})})
|
||||
public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
|
||||
|
||||
//@Autowired
|
||||
private static ApplicationContext applicationContext;
|
||||
private UserProvider userProvider;
|
||||
|
||||
private OrganizeService organizeService;
|
||||
|
||||
@Override
|
||||
public void insertFill(MetaObject metaObject) {
|
||||
String companyId = "";
|
||||
// userProvider= applicationContext.getBean(UserProvider.class);
|
||||
UserProvider userProvider = SpringContext.getBean(UserProvider.class);
|
||||
OrganizeService organizeService = SpringContext.getBean(OrganizeService.class);
|
||||
UserInfo userInfo= userProvider.get();
|
||||
List<String> organizeIdList = new ArrayList<>();
|
||||
if(userInfo != null && StringUtil.isNotEmpty(userInfo.getOrganizeId())){
|
||||
OrganizeEntity organizeEntity = organizeService.getInfo(userInfo.getOrganizeId());
|
||||
if (organizeEntity==null){
|
||||
// organizeEntity.setId("-1");
|
||||
organizeIdList.add("-1");
|
||||
}else {
|
||||
organizeIdList.add(organizeEntity.getId());
|
||||
if(PermissionConst.DEPARTMENT.equals(organizeEntity.getCategory())){
|
||||
userInfo.setDepartmentId(organizeEntity.getId());
|
||||
do {
|
||||
//获取父组织
|
||||
organizeEntity = organizeService.getInfo(organizeEntity.getParentId());
|
||||
organizeIdList.add(organizeEntity.getId());
|
||||
}while (PermissionConst.DEPARTMENT.equals(organizeEntity.getCategory()));
|
||||
companyId = organizeEntity.getId();
|
||||
|
||||
}else{
|
||||
companyId = organizeEntity.getId();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
organizeIdList.add("96240625-934F-490B-8AA6-0BC775B18468");
|
||||
Collections.reverse(organizeIdList);
|
||||
String organizeId = JSON.toJSONString(organizeIdList);
|
||||
// 可以在这里填充编码查询到编码规则自动填充
|
||||
// TableInfo tableInfo = this.findTableInfo(metaObject);
|
||||
// String tableName = tableInfo.getTableName();
|
||||
log.info("start insert fill ....");
|
||||
System.out.println(userInfo);
|
||||
this.setFieldValByName("creatorUserId", userInfo.getUserId(), metaObject);
|
||||
|
||||
this.setFieldValByName("creatorTime", DateUtil.getNowDate(), metaObject);
|
||||
|
||||
this.setFieldValByName("creatorUserName", userInfo.getUserName(), metaObject);
|
||||
|
||||
this.setFieldValByName("creatoruserid", userInfo.getUserId(), metaObject);
|
||||
|
||||
this.setFieldValByName("creatortime", DateUtil.getNowDate(), metaObject);
|
||||
|
||||
this.setFieldValByName("creatorusername", userInfo.getUserName(), metaObject);
|
||||
|
||||
this.setFieldValByName("lastModifyUserId", userInfo.getUserId(), metaObject);
|
||||
|
||||
this.setFieldValByName("lastModifyTime", DateUtil.getNowDate(), metaObject);
|
||||
|
||||
this.setFieldValByName("lastModifyUserName", userInfo.getUserName(), metaObject);
|
||||
|
||||
this.setFieldValByName("organizeJsonId", organizeId, metaObject);
|
||||
this.setFieldValByName("companyId", companyId, metaObject);
|
||||
this.setFieldValByName("departmentId", userInfo.getDepartmentId(), metaObject);
|
||||
|
||||
// System.out.println(userProvider.getDepartmentId(userInfo.getUserId()));
|
||||
/* if (userInfo.getUserId()!=null){
|
||||
this.setFieldValByName("departmentId", userProvider.getDepartmentId(userInfo.getUserId()), metaObject);
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateFill(MetaObject metaObject) {
|
||||
log.info("start update fill ....");
|
||||
UserProvider userProvider = SpringContext.getBean(UserProvider.class);
|
||||
System.out.println(userProvider.get());
|
||||
// userProvider= applicationContext.getBean(UserProvider.class);
|
||||
UserInfo userInfo = userProvider.get();
|
||||
|
||||
|
||||
this.setFieldValByName("lastModifyTime", DateUtil.getNowDate(), metaObject);
|
||||
|
||||
|
||||
this.setFieldValByName("lastModifyUserId", userInfo.getUserId(), metaObject);
|
||||
|
||||
this.setFieldValByName("lastModifyUserName", userInfo.getUserName(), metaObject);
|
||||
|
||||
|
||||
this.setFieldValByName("deleteTime", DateUtil.getNowDate(), metaObject);
|
||||
|
||||
this.setFieldValByName("deleteUserId", userInfo.getUserId(), metaObject);
|
||||
|
||||
this.setFieldValByName("deleteUserName", userInfo.getUserName(), metaObject);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIELjCCAxagAwIBAgIUL3BGpENxaOOyw7pbzx/5QVJq1N0wDQYJKoZIhvcNAQEL
|
||||
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
|
||||
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
|
||||
Q0EwHhcNMjQwMzExMDkwMjA4WhcNMjkwMzEwMDkwMjA4WjCBhzETMBEGA1UEAwwK
|
||||
MTY2ODUyNzk1MzEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTMwMQYDVQQL
|
||||
DCrkuIrmtbfplb/msZ/kupHmga/mlbDlrZfnp5HmioDmnInpmZDlhazlj7gxCzAJ
|
||||
BgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQAD
|
||||
ggEPADCCAQoCggEBAOKEZU4HFlimKzHLOgEV8lwJxkJrifWYSSo6l8SbNcv4lEgZ
|
||||
mXha5y3a2XqzCAX3DIfXb5KiV1LP/QyWSAgsTV+g7ryyyP5i9JWvTiyWC8tHLGj5
|
||||
cp58V7ifq6UrXIWSeSt81r33ZHnngDIWYTtHPy3DfU+1+yLlKP3t+5UCWRp7w+DC
|
||||
UZKen9ygAMW9ZXSIB/LasAu6d3h9CVZQd/cVG7pslvO/Iedf1jvVATNx5d08XLSY
|
||||
bQGgenNpRrAIgnWzapa2fiBlHR7vmTI8GimmXEkHXLBy6GUbwrMOuLJ/qVWNtgGs
|
||||
OZ5QKYyAufWfp8nf4ZibU0Mk/ZELr3iWAiJap1UCAwEAAaOBuTCBtjAJBgNVHRME
|
||||
AjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDov
|
||||
L2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUw
|
||||
REJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJF
|
||||
MTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IB
|
||||
AQCt9QtqT/i2d6aJx4TNjuh3CF6WKjphFVAKqnse+3qr6PQR4D8NzgdbAECdBbJt
|
||||
U0R20n4UGMZNijoIy1CaOqJCuLavuU+wZxvQnzFJihjCKWmn8NRs9vYtDaDpbns5
|
||||
X+9Dt/uw1tuvXZbRqg0X+bfPNBDUU/WBFqwQ2XpawVa2v5+BIvYovuOeI01VxuiF
|
||||
MXqs6Lteg3FiMnOFgTYSPq5jcFZK/FvhPGVu8pmPkmDeRoc0jPPNDryvhVeR91cQ
|
||||
kdEgYktuprSWJlXGP+Og4S7DLOBenLnwoB2MzN/E/jE2gHwxfff/ckyGVZ5nC2CJ
|
||||
za+em1H7eL+LTMqdqHRckg0N
|
||||
-----END CERTIFICATE-----
|
@ -1,28 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDihGVOBxZYpisx
|
||||
yzoBFfJcCcZCa4n1mEkqOpfEmzXL+JRIGZl4Wuct2tl6swgF9wyH12+SoldSz/0M
|
||||
lkgILE1foO68ssj+YvSVr04slgvLRyxo+XKefFe4n6ulK1yFknkrfNa992R554Ay
|
||||
FmE7Rz8tw31Ptfsi5Sj97fuVAlkae8PgwlGSnp/coADFvWV0iAfy2rALund4fQlW
|
||||
UHf3FRu6bJbzvyHnX9Y71QEzceXdPFy0mG0BoHpzaUawCIJ1s2qWtn4gZR0e75ky
|
||||
PBopplxJB1ywcuhlG8KzDriyf6lVjbYBrDmeUCmMgLn1n6fJ3+GYm1NDJP2RC694
|
||||
lgIiWqdVAgMBAAECggEAMY2nH8+7Gr+XWXhNAynK8EmPHr6p2plrABr7Up5lwW5q
|
||||
+e7nvQWd51EmHIqH6c4m5pzBosFy+wHXKObDcU5HyvDI6WzvPX9mZEyKfISCpgC2
|
||||
/Wv8oCExi4kaorJ+thXZ/iJ8U+iICYcUa2Cr+qzWbGuEwWhdPUAGnK5wSCPQXFNn
|
||||
oAuC86dD/IWsDgT5UreofNl0Sd4aepq3gNzAqpCKG16golkwMD0vybpaPc4uiwKv
|
||||
CZt06GRfgwOzI4S5kqM/HYptgBQiO6+SKbiS2MKVmamadsN/NIpd/24xH6IYaiMX
|
||||
sXYVd1gYxE8bQ79XdZ6xthLYoLGspGPfYWabym2CLQKBgQD1jITwJ+oVHyDscBan
|
||||
TEJhOaVv7n1dMFka9JAouYYJrhTF2LAwSTmqf3Yp0YrY/ucv9WXRpzO6YBN2bWO+
|
||||
9PCgqgCEFirBEftfaC0CA2D2bpED5iBe6Y09ueJBIWSgzCFDiMlDhVKy0+ZraUZ3
|
||||
WkYNW9CEd3LnhQMnIiEEhsdMywKBgQDsKIIbog39E0hAY/02edH+tVEDjyJrdb2m
|
||||
kqv65sH3NmFsWGWEeZLS0KJomgQdCuEOmdWWFqOIrfs6Ugmu/3g1hzC8O01xJEJr
|
||||
XrI3Nnn+sghsdgHvorRYsb8pRZbPQD24p2MmbQcanPbO2HB8ydeD6G5WYju7Me6l
|
||||
RvnjgHJ4XwKBgFEYE19tDzXijfEII7Mk0Fdjvmt1DBoWuZbZZjLM8qOHxnyAz89i
|
||||
n5Tbe57cAUshBCEmnnXbDo5i5IqcHfEW29Fz06/L0lrpIWek9BhSHVfFtEbhXZd6
|
||||
8paMKVjxOlaQk/vF1RJjmahNqy+WGRuZyMDorbjR6jTkDOKDtvvTt0Z5AoGABPC4
|
||||
ABH8zu2HVmmBE5Gq1fQ/FJ767lqRNBnfZSlMp3pIwXZ78TCF5MkejKekLGNc3+xR
|
||||
7ojctPBG0CqFL1cC0cPZPibTcOl8Rji966/FD5Hz4Sj602OI+E4HnLpq9Dz4zZMa
|
||||
3OPtAR6Ff0BB4ipqysSjAkWd0EW0I1r/wUWfn2sCgYEA3OZ6OBEZ/sTJMGke9/CL
|
||||
3k2mS9jKpqJTZfIUbNtwwhPah/vL13zVfT2srOzL0IPX7SIQGowHhg6NjxUTOayd
|
||||
AGDQs65NfKkyt9+8bf4F93afo9fFQAxcRJ1rqXranscqDRfzdJFCubGIkYq9cN0J
|
||||
6kUN10GoZtQZnCvSdMB8SSs=
|
||||
-----END PRIVATE KEY-----
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.ClientAccountDetailMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.DeliverBlacklistMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.NxFileMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.NxManagerMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,74 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.NxPriceMapper">
|
||||
|
||||
<resultMap id="getNxPriceMap" type="jnpf.entity.NxPriceEntity">
|
||||
<id column="id" property="id"/>
|
||||
<result column="price_code" property="priceCode"/>
|
||||
<result column="buiness_id" property="buinessId"/>
|
||||
<result column="price_type" property="priceType"/>
|
||||
<result column="remak" property="remak"/>
|
||||
<result column="f_creator_time" property="creatorTime"/>
|
||||
<result column="f_creator_user_id" property="creatorUserId"/>
|
||||
<result column="f_last_modify_time" property="lastModifyTime"/>
|
||||
<result column="f_last_modify_user_id" property="lastModifyUserId"/>
|
||||
<result column="creatorUserIds" property="creatorUserIds"/>
|
||||
<result column="lastModifyUserIds" property="lastModifyUserIds"/>
|
||||
<result column="recoveryPrice" property="recoveryPrice"/>
|
||||
<result column="productCode" property="productCode"/>
|
||||
<result column="productName" property="productName"/>
|
||||
<result column="stationName" property="stationName"/>
|
||||
<result column="stationCode" property="stationCode"/>
|
||||
<result column="priceStatus" property="priceStatus"/>
|
||||
<result column="company_id" property="companyId"/>
|
||||
<result column="department_id" property="departmentId"/>
|
||||
<result column="organize_json_id" property="organizeJsonId"/>
|
||||
|
||||
</resultMap>
|
||||
|
||||
<select id="queryByKeyword" resultMap="getNxPriceMap">
|
||||
SELECT
|
||||
a.*,
|
||||
b.recovery_price AS recoveryPrice,
|
||||
c.code AS productCode,
|
||||
c.name AS productName,
|
||||
CASE
|
||||
c.unit
|
||||
WHEN 1 THEN
|
||||
'克'
|
||||
WHEN 2 THEN
|
||||
'千克'
|
||||
WHEN 3 THEN
|
||||
'吨'
|
||||
END unit,
|
||||
e.station_name AS stationName,
|
||||
e.station_code AS stationCode,
|
||||
CASE
|
||||
a.status
|
||||
WHEN 1 THEN
|
||||
'生效'
|
||||
WHEN 2 THEN
|
||||
'失效'
|
||||
END priceStatus,
|
||||
f.f_real_name AS creatorUserIds,
|
||||
g.f_real_name AS lastModifyUserIds
|
||||
FROM
|
||||
nx_price a
|
||||
LEFT JOIN nx_price_product b ON a.id = b.price_id
|
||||
LEFT JOIN nx_product c ON b.product_id = c.id
|
||||
LEFT JOIN nx_price_recycle d ON a.id = d.price_id
|
||||
LEFT JOIN nx_enterprise_recycle_station e ON d.recycle_id = e.id
|
||||
LEFT JOIN base_user f ON f.f_id=a.f_creator_user_id
|
||||
LEFT JOIN base_user g ON g.f_id=a.f_last_modify_user_id
|
||||
${organizeJson} and a.f_delete_mark is null
|
||||
|
||||
|
||||
<if test="nxProductPagination.sidx != null and nxProductPagination.sidx != ''">
|
||||
ORDER BY ${nxProductPagination.sidx} ${nxProductPagination.sort}
|
||||
</if>
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.NxPriceProductMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.NxPriceRecycleMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.NxProductMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.NxWalletMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.RecycleBucketMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.RecycleCameraMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.RecycleCleanOrderMapper">
|
||||
|
||||
<update id="auditBatch">
|
||||
UPDATE NX_RECYCLE_CLEAN_ORDER
|
||||
SET
|
||||
<!-- <choose>-->
|
||||
<!-- <when test="batch.auditStatus == 1">-->
|
||||
|
||||
<!-- </when>-->
|
||||
<!-- <otherwise>-->
|
||||
|
||||
<!-- </otherwise>-->
|
||||
<!-- </choose>-->
|
||||
ADJUST_WEIGHT = WEIGHT,
|
||||
ADJUST_PRICE = TOTAL_PRICE,
|
||||
ADJUST_STATUS = #{batch.adjustStatus},
|
||||
ADJUST_COMM = #{batch.adjustComm},
|
||||
ENTRY_STATUS = #{batch.entryStatus},
|
||||
F_LAST_MODIFY_TIME = #{batch.lastModifyTime},
|
||||
F_LAST_MODIFY_USER_ID = #{batch.lastModifyUserId}
|
||||
WHERE ID IN
|
||||
<foreach collection="batch.ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
</mapper>
|
@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.RecycleDeliveryOrderMapper">
|
||||
|
||||
<update id="auditBatch">
|
||||
UPDATE NX_RECYCLE_DELIVERY_ORDER
|
||||
SET
|
||||
ADJUST_WEIGHT = REPORT_WEIGHT,
|
||||
ADJUST_PRICE = TOTAL_PRICE,
|
||||
ADJUST_STATUS = #{batch.adjustStatus},
|
||||
ADJUST_COMM = #{batch.adjustComm},
|
||||
F_LAST_MODIFY_TIME = #{batch.lastModifyTime},
|
||||
F_LAST_MODIFY_USER_ID = #{batch.lastModifyUserId}
|
||||
WHERE ID IN
|
||||
<foreach collection="batch.ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.RecycleDeviceConfigOneMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.RecycleDeviceMapper">
|
||||
|
||||
<select id="QueryRecycleDevice" resultType="jnpf.entity.RecycleDeviceEntity">
|
||||
SELECT
|
||||
a.id,
|
||||
a.address,
|
||||
a.device_name AS deviceName,
|
||||
a.device_code AS deviceCode
|
||||
FROM
|
||||
nx_recycle_device a
|
||||
${ew.customSqlSegment}
|
||||
<!-- and
|
||||
not exists (select 1 from nx_recycle_staff_device b where a.device_code=b.device_code)
|
||||
-->
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.RecycleOrderProductMapper">
|
||||
<resultMap id="recycleOrderProductRM" type="jnpf.entity.RecycleOrderProductEntity">
|
||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||
<id column="recycle_order_id" jdbcType="VARCHAR" property="recycleOrderId" />
|
||||
<id column="product_id" jdbcType="VARCHAR" property="productId" />
|
||||
<id column="product_name" jdbcType="VARCHAR" property="productName" />
|
||||
<id column="product_actual_weight" jdbcType="VARCHAR" property="productActualWeight" />
|
||||
<id column="recovery_price" jdbcType="VARCHAR" property="recoveryPrice" />
|
||||
<id column="actual_recovery_price" jdbcType="VARCHAR" property="actualRecoveryPrice" />
|
||||
</resultMap>
|
||||
<select id="recycleOrderProductSelect" resultMap="recycleOrderProductRM">
|
||||
SELECT
|
||||
a.id as id,
|
||||
a.recycle_order_id as recycle_order_id,
|
||||
a.product_id as product_id,
|
||||
a.product_actual_weight as product_actual_weight,
|
||||
a.recovery_price as recovery_price,
|
||||
a.actual_recovery_price as actual_recovery_price,
|
||||
b.name as product_name
|
||||
FROM nx_recycle_order_product a
|
||||
left join nx_product as b ON a.product_id = b.id WHERE a.recycle_order_id = #{id}
|
||||
</select>
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.RecycleStaffDeviceMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="jnpf.mapper.SimCardMapper">
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -1,24 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEFDCCAvygAwIBAgIUNon6eDh9zWbnHpoqqgjkYsyCPAowDQYJKoZIhvcNAQEL
|
||||
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
|
||||
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
|
||||
Q0EwHhcNMjQwMzA4MDcxMDU3WhcNMjkwMzA3MDcxMDU3WjBuMRgwFgYDVQQDDA9U
|
||||
ZW5wYXkuY29tIHNpZ24xEzARBgNVBAoMClRlbnBheS5jb20xHTAbBgNVBAsMFFRl
|
||||
bnBheS5jb20gQ0EgQ2VudGVyMQswCQYDVQQGEwJDTjERMA8GA1UEBwwIU2hlblpo
|
||||
ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJUqXCOnWQmrpqLyy6
|
||||
0HfdYezdBfe66CPyAIeqV7sTReRNZvYVONjkhOzVlZ88d0+PmPADGmPskPCrhFCX
|
||||
K5sN5TBfCog+FZPQJ+Ol0JAZKvQkK+smPt2pmVfBth020DCKlc8U0LPAE0nxqF0E
|
||||
30b9NQLdoD77kE0duIpK/b9ASb9UPlR2vcQobXXehzaZph6Wd3ys2rHI2ZbKNicP
|
||||
XqSXtTb86+x734ufKbeGQd0MrV/+LaMc1qNdjx3pjpvbw9WDSQH99nwjGoqOFvU7
|
||||
IhHz5KzIKnJf4ZqLBvkRzK/L5r4MUxrOfWPS3x6yvDNBRqO5d2rCoXAtdAl9LefA
|
||||
G1jDAgMBAAGjgbkwgbYwCQYDVR0TBAIwADALBgNVHQ8EBAMCA/gwgZsGA1UdHwSB
|
||||
kzCBkDCBjaCBiqCBh4aBhGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMv
|
||||
aXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4
|
||||
RUJEMiZzZz1IQUNDNDcxQjY1NDIyRTEyQjI3QTlEMzNBODdBRDFDREY1OTI2RTE0
|
||||
MDM3MTANBgkqhkiG9w0BAQsFAAOCAQEATvBq6b8Zvvz+ld8MZ3VFy61DY5iUALlN
|
||||
Nn2IAan0iVP3bb1FCeYdFJsgGo3hc1C3o2mPbq5FPTO6qYW3fP3bKYlmivNL/tQW
|
||||
IGAWDI1ynhAs/RZZD5ASrzpcJigfXrkh7imMxJO55dEXP2XQfFRMvbeYlcvEIrMt
|
||||
I48TESeHB59/TGI2GTUwt51bXk3k3QJd8iji0w6ZKLtk1Pu0Jx3o2KOw9GEJX47/
|
||||
CkQDl/1i73Q4UPA1GpfR+2X9WPOIHnmznvUzTJATZHwUfJaIrlaY7ky7x20S43xZ
|
||||
YXWK6++q9Pf62QixKUE7WvxtGDnYYWGh7xrAu/aENZ/OxcqieQMeKA==
|
||||
-----END CERTIFICATE-----
|
@ -1,29 +0,0 @@
|
||||
package jnpf.permission.model.user.form;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JNPF开发平台组
|
||||
* @version V3.1.0
|
||||
* @copyright 引迈信息技术有限公司
|
||||
* @date 2021/3/12 15:31
|
||||
*/
|
||||
@Data
|
||||
public class UserResetPasswordForgeForm {
|
||||
|
||||
@Schema(description = "用户id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "新密码,需要 MD5 加密后传输")
|
||||
private String account;
|
||||
@Schema(description = "新密码,需要 MD5 加密后传输")
|
||||
private String userPassword;
|
||||
|
||||
|
||||
@Schema(description = "重复新密码")
|
||||
private String validatePassword;
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
package jnpf.config;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ijpay.core.kit.PayKit;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
/**
|
||||
* 微信支付配置
|
||||
*/
|
||||
@Data
|
||||
@Slf4j
|
||||
@Configuration
|
||||
@ConfigurationProperties(prefix = "wx.pay.v3")
|
||||
public class WxPayProperties {
|
||||
private String appId;//小程序id
|
||||
private String mchId;//商户号
|
||||
private String mchSerialNo;//api证书序列号
|
||||
private String keyPath;//商户私钥
|
||||
private String certPath;//商户公钥 给别人用的
|
||||
private String platformSerialNo;//微信平台 序列号
|
||||
private String platformCertPath;//微信平台 公钥
|
||||
private String apiKey3;//v3秘钥
|
||||
private String notify;//支付回调地址
|
||||
|
||||
public String getSerialNumber() {
|
||||
X509Certificate certificate = PayKit.getCertificate(this.getCertPath());
|
||||
if (certificate == null) {
|
||||
throw new RuntimeException("商户证书序列号获取失败!");
|
||||
}
|
||||
String serialNo = certificate.getSerialNumber().toString(16).toUpperCase();
|
||||
// 提前两天检查证书是否有效
|
||||
boolean isValid = PayKit.checkCertificateIsValid(certificate, this.mchId, -2);
|
||||
log.info("证书是否可用 {} 证书有效期为 {}", isValid, DateUtil.format(certificate.getNotAfter(), DatePattern.NORM_DATETIME_PATTERN));
|
||||
return serialNo;
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package jnpf.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import jnpf.entity.CompanyEntity;
|
||||
|
||||
public interface CompanyMapper extends BaseMapper<CompanyEntity> {
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue