Browse Source

上线后版本(6.07)

dev
renguanyu111 4 years ago
parent
commit
65e976b0cd
  1. 1
      .env.development
  2. 2
      .env.production
  3. 1
      package.json
  4. 1
      public/index.html
  5. 89
      src/api/copyTwo.js
  6. 26
      src/api/dutys.js
  7. 22
      src/api/user.js
  8. 11
      src/router/index.js
  9. 89
      src/utils/request1.js
  10. 162
      src/views/approvalData/index.vue
  11. 213
      src/views/approvalList/index.vue
  12. 49
      src/views/ce/index.vue
  13. 4
      src/views/login/dingxingLogin.vue
  14. 4
      src/views/login/quantitativeListLogin.vue
  15. 378
      src/views/login/wxLogin.vue
  16. 323
      src/views/login/zerenLogin copy.vue
  17. 11
      src/views/login/zerenLogin.vue
  18. 7
      src/views/login/zhenggaiLogin.vue
  19. 14
      src/views/mete/index.vue
  20. 224
      src/views/qualitative/index.vue
  21. 158
      src/views/quantitativeList/index.vue
  22. 116
      src/views/rectification/index.vue
  23. 109
      src/views/responsible/index.vue
  24. 4
      workspace.code-workspace

1
.env.development

@ -3,3 +3,4 @@ ENV = 'development'
# base api # base api
VUE_APP_BASE_API = 'http://vue.user.net/api' VUE_APP_BASE_API = 'http://vue.user.net/api'
VUE_APP_BASE_API1 = 'http://vue.user.net/hrapi'

2
.env.production

@ -3,4 +3,4 @@ ENV = 'production'
# base api # base api
VUE_APP_BASE_API = '/api' VUE_APP_BASE_API = '/api'
VUE_APP_BASE_API1 = '/hrapi'

1
package.json

@ -48,6 +48,7 @@
"serve-static": "1.13.2", "serve-static": "1.13.2",
"svg-sprite-loader": "4.1.3", "svg-sprite-loader": "4.1.3",
"svgo": "1.2.2", "svgo": "1.2.2",
"vue-awesome-swiper": "^3.1.3",
"vue-template-compiler": "2.6.10" "vue-template-compiler": "2.6.10"
}, },
"browserslist": [ "browserslist": [

1
public/index.html

@ -6,6 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title> <title><%= webpackConfig.name %></title>
<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script> <script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
</head> </head>

89
src/api/copyTwo.js

@ -0,0 +1,89 @@
import request from '@/utils/request1'
//添加职位(岗位)
export const stafflist = (data) => {
return request({
url: '/staff/stafflist',
method: 'post',
data: data
})
}
//添加职位(岗位)
export const addpositioncont = (data) => {
return request({
url: '/org/addpositioncont',
method: 'post',
data: data
})
}
//获取职位(岗位)详情
export const getpositioncont = (data) => {
return request({
url: '/org/getpositioncont',
method: 'post',
data: data
})
}
//编辑职位(岗位)状态或删除
export const eitepositionstateordel = (data) => {
return request({
url: '/org/eitepositionstateordel',
method: 'post',
data: data
})
}
//职位(岗位)列表
export const positionlist = (data) => {
return request({
url: '/org/positionlist',
method: 'post',
data: data
})
}
//编辑职位(岗位)
export const eitepositioncont = (data) => {
return request({
url: '/org/eitepositioncont',
method: 'post',
data: data
})
}
//职务列表
export const dutieslist = (data) => {
return request({
url: '/org/dutieslist',
method: 'post',
data: data
})
}
//行政组织列表
export const govlist = (data) => {
return request({
url: '/org/govlist',
method: 'post',
data: data
})
}
//行政组织树
export const govthree = (data) => {
return request({
url: '/org/govthree',
method: 'post',
data: data
})
}
//岗位(职位)配权
export const getpositionrole = (data) => {
return request({
url: '/org/getpositionrole',
method: 'post',
data: data
})
}
//岗位(职位)配权
export const positionallotment = (data) => {
return request({
url: '/permit/positionallotment',
method: 'post',
data: data
})
}

26
src/api/dutys.js

@ -129,7 +129,7 @@ export const getgroupuser = (data) => {
//划分责任人 //划分责任人
export const adddivisionresponsibility = (data) => { export const adddivisionresponsibility = (data) => {
return request({ return request({
url: '/eval/rersonincharge', url: '/qual/divisionresponsibility',
method: 'post', method: 'post',
data: data data: data
}) })
@ -230,4 +230,28 @@ export const plusorminuspoints = (data) => {
data: data data: data
}) })
} }
//定性审批
export const operation = (data) => {
return request({
url: '/qual/operation',
method: 'post',
data: data
})
}
//定量审核通过或者驳回
export const sanction = (data) => {
return request({
url: '/quan/sanction',
method: 'post',
data: data
})
}
//整改措施
export const amendmeasures = (data) => {
return request({
url: '/qual/amendmeasures',
method: 'post',
data: data
})
}

22
src/api/user.js

@ -43,9 +43,31 @@ export const mylogin = (data) => {
data: data data: data
}) })
} }
// @Summary 超级登录
// @Produce application/json
// @Param data body {username:"string",password:"string"}
// @Router /base/login [post]
export const scancodelogin = (data) => {
return request({
url: '/base/scancodelogin',
method: 'post',
data: data
})
}
export function logout() { export function logout() {
return request({ return request({
url: '/vue-admin-template/user/logout', url: '/vue-admin-template/user/logout',
method: 'post' method: 'post'
}) })
} }
// @Summary 查询个人信息
// @Produce application/json
// @Param data body {username:"string",password:"string"}
// @Router /base/login [post]
export const scancode = (data) => {
return request({
url: '/noverify/scancode',
method: 'post',
data: data
})
}

11
src/router/index.js

