This commit is contained in:
hhl123456789
2024-03-01 18:14:32 +08:00
19 changed files with 944 additions and 955 deletions
+29 -2
View File
@@ -1,3 +1,30 @@
# Mediation-Frontend ## 开发
调解系统PC端服务 ```bash
# 克隆项目
git clone https://gitee.com/y_project/RuoYi-Vue
# 进入项目目录
cd ruoyi-ui
# 安装依赖
npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npmmirror.com
# 启动服务
npm run dev
```
浏览器访问 http://localhost:80
## 发布
```bash
# 构建测试环境
npm run build:stage
# 构建生产环境
npm run build:prod
```
+4 -1
View File
@@ -2,7 +2,7 @@
"name": "ruoyi", "name": "ruoyi",
"version": "3.8.6", "version": "3.8.6",
"description": "调解系统", "description": "调解系统",
"author": "若依", "author": "智慧仲裁",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"dev": "vue-cli-service serve", "dev": "vue-cli-service serve",
@@ -48,13 +48,16 @@
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
"js-cookie": "3.0.1", "js-cookie": "3.0.1",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
"moment": "^2.29.4",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"qrcodejs2": "0.0.2",
"quill": "1.3.7", "quill": "1.3.7",
"screenfull": "5.0.2", "screenfull": "5.0.2",
"sortablejs": "1.10.2", "sortablejs": "1.10.2",
"vue": "2.6.12", "vue": "2.6.12",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
"vue-esign": "^1.1.4",
"vue-meta": "2.4.0", "vue-meta": "2.4.0",
"vue-router": "3.4.9", "vue-router": "3.4.9",
"vuedraggable": "2.24.3", "vuedraggable": "2.24.3",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 394 KiB

