Compare commits

..

3 Commits

9 changed files with 476 additions and 437 deletions

10
.editorconfig Normal file
View File

@ -0,0 +1,10 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = false
max_line_length = 120
tab_width = 4

32
App.vue
View File

@ -1,37 +1,37 @@
<script setup> <script setup>
import config from './config' import config from './config'
import { getToken } from '@/utils/auth' import {getToken} from '@/utils/auth'
import { useConfigStore } from '@/store' import {useConfigStore} from '@/store'
import { getCurrentInstance } from "vue" import {getCurrentInstance} from "vue"
import { onLaunch } from '@dcloudio/uni-app' import {onLaunch} from '@dcloudio/uni-app'
const { proxy } = getCurrentInstance() const {proxy} = getCurrentInstance()
onLaunch(() => { onLaunch(() => {
initApp() initApp()
}) })
// //
function initApp() { function initApp() {
// //
initConfig() initConfig()
// //
//#ifdef H5 //#ifdef H5
checkLogin() checkLogin()
//#endif //#endif
} }
function initConfig() { function initConfig() {
useConfigStore().setConfig(config) useConfigStore().setConfig(config)
} }
function checkLogin() { function checkLogin() {
if (!getToken()) { if (!getToken()) {
proxy.$tab.reLaunch('/pages/login') proxy.$tab.reLaunch('/pages/login')
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
@import '@/static/scss/index.scss' @import '@/static/scss/index.scss'
</style> </style>

View File

@ -1,10 +1,9 @@
// main.js // main.js
import { createSSRApp } from 'vue' import {createSSRApp} from 'vue'
import App from './App' import App from './App'
import store from './store' // Vuex store如果还在用 import {install} from './plugins' // 自定义插件
import { install } from './plugins' // 自定义插件
import './permission' // 路由权限 import './permission' // 路由权限
import { useDict } from '@/utils/dict' import {useDict} from '@/utils/dict'
// import { createPinia } from 'pinia' // import { createPinia } from 'pinia'
import * as Pinia from 'pinia'; import * as Pinia from 'pinia';
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
@ -12,7 +11,7 @@ import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
export function createApp() { export function createApp() {
const app = createSSRApp(App) const app = createSSRApp(App)
// const pinia = createPinia() // const pinia = createPinia()
const pinia = Pinia.createPinia() const pinia = Pinia.createPinia()
// ✅ 安全注册持久化插件 // ✅ 安全注册持久化插件
if (piniaPluginPersistedstate) { if (piniaPluginPersistedstate) {
pinia.use(piniaPluginPersistedstate) pinia.use(piniaPluginPersistedstate)

View File

@ -1,23 +1,23 @@
{ {
"name" : "若依移动端", "name": "若依移动端",
"appid" : "__UNI__1863D69", "appid": "__UNI__1863D69",
"description" : "", "description": "",
"versionName" : "1.2.0", "versionName": "1.2.0",
"versionCode" : "100", "versionCode": "100",
"transformPx" : false, "transformPx": false,
"app-plus" : { "app-plus": {
"usingComponents" : true, "usingComponents": true,
"nvueCompiler" : "uni-app", "nvueCompiler": "uni-app",
"splashscreen" : { "splashscreen": {
"alwaysShowBeforeRender" : true, "alwaysShowBeforeRender": true,
"waiting" : true, "waiting": true,
"autoclose" : true, "autoclose": true,
"delay" : 0 "delay": 0
}, },
"modules" : {}, "modules": {},
"distribute" : { "distribute": {
"android" : { "android": {
"permissions" : [ "permissions": [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
@ -35,29 +35,29 @@
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
] ]
}, },
"ios" : { "ios": {
"dSYMs" : false "dSYMs": false
}, },
"sdkConfigs" : {} "sdkConfigs": {}
} }
}, },
"quickapp" : {}, "quickapp": {},
"mp-weixin" : { "mp-weixin": {
"appid" : "wxccd7e2a0911b3397", "appid": "wxccd7e2a0911b3397",
"setting" : { "setting": {
"urlCheck" : false, "urlCheck": false,
"es6" : false, "es6": false,
"minified" : true, "minified": true,
"postcss" : true "postcss": true
}, },
"optimization" : { "optimization": {
"subPackages" : true "subPackages": true
}, },
"usingComponents" : true "usingComponents": true
}, },
"vueVersion" : "3", "vueVersion": "3",
"h5" : { "h5": {
"template" : "static/index.html" "template": "static/index.html"
// "devServer" : { // "devServer" : {
// "port" : 30088, // "port" : 30088,
// "https" : false, // "https" : false,
@ -76,10 +76,10 @@
// } // }
// } // }
}, },
"title" : "RuoYi-App", "title": "RuoYi-App",
"router" : { "router": {
"mode" : "hash", "mode": "hash",
"base" : "./" "base": "./"
}
} }
} }
}

View File

@ -1,145 +1,174 @@
{ {
"pages": [{ "pages": [
{
"path": "pages/login", "path": "pages/login",
"style": { "style": {
"navigationBarTitleText": "登录" "navigationBarTitleText": "登录"
} }
}, { },
{
"path": "pages/register", "path": "pages/register",
"style": { "style": {
"navigationBarTitleText": "注册" "navigationBarTitleText": "注册"
} }
}, { },
{
"path": "pages/index", "path": "pages/index",
"style": { "style": {
"navigationBarTitleText": "若依移动端框架", "navigationBarTitleText": "若依移动端框架",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, { },
{
"path": "pages/work/index", "path": "pages/work/index",
"style": { "style": {
"navigationBarTitleText": "工作台" "navigationBarTitleText": "工作台"
} }
}, { },
{
"path": "pages/work/OrderManager/index", "path": "pages/work/OrderManager/index",
"style": { "style": {
"navigationBarTitleText": "订单管理" "navigationBarTitleText": "订单管理"
} }
}, { },
{
"path": "pages/work/BusinessApproval/index", "path": "pages/work/BusinessApproval/index",
"style": { "style": {
"navigationBarTitleText": "商务审批" "navigationBarTitleText": "商务审批"
} }
}, { },
{
"path": "pages/work/FinancialApproval/index", "path": "pages/work/FinancialApproval/index",
"style": { "style": {
"navigationBarTitleText": "财务审批" "navigationBarTitleText": "财务审批"
} }
}, { },
{
"path": "pages/work/OrderApproval/index", "path": "pages/work/OrderApproval/index",
"style": { "style": {
"navigationBarTitleText": "订单审核" "navigationBarTitleText": "订单审核"
} }
},{ },
{
"path": "pages/mine/index", "path": "pages/mine/index",
"style": { "style": {
"navigationBarTitleText": "我的" "navigationBarTitleText": "我的"
} }
}, { },
{
"path": "pages/mine/avatar/index", "path": "pages/mine/avatar/index",
"style": { "style": {
"navigationBarTitleText": "修改头像" "navigationBarTitleText": "修改头像"
} }
}, { },
{
"path": "pages/mine/info/index", "path": "pages/mine/info/index",
"style": { "style": {
"navigationBarTitleText": "个人信息" "navigationBarTitleText": "个人信息"
} }
}, { },
{
"path": "pages/mine/info/edit", "path": "pages/mine/info/edit",
"style": { "style": {
"navigationBarTitleText": "编辑资料" "navigationBarTitleText": "编辑资料"
} }
}, { },
{
"path": "pages/mine/pwd/index", "path": "pages/mine/pwd/index",
"style": { "style": {
"navigationBarTitleText": "修改密码" "navigationBarTitleText": "修改密码"
} }
}, { },
{
"path": "pages/mine/setting/index", "path": "pages/mine/setting/index",
"style": { "style": {
"navigationBarTitleText": "应用设置" "navigationBarTitleText": "应用设置"
} }
}, { },
{
"path": "pages/mine/help/index", "path": "pages/mine/help/index",
"style": { "style": {
"navigationBarTitleText": "常见问题" "navigationBarTitleText": "常见问题"
} }
}, { },
{
"path": "pages/mine/about/index", "path": "pages/mine/about/index",
"style": { "style": {
"navigationBarTitleText": "关于我们" "navigationBarTitleText": "关于我们"
} }
}, { },
{
"path": "pages/common/webview/index", "path": "pages/common/webview/index",
"style": { "style": {
"navigationBarTitleText": "浏览网页" "navigationBarTitleText": "浏览网页"
} }
}, { },
{
"path": "pages/common/textview/index", "path": "pages/common/textview/index",
"style": { "style": {
"navigationBarTitleText": "浏览文本" "navigationBarTitleText": "浏览文本"
} }
},{ },
{
"path": "pages/work/BusinessApproval/OrderDetail", "path": "pages/work/BusinessApproval/OrderDetail",
"style": { "style": {
"navigationBarTitleText": "商务订单详情" "navigationBarTitleText": "商务订单详情"
} }
},{ },
{
"path": "pages/work/FinancialApproval/OrderDetail", "path": "pages/work/FinancialApproval/OrderDetail",
"style": { "style": {
"navigationBarTitleText": "财务订单详情" "navigationBarTitleText": "财务订单详情"
} }
},{ },
{
"path": "pages/work/OrderApproval/OrderDetail", "path": "pages/work/OrderApproval/OrderDetail",
"style": { "style": {
"navigationBarTitleText": "订单审批详情" "navigationBarTitleText": "订单审批详情"
} }
},{ },
{
"path": "pages/work/OrderManager/components/LookData", "path": "pages/work/OrderManager/components/LookData",
"style": { "style": {
"navigationBarTitleText": "订单详情", "navigationBarTitleText": "订单详情",
"props": true // props "props": true
// props
} }
},{ },
{
"path": "pages/work/OrderManager/components/NewAdd", "path": "pages/work/OrderManager/components/NewAdd",
"style": { "style": {
"navigationBarTitleText": "新增订单" "navigationBarTitleText": "新增订单"
} }
},{ },
{
"path": "pages/work/OrderManager/components/EditData", "path": "pages/work/OrderManager/components/EditData",
"style": { "style": {
"navigationBarTitleText": "修改订单", "navigationBarTitleText": "修改订单",
"props": true // props "props": true
// props
} }
}], }
],
"tabBar": { "tabBar": {
"color": "#000000", "color": "#000000",
"selectedColor": "#000000", "selectedColor": "#000000",
"borderStyle": "white", "borderStyle": "white",
"backgroundColor": "#ffffff", "backgroundColor": "#ffffff",
"list": [{ "list": [
{
"pagePath": "pages/index", "pagePath": "pages/index",
"iconPath": "static/images/tabbar/home.png", "iconPath": "static/images/tabbar/home.png",
"selectedIconPath": "static/images/tabbar/home_.png", "selectedIconPath": "static/images/tabbar/home_.png",
"text": "首页" "text": "首页"
}, { },
{
"pagePath": "pages/work/index", "pagePath": "pages/work/index",
"iconPath": "static/images/tabbar/work.png", "iconPath": "static/images/tabbar/work.png",
"selectedIconPath": "static/images/tabbar/work_.png", "selectedIconPath": "static/images/tabbar/work_.png",
"text": "工作台" "text": "工作台"
}, { },
{
"pagePath": "pages/mine/index", "pagePath": "pages/mine/index",
"iconPath": "static/images/tabbar/mine.png", "iconPath": "static/images/tabbar/mine.png",
"selectedIconPath": "static/images/tabbar/mine_.png", "selectedIconPath": "static/images/tabbar/mine_.png",

View File

@ -1,11 +1,11 @@
<template> <template>
<view class="work-container"> <view class="work-container">
<!-- 轮播图 --> <!-- 轮播图 -->
<uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content"> <uni-swiper-dot :current="current" :info="data" class="uni-swiper-dot-box" field="content">
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper"> <swiper :current="swiperDotIndex" class="swiper-box" @change="changeSwiper">
<swiper-item v-for="(item, index) in data" :key="index"> <swiper-item v-for="(item, index) in data" :key="index">
<view class="swiper-item" @click="clickBannerItem(item)"> <view class="swiper-item" @click="clickBannerItem(item)">
<image :src="item.image" mode="aspectFill" :draggable="false" /> <image :draggable="false" :src="item.image" mode="aspectFill"/>
</view> </view>
</swiper-item> </swiper-item>
</swiper> </swiper>
@ -16,74 +16,74 @@
<view class="grid-body"> <view class="grid-body">
<uni-grid :column="4" :showBorder="false" @change="changeGrid"> <uni-grid :column="4" :showBorder="false" @change="changeGrid">
<uni-grid-item @click="gotoOrderManager"> <uni-grid-item @click="gotoOrderManager">
<view class="grid-item-box" > <view class="grid-item-box">
<uni-icons type="person-filled" size="30"></uni-icons> <uni-icons size="30" type="person-filled"></uni-icons>
<text class="text">订单管理</text> <text class="text">订单管理</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item @click="gotoBusiness"> <uni-grid-item @click="gotoOrder">
<view class="grid-item-box" > <view class="grid-item-box">
<uni-icons type="person-filled" size="30"></uni-icons> <uni-icons size="30" type="person-filled"></uni-icons>
<text class="text">商务审批</text> <text class="text">订单审核</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item @click="gotoFinalcial"> <uni-grid-item @click="gotoFinalcial">
<view class="grid-item-box" > <view class="grid-item-box">
<uni-icons type="person-filled" size="30"></uni-icons> <uni-icons size="30" type="person-filled"></uni-icons>
<text class="text">财务审批</text> <text class="text">财务审批</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item @click="gotoOrder"> <uni-grid-item @click="gotoBusiness">
<view class="grid-item-box" > <view class="grid-item-box">
<uni-icons type="person-filled" size="30"></uni-icons> <uni-icons size="30" type="person-filled"></uni-icons>
<text class="text">订单审核</text> <text class="text">商务审批</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item> <uni-grid-item>
<view class="grid-item-box" @click="jiansheing"> <view class="grid-item-box" @click="jiansheing">
<uni-icons type="staff-filled" size="30"></uni-icons> <uni-icons size="30" type="staff-filled"></uni-icons>
<text class="text">角色管理</text> <text class="text">角色管理</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item> <uni-grid-item>
<view class="grid-item-box" @click="jiansheing"> <view class="grid-item-box" @click="jiansheing">
<uni-icons type="color" size="30"></uni-icons> <uni-icons size="30" type="color"></uni-icons>
<text class="text">菜单管理</text> <text class="text">菜单管理</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item> <uni-grid-item>
<view class="grid-item-box" @click="jiansheing"> <view class="grid-item-box" @click="jiansheing">
<uni-icons type="settings-filled" size="30"></uni-icons> <uni-icons size="30" type="settings-filled"></uni-icons>
<text class="text">部门管理</text> <text class="text">部门管理</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item> <uni-grid-item>
<view class="grid-item-box" @click="jiansheing"> <view class="grid-item-box" @click="jiansheing">
<uni-icons type="heart-filled" size="30"></uni-icons> <uni-icons size="30" type="heart-filled"></uni-icons>
<text class="text">岗位管理</text> <text class="text">岗位管理</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item> <uni-grid-item>
<view class="grid-item-box" @click="jiansheing"> <view class="grid-item-box" @click="jiansheing">
<uni-icons type="bars" size="30"></uni-icons> <uni-icons size="30" type="bars"></uni-icons>
<text class="text">字典管理</text> <text class="text">字典管理</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item> <uni-grid-item>
<view class="grid-item-box" @click="jiansheing"> <view class="grid-item-box" @click="jiansheing">
<uni-icons type="gear-filled" size="30"></uni-icons> <uni-icons size="30" type="gear-filled"></uni-icons>
<text class="text">参数设置</text> <text class="text">参数设置</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item> <uni-grid-item>
<view class="grid-item-box"> <view class="grid-item-box">
<uni-icons type="chat-filled" size="30"></uni-icons> <uni-icons size="30" type="chat-filled"></uni-icons>
<text class="text">通知公告</text> <text class="text">通知公告</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
<uni-grid-item> <uni-grid-item>
<view class="grid-item-box"> <view class="grid-item-box">
<uni-icons type="wallet-filled" size="30"></uni-icons> <uni-icons size="30" type="wallet-filled"></uni-icons>
<text class="text">日志管理</text> <text class="text">日志管理</text>
</view> </view>
</uni-grid-item> </uni-grid-item>
@ -93,75 +93,77 @@
</template> </template>
<script setup> <script setup>
import { ref, getCurrentInstance } from "vue" import {getCurrentInstance, ref} from "vue"
const { proxy } = getCurrentInstance() const {proxy} = getCurrentInstance()
const current = ref(0) const current = ref(0)
const swiperDotIndex = ref(0) const swiperDotIndex = ref(0)
const data = ref([{ image: '/static/images/banner/banner02.jpg' }, { image: '/static/images/banner/banner03.jpg' }]) const data = ref([{image: '/static/images/banner/banner02.jpg'}, {image: '/static/images/banner/banner03.jpg'}])
function clickBannerItem(item) { function clickBannerItem(item) {
console.info(item) console.info(item)
} }
function changeSwiper(e) { function changeSwiper(e) {
current.value = e.detail.current current.value = e.detail.current
} }
function changeGrid(e) { function changeGrid(e) {
// proxy.$modal.showToast('~') // proxy.$modal.showToast('~')
} }
function jiansheing(e) {
proxy.$modal.showToast('模块建设中~')
}
const gotoBusiness = () =>{ function jiansheing(e) {
proxy.$modal.showToast('模块建设中~')
}
const gotoBusiness = () => {
uni.navigateTo({ uni.navigateTo({
url:'/pages/work/BusinessApproval/index' url: '/pages/work/BusinessApproval/index'
}) })
} }
const gotoFinalcial = () =>{ const gotoFinalcial = () => {
uni.navigateTo({ uni.navigateTo({
url:'/pages/work/FinancialApproval/index' url: '/pages/work/FinancialApproval/index'
}) })
} }
const gotoOrder = () =>{ const gotoOrder = () => {
uni.navigateTo({ uni.navigateTo({
url:'/pages/work/OrderApproval/index' url: '/pages/work/OrderApproval/index'
}) })
} }
const gotoOrderManager = () =>{ const gotoOrderManager = () => {
uni.navigateTo({ uni.navigateTo({
url:'/pages/work/OrderManager/index' url: '/pages/work/OrderManager/index'
}) })
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
page { page {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
box-sizing: border-box; box-sizing: border-box;
background-color: #fff; background-color: #fff;
min-height: 100%; min-height: 100%;
height: auto; height: auto;
} }
view { view {
font-size: 14px; font-size: 14px;
line-height: inherit; line-height: inherit;
} }
/* #endif */
.text { /* #endif */
.text {
text-align: center; text-align: center;
font-size: 26rpx; font-size: 26rpx;
margin-top: 10rpx; margin-top: 10rpx;
} }
.grid-item-box { .grid-item-box {
flex: 1; flex: 1;
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
display: flex; display: flex;
@ -170,23 +172,22 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 15px 0; padding: 15px 0;
} }
.uni-margin-wrap { .uni-margin-wrap {
width: 690rpx; width: 690rpx;
width: 100%; width: 100%;;
; }
}
.swiper { .swiper {
height: 300rpx; height: 300rpx;
} }
.swiper-box { .swiper-box {
height: 150px; height: 150px;
} }
.swiper-item { .swiper-item {
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
display: flex; display: flex;
/* #endif */ /* #endif */
@ -196,9 +197,9 @@
color: #fff; color: #fff;
height: 300rpx; height: 300rpx;
line-height: 300rpx; line-height: 300rpx;
} }
@media screen and (min-width: 500px) { @media screen and (min-width: 500px) {
.uni-swiper-dot-box { .uni-swiper-dot-box {
width: 400px; width: 400px;
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
@ -210,5 +211,5 @@
.image { .image {
width: 100%; width: 100%;
} }
} }
</style> </style>

View File

@ -1,4 +1,4 @@
import { getToken } from '@/utils/auth' import {getToken} from '@/utils/auth'
// 登录页面 // 登录页面
const loginPage = "/pages/login" const loginPage = "/pages/login"
@ -21,14 +21,14 @@ list.forEach(item => {
invoke(to) { invoke(to) {
if (getToken()) { if (getToken()) {
if (to.url === loginPage) { if (to.url === loginPage) {
uni.reLaunch({ url: "/" }) uni.reLaunch({url: "/"})
} }
return true return true
} else { } else {
if (checkWhite(to.url)) { if (checkWhite(to.url)) {
return true return true
} }
uni.reLaunch({ url: loginPage }) uni.reLaunch({url: loginPage})
return false return false
} }
}, },