@ -33,14 +33,19 @@ import Layout from '@/layout'
export const constantRoutes = [ export const constantRoutes = [
{ {
path: '/login', path: '/login',
component: () => import('@/views/login/index'), component: () => import('@/views/login/wxLogin'),
hidden: true hidden: true
}, },
{ {
path: '/ceshi', path: '/ceshi',
component: () => import('@/views/ceshi/index'), component: () => import('@/views/ce/index'),
hidden: true // hidden: true
}, },
// {
// path: '/ceshi',
// component: () => import('@/views/ceshi/index'),
// hidden: true
// },
{ {
path: '/zerenLogin', path: '/zerenLogin',
component: () => import('@/views/login/zerenLogin'), component: () => import('@/views/login/zerenLogin'),

89
src/utils/request1.js

@ -0,0 +1,89 @@
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken,getKey } from '@/utils/auth'
// create an axios instance
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API1, // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests
timeout: 180000 // request timeout
})
// request interceptor
service.interceptors.request.use(
config => {
// do something before request is sent
if (store.getters.token) {
// let each request carry token
// ['X-Token'] is a custom headers key
// please modify it according to the actual situation
config.headers['user-token'] = getToken()
config.headers['user-key'] = getKey()
}
return config
},
error => {
// do something with request error
console.log(error) // for debug
return Promise.reject(error)
}
)
// response interceptor
service.interceptors.response.use(
/**
* If you want to get http information such as headers or status
* Please return response => response
*/
/**
* Determine the request status by custom code
* Here is just an example
* You can also judge the status by HTTP Status Code
*/
response => {
const res = response.data
// if the custom code is not 20000, it is judged as an error.
if (res.code !== 0) {
if(res.code === 7){
store.commit('user/loginOut')
}
Message({
message: res.msg || 'Error',
type: 'error',
duration: 5 * 1000
})
// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
// to re-login
MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
confirmButtonText: 'Re-Login',
cancelButtonText: 'Cancel',
type: 'warning'
}).then(() => {
store.dispatch('user/resetToken').then(() => {
location.reload()
})
})
}
return Promise.reject(new Error(res.msg || 'Error'))
} else {
return res
}
},
error => {
console.log('err' + error) // for debug
Message({
message: error.msg,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
export default service

162
src/views/approvalData/index.vue

@ -66,7 +66,7 @@
:visible.sync="drawer" :visible.sync="drawer"
direction="rtl" direction="rtl"
> >
<el-card class="box-card" style="margin-bottom: 10px;"> <el-card class="box-card1" style="margin-bottom: 10px;" :body-style="{ padding: '10px' }">
<p class="xiao">审批编号{{xinglist.orderid}}</p> <p class="xiao">审批编号{{xinglist.orderid}}</p>
<p class="da"> <p class="da">
{{xinglist.title}} {{xinglist.title}}
@ -103,34 +103,59 @@
<el-descriptions-item label="内容">{{item.reccont}}</el-descriptions-item> <el-descriptions-item label="内容">{{item.reccont}}</el-descriptions-item>
<el-descriptions-item label="时间">{{item.timeval}}</el-descriptions-item> <el-descriptions-item label="时间">{{item.timeval}}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card>
<el-card class="box-card" style="margin-bottom: 10px;" v-if="xinglist.enclosure!=null">
<div slot="header" class="clearfix">
<span>附件</span>
</div>
<el-carousel v-if="imgList!=null" type="card" height="100px" :autoplay="false">
<el-carousel-item v-for="(img,index) in imgList" :key="index">
<el-image
style="width: 100px; height: 100px;"
:src="img"
:preview-src-list="imgList">
</el-image>
</el-carousel-item>
</el-carousel>
<!-- <div style="">
<el-image
v-for="(img,index) in imgList" :key="index"
style="width: 100px; height: 100px;margin-right: 5px;"
:src="img"
:preview-src-list="imgList">
</el-image>
</div> -->
<el-row v-for="(itema,index) in xinglist.enclosure" :key="index">
<el-col :span="24" v-if="itema.type!=1" style="margin-top: 10px;">
<i class="el-icon-document"></i>
<a :href="itema.filepath" :download="itema.filename">{{itema.filename}}</a>
</el-col>
</el-row>
</el-card> </el-card>
<el-card class="box-card"> <el-card class="box-card">
<el-steps direction="vertical" :active="xingbuzhou">
<el-steps direction="vertical" :active="buzhou">
<el-step v-for="(item,index) in xinglist.flowmapall" :key="index" :title="item.nodename" icon="el-icon-circle-check" > <el-step v-for="(item,index) in xinglist.flowmapall" :key="index" :title="item.nodename" icon="el-icon-circle-check" >
<!-- <template slot="description">
<p style="color: rgb(153,153,153);" v-for="(a,index) in item.userlist" >
<el-avatar style="margin-right: 5px;" shape="square" size="medium" :src="a.icon"></el-avatar>
{{a.workshopname}}-{{a.postname}}-{{a.name}}
<template v-if="a.log!=null">
<el-tag v-if="a.log.state==2">通过</el-tag>
<el-tag v-if="a.log.state==1" type="info">未操作</el-tag>
<el-tag v-if="a.log.state==3" type="danger">驳回</el-tag>
<div>{{a.log.time}}</div>
</template>
</p>
</template> -->
<template slot="description"> <template slot="description">
<div style="color: rgb(153,153,153);" v-for="(a,userlistIndex) in item.userlist" :key="userlistIndex"> <div style="color: rgb(153,153,153);" v-for="(a,userlistIndex) in item.userlist" :key="userlistIndex">
<el-row> <el-row style="margin-bottom: 10px;">
<el-col :span="4"> <el-col :span="4" v-if="a.log!=null">
<el-badge is-dot type="primary "> <el-badge is-dot type="primary ">
<el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar> <el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar>
</el-badge> </el-badge>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="4" v-else>
<el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar>
</el-col>
<el-col :span="20" style="margin-top: -5px;">
{{a.workshopname}}-{{a.postname}}-{{a.name}} {{a.workshopname}}-{{a.postname}}-{{a.name}}
<el-row> <el-row>
<div v-for="(i,logIndex) in a.log" :key="logIndex"> <div v-for="(i,logIndex) in a.log" :key="logIndex" style="margin-top: -5px;">
<div class="left" v-if="i.state==2">已同意&nbsp·&nbsp</div> <div class="left" v-if="i.state==2">已同意&nbsp·&nbsp</div>
<div class="left" v-if="i.state==1" type="info">未操作&nbsp·&nbsp</div> <div class="left" v-if="i.state==1" type="info">未操作&nbsp·&nbsp</div>
<div class="left" v-if="i.state==3" type="danger">驳回&nbsp·&nbsp</div> <div class="left" v-if="i.state==3" type="danger">驳回&nbsp·&nbsp</div>
@ -139,6 +164,38 @@
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
<!-- {{userlist.log}} -->
<!-- <div class="left">
<el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar>
</div>
<div class="left">{{a.workshopname}}-{{a.postname}}-{{a.name}} </div>
<div class="left" v-for="(i,logIndex) in a.log">
<el-tag v-if="i.state==2">通过</el-tag>
<el-tag v-if="i.state==1" type="info">未操作</el-tag>
<el-tag v-if="i.state==3" type="danger">驳回</el-tag>
<div>{{i.time}}</div>
</div> -->
<!-- <template v-if="a.log!=null">
<div v-for="(i,logIndex) in a.log">
<el-tag v-if="i.state==2">通过</el-tag>
<el-tag v-if="i.state==1" type="info">未操作</el-tag>
<el-tag v-if="i.state==3" type="danger">驳回</el-tag>
<div>{{i.time}}</div>
</div>
</template> -->
<!-- <el-tag v-if="a.log!=null||a.log.state==1" type="info">未操作</el-tag>
<el-tag v-if="a.log!=null||a.log.state==3" type="danger">驳回</el-tag> -->
<!-- <div>{{}}</div> -->
</div> </div>
</template> </template>
</el-step> </el-step>
@ -165,11 +222,40 @@
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="box-card"> <el-card class="box-card">
<el-steps direction="vertical" :active="liangbuzhou"> <el-steps direction="vertical" :active="buzhou">
<el-step v-for="(item,index) in lianglist.flowall" :key="index" :title="item.nodename" icon="el-icon-circle-check" > <el-step v-for="(item,index) in lianglist.flowall" :key="index" :title="item.nodename" icon="el-icon-circle-check" >
<template slot="description">
<div style="color: rgb(153,153,153);" v-for="(a,userlistIndex) in item.userlist" :key="userlistIndex">
<el-row>
<el-col :span="4" v-if="a.log!=null">
<el-badge is-dot type="primary ">
<el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar>
</el-badge>
</el-col>
<el-col :span="4" v-else>
<el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar>
</el-col>
<el-col :span="20" style="margin-top: -5px;">
{{a.workshopname}}-{{a.postname}}-{{a.name}}
<el-row>
<div v-for="(i,logIndex) in a.log" :key="logIndex">
<div class="left" v-if="i.state==2">已同意&nbsp·&nbsp</div>
<div class="left" v-if="i.state==1" type="info">未操作&nbsp·&nbsp</div>
<div class="left" v-if="i.state==3" type="danger">驳回&nbsp·&nbsp</div>
<div class="left">{{i.time}}</div>
</div>
</el-row>
</el-col>
</el-row>
</div>
</template>
</el-step>
</el-steps>
<!-- <el-steps direction="vertical" :active="buzhou">
<el-step v-for="(item,index) in list.flowall" :key="index" :title="item.nodename" icon="el-icon-circle-check" >
<template slot="description"> <template slot="description">
<p style="color: rgb(153,153,153);" v-for="(a,index) in item.userlist" > <p style="color: rgb(153,153,153);" v-for="(a,index) in item.userlist" >
<el-avatar style="margin-right: 5px;" shape="square" size="medium" :src="a.icon"></el-avatar> <el-avatar style="margin-right: 5px;" shape="square" size="small" :src="a.icon"></el-avatar>
{{a.workshopname}}-{{a.postname}}-{{a.name}} {{a.workshopname}}-{{a.postname}}-{{a.name}}
<template v-if="a.log!=null"> <template v-if="a.log!=null">
<el-tag v-if="a.log.state==2">通过</el-tag> <el-tag v-if="a.log.state==2">通过</el-tag>
@ -180,7 +266,7 @@
</p> </p>
</template> </template>
</el-step> </el-step>
</el-steps> </el-steps> -->
</el-card> </el-card>
</el-drawer> </el-drawer>
@ -222,6 +308,7 @@ export default {
tableData:[ tableData:[
], ],
imgList:[],
// //
searchInfo: { searchInfo: {
page: 1, page: 1,
@ -242,17 +329,19 @@ export default {
} }
}, },
created() { created() {
if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) { // if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
setToken(this.$route.query.token) // setToken(this.$route.query.token)
setKey(this.$route.query.key) // setKey(this.$route.query.key)
if (getToken()=='') { // if (getToken()=='') {
window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=approvalList&id='+this.$route.query.id; // window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=approvalList&id='+this.$route.query.id;
}else if (typeof this.$route.query.token === 'undefined') { // }else if (typeof this.$route.query.token === 'undefined') {
window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=approvalList&id='+this.$route.query.id; // window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=approvalList&id='+this.$route.query.id;
}else{ // }else{
this.getDataList() // this.getDataList()
} // }
}else{ // }else{
// }
if (sessionStorage.getItem('userinfo')==null) { if (sessionStorage.getItem('userinfo')==null) {
this.$router.push('/dingxingLogin?id='+this.$route.query.id) this.$router.push('/dingxingLogin?id='+this.$route.query.id)
}else if (sessionStorage.getItem('userinfo')==undefined) { }else if (sessionStorage.getItem('userinfo')==undefined) {
@ -270,7 +359,6 @@ export default {
}else{ }else{
this.getDataList() this.getDataList()
} }
}
// //
// this.getDataList() // this.getDataList()
}, },
@ -302,6 +390,12 @@ export default {
this.xingbuzhou=this.xingbuzhou+1 this.xingbuzhou=this.xingbuzhou+1
} }
}); });
this.xinglist.enclosure.forEach(element => {
if (element.type==1) {
this.imgList.push(element.filepath)
}
});
console.log(this.list) console.log(this.list)
}, },
// //
@ -316,7 +410,7 @@ export default {
this.liangbuzhou=this.liangbuzhou+1 this.liangbuzhou=this.liangbuzhou+1
} }
}); });
console.log(this.list)
}, },
// //
// //

213
src/views/approvalList/index.vue