+2 -2
View File
@@ -51,12 +51,12 @@ export default {
// 图片数量限制 // 图片数量限制
limit: { limit: {
type: Number, type: Number,
default: 5, default: 1,
}, },
// 大小限制(MB) // 大小限制(MB)
fileSize: { fileSize: {
type: Number, type: Number,
default: 5, // default: 5,
}, },
// 文件类型, 例如['png', 'jpg', 'jpeg'] // 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: { fileType: {
+2 -1
View File
@@ -9,7 +9,8 @@ export default {
name: 'RuoYiDoc', name: 'RuoYiDoc',
data() { data() {
return { return {
url: 'http://doc.ruoyi.vip/ruoyi-vue' // url: 'http://doc.ruoyi.vip/ruoyi-vue'
url: '#'
} }
}, },
methods: { methods: {
+2 -7
View File
@@ -7,15 +7,10 @@
<div class="right-menu"> <div class="right-menu">
<template v-if="device!=='mobile'"> <template v-if="device!=='mobile'">
<!-- <search id="header-search" class="right-menu-item" /> <!-- <search id="header-search" class="right-menu-item" /> -->
<el-tooltip content="源码地址" effect="dark" placement="bottom">
<ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
</el-tooltip>
<el-tooltip content="文档地址" effect="dark" placement="bottom"> <el-tooltip content="文档地址" effect="dark" placement="bottom">
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
</el-tooltip> --> </el-tooltip>
<screenfull id="screenfull" class="right-menu-item hover-effect" /> <screenfull id="screenfull" class="right-menu-item hover-effect" />
+6 -3
View File
@@ -4,7 +4,7 @@ import Cookies from 'js-cookie'
import Element from 'element-ui' import Element from 'element-ui'
import './assets/styles/element-variables.scss' import './assets/styles/element-variables.scss'
import './assets/icons' // icon
import '@/assets/styles/index.scss' // global css import '@/assets/styles/index.scss' // global css
import '@/assets/styles/ruoyi.scss' // ruoyi css import '@/assets/styles/ruoyi.scss' // ruoyi css
import App from './App' import App from './App'
@@ -14,6 +14,8 @@ import directive from './directive' // directive
import plugins from './plugins' // plugins import plugins from './plugins' // plugins
import { download } from '@/utils/request' import { download } from '@/utils/request'
import './assets/icons' // icon
// 引入Iconfont 矢量图标库
import './assets/icon/iconfont.css' import './assets/icon/iconfont.css'
import './permission' // permission control import './permission' // permission control
import { getDicts } from "@/api/system/dict/data"; import { getDicts } from "@/api/system/dict/data";
@@ -37,8 +39,9 @@ import DictTag from '@/components/DictTag'
import VueMeta from 'vue-meta' import VueMeta from 'vue-meta'
// 字典数据组件 // 字典数据组件
import DictData from '@/components/DictData' import DictData from '@/components/DictData'
//画布组件
import vueEsign from 'vue-esign'
import {checkPermi} from '@/utils/permission' import {checkPermi} from '@/utils/permission'
import { statusRole } from '@/utils/permission'
// 全局方法挂载 // 全局方法挂载
Vue.prototype.getDicts = getDicts Vue.prototype.getDicts = getDicts
@@ -51,7 +54,6 @@ Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download Vue.prototype.download = download
Vue.prototype.handleTree = handleTree Vue.prototype.handleTree = handleTree
Vue.prototype.checkPermi = checkPermi Vue.prototype.checkPermi = checkPermi
Vue.prototype.statusRole = statusRole
// 全局组件挂载 // 全局组件挂载
Vue.component('DictTag', DictTag) Vue.component('DictTag', DictTag)
@@ -65,6 +67,7 @@ Vue.component('ImagePreview', ImagePreview)
Vue.use(directive) Vue.use(directive)
Vue.use(plugins) Vue.use(plugins)
Vue.use(VueMeta) Vue.use(VueMeta)
Vue.use(vueEsign)
DictData.install() DictData.install()
/** /**
+4 -2
View File
@@ -100,7 +100,8 @@ export const dynamicRoutes = [
children: [ children: [
{ {
path: 'role/:userId(\\d+)', path: 'role/:userId(\\d+)',
component: () => import('@/views/system/user/authRole'), // component: () => import('@/views/system/user/authRole'),
component: (resolve) => require(['@/views/system/user/authRole'],resolve),
name: 'AuthRole', name: 'AuthRole',
meta: { title: '分配角色', activeMenu: '/system/user' } meta: { title: '分配角色', activeMenu: '/system/user' }
} }
@@ -114,7 +115,8 @@ export const dynamicRoutes = [
children: [ children: [
{ {
path: 'user/:roleId(\\d+)', path: 'user/:roleId(\\d+)',
component: () => import('@/views/system/role/authUser'), // component: () => import('@/views/system/role/authUser'),
component: (resolve) => require(['@/views/system/role/authUser'],resolve),
name: 'AuthUser', name: 'AuthUser',
meta: { title: '分配用户', activeMenu: '/system/role' } meta: { title: '分配用户', activeMenu: '/system/role' }
} }
+1
View File
@@ -126,6 +126,7 @@ export const loadView = (view) => {
return (resolve) => require([`@/views/${view}`], resolve) return (resolve) => require([`@/views/${view}`], resolve)
} else { } else {
// 使用 import 实现生产环境的路由懒加载 // 使用 import 实现生产环境的路由懒加载
// return () => import(`@/views/${view}`)
return (resolve) => require([`@/views/${view}`], resolve) return (resolve) => require([`@/views/${view}`], resolve)
} }
} }
-1
View File
@@ -50,7 +50,6 @@ const user = {
GetInfo({ commit, state }) { GetInfo({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getInfo().then(res => { getInfo().then(res => {
sessionStorage.setItem('caseStatus', JSON.stringify(res.caseStatus))
const user = res.user const user = res.user
const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
-40
View File
@@ -24,7 +24,6 @@ export function checkPermi(value) {
return false return false
} }
} }
/** /**
* 角色权限校验 * 角色权限校验
* @param {Array} value 校验值 * @param {Array} value 校验值
@@ -49,42 +48,3 @@ export function checkRole(value) {
return false return false
} }
} }
/**
* 状态权限校验
* @param {Number} value 校验值
* @returns {Boolean}
*/
export function statusRole(value) {
let caseStatusStr = sessionStorage.getItem('caseStatus');
let caseStatus = [];
caseStatus = JSON.parse(caseStatusStr);
if (caseStatus.length == 0) {
return false
}
// if (caseStatus.includes(value)) {
// // caseStatus.forEach(item => {
// // if (item == value) {
// // return true
// // }
// // });
// for(let i = 0;i < caseStatus.length;i++){
// if(caseStatus[i] == value){
// return true
// }
// }
// } else {
// return false
// }
let flag = null;
for (let i = 0; i < caseStatus.length; i++) {
if (caseStatus[i] == value) {
flag = caseStatus[i]
}
}
if (flag == value) {
return true
} else {
return false
}
}
+2 -5
View File
@@ -17,7 +17,8 @@ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分 // axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
// 超时 // 超时
timeout: 10000 // timeout: 10000
timeout: 15000
}) })
// request拦截器 // request拦截器
@@ -36,10 +37,6 @@ service.interceptors.request.use(config => {
config.params = {}; config.params = {};
config.url = url; config.url = url;
} }
if (config.url === '/caseApplication/mediation') {
// 调解时对于特定的请求设置超时时间为20秒
config.timeout = 20000; // 20秒
}
if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
const requestObj = { const requestObj = {
url: config.url, url: config.url,
@@ -200,9 +200,9 @@ export default {
userId: this.userId userId: this.userId
}).then(res => { }).then(res => {
this.isSecretaryRole = res.data.isSecretaryRole; this.isSecretaryRole = res.data.isSecretaryRole;
if(this.recordArrMediate){ // if(this.recordArrMediate){
this.isSecretaryRole = false // this.isSecretaryRole = false
} // }
}) })
}, },
/**上传地址*/ /**上传地址*/
@@ -14,13 +14,13 @@
<el-form-item label="缴费金额:" prop="feePayable"> <el-form-item label="缴费金额:" prop="feePayable">
<el-input v-model="form.feePayable" :disabled="true"/> <el-input v-model="form.feePayable" :disabled="true"/>
</el-form-item> </el-form-item>
<el-form-item label="申请人缴费凭证:" v-if="form.caseAttachList && form.caseAttachList.length > 0"> <el-form-item label="申请人缴费凭证:" v-if="form.caseAttachList">
<div style="color: #104fad;cursor:pointer" v-for="(item, index) in form.caseAttachList" :key="index" <div style="color: #104fad;cursor:pointer" v-for="(item, index) in form.caseAttachList" :key="index"
@click="preview(item.annexPath)"> @click="preview(item.annexPath)">
{{ item.annexName }} {{ item.annexName }}
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="被申请人缴费凭证:" v-if="form.resCaseAttachList && form.resCaseAttachList.length > 0"> <el-form-item label="被申请人缴费凭证:" v-if="form.resCaseAttachList">
<div style="color: #104fad;cursor:pointer" v-for="(item, index) in form.resCaseAttachList" :key="index" <div style="color: #104fad;cursor:pointer" v-for="(item, index) in form.resCaseAttachList" :key="index"
@click="preview(item.annexPath)"> @click="preview(item.annexPath)">
{{ item.annexName }} {{ item.annexName }}
+2 -1
View File
@@ -41,6 +41,8 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `http://192.168.3.77:8080`,
// target: `http://121.40.189.20:9001`,
target: API, target: API,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
@@ -59,7 +61,6 @@ module.exports = {
}, },
configureWebpack: { configureWebpack: {
name: name, name: name,
devtool: '#eval-source-map',
resolve: { resolve: {
alias: { alias: {
'@': resolve('src') '@': resolve('src')