@ -53,6 +53,21 @@
{{list.reason}} {{list.reason}}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-carousel v-if="imgList.length!=0" type="card" height="100px" :autoplay="false">
<el-carousel-item v-for="(img,index) in imgList" :key="index">
<el-image
style="width: 100px; height: 100px;"
:src="img"
:preview-src-list="imgList">
</el-image>
</el-carousel-item>
</el-carousel>
<el-row v-for="(itema,index) in list.enclosure" :key="index">
<el-col :span="24" v-if="itema.type!=1" style="margin-top: 10px;">
<i class="el-icon-document"></i>
<a :href="itema.filepath" :download="itema.filename">{{itema.filename}}</a>
</el-col>
</el-row>
</el-card> </el-card>
<el-card class="box-card font" v-if="cardShow" style="margin-bottom: 10px;"> <el-card class="box-card font" v-if="cardShow" style="margin-bottom: 10px;">
<el-row class="bottom"> <el-row class="bottom">
@ -85,6 +100,21 @@
<el-col :span="6">考核原因:</el-col> <el-col :span="6">考核原因:</el-col>
<el-col :span="18">{{list.reason}}</el-col> <el-col :span="18">{{list.reason}}</el-col>
</el-row> </el-row>
<el-carousel v-if="imgList.length!=0" type="card" height="100px" :autoplay="false">
<el-carousel-item v-for="(img,index) in imgList" :key="index">
<el-image
style="width: 100px; height: 100px;"
:src="img"
:preview-src-list="imgList">
</el-image>
</el-carousel-item>
</el-carousel>
<el-row v-for="(itema,index) in list.enclosure" :key="index">
<el-col :span="24" v-if="itema.type!=1" style="margin-top: 10px;">
<i class="el-icon-document"></i>
<a :href="itema.filepath" :download="itema.filename">{{itema.filename}}</a>
</el-col>
</el-row>
<!-- <el-descriptions class="margin-top" :column="1"> <!-- <el-descriptions class="margin-top" :column="1">
<el-descriptions-item label="考核纬度">{{list.dimension}}</el-descriptions-item> <el-descriptions-item label="考核纬度">{{list.dimension}}</el-descriptions-item>
<el-descriptions-item label="考核指标">{{list.target}}</el-descriptions-item> <el-descriptions-item label="考核指标">{{list.target}}</el-descriptions-item>
@ -95,7 +125,7 @@
<el-descriptions-item label="考核原因">{{list.reason}}</el-descriptions-item> <el-descriptions-item label="考核原因">{{list.reason}}</el-descriptions-item>
</el-descriptions> --> </el-descriptions> -->
</el-card> </el-card>
<el-card class="box-card" style="margin-bottom: 10px;"> <el-card class="box-card" style="margin-bottom: 10px;" v-if="list.divresbil!=null">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>责任划分</span> <span>责任划分</span>
</div> </div>
@ -105,6 +135,30 @@
<el-descriptions-item label="比重">{{item.weight}}</el-descriptions-item> <el-descriptions-item label="比重">{{item.weight}}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<!-- <el-card class="box-card" style="margin-bottom: 10px;" v-if="list.enclosure!=null">
<div slot="header" class="clearfix">
<span>附件</span>
</div>
<el-carousel type="card" height="100px" :autoplay="false">
<el-carousel-item v-for="(img,index) in imgList" :key="index">
<el-image
style="width: 100px; height: 100px;"
:src="img"
:preview-src-list="imgList">
</el-image>
</el-carousel-item>
</el-carousel>
<el-row v-for="(itema,index) in list.enclosure" :key="index">
<el-col :span="24" v-if="itema.type!=1" style="margin-top: 10px;">
<i class="el-icon-document"></i>
<a :href="itema.filepath" :download="itema.filename">{{itema.filename}}</a>
</el-col>
</el-row>
</el-card> -->
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<el-card class="box-card" v-for="(item,index) in list.rectifmeasures" :key="index" style="margin-bottom: 10px;"> <el-card class="box-card" v-for="(item,index) in list.rectifmeasures" :key="index" style="margin-bottom: 10px;">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>整改措施</span> <span>整改措施</span>
@ -113,6 +167,22 @@
<el-descriptions-item label="姓名">{{item.recname}}</el-descriptions-item> <el-descriptions-item label="姓名">{{item.recname}}</el-descriptions-item>
<el-descriptions-item label="内容">{{item.reccont}}</el-descriptions-item> <el-descriptions-item label="内容">{{item.reccont}}</el-descriptions-item>
<el-descriptions-item label="时间">{{item.timeval}}</el-descriptions-item> <el-descriptions-item label="时间">{{item.timeval}}</el-descriptions-item>
<el-carousel v-if="imgList.length!=0" type="card" height="100px" :autoplay="false">
<el-carousel-item v-for="(img,index) in item.enclosure" :key="index">
<el-image
v-if="img.type==1"
style="width: 100px; height: 100px;"
:src="img.filepath"
:preview-src-list="item.enclosure">
</el-image>
</el-carousel-item>
</el-carousel>
<el-row v-for="(itema,index) in item.enclosure" :key="index">
<el-col :span="24" v-if="itema.type!=1" style="margin-top: 10px;">
<i class="el-icon-document"></i>
<a :href="itema.filepath" :download="itema.filename">{{itema.filename}}</a>
</el-col>
</el-row>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<!-- <el-table <!-- <el-table
@ -182,7 +252,7 @@
</el-table> </el-table>
</div> --> </div> -->
<!-- --> <!-- -->
<el-card class="box-card"> <el-card class="box-card" style="margin-bottom: 130px;">
<el-steps direction="vertical" :active="buzhou"> <el-steps direction="vertical" :active="buzhou">
<el-step v-for="(item,index) in list.flowmapall" :key="index" :title="item.nodename" icon="el-icon-circle-check" > <el-step v-for="(item,index) in list.flowmapall" :key="index" :title="item.nodename" icon="el-icon-circle-check" >
@ -246,7 +316,17 @@
</el-step> </el-step>
</el-steps> </el-steps>
</el-card> </el-card>
<el-card class="box-card" style="position: fixed;bottom: 0;width:100%;z-index: 1000;" v-if="list.isset==1">
<el-input
style="margin-bottom:10px"
type="textarea"
autosize
placeholder="请输入审批意见"
v-model="opinionText">
</el-input>
<el-button type="primary" @click="xingOperation(1)" plain>同意</el-button>
<el-button type="danger" @click="xingOperation(2)" plain>驳回</el-button>
</el-card>
<!-- <el-table <!-- <el-table
:data="list.rectifmeasures" :data="list.rectifmeasures"
border border
@ -273,10 +353,43 @@
<script> <script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth' import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutkscoreflow } from '@/api/dutys' import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutkscoreflow,operation } from '@/api/dutys'
import { swiper, swiperSlide } from "vue-awesome-swiper";
import "swiper/dist/css/swiper.css";
export default { export default {
components: {
swiper,
swiperSlide
},
data() { data() {
return{ return{
//
opinionText:'',
swiperOption: {
// slidesPerView: 1,
loop: true, //
autoplay: {
delay: 3000,
stopOnLastSlide: false,
disableOnInteraction: false
},
speed: 2000,
// effect: 'fade',
//
pagination: {
el: ".swiper-pagination",
clickable: true //
},
//
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev"
},
},
imgList:[],
dialogImageUrl: '',
dialogVisible: false,
disabled: false,
// //
buzhou:0, buzhou:0,
carddianShow:false, carddianShow:false,
@ -304,7 +417,14 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
], ],
} }
}, },
computed: {
swiper() {
return this.$refs.mySwiper.swiper;
}
},
created () { created () {
var jumpId=this.$route.query.id
if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
setToken(this.$route.query.token) setToken(this.$route.query.token)
setKey(this.$route.query.key) setKey(this.$route.query.key)
@ -317,20 +437,14 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
this.getData() this.getData()
} }
}else{ }else{
if (sessionStorage.getItem('userinfo')==null) { if (this.$route.query.token=='') {
this.$router.push('/dingxingLogin?id='+this.$route.query.id) this.jump(jumpId)
}else if (sessionStorage.getItem('userinfo')==undefined) { }else if (this.$route.query.token==null) {
this.$router.push('/dingxingLogin?id='+this.$route.query.id) this.jump(jumpId)
}else if (sessionStorage.getItem('userinfo')=='') { }else if (this.$route.query.token===undefined) {
this.$router.push('/dingxingLogin?id='+this.$route.query.id) this.jump(jumpId)
}else if (this.$store.state.user.token=='') { }else if (this.$route.query.token=="undefined") {
this.$router.push('/dingxingLogin?id='+this.$route.query.id) this.jump(jumpId)
}else if (this.$store.state.user.token==null) {
this.$router.push('/dingxingLogin?id='+this.$route.query.id)
}else if (this.$store.state.user.token===undefined) {
this.$router.push('/dingxingLogin?id='+this.$route.query.id)
}else if (typeof this.$store.state.user.token=="undefined") {
this.$router.push('/dingxingLogin?id='+this.$route.query.id)
}else{ }else{
this.form.outid=this.$route.query.id this.form.outid=this.$route.query.id
this.getData() this.getData()
@ -374,8 +488,60 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
}, },
methods: { methods: {
jump(jumpId){
window.location.href='https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww02f310301953277a&redirect_uri=https%3A%2F%2Fwww.hxgk.group%2Fjumpapiurl%2Fscancode%3Fcontroll%3DapprovalList%26id%3D'+jumpId+'%26num%3D0%26istrue%3D2&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect'
},
//
async xingOperation(val){
//
if (val==1) {
const from = {
orderid: this.list.orderid, //ID
yesorno: 1, //12
content: this.opinionText //
}
const res = await operation(from)
if (res.code === 0) {
this.$message({
type: 'success',
message: '成功!'
})
}
this.getData()
this.opinionText=''
}
//
if (val==2) {
const from = {
orderid: this.list.orderid, //ID
yesorno: 2, //12
content: this.opinionText //
}
const res = await operation(from)
if (res.code === 0) {
this.$message({
type: 'success',
message: '成功!'
})
}
this.getData()
this.opinionText=''
}
},
handleRemove(file) {
console.log(file);
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
handleDownload(file) {
console.log(file);
},
// //
async getData(){ async getData(){
this.buzhou=0
const res = await lookdutkscoreflow(this.form) const res = await lookdutkscoreflow(this.form)
this.list=res.data this.list=res.data
this.list.flowmapall.forEach(element => { this.list.flowmapall.forEach(element => {
@ -383,6 +549,12 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
this.buzhou=this.buzhou+1 this.buzhou=this.buzhou+1
} }
}); });
this.list.enclosure.forEach(element => {
if (element.type==1) {
this.imgList.push(element.filepath)
}
});
// this.list.flowmapall.forEach(function(element) { // this.list.flowmapall.forEach(function(element) {
// if (element.userlist!=null) { // if (element.userlist!=null) {
// element.userlist.forEach(function(iteam){ // element.userlist.forEach(function(iteam){
@ -432,7 +604,10 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.recommendPage {
width: 100%;
height: 100%;
}
.box-card1 .el-card__body{ .box-card1 .el-card__body{
padding-top: 5px !important; padding-top: 5px !important;
padding-bottom: 5px !important; padding-bottom: 5px !important;

49
src/views/ce/index.vue

@ -0,0 +1,49 @@
<template>
<div>
</div>
</template>
<script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { scancode } from '@/api/user'
export default {
data () {
return {
}
},
async created () {
console.log(this.$route.query)
setToken(this.$route.query.token)
setKey(this.$route.query.key)
this.$store.commit('user/setToken', this.$route.query.token)
this.$store.commit('user/setKey', this.$route.query.key)
const from = {
userkey: this.$route.query.key.toString(),
usertoken:this.$route.query.token.toString()
}
const res = await scancode(from)
if (res.code === 0) {
console.log("scancode_res")
console.log(res)
setToken(res.data.token)
setKey(res.data.key)
console.log("getToken")
console.log(getToken)
sessionStorage.setItem('userinfo',JSON.stringify(res.data.userinfo));
this.$store.commit('user/setUserInfo', res.data.userinfo)
this.$store.commit('user/setToken', res.data.token)
this.$store.commit('user/setKey', res.data.key)
console.log(JSON.parse(sessionStorage.getItem('userinfo')))
// this.$store.state.
this.$router.push('/')
// this.$router.push('/')
}
}
}
</script>
<style lang="scss" scoped>
</style>

4
src/views/login/dingxingLogin.vue

@ -70,7 +70,7 @@
<script> <script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth' import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
import { captcha,mylogin } from '@/api/user' import { captcha,mylogin,scancodelogin } from '@/api/user'
export default { export default {
name: 'Login', name: 'Login',
data() { data() {
@ -154,7 +154,7 @@ export default {
this.$refs.loginForm.validate(async(v) => { this.$refs.loginForm.validate(async(v) => {
if (v) { if (v) {
// const flag = await this.login() // const flag = await this.login()
const res = await mylogin(this.loginForm) const res = await scancodelogin(this.loginForm)
if (res.code === 0) { if (res.code === 0) {
setToken(res.data.token) setToken(res.data.token)
setKey(res.data.key) setKey(res.data.key)

4
src/views/login/quantitativeListLogin.vue

@ -70,7 +70,7 @@
<script> <script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth' import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
import { captcha,mylogin } from '@/api/user' import { captcha,mylogin,scancodelogin } from '@/api/user'
export default { export default {
name: 'Login', name: 'Login',
data() { data() {
@ -154,7 +154,7 @@ export default {
this.$refs.loginForm.validate(async(v) => { this.$refs.loginForm.validate(async(v) => {
if (v) { if (v) {
// const flag = await this.login() // const flag = await this.login()
const res = await mylogin(this.loginForm) const res = await scancodelogin(this.loginForm)
if (res.code === 0) { if (res.code === 0) {
setToken(res.data.token) setToken(res.data.token)
setKey(res.data.key) setKey(res.data.key)

378
src/views/login/wxLogin.vue

@ -0,0 +1,378 @@
<template>
<div id="userLayout">
<div class="login_panle">
<div class="login_panle_form" v-show="loginCard==1">
<div class="login_panle_form_title">
<!-- <img
class="login_panle_form_title_logo"
:src="$GIN_VUE_ADMIN.appLogo"
alt
/> -->
<p class="login_panle_form_title_p">恒信高科后台管理系统</p>
</div>
<el-form
ref="loginForm"
:model="loginForm"
:rules="rules"
@keyup.native.enter="submitForm"
>
<el-form-item prop="username">
<el-input v-model="loginForm.username" placeholder="请输入工号">
<template #suffix>
<i class="el-input__icon el-icon-user" />
</template>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
:type="lock === 'lock' ? 'password' : 'text'"
placeholder="请输入密码"
>
<template #suffix>
<i
:class="'el-input__icon el-icon-' + lock"
@click="changeLock"
/>
</template>
</el-input>
</el-form-item>
<el-form-item style="position: relative" prop="captcha">
<el-input
v-model="loginForm.captcha"
name="logVerify"
placeholder="请输入验证码"
style="width: 60%"
/>
<div class="vPic">
<img
v-if="picPath"
:src="picPath"
alt="请输入验证码"
@click="loginVerify()"
/>
</div>
</el-form-item>
<el-form-item>
<el-button
type="primary"
style="width: 46%; margin-left: 25%"
@click="submitForm"
> </el-button
>
</el-form-item>
<el-row :gutter="20">
<el-col :span="12" style="text-align: center;color: #0082EF;" @click.native="loginType(1)">
账号登录
</el-col>
<el-col :span="12" style="text-align: center;color: #0082EF;" @click.native="loginType(2)">
扫码登录
</el-col>
</el-row>
</el-form>
</div>
<div class="login_panle_form" v-show="loginCard==2">
<div class="login_panle_form_title">
<!-- <img
class="login_panle_form_title_logo"
:src="$GIN_VUE_ADMIN.appLogo"
alt
/> -->
<p class="login_panle_form_title_p">恒信高科后台管理系统</p>
</div>
<div id="weChat" style="margin-left: 13px;"></div>
<el-row :gutter="20">
<el-col :span="12" style="text-align: center;color: #0082EF;" @click.native="loginType(1)">
账号登录
</el-col>
<el-col :span="12" style="text-align: center;color: #0082EF;" @click.native="loginType(2)">
扫码登录
</el-col>
</el-row>
</div>
<div class="login_panle_right" />
</div>
</div>
</template>
<script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { mapActions } from 'vuex'
import { captcha,mylogin,mysystemlogin,scancodelogin } from '@/api/user'
export default {
name: 'Login',
data() {
const checkUsername = (rule, value, callback) => {
if (value.length < 5) {
return callback(new Error('请输入正确的用户名'))
} else {
callback()
}
}
const checkPassword = (rule, value, callback) => {
if (value.length < 6) {
return callback(new Error('请输入正确的密码'))
} else {
callback()
}
}
return {
loginCard:2,
redirect: undefined,
curYear: 0,
lock: 'lock',
loginForm: {
username: '',
password: '',
captcha: '',
captchaId: ''
},
rules: {
username: [{ required: true, message: '请输入工号',trigger: 'blur' }],
password: [{ validator: checkPassword, trigger: 'blur' }],
captcha: [{ required: true, message: '请输入验证码', trigger: 'blur' },
{
min: 5,
max: 6,
message: '验证码格式不正确',
trigger: 'blur',
}]
},
logVerify: '',
picPath: ''
}
},
created() {
this.getWeChat()
this.loginVerify()
this.curYear = new Date().getFullYear()
},
watch: {
$route: {
handler: function(route) {
const query = route.query
if (query) {
this.redirect = query.redirect
this.otherQuery = this.getOtherQuery(query)
}
},
immediate: true
}
},
methods: {
...mapActions('user', ['myLoginIn']),
getWeChat () {
// js
const s = document.createElement('script')
s.type = 'text/javascript'
s.src = 'http://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js'
const wxElement = document.body.appendChild(s)
//
wxElement.onload = function () {
window.WwLogin({
id: 'weChat', // id
appid: 'ww02f310301953277a', // appid wx*******
agentid: '1000008', // agentid wx*******
scope: 'snsapi_login', //
redirect_uri: 'https%3A%2F%2Fwww.hxgk.group%2Fjumpapiurl%2Fscancode', // urlweChatBack
state: Math.ceil(Math.random() * 1000), // session
style: 'black', // "black""white"
href: '' // cssurlhttps
})
}
},
loginType(a){
console.log("aaa")
if (a==1) {
this.loginCard=1
}
if (a==2) {
this.loginCard=2
}
},
async checkInit() {
const res = await checkDB()
if (res.code === 0) {
if (res.data?.needInit) {
this.$store.commit('user/NeedInit')
this.$router.push({ name: 'Init' })
} else {
this.$message({
type: 'info',
message: '已配置数据库信息,无法初始化'
})
}
}
},
// async login() {
// return await this.myLoginIn(this.loginForm)
// },
async submitForm() {
this.$refs.loginForm.validate(async(v) => {
if (v) {
// const flag = await this.login()
const res = await scancodelogin(this.loginForm)
if (res.code === 0) {
setToken(res.data.token)
setKey(res.data.key)
console.log("res.data.userinfo")
console.log(res.data.userinfo)
// this.$store.commit('saveCurrDbSource',this.db)
sessionStorage.setItem('userinfo',JSON.stringify(res.data.userinfo));
this.$store.commit('user/setUserInfo', res.data.userinfo)
this.$store.commit('user/setToken', res.data.token)
this.$store.commit('user/setKey', res.data.key)
console.log("this.$store.state.user.token")
console.log(this.$store.state.user.token)
console.log("this.$store.state.user.userInfo")
console.log(this.$store.state.user.userInfo)
console.log("this.$store.state.user.key")
console.log(this.$store.state.user.key)
// this.$store.state.
this.$router.push('/')
// this.$router.push('/')
this.loading = false
}
} else {
this.$message({
type: 'error',
message: '请正确填写登录信息',
showClose: true
})
this.loginVerify()
return false
}
})
},
getOtherQuery(query) {
return Object.keys(query).reduce((acc, cur) => {
if (cur !== 'redirect') {
acc[cur] = query[cur]
}
return acc
}, {})
},
changeLock() {
this.lock = this.lock === 'lock' ? 'unlock' : 'lock'
},
loginVerify() {
captcha({}).then((ele) => {
this.picPath = ele.data.picPath
this.loginForm.captchaId = ele.data.captchaId
})
}
}
}
</script>
<style lang="scss" scoped>
#userLayout {
margin: 0;
padding: 0;
//background-image: url("@/assets/login_background.jpg");
// background-image: url("../assets/login_background.jpg");
background-image: url("../../assets/404_images/login_background.jpg");
background-size: cover;
width: 100%;
height: 100%;
position: relative;
.login_panle {
position: absolute;
top: 3vh;
left: 2vw;
width: 96vw;
height: 94vh;
background-color: rgba(255, 255, 255, .8);
backdrop-filter: blur(5px);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: space-evenly;
.login_panle_right {
// background-image: url("../assets/login_left.svg");
background-image: url("../../assets/404_images/login_left.svg");
background-size: cover;
width: 40%;
height: 60%;
float: right !important;
}
.login_panle_form {
width: 420px;
background-color: #fff;
padding: 40px 40px 40px 40px;
border-radius: 10px;
box-shadow: 2px 3px 7px rgba(0, 0, 0, .2);
.login_panle_form_title {
display: flex;
align-items: center;
margin: 30px 0;
.login_panle_form_title_logo {
width: 90px;
height: 72px;
}
.login_panle_form_title_p {
font-size: 30px;
padding-left: 20px;
}
}
.vPic {
width: 33%;
height: 38px;
float: right !important;
background: #ccc;
img {
width: 100%;
height: 100%;
cursor: pointer;
vertical-align: middle;
}
}
}
.login_panle_foot {
position: absolute;
bottom: 20px;
.links {
display: flex;
align-items: center;
justify-content: space-between;
.link-icon {
width: 30px;
height: 30px;
}
}
.copyright {
color: #777777;
margin-top: 5px;
}
}
}
}
//
@media (max-width: 750px) {
.login_panle_right {
display: none;
}
.login_panle {
width: 100vw;
height: 100vh;
top: 0;
left: 0;
}
.login_panle_form {
width: 100%;
}
}
/*
powerBy : bypanghu@163.com
*/
</style>

323
src/views/login/zerenLogin copy.vue

@ -0,0 +1,323 @@
<template>
<div id="userLayout">
<div class="login_panle">
<div class="login_panle_form">
<div class="login_panle_form_title">
<!-- <img
class="login_panle_form_title_logo"
:src="$GIN_VUE_ADMIN.appLogo"
alt
/> -->
<p class="login_panle_form_title_p">绩效考核用户端登录</p>
</div>
<el-form
ref="loginForm"
:model="loginForm"
:rules="rules"
@keyup.enter="submitForm"
>
<el-form-item prop="username">
<el-input v-model="loginForm.username" placeholder="请输入工号">
<template #suffix>
<i class="el-input__icon el-icon-user" />
</template>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
:type="lock === 'lock' ? 'password' : 'text'"
placeholder="请输入密码"
>
<template #suffix>
<i
:class="'el-input__icon el-icon-' + lock"
@click="changeLock"
/>
</template>
</el-input>
</el-form-item>
<el-form-item style="position: relative" prop="captcha">
<el-input
v-model="loginForm.captcha"
name="logVerify"
placeholder="请输入验证码"
style="width: 60%"
/>
<div class="vPic">
<img
v-if="picPath"
:src="picPath"
alt="请输入验证码"
@click="loginVerify()"
/>
</div>
</el-form-item>
<el-form-item>
<el-button
type="primary"
style="width: 46%; margin-left: 25%"
@click="submitForm"
> </el-button
>
</el-form-item>
</el-form>
</div>
<div class="login_panle_right" />
</div>
</div>
</template>
<script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { mapActions } from 'vuex'
import { captcha,mylogin } from '@/api/user'
export default {
name: 'Login',
data() {
const checkUsername = (rule, value, callback) => {
if (value.length < 5) {
return callback(new Error('请输入正确的用户名'))
} else {
callback()
}
}
const checkPassword = (rule, value, callback) => {
if (value.length < 6) {
return callback(new Error('请输入正确的密码'))
} else {
callback()
}
}
return {
redirect: undefined,
curYear: 0,
lock: 'lock',
zeren:{
id:''
},
loginForm: {
username: '',
password: '',
captcha: '',
captchaId: ''
},
rules: {
username: [{ required: true, message: '请输入工号',trigger: 'blur' }],
password: [{ validator: checkPassword, trigger: 'blur' }],
captcha: [{ required: true, message: '请输入验证码', trigger: 'blur' },
{
min: 5,
max: 6,
message: '验证码格式不正确',
trigger: 'blur',
}]
},
logVerify: '',
picPath: ''
}
},
created() {
this.zeren.id=this.$route.query.id
this.loginVerify()
this.curYear = new Date().getFullYear()
},
watch: {
$route: {
handler: function(route) {
const query = route.query
if (query) {
this.redirect = query.redirect
this.otherQuery = this.getOtherQuery(query)
}
},
immediate: true
}
},
methods: {
...mapActions('user', ['myLoginIn']),
async checkInit() {
const res = await checkDB()
if (res.code === 0) {
if (res.data?.needInit) {
this.$store.commit('user/NeedInit')
this.$router.push({ name: 'Init' })
} else {
this.$message({
type: 'info',
message: '已配置数据库信息,无法初始化'
})
}
}
},
// async login() {
// return await this.myLoginIn(this.loginForm)
// },
async submitForm() {
this.$refs.loginForm.validate(async(v) => {
if (v) {
// const flag = await this.login()
const res = await mylogin(this.loginForm)
if (res.code === 0) {
setToken(res.data.token)
setKey(res.data.key)
console.log("res.data.userinfo")
console.log(res.data.userinfo)
// this.$store.commit('saveCurrDbSource',this.db)
sessionStorage.setItem('userinfo',JSON.stringify(res.data.userinfo));
this.$store.commit('user/setUserInfo', res.data.userinfo)
this.$store.commit('user/setToken', res.data.token)
this.$store.commit('user/setKey', res.data.key)
console.log("this.$store.state.user.token")
console.log(this.$store.state.user.token)
console.log("this.$store.state.user.userInfo")
console.log(this.$store.state.user.userInfo)
console.log("this.$store.state.user.key")
console.log(this.$store.state.user.key)
// this.$store.state.
this.$router.push('/responsible?id='+this.zeren.id)
// this.$router.push('/')
this.loading = false
}
} else {
this.$message({
type: 'error',
message: '请正确填写登录信息',
showClose: true
})
this.loginVerify()
return false
}
})
},
getOtherQuery(query) {
return Object.keys(query).reduce((acc, cur) => {
if (cur !== 'redirect') {
acc[cur] = query[cur]
}
return acc
}, {})
},
changeLock() {
this.lock = this.lock === 'lock' ? 'unlock' : 'lock'
},
loginVerify() {
captcha({}).then((ele) => {
this.picPath = ele.data.picPath
this.loginForm.captchaId = ele.data.captchaId
})
}
}
}
</script>
<style lang="scss" scoped>
#userLayout {
margin: 0;
padding: 0;
//background-image: url("@/assets/login_background.jpg");
// background-image: url("../assets/login_background.jpg");
background-image: url("../../assets/404_images/login_background.jpg");
background-size: cover;
width: 100%;
height: 100%;
position: relative;
.login_panle {
position: absolute;
top: 3vh;
left: 2vw;
width: 96vw;
height: 94vh;
background-color: rgba(255, 255, 255, .8);
backdrop-filter: blur(5px);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: space-evenly;
.login_panle_right {
// background-image: url("../assets/login_left.svg");
background-image: url("../../assets/404_images/login_left.svg");
background-size: cover;
width: 40%;
height: 60%;
float: right !important;
}
.login_panle_form {
width: 420px;
background-color: #fff;
padding: 40px 40px 40px 40px;
border-radius: 10px;
box-shadow: 2px 3px 7px rgba(0, 0, 0, .2);
.login_panle_form_title {
display: flex;
align-items: center;
margin: 30px 0;
.login_panle_form_title_logo {
width: 90px;
height: 72px;
}
.login_panle_form_title_p {
font-size: 30px;
padding-left: 20px;
}
}
.vPic {
width: 33%;
height: 38px;
float: right !important;
background: #ccc;
img {
width: 100%;
height: 100%;
cursor: pointer;
vertical-align: middle;
}
}
}
.login_panle_foot {
position: absolute;
bottom: 20px;
.links {
display: flex;
align-items: center;
justify-content: space-between;
.link-icon {
width: 30px;
height: 30px;
}
}
.copyright {
color: #777777;
margin-top: 5px;
}
}
}
}
//
@media (max-width: 750px) {
.login_panle_right {
display: none;
}
.login_panle {
width: 100vw;
height: 100vh;
top: 0;
left: 0;
}
.login_panle_form {
width: 100%;
}
}
/*
powerBy : bypanghu@163.com
*/
</style>

11
src/views/login/zerenLogin.vue

@ -70,7 +70,7 @@
<script> <script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth' import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
import { captcha,mylogin } from '@/api/user' import { captcha,mylogin,scancodelogin } from '@/api/user'
export default { export default {
name: 'Login', name: 'Login',
data() { data() {
@ -93,7 +93,8 @@ export default {
curYear: 0, curYear: 0,
lock: 'lock', lock: 'lock',
zeren:{ zeren:{
id:'' id:'',
num:''
}, },
loginForm: { loginForm: {
username: '', username: '',
@ -117,7 +118,9 @@ export default {
} }
}, },
created() { created() {
console.log(this.$route.query)
this.zeren.id=this.$route.query.id this.zeren.id=this.$route.query.id
this.zeren.num=this.$route.query.num
this.loginVerify() this.loginVerify()
this.curYear = new Date().getFullYear() this.curYear = new Date().getFullYear()
}, },
@ -156,7 +159,7 @@ export default {
this.$refs.loginForm.validate(async(v) => { this.$refs.loginForm.validate(async(v) => {
if (v) { if (v) {
// const flag = await this.login() // const flag = await this.login()
const res = await mylogin(this.loginForm) const res = await scancodelogin(this.loginForm)
if (res.code === 0) { if (res.code === 0) {
setToken(res.data.token) setToken(res.data.token)
setKey(res.data.key) setKey(res.data.key)
@ -175,7 +178,7 @@ export default {
console.log(this.$store.state.user.key) console.log(this.$store.state.user.key)
// this.$store.state. // this.$store.state.
this.$router.push('/responsible?id='+this.zeren.id) this.$router.push('/responsible?id='+this.zeren.id+'&num='+this.zeren.num)
// this.$router.push('/') // this.$router.push('/')
this.loading = false this.loading = false
} }

7
src/views/login/zhenggaiLogin.vue

@ -70,7 +70,7 @@
<script> <script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth' import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
import { captcha,mylogin } from '@/api/user' import { captcha,mylogin,scancodelogin } from '@/api/user'
export default { export default {
name: 'Login', name: 'Login',
data() { data() {
@ -116,6 +116,7 @@ export default {
}, },
created() { created() {
this.zeren.id=this.$route.query.id this.zeren.id=this.$route.query.id
this.zeren.num=this.$route.query.num
this.loginVerify() this.loginVerify()
this.curYear = new Date().getFullYear() this.curYear = new Date().getFullYear()
}, },
@ -154,7 +155,7 @@ export default {
this.$refs.loginForm.validate(async(v) => { this.$refs.loginForm.validate(async(v) => {
if (v) { if (v) {
// const flag = await this.login() // const flag = await this.login()
const res = await mylogin(this.loginForm) const res = await scancodelogin(this.loginForm)
if (res.code === 0) { if (res.code === 0) {
setToken(res.data.token) setToken(res.data.token)
setKey(res.data.key) setKey(res.data.key)
@ -172,7 +173,7 @@ export default {
console.log("this.$store.state.user.key") console.log("this.$store.state.user.key")
console.log(this.$store.state.user.key) console.log(this.$store.state.user.key)
// this.$store.state. // this.$store.state.
this.$router.push('/rectification?id='+this.zeren.id) this.$router.push('/rectification?id='+this.zeren.id+'&num='+this.zeren.num)
// this.$router.push('/') // this.$router.push('/')
this.loading = false this.loading = false
} }

14
src/views/mete/index.vue

@ -5,14 +5,15 @@
<el-form ref="searchForm" :inline="true" :model="searchInfo"> <el-form ref="searchForm" :inline="true" :model="searchInfo">
<el-form-item label="所属部门" prop="title"> <el-form-item label="所属部门" prop="title">
<el-select v-model="searchInfo.departmentid" clearable placeholder="请选择"> <el-cascader clearable v-model="searchInfo.departmentid" :options="departmentList" :show-all-levels="false" :props="props1"></el-cascader>
<!-- <el-select v-model="searchInfo.departmentid" clearable placeholder="请选择">
<el-option <el-option
v-for="item in departmentList" v-for="item in departmentList"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select> -->
</el-form-item> </el-form-item>
<!-- <el-cascader clearable v-model="searchInfo.departmentid" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> --> <!-- <el-cascader clearable v-model="searchInfo.departmentid" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> -->
</el-form-item> </el-form-item>
@ -112,6 +113,13 @@ export default {
name: 'Dashboard', name: 'Dashboard',
data() { data() {
return { return {
props1: {
checkStrictly: true,
value: "id",
label: "name",
children: "children",
emitPath:false,
},
props: { props: {
value: "id", value: "id",
label: "name", label: "name",
@ -186,7 +194,7 @@ export default {
// //
async getGrouplist(){ async getGrouplist(){
const departmentFrom={ const departmentFrom={
id:3 id:2
} }
const res = await departmentlist(departmentFrom) const res = await departmentlist(departmentFrom)
this.departmentList=res.data this.departmentList=res.data

224
src/views/qualitative/index.vue

@ -99,6 +99,17 @@
<el-option :value=2 label="否"></el-option> <el-option :value=2 label="否"></el-option>
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
:on-preview="clickpj(file)"
list-type="picture"
:on-remove="(file, fileList, index) => {handlejiaRemove(file, fileList, index)}"
:action="uploadActionUrl"
multiple
:on-success="uploadjiaSuccess"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form> </el-form>
<el-form ref="addForm" :model="form" :rules="rules" label-width="150px" v-if="rowJiaData.state==2"> <el-form ref="addForm" :model="form" :rules="rules" label-width="150px" v-if="rowJiaData.state==2">
@ -131,6 +142,17 @@
<el-option :value=2 label="否"></el-option> <el-option :value=2 label="否"></el-option>
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
:on-preview="clickpj(file)"
list-type="picture"
:on-remove="(file, fileList, index) => {handlejiaRemove(file, fileList, index)}"
:action="uploadActionUrl"
multiple
:on-success="uploadjiaSuccess"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form> </el-form>
<el-form ref="addForm" :model="form" :rules="rules" label-width="150px" v-if="rowJiaData.state==3"> <el-form ref="addForm" :model="form" :rules="rules" label-width="150px" v-if="rowJiaData.state==3">
@ -160,6 +182,25 @@
<el-option :value=2 label="否"></el-option> <el-option :value=2 label="否"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
:on-preview="clickpj(file)"
list-type="picture"
:on-remove="(file, fileList, index) => {handlejiaRemove(file, fileList, index)}"
:action="uploadActionUrl"
multiple
:on-success="uploadjiaSuccess"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
<!-- <el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
:action="uploadActionUrl"
multiple
:on-success="uploadjiaSuccess"
:file-list="files">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload> -->
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -200,6 +241,20 @@
<el-option :value=2 label="否"></el-option> <el-option :value=2 label="否"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="上传附件">
<el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
:on-preview="clickpj(file)"
list-type="picture"
:on-remove="(file, fileList, index) => {handleRemove(file, fileList, index)}"
:action="uploadActionUrl"
multiple
:on-success="uploadSuccess"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
</el-form> </el-form>
<el-form ref="jianForm" :model="jianForm" label-width="150px" v-if="rowJianData.state==2"> <el-form ref="jianForm" :model="jianForm" label-width="150px" v-if="rowJianData.state==2">
<el-form-item label="考核参考"> <el-form-item label="考核参考">
@ -231,7 +286,22 @@
<el-option :value=2 label="否"></el-option> <el-option :value=2 label="否"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否整改">
<el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
:on-preview="clickpj(file)"
list-type="picture"
:on-remove="(file, fileList, index) => {handleRemove(file, fileList, index)}"
:action="uploadActionUrl"
multiple
:on-success="uploadSuccess"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
</el-form> </el-form>
<el-form ref="jianForm" :model="jianForm" label-width="150px" v-if="rowJianData.state==3"> <el-form ref="jianForm" :model="jianForm" label-width="150px" v-if="rowJianData.state==3">
<el-form-item label="分值"> <el-form-item label="分值">
<el-input v-model="jianForm.score" autocomplete="off" /> <el-input v-model="jianForm.score" autocomplete="off" />
@ -259,17 +329,36 @@
<el-option :value=2 label="否"></el-option> <el-option :value=2 label="否"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> <el-form-item label="上传附加">
<!-- <el-upload <!-- <el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
class="upload-demo"
list-type="picture"
ref="upload"
:on-success="uploadSuccess"
:action="uploadActionUrl"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
:auto-upload="false">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
</el-upload> -->
<el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
:on-preview="clickpj(file)"
list-type="picture"
:on-remove="(file, fileList, index) => {handleRemove(file, fileList, index)}"
:action="uploadActionUrl" :action="uploadActionUrl"
accept="image/jpeg,image/gif,image/png"
multiple multiple
:limit="3" :on-success="uploadSuccess"
:file-list="fileList">
:file-list="files">
<el-button size="small" type="primary">点击上传</el-button> <el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">请上传图片格式文件</div> </el-upload>
</el-upload> --> </el-form-item>
</el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button size="small" @click="jiancloseDialog"> </el-button> <el-button size="small" @click="jiancloseDialog"> </el-button>
@ -293,6 +382,21 @@
</el-dialog> </el-dialog>
<!-- 考核办法弹框 --> <!-- 考核办法弹框 -->
<el-dialog :visible.sync="methodShow" title="考核项目" width="60%"> <el-dialog :visible.sync="methodShow" title="考核项目" width="60%">
<div class="gva-search-box">
<el-form :inline="true" :model="searchZhilanmuList">
<el-form-item label="考核内容">
<el-input
placeholder="请输入"
v-model="searchZhilanmuList.title"
clearable>
</el-input>
</el-form-item>
<el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmitZhi()">查询</el-button>
</el-form-item>
</el-form>
</div>
<el-table :data="methodList" border :span-method="methodSpanMethod" :cell-style="{padding:'0px'}"> <el-table :data="methodList" border :span-method="methodSpanMethod" :cell-style="{padding:'0px'}">
<el-table-column prop="targetsunname" label="考核项目" width="85"></el-table-column> <el-table-column prop="targetsunname" label="考核项目" width="85"></el-table-column>
<el-table-column prop="detailedtargenttitle" label="考核内容"></el-table-column> <el-table-column prop="detailedtargenttitle" label="考核内容"></el-table-column>
@ -387,13 +491,18 @@ export default {
], ],
departmentShow:false, departmentShow:false,
files:[], files:[],
uploadActionUrl:'http://gin.admin.net/upordown', uploadActionUrl:'/api/upordown',
jianForm:{}, jianForm:{
enclosure:[],
},
jiandialogFormVisible:false, jiandialogFormVisible:false,
fileList:[], fileList:[],
spanArr:[], spanArr:[],
methodList:[], methodList:[],
methodPos:'', methodPos:'',
searchZhilanmuList:{
title:''
},
pos:'', pos:'',
// //
editFrom:{}, editFrom:{},
@ -470,6 +579,48 @@ export default {
//   } //   }
}, },
methods: { methods: {
submitUpload() {
this.$refs.upload.submit();
},
//
handleChange(file, fileList, scope) {
//
let imgSize = Number(file.size / 1024 / 1024);
if (imgSize > 100) {
this.$msgbox({
title: "",
message: "文件大小不能超过100MB,请重新上传。",
type: "warning",
});
this.materialList[scope.$index].fileList.splice(scope.index, 1);
return;
}
},
//
uploadjiaSuccess(response,file,fileList){
if (response.code==0) {
const data = {
filename: response.data.name, //
filepath: response.data.url, //
type: response.data.type //123office45
}
this.form.enclosure.push(data)
}
},
//
uploadSuccess(response,file,fileList){
if (response.code==0) {
console.log(response.data.url)
const data = {
filename: response.data.name, //
filepath: response.data.url, //
type: response.data.type //123office45
}
this.jianForm.enclosure.push(data)
}
},
// //
methodSpanMethod({ row, column, rowIndex, columnIndex }) { methodSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) { if (columnIndex === 0) {
@ -501,6 +652,39 @@ export default {
} }
} }
}, },
handlejiaRemove(file, fileList,index){
this.form.enclosure=[]
fileList.forEach((a) => {
const data = {
filename: a.response.data.name, //
filepath: a.response.data.url, //
type: a.response.data.type //123office45
}
this.form.enclosure.push(data)
});
},
//
handleRemove(file, fileList,index){
this.jianForm.enclosure=[]
fileList.forEach((a) => {
const data = {
filename: a.response.data.name, //
filepath: a.response.data.url, //
type: a.response.data.type //123office45
}
this.jianForm.enclosure.push(data)
});
},
clickpj(file){
console.log("file")
console.log(file)
},
// //
async getGrouplist(){ async getGrouplist(){
const res = await getgroupdepartmap() const res = await getgroupdepartmap()
@ -531,7 +715,8 @@ export default {
const methodData={ const methodData={
group: this.rowZhiData.group.toString(), // group: this.rowZhiData.group.toString(), //
department: this.rowZhiData.department.toString(), // department: this.rowZhiData.department.toString(), //
targets: this.rowZhiData.target.toString() // targets: this.rowZhiData.target.toString(), //
title:this.searchZhilanmuList.title
} }
const res = await newgetqualdetailedtarget(methodData) const res = await newgetqualdetailedtarget(methodData)
if (res.code==0) { if (res.code==0) {
@ -539,6 +724,9 @@ export default {
} }
}, },
onSubmitZhi(){
this.getzhilanmuListNew()
},
// //
async getzhilanmuList(){ async getzhilanmuList(){
const methodData={ const methodData={
@ -595,16 +783,14 @@ export default {
// const res = await upordown() // const res = await upordown()
}, },
changeFile(file, fileList){ changeFile(file, fileList){
console.log("file") console.log("file")
console.log(file) console.log(file)
console.log("fileList") console.log("fileList")
console.log(fileList) console.log(fileList)
},
handleRemove(file, fileList) {
console.log(file, fileList);
}, },
// handleRemove(file, fileList) {
// console.log(file, fileList);
// },
handlePreview(file) { handlePreview(file) {
console.log(file); console.log(file);
}, },
@ -745,8 +931,7 @@ export default {
// //
async enterDialog(){ async enterDialog(){
this.$refs.addForm.validate(async valid => {
if (valid) {
this.form.type=1 this.form.type=1
this.form.state=this.rowJiaData.state this.form.state=this.rowJiaData.state
@ -760,11 +945,12 @@ export default {
} }
this.getDataList(); this.getDataList();
this.closeDialog(); this.closeDialog();
}
})
}, },
// //
async jianenterDialog(){ async jianenterDialog(){
console.log(this.jianForm)
this.jianForm.type=2 this.jianForm.type=2
this.jianForm.state=this.rowJianData.state this.jianForm.state=this.rowJianData.state

158
src/views/quantitativeList/index.vue

@ -3,7 +3,7 @@
<!-- <div class="p" v-if="carddianShow">{{list.groupname}}{{list.departmentname}}定量考核</div> <!-- <div class="p" v-if="carddianShow">{{list.groupname}}{{list.departmentname}}定量考核</div>
<div class="p2" v-if="cardShow">{{list.groupname}}{{list.departmentname}}定量考核</div> --> <div class="p2" v-if="cardShow">{{list.groupname}}{{list.departmentname}}定量考核</div> -->
<div :style="'width:' + bianKuan + '%;margin: 0 auto;padding: 5px;'"> <div :style="'width:' + bianKuan + '%;margin: 0 auto;padding: 5px;'">
<el-card class="box-card" style="margin-bottom: 10px;padding-top: 5px;padding-bottom: 5px;"> <el-card :body-style="{ padding: '10px' }" class="box-card" style="margin-bottom: 10px;padding-top: 5px;padding-bottom: 5px;">
<p class="xiao">审批编号{{form.outid}}</p> <p class="xiao">审批编号{{form.outid}}</p>
<p class="da"> <p class="da">
{{list.title}} {{list.title}}
@ -19,9 +19,45 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
零奖
</template> </template>
{{item.Score}}{{item.unit}} {{item.zeroprize}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
全奖值
</template>
{{item.allprize}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
实际值
</template>
{{item.Score}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
权重分
</template>
{{item.weight}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
封顶值
</template>
{{item.CappingVal}}%
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
达成率
</template>
{{item.achievement}}%
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
指标得分
</template>
{{item.actual}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
@ -34,11 +70,18 @@
<el-card v-if="cardShow" class="box-card" v-for="(item,index) in list.List" :key="index" style="margin-bottom: 10px;"> <el-card v-if="cardShow" class="box-card" v-for="(item,index) in list.List" :key="index" style="margin-bottom: 10px;">
<el-descriptions class="margin-top" :column="1"> <el-descriptions class="margin-top" :column="1">
<el-descriptions-item label="名称">{{item.title}}</el-descriptions-item> <el-descriptions-item label="名称">{{item.title}}</el-descriptions-item>
<el-descriptions-item label="分值">{{item.Score}}{{item.unit}}</el-descriptions-item> <el-descriptions-item label="零奖值">{{item.zeroprize}}</el-descriptions-item>
<el-descriptions-item label="全奖值">{{item.allprize}}</el-descriptions-item>
<el-descriptions-item label="封顶值">{{item.CappingVal}}%</el-descriptions-item>
<el-descriptions-item label="实际值">{{item.Score}}</el-descriptions-item>
<el-descriptions-item label="权重分">{{item.weight}}</el-descriptions-item>
<el-descriptions-item label="达成率">{{item.achievement}}%</el-descriptions-item>
<el-descriptions-item label="指标得分">{{item.actual}}</el-descriptions-item>
<el-descriptions-item label="说明">{{item.content}}</el-descriptions-item> <el-descriptions-item label="说明">{{item.content}}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="box-card"> <el-card class="box-card" style="margin-bottom: 130px;">
<el-steps direction="vertical" :active="buzhou"> <el-steps direction="vertical" :active="buzhou">
<el-step v-for="(item,index) in list.flowall" :key="index" :title="item.nodename" icon="el-icon-circle-check" > <el-step v-for="(item,index) in list.flowall" :key="index" :title="item.nodename" icon="el-icon-circle-check" >
<template slot="description"> <template slot="description">
@ -85,6 +128,17 @@
</el-step> </el-step>
</el-steps> --> </el-steps> -->
</el-card> </el-card>
<el-card class="box-card" style="position: fixed;bottom: 0;width: 100%;z-index: 1000;" v-if="list.isset==1">
<el-input
style="margin-bottom:10px;"
type="textarea"
autosize
placeholder="请输入备注"
v-model="opinionText1">
</el-input>
<el-button type="primary" @click="liangOperation(1)" plain>同意</el-button>
<el-button type="danger" @click="liangOperation(2)" plain>驳回</el-button>
</el-card>
<!-- <el-timeline reverse="true"> <!-- <el-timeline reverse="true">
<el-timeline-item <el-timeline-item
v-for="(item,index) in list.flowLog" v-for="(item,index) in list.flowLog"
@ -152,10 +206,11 @@
<script> <script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth' import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutkscoreflow,lookrationkscoreflow } from '@/api/dutys' import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutkscoreflow,lookrationkscoreflow,sanction } from '@/api/dutys'
export default { export default {
data() { data() {
return{ return{
opinionText1:'',
buzhou:0, buzhou:0,
carddianShow:false, carddianShow:false,
cardShow:false, cardShow:false,
@ -191,7 +246,7 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
}, },
created () { created () {
if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
// alert(JSON.stringify(this.$route.query))
setToken(this.$route.query.token) setToken(this.$route.query.token)
setKey(this.$route.query.key) setKey(this.$route.query.key)
if (getToken()=='') { if (getToken()=='') {
@ -204,20 +259,32 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
} }
}else{ }else{
if (sessionStorage.getItem('userinfo')==null) { // if (sessionStorage.getItem('userinfo')==null) {
this.$router.push('/quantitativeListLogin?id='+this.$route.query.id) // this.$router.push('/quantitativeListLogin?id='+this.$route.query.id)
}else if (sessionStorage.getItem('userinfo')==undefined) { // }else if (sessionStorage.getItem('userinfo')==undefined) {
this.$router.push('/quantitativeListLogin?id='+this.$route.query.id) // this.$router.push('/quantitativeListLogin?id='+this.$route.query.id)
}else if (sessionStorage.getItem('userinfo')=='') { // }else if (sessionStorage.getItem('userinfo')=='') {
this.$router.push('/quantitativeListLogin?id='+this.$route.query.id) // this.$router.push('/quantitativeListLogin?id='+this.$route.query.id)
}else if (this.$store.state.user.token=='') { // }else if (this.$store.state.user.token=='') {
this.$router.push('/quantitativeListLogin?id='+this.$route.query.id) // this.$router.push('/quantitativeListLogin?id='+this.$route.query.id)
}else if (this.$store.state.user.token==null) { // }else if (this.$store.state.user.token==null) {
this.$router.push('/quantitativeListLogin?id='+this.$route.query.id) // this.$router.push('/quantitativeListLogin?id='+this.$route.query.id)
}else if (this.$store.state.user.token===undefined) { // }else if (this.$store.state.user.token===undefined) {
this.$router.push('/quantitativeListLogin?id='+this.$route.query.id) // this.$router.push('/quantitativeListLogin?id='+this.$route.query.id)
}else if (typeof this.$store.state.user.token=="undefined") { // }else if (typeof this.$store.state.user.token=="undefined") {
this.$router.push('/quantitativeListLogin?id='+this.$route.query.id) // this.$router.push('/quantitativeListLogin?id='+this.$route.query.id)
// }else{
// this.form.outid=this.$route.query.id
// this.getData()
// }
if (this.$route.query.token=='') {
this.jump(jumpId)
}else if (this.$route.query.token==null) {
this.jump(jumpId)
}else if (this.$route.query.token===undefined) {
this.jump(jumpId)
}else if (this.$route.query.token=="undefined") {
this.jump(jumpId)
}else{ }else{
this.form.outid=this.$route.query.id this.form.outid=this.$route.query.id
this.getData() this.getData()
@ -235,8 +302,54 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
} }
}, },
methods: { methods: {
jump(jumpId){
window.location.href='https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww02f310301953277a&redirect_uri=https%3A%2F%2Fwww.hxgk.group%2Fjumpapiurl%2Fscancode%3Fcontroll%3DquantitativeList%26id%3D'+jumpId+'%26num%3D0%26istrue%3D2&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect'
},
//
async liangOperation(val){
//
if (val==1) {
const from = {
orderid: this.form.outid, //ID
yesorno: 1, //12
content: this.opinionText1 //
}
const res = await sanction(from)
if (res.code === 0) {
this.$message({
type: 'success',
message: '成功!'
})
this.getData()
}
this.opinionText1=''
}
//
if (val==2) {
const from = {
orderid: this.form.outid, //ID
yesorno: 2, //12
content: this.opinionText1 //
}
const res = await sanction(from)
if (res.code === 0) {
this.$message({
type: 'success',
message: '成功!'
})
this.getData()
}
this.opinionText1=''
}
},
// //
async getData(){ async getData(){
this.buzhou=0
alert(JSON.stringify(this.form))
const res = await lookrationkscoreflow(this.form) const res = await lookrationkscoreflow(this.form)
this.list=res.data this.list=res.data
this.list.flowall.forEach(element => { this.list.flowall.forEach(element => {
@ -309,4 +422,7 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,lookdutksc
font-size: 16px; font-size: 16px;
font-weight:bold; font-weight:bold;
} }
.left{
float: left;
}
</style> </style>

116
src/views/rectification/index.vue

@ -11,6 +11,18 @@
v-model="form.content"> v-model="form.content">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="附件上传">
<el-upload
:on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
list-type="picture"
:on-remove="(file, fileList, index) => {handleRemove(file, fileList, index)}"
:action="uploadActionUrl"
multiple
:on-success="uploadSuccess"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
</el-form-item> </el-form-item>
@ -26,10 +38,12 @@
<script> <script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth' import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures } from '@/api/dutys' import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures,amendmeasures } from '@/api/dutys'
export default { export default {
data() { data() {
return{ return{
fileList:[],
uploadActionUrl:'/api/upordown',
bianKuan:40, bianKuan:40,
// //
userProps: { userProps: {
@ -53,36 +67,51 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures } from '@/
} }
}, },
created () { created () {
var jumpId=this.$route.query.id
var jumpNum=this.$route.query.num
if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
setToken(this.$route.query.token) setToken(this.$route.query.token)
setKey(this.$route.query.key) setKey(this.$route.query.key)
if (getToken()=='') { if (getToken()=='') {
window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=rectification&id='+this.$route.query.id; window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=rectification&id='+this.$route.query.id+'&num='+this.$route.query.num;
}else if (typeof this.$route.query.token === 'undefined') { }else if (typeof this.$route.query.token === 'undefined') {
window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=rectification&id='+this.$route.query.id; window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=rectification&id='+this.$route.query.id+'&num='+this.$route.query.num;
}else{ }else{
} }
}else{ }else{
if (sessionStorage.getItem('userinfo')==null) { // if (sessionStorage.getItem('userinfo')==null) {
this.$router.push('/zhenggaiLogin?id='+this.$route.query.id) // this.$router.push('/zhenggaiLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
}else if (sessionStorage.getItem('userinfo')==undefined) { // }else if (sessionStorage.getItem('userinfo')==undefined) {
this.$router.push('/zhenggaiLogin?id='+this.$route.query.id) // this.$router.push('/zhenggaiLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
}else if (sessionStorage.getItem('userinfo')=='') { // }else if (sessionStorage.getItem('userinfo')=='') {
this.$router.push('/zhenggaiLogin?id='+this.$route.query.id) // this.$router.push('/zhenggaiLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
}else if (this.$store.state.user.token=='') { // }else if (this.$store.state.user.token=='') {
this.$router.push('/zhenggaiLogin?id='+this.$route.query.id) // this.$router.push('/zhenggaiLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
}else if (this.$store.state.user.token==null) { // }else if (this.$store.state.user.token==null) {
this.$router.push('/zhenggaiLogin?id='+this.$route.query.id) // this.$router.push('/zhenggaiLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
}else if (this.$store.state.user.token===undefined) { // }else if (this.$store.state.user.token===undefined) {
this.$router.push('/zhenggaiLogin?id='+this.$route.query.id) // this.$router.push('/zhenggaiLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
}else if (typeof this.$store.state.user.token=="undefined") { // }else if (typeof this.$store.state.user.token=="undefined") {
this.$router.push('/zhenggaiLogin?id='+this.$route.query.id) // this.$router.push('/zhenggaiLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
}else{ // }else{
// }
if (this.$route.query.token=='') {
this.jump(jumpId,jumpNum)
}else if (this.$route.query.token==null) {
this.jump(jumpId,jumpNum)
}else if (this.$route.query.token===undefined) {
this.jump(jumpId,jumpNum)
}else if (this.$route.query.token=="undefined") {
this.jump(jumpId,jumpNum)
}else{
// this.form.outid=this.$route.query.id
// this.getData()
} }
} }
this.form.orderid=this.$route.query.id this.form.id=this.$route.query.id
this.form.number=this.$route.query.num
if (document.body.clientWidth<1000) { if (document.body.clientWidth<1000) {
this.bianKuan=100 this.bianKuan=100
}else{ }else{
@ -92,10 +121,57 @@ import { getgroupuser,adddivisionresponsibility,addcorrectivemeasures } from '@/
this.getSystemadminlist() this.getSystemadminlist()
}, },
methods: { methods: {
jump(jumpId,jumpNum){
window.location.href='https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww02f310301953277a&redirect_uri=https%3A%2F%2Fwww.hxgk.group%2Fjumpapiurl%2Fscancode%3Fcontroll%3Drectification%26id%3D'+jumpId+'%26num%3D'+jumpNum+'%26istrue%3D2&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect'
},
//
handleChange(file, fileList, scope) {
//
let imgSize = Number(file.size / 1024 / 1024);
if (imgSize > 100) {
this.$msgbox({
title: "",
message: "文件大小不能超过100MB,请重新上传。",
type: "warning",
});
this.materialList[scope.$index].fileList.splice(scope.index, 1);
return;
}
},
//
uploadSuccess(response,file,fileList){
if (response.code==0) {
const data = {
filename: response.data.name, //
filepath: response.data.url, //
type: response.data.type //123office45
}
this.form.enclosure.push(data)
}
},
//
handleRemove(file, fileList,index){
this.form.enclosure=[]
fileList.forEach((a) => {
const data = {
filename: a.response.data.name, //
filepath: a.response.data.url, //
type: a.response.data.type //123office45
}
this.form.enclosure.push(data)
});
},
// //
async tijiao(){ async tijiao(){
console.log(this.tableData) console.log(this.tableData)
const res = await addcorrectivemeasures(this.form)
const res = await amendmeasures(this.form)
if (res.code==0) { if (res.code==0) {
this.$message({ this.$message({
type: 'success', type: 'success',

109
src/views/responsible/index.vue

@ -35,11 +35,11 @@
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
<el-select v-else v-model="scope.row.userkey" placeholder="请选择人员" multiple clearable> <el-select v-else v-model="scope.row.userkey" placeholder="请选择人员" multiple clearable filterable >
<el-option <el-option
v-for="item in renyuanList" v-for="item in renyuanList"
:key="item.keystr" :key="item.keystr"
:label="item.name" :label="item.number+item.name"
:value="item.keystr"> :value="item.keystr">
</el-option> </el-option>
</el-select> </el-select>
@ -93,17 +93,17 @@
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
<el-select v-else v-model="iteam.userkey" placeholder="请选择人员" multiple clearable> <el-select v-else v-model="iteam.userkey" placeholder="请选择人员" multiple clearable filterable >
<el-option <el-option
v-for="item in renyuanList" v-for="item in renyuanList"
:key="item.keystr" :key="item.keystr"
:label="item.name" :label="item.name+item.number"
:value="item.keystr"> :value="item.keystr">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="比重"> <el-form-item label="比重">
<el-input v-model="iteam.weight"></el-input> <el-input v-model.number="iteam.weight"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-button <el-button
@ -126,11 +126,14 @@
<script> <script>
import { getToken, setToken, removeToken,setKey } from '@/utils/auth' import { getToken, setToken, removeToken,setKey } from '@/utils/auth'
import { getgroupuser,adddivisionresponsibility,getteamlist,stafflist } from '@/api/dutys'
import { getgroupuser,adddivisionresponsibility,getteamlist } from '@/api/dutys'
import { stafflist } from '@/api/copyTwo'
import { oauth2 } from '@/api/login/login' import { oauth2 } from '@/api/login/login'
export default { export default {
data() { data() {
return{ return{
departid:'',
carddianShow:false, carddianShow:false,
cardShow:false, cardShow:false,
renyuanList:[], renyuanList:[],
@ -152,6 +155,7 @@ import { oauth2 } from '@/api/login/login'
grouplistBackup:[], grouplistBackup:[],
form:{ form:{
id:'', id:'',
number:'',
userlist:[], userlist:[],
}, },
tableData:[ tableData:[
@ -165,35 +169,72 @@ import { oauth2 } from '@/api/login/login'
} }
}, },
async created () { async created () {
var jumpId=this.$route.query.id
var jumpNum=this.$route.query.num
if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
setToken(this.$route.query.token) setToken(this.$route.query.token)
setKey(this.$route.query.key) setKey(this.$route.query.key)
if (getToken()=='') { if (getToken()=='') {
window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=responsible&id='+this.$route.query.id; window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=responsible&id='+this.$route.query.id+'&num='+this.$route.query.num;
}else if (typeof this.$route.query.token === 'undefined') { }else if (typeof this.$route.query.token === 'undefined') {
window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=responsible&id='+this.$route.query.id; window.location.href = 'https://www.hxgk.group/jumpapiurl/?url=http://new.hxgk.group&controll=responsible&id='+this.$route.query.id+'&num='+this.$route.query.num;
}else{ }else{
this.departid=this.$route.query.departid
// alert(JSON.stringify(this.$route.query))
this.getshoujirenyuan() this.getshoujirenyuan()
} }
}else{ }else{
if (sessionStorage.getItem('userinfo')==null) {
this.$router.push('/zerenLogin?id='+this.$route.query.id) if (this.$route.query.token=='') {
}else if (sessionStorage.getItem('userinfo')==undefined) { this.jump(jumpId,jumpNum)
this.$router.push('/zerenLogin?id='+this.$route.query.id) }else if (this.$route.query.token==null) {
}else if (sessionStorage.getItem('userinfo')=='') { this.jump(jumpId,jumpNum)
this.$router.push('/zerenLogin?id='+this.$route.query.id) }else if (this.$route.query.token===undefined) {
}else if (this.$store.state.user.token=='') { this.jump(jumpId,jumpNum)
this.$router.push('/zerenLogin?id='+this.$route.query.id) }else if (this.$route.query.token=="undefined") {
}else if (this.$store.state.user.token==null) { this.jump(jumpId,jumpNum)
this.$router.push('/zerenLogin?id='+this.$route.query.id)
}else if (this.$store.state.user.token===undefined) {
this.$router.push('/zerenLogin?id='+this.$route.query.id)
}else if (typeof this.$store.state.user.token=="undefined") {
this.$router.push('/zerenLogin?id='+this.$route.query.id)
}else{ }else{
this.departid=this.$route.query.deparment.toString()
this.getrenyuan() this.getrenyuan()
} }
// if (sessionStorage.getItem('userinfo')==null) {
// this.$router.push('/zerenLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
// }else if (sessionStorage.getItem('userinfo')==undefined) {
// this.$router.push('/zerenLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
// }else if (sessionStorage.getItem('userinfo')=='') {
// this.$router.push('/zerenLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
// }else if (this.$store.state.user.token=='') {
// this.$router.push('/zerenLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
// }else if (this.$store.state.user.token==null) {
// this.$router.push('/zerenLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
// }else if (this.$store.state.user.token===undefined) {
// this.$router.push('/zerenLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
// }else if (typeof this.$store.state.user.token=="undefined") {
// this.$router.push('/zerenLogin?id='+this.$route.query.id+'&num='+this.$route.query.num)
// }else{
// this.userInfo=JSON.parse(sessionStorage.getItem('userinfo'));
// this.getrenyuan()
// }
} }
// if (sessionStorage.getItem('userinfo')==null) {
// this.$router.push('/zerenLogin?id='+this.$route.query.id)
// }else if (sessionStorage.getItem('userinfo')==undefined) {
// this.$router.push('/zerenLogin?id='+this.$route.query.id)
// }else if (sessionStorage.getItem('userinfo')=='') {
// this.$router.push('/zerenLogin?id='+this.$route.query.id)
// }else if (this.$store.state.user.token=='') {
// this.$router.push('/zerenLogin?id='+this.$route.query.id)
// }else if (this.$store.state.user.token==null) {
// this.$router.push('/zerenLogin?id='+this.$route.query.id)
// }else if (this.$store.state.user.token===undefined) {
// this.$router.push('/zerenLogin?id='+this.$route.query.id)
// }else if (typeof this.$store.state.user.token=="undefined") {
// this.$router.push('/zerenLogin?id='+this.$route.query.id)
// }else{
// this.userInfo=JSON.parse(sessionStorage.getItem('userinfo'));
// this.getrenyuan()
// }
if (document.body.clientWidth<1000) { if (document.body.clientWidth<1000) {
this.bianKuan=100 this.bianKuan=100
this.carddianShow=false this.carddianShow=false
@ -220,36 +261,46 @@ import { oauth2 } from '@/api/login/login'
// } else { // } else {
// this.$router.push('/login') // this.$router.push('/login')
// } // }
// alert(JSON.stringify(this.$route.query.num))
console.log("this.$route.query")
console.log(this.$route.query)
this.form.id=this.$route.query.id this.form.id=this.$route.query.id
this.form.number=this.$route.query.num
this.userInfo=JSON.parse(sessionStorage.getItem('userinfo'));
// this.getSystemadminlist() // this.getSystemadminlist()
this.getbanzhu() this.getbanzhu()
}, },
methods: { methods: {
jump(jumpId,jumpNum){
window.location.href='https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww02f310301953277a&redirect_uri=https%3A%2F%2Fwww.hxgk.group%2Fjumpapiurl%2Fscancode%3Fcontroll%3Dresponsible%26id%3D'+jumpId+'%26num%3D'+jumpNum+'%26istrue%3D2&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect'
},
// //
suiji(){ suiji(){
this.suiNum=Math.round(Math.random()*1000000).toString() this.suiNum=Math.round(Math.random()*1000000).toString()
}, },
async getshoujirenyuan(){ async getshoujirenyuan(){
const from = { const from = {
page: 1, page: 1,
pagesize: 10000, pagesize: 10000,
groupId: this.$route.query.groupid, // company: parseInt(this.$route.query.groupid), //
branchFactoryId: this.$route.query.departid, // deparment: this.$route.query.departid.toString(), //
} }
// alert(JSON.stringify(from))
const res = await stafflist(from) const res = await stafflist(from)
this.renyuanList=res.data.list this.renyuanList=res.data.list
// alert(JSON.stringify(this.renyuanList)) // alert(JSON.stringify(res))
}, },
async getrenyuan(){ async getrenyuan(){
const from = { const from = {
page: 1, page: 1,
pagesize: 10000, pagesize: 10000,
groupId: this.userInfo.group, // company: parseInt(this.userInfo.company), //
branchFactoryId: this.userInfo.departmentid, // deparment: this.departid, //
} }
const res = await stafflist(from) const res = await stafflist(from)
this.renyuanList=res.data.list this.renyuanList=res.data.list
@ -270,13 +321,13 @@ import { oauth2 } from '@/api/login/login'
this.tableData.forEach(function (item, index) { this.tableData.forEach(function (item, index) {
if (item.type==3) { if (item.type==3) {
item.userkey=item.userkey.split(',') item.userkey=item.userkey.split(',')
} }
}); });
console.log(this.tableData) console.log(this.tableData)
this.form.userlist=this.tableData this.form.userlist=this.tableData
// this.form.register=this.form.id
const res = await adddivisionresponsibility(this.form) const res = await adddivisionresponsibility(this.form)
this.tableData=[ this.tableData=[
{ {

4
workspace.code-workspace

@ -112,5 +112,7 @@
"path": "." "path": "."
} }
], ],
"settings": {} "settings": {
"workbench.statusBar.visible": true
}
} }
Loading…
Cancel
Save