Browse Source

2022.0811

main
renguanyu111 3 years ago
parent
commit
2e8407cabf
  1. 1
      .env.development
  2. 3
      src/App.vue
  3. 1
      src/__layout/components/Navbar.vue
  4. 8
      src/api/api/dutys.js
  5. 72
      src/api/duty/project.js
  6. 16
      src/api/echarts/echarts.js
  7. 65
      src/api/honer.js
  8. 40
      src/api/personnel/post.js
  9. 1
      src/permission.js
  10. 71
      src/router/index.js
  11. 1
      src/store/modules/user.js
  12. 5
      src/utils/request.js
  13. 89
      src/utils/requestFile.js
  14. 136
      src/views/assessmentProgram/departmentalAssessment.vue
  15. 2083
      src/views/assessmentProgram/gwQualitativeIndicators.vue
  16. 6
      src/views/assessmentProgram/qualitativeIndicators.vue
  17. 1
      src/views/basicInfo/assessmentDimension.vue
  18. 889
      src/views/basicInfo/gwProject.vue
  19. 23
      src/views/basicInfo/project.vue
  20. 456
      src/views/basicInfo/projectBase.vue
  21. 2
      src/views/basicInfo/qualitativeIndicators.vue
  22. 19
      src/views/basicInfo/target.vue
  23. 363
      src/views/course/courseware.vue
  24. 379
      src/views/echarts/table.vue
  25. 655
      src/views/honor/index.vue
  26. 333
      src/views/honor/type.vue
  27. 475
      src/views/hr/personnel.vue
  28. 323
      src/views/hr/team.vue
  29. 61
      src/views/lunbo/index.vue
  30. 287
      src/views/permission/permissionSetting.vue
  31. 159
      src/views/personnel/post/index.vue

1
.env.development

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

3
src/App.vue

@ -48,7 +48,8 @@ window.addEventListener('hashchange',()=>{
var currentPath = window.location.hash.slice(1); // var currentPath = window.location.hash.slice(1); //
if(this.$router.path !== currentPath){ if(this.$router.path !== currentPath){
this.$router.push(currentPath); // console.log('动态跳转')
// this.$router.push(currentPath); //
} }

1
src/__layout/components/Navbar.vue

@ -57,6 +57,7 @@ export default {
}, },
created () { created () {
if (JSON.parse(sessionStorage.getItem('userinfo'))==null) { if (JSON.parse(sessionStorage.getItem('userinfo'))==null) {
console.log('Navbarr Login')
this.$router.push('/login') this.$router.push('/login')
} }
this.userInfo=JSON.parse(sessionStorage.getItem('userinfo')); this.userInfo=JSON.parse(sessionStorage.getItem('userinfo'));

8
src/api/api/dutys.js

@ -262,4 +262,12 @@ export const sanction = (data) => {
data: data data: data
}) })
} }
//汇总详情
export const summarydetails = (data) => {
return request({
url: '/quan/summarydetails',
method: 'post',
data: data
})
}

72
src/api/duty/project.js

@ -80,3 +80,75 @@ export const eitetarget = (data) => {
data: data data: data
}) })
} }
//汇总详情
export const summarydetails = (data) => {
return request({
url: '/quant/summarydetails',
method: 'post',
data: data
})
}
//岗位考核指标列表
export const posttargetlist = (data) => {
return request({
url: '/postkpi/posttargetlist',
method: 'post',
data: data
})
}
//编辑岗位指标
export const editposttarget = (data) => {
return request({
url: '/postkpi/editposttarget',
method: 'post',
data: data
})
}
//编辑岗位指标状态
export const editstate = (data) => {
return request({
url: '/postkpi/editstate',
method: 'post',
data: data
})
}
//添加岗位考核指标
export const addposttarget = (data) => {
return request({
url: '/postkpi/addposttarget',
method: 'post',
data: data
})
}
//修改定性指标关联岗位
export const editposttargetaual = (data) => {
return request({
url: '/postkpi/editposttargetaual',
method: 'post',
data: data
})
}
//添加岗位细则
export const addposttargetcont = (data) => {
return request({
url: '/postkpi/addposttargetcont',
method: 'post',
data: data
})
}
//岗位定性考核列表
export const posttargetsunlist = (data) => {
return request({
url: '/postkpi/posttargetsunlist',
method: 'post',
data: data
})
}
//获取指标关联的岗位
export const targetorglist = (data) => {
return request({
url: '/postkpi/targetorglist',
method: 'post',
data: data
})
}

16
src/api/echarts/echarts.js

@ -31,3 +31,19 @@ export const departmenttranscript = (data) => {
data: data data: data
}) })
} }
//汇总详情定性历史记录
export const summarydetailsxinglog = (data) => {
return request({
url: '/quant/summarydetailsxinglog',
method: 'post',
data: data
})
}
//汇总详情定量历史记录
export const summarydetailslianglog = (data) => {
return request({
url: '/quant/summarydetailslianglog',
method: 'post',
data: data
})
}

65
src/api/honer.js

@ -0,0 +1,65 @@
import request from '@/utils/requestFile'
// 载体类型列表
export function carrierlist(data) {
return request({
url: '/honors/carrierlist',
method: 'post',
data
})
}
// 添加载体类型
export function addcarrier(data) {
return request({
url: '/honors/addcarrier',
method: 'post',
data
})
}
// 编辑载体类型
export function eidycarrier(data) {
return request({
url: '/honors/eidycarrier',
method: 'post',
data
})
}
// 编辑载体类型状态
export function eidycarrierstate(data) {
return request({
url: '/honors/eidycarrierstate',
method: 'post',
data
})
}
// 荣誉列表
export function honorlist(data) {
return request({
url: '/honors/honorlist',
method: 'post',
data
})
}
// 添加荣誉
export function addhonorcont(data) {
return request({
url: '/honors/addhonorcont',
method: 'post',
data
})
}
// 编辑荣誉
export function eidyhonorcont(data) {
return request({
url: '/honors/eidyhonorcont',
method: 'post',
data
})
}
// 编辑荣誉状态
export function eidyhonorcontstate(data) {
return request({
url: '/honors/eidyhonorcontstate',
method: 'post',
data
})
}

40
src/api/personnel/post.js

@ -248,5 +248,45 @@ export const archivescont = (data) => {
data: data data: data
}) })
} }
//获取班组
export const getteamcont = (data) => {
return request({
url: '/org/getteamcont',
method: 'post',
data: data
})
}
//编辑班组状态或删除
export const eidtdelteamcont = (data) => {
return request({
url: '/org/eidtdelteamcont',
method: 'post',
data: data
})
}
//班组列表
export const teamcontlist = (data) => {
return request({
url: '/org/teamcontlist',
method: 'post',
data: data
})
}
//添加班组
export const addteamcont = (data) => {
return request({
url: '/org/addteamcont',
method: 'post',
data: data
})
}
//编辑班组
export const eiteteamcont = (data) => {
return request({
url: '/org/eiteteamcont',
method: 'post',
data: data
})
}

1
src/permission.js

@ -22,6 +22,7 @@ router.beforeEach(async(to, from, next) => {
if (hasToken!='') { if (hasToken!='') {
next({path:'/index'}) next({path:'/index'})
} else { } else {
console.log("permission login")
next({path:'/login'}) next({path:'/login'})
} }
if (hasToken) { if (hasToken) {

71
src/router/index.js

@ -31,15 +31,33 @@ import Layout from '@/layout'
*/ */
export const constantRoutes = [ export const constantRoutes = [
{ {
path: '/ceshi', path: '/',
component: () => import('@/views/ce/index'), component: Layout,
// hidden: true redirect: '/frontPage',
children: [{
path: 'frontPage',
name: 'frontPage',
component: () => import('@/views/frontPage/index'),
meta: { title: '首页'}
}]
}, },
{ {
path: '/login', path: '/login',
component: () => import('@/views/login/wxLogin'), component: () => import('@/views/login/wxLogin'),
hidden: true hidden: true
}, },
// 扫码登录中间件
{
path: '/ceshi',
component: () => import('@/views/ce/index'),
// hidden: true
},
{
path: '/lunbo',
component: () => import('@/views/lunbo/index'),
// hidden: true
},
{ {
path: '/approval', path: '/approval',
component: () => import('@/views/approval/index'), component: () => import('@/views/approval/index'),
@ -60,15 +78,15 @@ export const constantRoutes = [
component: () => import('@/views/404'), component: () => import('@/views/404'),
hidden: true hidden: true
}, },
{ {
path: '/', path: '/permissionSetting',
component: Layout, component: Layout,
redirect: '/frontPage', redirect: '/permissionSetting',
children: [{ children: [{
path: 'frontPage', path: 'permissionSetting',
name: 'frontPage', component: () => import('@/views/permission/permissionSetting'),
component: () => import('@/views/frontPage/index'), meta: { title: '权限配置'}
meta: { title: '首页'}
}] }]
}, },
// /setsystem/systemmenulist // /setsystem/systemmenulist
@ -153,6 +171,11 @@ export const constantRoutes = [
path: 'organization', path: 'organization',
component: () => import('@/views/hr/organization.vue'), component: () => import('@/views/hr/organization.vue'),
}, },
{
path: 'team',
component: () => import('@/views/hr/team.vue'),
meta: { title: '班组管理'}
},
], ],
}, },
// 数据提报 // 数据提报
@ -174,6 +197,25 @@ export const constantRoutes = [
}, },
], ],
}, },
// 荣誉档案
{
path: '/honer',
component: Layout,
children: [
// 当 /user/:id 匹配成功
// UserHome 将被渲染到 User 的 <router-view> 内部
{
path: 'index',
component: () => import('@/views/honor/index'),
meta: { title: '荣誉档案'}
},
{
path: 'type',
component: () => import('@/views/honor/type'),
meta: { title: '载体类型'}
},
],
},
// 审核记录 // 审核记录
{ {
path: '/approvalData', path: '/approvalData',
@ -224,6 +266,11 @@ export const constantRoutes = [
component: () => import('@/views/basicInfo/project'), component: () => import('@/views/basicInfo/project'),
meta: { title: '考核指标'} meta: { title: '考核指标'}
}, },
{
path: 'gwproject',
component: () => import('@/views/basicInfo/projectBase'),
meta: { title: '岗位指标'}
},
{ {
path: 'Target', path: 'Target',
component: () => import('@/views/basicInfo/target'), component: () => import('@/views/basicInfo/target'),
@ -327,6 +374,12 @@ export const constantRoutes = [
component: () => import('@/views/assessmentProgram/qualitativeIndicators'), component: () => import('@/views/assessmentProgram/qualitativeIndicators'),
meta: { title: '定性考核', icon: 'tree' } meta: { title: '定性考核', icon: 'tree' }
}, },
{
path: 'gwQualitativeIndicators',
name: 'gwQualitativeIndicators',
component: () => import('@/views/assessmentProgram/gwQualitativeIndicators'),
meta: { title: '定性考核', icon: 'tree' }
},
// { // {
// path: 'quantitativeIndicators', // path: 'quantitativeIndicators',
// name: 'quantitativeIndicators', // name: 'quantitativeIndicators',

1
src/store/modules/user.js

@ -18,6 +18,7 @@ const state = getDefaultState()
const mutations = { const mutations = {
loginOut(state) { loginOut(state) {
console.log('user.js loginOut')
state.userInfo = {} state.userInfo = {}
state.token = '' state.token = ''
state.key = '' state.key = ''

5
src/utils/request.js

@ -58,11 +58,13 @@ service.interceptors.response.use(
*/ */
response => { response => {
const res = response.data const res = response.data
console.log("res.code")
console.log(res.code)
// if the custom code is not 20000, it is judged as an error. // if the custom code is not 20000, it is judged as an error.
if (res.code !== 0) { if (res.code !== 0) {
endLoading() endLoading()
if(res.code === 7){ if(res.code === 7){
console.log('res.code === 7')
store.commit('user/loginOut') store.commit('user/loginOut')
} }
Message({ Message({
@ -88,6 +90,7 @@ service.interceptors.response.use(
// return Promise.reject(Error).catch(Error=>{console.log(Error)}) // return Promise.reject(Error).catch(Error=>{console.log(Error)})
// return Promise.reject(new Error(res.msg || 'Error')) // return Promise.reject(new Error(res.msg || 'Error'))
} else { } else {
console.log("成功")
return res return res
} }
}, },

89
src/utils/requestFile.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_API2, // 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

136
src/views/assessmentProgram/departmentalAssessment.vue

@ -46,57 +46,67 @@
<!-- <el-button size="mini" type="primary" icon="el-icon-setting" @click="showDimension()">设置维度权重</el-button> --> <!-- <el-button size="mini" type="primary" icon="el-icon-setting" @click="showDimension()">设置维度权重</el-button> -->
<el-button size="mini" type="primary" icon="el-icon-setting" @click="showIndex()">生成部门考核方案</el-button> <el-button size="mini" type="primary" icon="el-icon-setting" @click="showIndex()">生成部门考核方案</el-button>
</div> </div>
<el-table border :data="versionData" :span-method="versionSpanMethod"> <el-container>
<el-table-column align="left" label="部门"> <!-- 左侧内容 -->
<template #default="scope"> <el-aside width="300px">
{{scope.row.groupname}}{{scope.row.deaprtname}} <el-tree :data="GovthreeList2" :props="defaultProps1" @node-click="handleNodeClick"></el-tree>
</template> </el-aside>
</el-table-column> <!-- 右侧内容 -->
<el-table-column align="left" label="年度" prop="year"/> <el-main style="padding:10px">
<el-table-column align="left" label="版本号"> <el-table border :data="versionData" :span-method="versionSpanMethod">
<template #default="scope"> <el-table-column align="left" label="部门">
{{scope.row.key}} <template #default="scope">
</template> {{scope.row.groupname}}{{scope.row.deaprtname}}
</el-table-column> </template>
<el-table-column align="left" label="时间" prop="time"/> </el-table-column>
<el-table-column align="left" label="状态"> <el-table-column align="left" label="年度" prop="year"/>
<template #default="scope"> <el-table-column align="left" label="版本号">
<el-switch <template #default="scope">
inline-prompt {{scope.row.key}}
active-text="正常" </template>
inactive-text="禁止" </el-table-column>
v-model="scope.row.state" <el-table-column align="left" label="时间" prop="time"/>
active-color="#13ce66" <el-table-column align="left" label="状态">
inactive-color="#ff4949" <template #default="scope">
:active-value=1 <el-switch
:inactive-value=2 inline-prompt
@change="changeVal($event,scope.row.key)" active-text="正常"
/> inactive-text="禁止"
</template> v-model="scope.row.state"
</el-table-column> active-color="#13ce66"
<el-table-column align="left" fixed="right" label="操作" width="200"> inactive-color="#ff4949"
<template #default="scope"> :active-value=1
<el-button :inactive-value=2
icon="el-icon-view" @change="changeVal($event,scope.row.key)"
size="small" />
type="text" </template>
@click="showDetails(scope.row)" </el-table-column>
>查看详情</el-button> <el-table-column align="left" fixed="right" label="操作" width="200">
<el-button <template #default="scope">
icon="el-icon-document-checked" <el-button
size="small" icon="el-icon-view"
type="text" size="small"
@click="copyShow(scope.row)" type="text"
>复制</el-button> @click="showDetails(scope.row)"
<el-button >查看详情</el-button>
icon="el-icon-delete" <el-button
size="small" icon="el-icon-document-checked"
type="text" size="small"
@click="deleteOperate(scope.row)" type="text"
>删除</el-button> @click="copyShow(scope.row)"
</template> >复制</el-button>
</el-table-column> <el-button
</el-table> icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</el-main>
</el-container>
</div> </div>
<!-- 新增弹框 --> <!-- 新增弹框 -->
@ -282,7 +292,6 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="所属部门" prop="title" v-if="form.group!=''"> <el-form-item label="所属部门" prop="title" v-if="form.group!=''">
<el-cascader filterable clearable v-model="form.parentid" :options="departmentList" :show-all-levels="false" :props="props1" @change="shouWei"></el-cascader> <el-cascader filterable clearable v-model="form.parentid" :options="departmentList" :show-all-levels="false" :props="props1" @change="shouWei"></el-cascader>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
@ -303,7 +312,6 @@
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item v-if="form.parentid!=''"> <el-form-item v-if="form.parentid!=''">
<!-- 表格表单提交 --> <!-- 表格表单提交 -->
<el-card class="box-card" v-for="(item,index) in weiDuList" :key="item.id"> <el-card class="box-card" v-for="(item,index) in weiDuList" :key="item.id">
@ -610,7 +618,6 @@
<!-- <div v-if="scope.row.istrue==2">{{scope.row.referencescore}}</div> --> <!-- <div v-if="scope.row.istrue==2">{{scope.row.referencescore}}</div> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="状态" label="状态"
align="center" align="center"
@ -640,6 +647,7 @@
</template> </template>
<script> <script>
import { govthree } from '@/api/personnel/post'
import { dutyclasslist } from '@/api/duty/dimension' import { dutyclasslist } from '@/api/duty/dimension'
import { gettasktarget,gettasktargetsun,gettasktargetcontary,addqualeval, import { gettasktarget,gettasktargetsun,gettasktargetcontary,addqualeval,
addration,departmenttasklist,addqubatch,bumenList,departmentlistnew,adddepartmentdutyinfo, addration,departmenttasklist,addqubatch,bumenList,departmentlistnew,adddepartmentdutyinfo,
@ -661,6 +669,11 @@ export default {
}, },
data() { data() {
return { return {
GovthreeList2:[],
defaultProps1: {
children: 'child',
label: 'name'
},
copyDialogFormVisible:false, copyDialogFormVisible:false,
weiduFractionCopy:0, weiduFractionCopy:0,
weiDuCopyList:[], weiDuCopyList:[],
@ -862,6 +875,7 @@ export default {
this.getGrouplist() this.getGrouplist()
this.getDutyclasslist() this.getDutyclasslist()
this.getSystemadminlist() this.getSystemadminlist()
this.getGovthree2()
}, },
// //
watch: { watch: {
@ -901,6 +915,20 @@ export default {
}, },
}, },
methods: { methods: {
//
handleNodeClick(val){
this.searchInfo.organization=val.id
this.searchInfo.organization=this.searchInfo.organization.toString()
this.getDataList()
console.log(val)
},
//
async getGovthree2(){
const res = await govthree()
this.GovthreeList2 = res.data[0].child
console.log("this.GovthreeList2")
console.log(res.data[0].child)
},
getVersionSpanArr(data) { getVersionSpanArr(data) {
// data // data
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {

2083
src/views/assessmentProgram/gwQualitativeIndicators.vue

File diff suppressed because it is too large

6
src/views/assessmentProgram/qualitativeIndicators.vue

@ -1093,9 +1093,9 @@ export default {
} }
}, },
created() { created() {
if (this.$store.state.user.token=='') { // if (this.$store.state.user.token=='') {
this.$router.push('/login') // this.$router.push('/login')
} // }
// //
this.getDataList() this.getDataList()
this.getGrouplist() this.getGrouplist()

1
src/views/basicInfo/assessmentDimension.vue

@ -155,6 +155,7 @@ export default {
created() { created() {
console.log(this.$store.state.user.token) console.log(this.$store.state.user.token)
if (this.$store.state.user.token=='') { if (this.$store.state.user.token=='') {
console.log("跳转login")
this.$router.push('/login') this.$router.push('/login')
} }
// //

889
src/views/basicInfo/gwProject.vue

@ -0,0 +1,889 @@
<template>
<!-- 岗位考核指标录入 -->
<div class="dashboard-container">
<div class="gva-search-box">
<el-form ref="searchForm" :inline="true" :model="searchInfo">
<el-form-item label="考核指标">
<el-input
placeholder="请输入名称"
v-model="searchInfo.title"
clearable
>
</el-input>
</el-form-item>
<!-- <el-form-item label="是否通用" prop="share">
<el-select v-model="searchInfo.share" placeholder="请选择是否通用">
<el-option label="通用指标" :value=1></el-option>
<el-option label="个性指标" :value=2></el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item v-if="searchInfo.share==2" label="关联部门" prop="relevantdepartments">
<el-cascader clearable v-model="searchInfo.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader>
</el-form-item> -->
<!-- <el-form-item label="关联部门" prop="relevantdepartments">
<el-cascader filterable clearable v-model="searchInfo.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader>
</el-form-item> -->
<el-form-item label="指标维度" prop="dimension">
<el-select
v-model="searchInfo.dimension"
clearable
placeholder="请选择考核维度"
>
<el-option
v-for="item in dutyclasslist"
:key="item.outId"
:label="item.title"
:value="item.outId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指标性质" prop="type">
<el-select v-model="searchInfo.type" placeholder="请选择指标性质">
<el-option label="定性指标" :value="1"></el-option>
<el-option label="定量指标" :value="2"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="状态">
<el-select v-model="searchInfo.state" clearable placeholder="请选择状态">
<el-option :value=1 label="正常">正常</el-option>
<el-option :value=2 label="禁止">禁止</el-option>
</el-select>
</el-form-item> -->
<el-form-item>
<el-button
size="mini"
type="primary"
icon="el-icon-search"
@click="onSubmit"
>查询</el-button
>
<el-button size="mini" icon="el-icon-refresh" @click="onReset"
>重置</el-button
>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button
size="mini"
type="primary"
icon="el-icon-plus"
@click="showAdd()"
>新增</el-button
>
</div>
<el-container>
<!-- 左侧内容 -->
<el-aside
width="300px"
style="border-right: 1px solid rgb(220, 223, 230);height: 750px"
>
<el-tree
:data="GovthreeList2"
:props="defaultProps1"
@node-click="handleNodeClick"
></el-tree>
</el-aside>
<el-aside
width="200px"
style="border-right: 1px solid rgb(220, 223, 230);height: 750px"
>
<el-tree
:data="postList"
:props="defaultProps1"
@node-click="NodePostClick"
></el-tree>
</el-aside>
<!-- 右侧内容 -->
<el-main style="padding: 10px">
<div v-if="tableGWShow">
<project></project>
</div>
<div v-if="tableBMShow">
<el-table :data="tableData">
<el-table-column align="left" label="考核指标" prop="title" />
<el-table-column
align="left"
label="考核维度"
prop="dimensionname"
/>
<el-table-column align="left" label="指标性质">
<template #default="scope">
<div v-if="scope.row.type == 1">定性指标</div>
<div v-if="scope.row.type == 2">定量指标</div>
</template>
</el-table-column>
<!-- <el-table-column align="left" label="是否通用">
<template #default="scope">
<div v-if="scope.row.share==1">通用指标</div>
<div v-if="scope.row.share==2">个性指标</div>
</template>
</el-table-column> -->
<el-table-column align="left" label="单位" prop="unit" />
<el-table-column align="left" label="考核周期" prop="outId">
<template #default="scope">
<el-tag v-if="scope.row.cycle == 1"></el-tag>
<el-tag v-if="scope.row.cycle == 2"></el-tag>
<el-tag v-if="scope.row.cycle == 3"></el-tag>
<el-tag v-if="scope.row.cycle == 4"></el-tag>
<el-tag v-if="scope.row.cycle == 5">季度</el-tag>
<el-tag v-if="scope.row.cycle == 6"></el-tag>
</template>
</el-table-column>
<el-table-column align="left" label="计分方式" prop="outId">
<template #default="scope">
<el-tag v-if="scope.row.scoringmethod == 1">自动计分</el-tag>
<el-tag v-if="scope.row.scoringmethod == 2">手动计分</el-tag>
</template>
</el-table-column>
<el-table-column align="left" label="关联岗位">
<template #default="scope">
<el-collapse>
<el-collapse-item title="详情" name="1">
<div v-for="(iteam, index) in scope.row.postary">
{{ iteam.name }}
</div>
</el-collapse-item>
</el-collapse>
<!-- <div v-for="item in scope.row.relevantdepartmentsmap" :key="item.key">{{item.title}}</div> -->
</template>
</el-table-column>
<el-table-column align="left" label="数据提交">
<template #default="scope">
<div v-for="item in scope.row.reportary" :key="item.key">
{{ item.name }}
</div>
</template>
</el-table-column>
<el-table-column align="left" label="辅助计数" prop="cycleattr" />
<el-table-column align="left" label="状态">
<template #default="scope">
<el-switch
inline-prompt
v-model="scope.row.state"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value="1"
:inactive-value="2"
@change="changeVal($event, scope.row.id)"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<template #default="scope">
<el-button
icon="el-icon-edit"
size="small"
type="text"
@click="showEdit(scope.row)"
>编辑</el-button
>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchInfo.pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
</el-main>
</el-container>
</div>
<!-- 新增弹框 -->
<el-dialog
:close-on-click-modal="false"
:visible.sync="dialogFormVisible"
:before-close="closeDialog"
title="新增"
width="30%"
>
<el-form ref="addForm" :model="form" label-width="150px">
<el-form-item label="指标名称" prop="title">
<el-input v-model="form.title" autocomplete="off" />
</el-form-item>
<!-- <el-form-item label="是否通用" prop="share">
<el-select v-model="form.share" placeholder="请选择是否通用">
<el-option label="通用指标" :value=1></el-option>
<el-option label="个性指标" :value=2></el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item v-if="form.share==2" label="关联部门" prop="relevantdepartments">
<el-cascader clearable v-model="form.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader>
</el-form-item> -->
<el-form-item label="关联部门" prop="relevantDepartments">
<el-cascader
filterable
clearable
v-model="form.relevantDepartments"
:options="grouplist"
:show-all-levels="false"
:props="props"
@change="departChange"
></el-cascader>
</el-form-item>
<el-form-item label="相关岗位" prop="departmentsPost">
<el-select
clearable
multiple
v-model="form.departmentsPost"
filterable
placeholder="请选择"
>
<el-option
v-for="item in postListAdd"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指标维度" prop="dimension">
<el-select
v-model="form.dimension"
clearable
placeholder="请选择考核维度"
>
<el-option
v-for="item in dutyclasslist"
:key="item.outId"
:label="item.title"
:value="item.outId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指标性质" prop="type">
<el-select v-model="form.type" placeholder="请选择指标性质">
<el-option label="定性指标" :value="1"></el-option>
<el-option label="定量指标" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="计量单位" prop="unites">
<el-input v-model="form.unit" autocomplete="off" />
</el-form-item>
<el-form-item label="数据提交" prop="report">
<!-- <el-cascader clearable v-model="form.report" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader> -->
<el-cascader
filterable
clearable
v-model="form.report"
:options="grouplistBackup"
:show-all-levels="false"
:props="userProps"
></el-cascader>
</el-form-item>
<el-form-item label="辅助计数" prop="cycleattr">
<el-input v-model="form.cycleattr" autocomplete="off" />
</el-form-item>
<el-form-item label="计分方式" prop="type">
<el-select v-model="form.scoringmethod" placeholder="请选择指标性质">
<el-option label="自动计分" :value="1"></el-option>
<el-option label="手动计分" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="考核周期" prop="cycle">
<el-select v-model="form.cycle" placeholder="请选择考核周期">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="closeDialog"> </el-button>
<el-button size="small" type="primary" @click="enterDialog"
> </el-button
>
</div>
</template>
</el-dialog>
<!-- 编辑弹框 -->
<el-dialog
:close-on-click-modal="false"
:visible.sync="editDialogFormVisible"
:before-close="editCloseDialog"
title="修改"
width="20%"
>
<el-form
ref="editForm"
:model="editAdd"
:rules="editRules"
label-width="150px"
>
<el-form-item label="指标名称" prop="title">
<el-input v-model="editAdd.title" autocomplete="off" />
</el-form-item>
<!-- <el-form-item label="是否通用" prop="share">
<el-select v-model="editAdd.share" placeholder="请选择是否通用">
<el-option label="通用指标" :value=1></el-option>
<el-option label="个性指标" :value=2></el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item v-if="editAdd.share==2" label="关联部门" prop="relevantdepartmentsmap">
<el-cascader clearable v-model="editAdd.relevantdepartmentsmap" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader>
</el-form-item> -->
<el-form-item label="关联部门" prop="relevantdepartmentsmap">
<el-cascader
filterable
clearable
v-model="editAdd.relevantdepartmentsmap"
:options="grouplist"
:show-all-levels="false"
:props="props"
></el-cascader>
</el-form-item>
<el-form-item label="指标维度" prop="dimensionidstr">
<el-select
v-model="editAdd.dimensionidstr"
clearable
placeholder="请选择考核维度"
>
<el-option
v-for="item in dutyclasslist"
:key="item.outId"
:label="item.title"
:value="item.outId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指标性质" prop="type">
<el-select v-model="editAdd.type" placeholder="请选择指标性质">
<el-option label="定性指标" :value="1"></el-option>
<el-option label="定量指标" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="计量单位" prop="unites">
<el-input v-model="editAdd.unites" autocomplete="off" />
</el-form-item>
<el-form-item label="数据提交" prop="report">
<el-cascader
filterable
clearable
v-model="editAdd.reportmap"
:options="grouplistBackup"
:show-all-levels="false"
:props="userProps"
></el-cascader>
</el-form-item>
<el-form-item label="辅助计数" prop="cycleattr">
<el-input v-model="editAdd.cycleattr" autocomplete="off" />
</el-form-item>
<el-form-item label="计分方式" prop="type">
<el-select
v-model="editAdd.scoringmethod"
placeholder="请选择指标性质"
>
<el-option label="自动计分" :value="1"></el-option>
<el-option label="手动计分" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="考核周期" prop="cycle">
<el-select v-model="editAdd.cycle" placeholder="请选择考核周期">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="editCloseDialog"> </el-button>
<el-button size="small" type="primary" @click="editEnterDialog"
> </el-button
>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import { govthree, positionlist } from "@/api/personnel/post";
import { dutyclasslist } from "@/api/duty/dimension";
import project from "@/views/basicInfo/project.vue";
import {
posttargetlist,
addtarget,
gettargetinfo,
eiteassessinfo,
eitetarget,
deltarget,
editposttarget,
editstate,
addposttarget,
} from "@/api/duty/project";
import { getgroupdepartmap, getgroupuser } from "@/api/duty/group";
export default {
components: {
project,
},
name: "Dashboard",
props:['gwId'],
data() {
return {
tableGWShow: true,
tableBMShow: false,
GovthreeList2: [],
defaultProps1: {
children: "child",
label: "name",
},
grouplistBackup: [],
grouplist: [],
// 123456
options: [
// {
// value: 1,
// label: ''
// }, {
// value: 2,
// label: ''
// }, {
// value: 3,
// label: ''
// },
{
value: 4,
label: "月",
},
{
value: 5,
label: "季度",
},
{
value: 6,
label: "年",
},
],
props: {
checkStrictly: true,
value: "id",
label: "name",
children: "children",
emitPath: false,
// multiple: true
},
userProps: {
value: "key",
label: "name",
children: "govlist",
emitPath: false,
multiple: true,
},
dutyclasslist: {},
searchList: {
page: 1,
pagesize: 10000,
},
//
editFrom: {},
//
switchFrom: {},
//
deleFrom: {},
//
editAdd: {
unittitle: "",
parentId: "",
},
assessList: {},
//
form: {
share: 2,
cycleattr: 1,
scoringmethod: 1,
},
//
dialogFormVisible: false,
//
editDialogFormVisible: false,
total: 0,
postListAdd: [],
postList: [],
tableData: [],
//
searchInfo: {
page: 1,
pagesize: 10,
},
//
abc: {
aaa: "111",
bbb: "222",
},
//
rules: {
title: [{ required: true, message: "必填", trigger: "blur" }],
type: [{ required: true, message: "必填", trigger: "blur" }],
// share: [{ required: true, message: '', trigger: 'blur' }],
relevantdepartments: [
{ required: true, message: "必填", trigger: "blur" },
],
dimension: [{ required: true, message: "必填", trigger: "blur" }],
report: [{ required: true, message: "必填", trigger: "blur" }],
unites: [{ required: true, message: "必填", trigger: "blur" }],
cycle: [{ required: true, message: "必填", trigger: "blur" }],
cycleattr: [{ required: true, message: "必填", trigger: "blur" }],
},
editRules: {
title: [{ required: true, message: "必填", trigger: "blur" }],
type: [{ required: true, message: "必填", trigger: "blur" }],
// share: [{ required: true, message: '', trigger: 'blur' }],
relevantdepartments: [
{ required: true, message: "必填", trigger: "blur" },
],
dimension: [{ required: true, message: "必填", trigger: "blur" }],
report: [{ required: true, message: "必填", trigger: "blur" }],
unites: [{ required: true, message: "必填", trigger: "blur" }],
cycle: [{ required: true, message: "必填", trigger: "blur" }],
cycleattr: [{ required: true, message: "必填", trigger: "blur" }],
},
};
},
created() {
console.log(this.$store.state.user.token);
if (this.$store.state.user.token == "") {
this.$router.push("/login");
}
//
this.getDataList();
this.getDutyclasslist();
this.getSystemadminlist();
this.getGrouplist();
this.getGovthree2();
console.log("this.gwId")
console.log(this.gwId)
},
methods: {
//
NodePostClick(val) {
console.log(val);
},
//
async getPost(val) {
const from = {
organization: val.toString(),
page: 1,
pagesize: 10,
};
const res = await positionlist(from);
this.postList = res.data.list;
},
//
handleNodeClick(val) {
// this.searchInfo.organization=val.id
// this.searchInfo.organization=this.searchInfo.organization.toString()
this.getPost(val.id);
console.log(val);
},
//
async departChange(val) {
console.log(val);
// this.searchInfo.organization=val.id
// this.searchInfo.organization=this.searchInfo.organization.toString()
const from = {
organization: val.toString(),
page: 1,
pagesize: 10,
};
const res = await positionlist(from);
this.postListAdd = res.data.list;
console.log(val);
},
//
async getGovthree2() {
const res = await govthree();
this.GovthreeList2 = res.data[0].child;
console.log("this.GovthreeList2");
console.log(res.data[0].child);
},
//
async getSystemadminlist() {
const from = {
level: 4,
};
const res = await getgroupuser(from);
this.grouplistBackup = res.data;
this.grouplistBackup.forEach((item) => {
if (item.govlist != null) {
// this.digui(item);
item.govlist.forEach((items) => {
// forEach,itemthis.digui(item);
this.digui(items); //
//
console.log(items, "看我查看完整的数据哦");
// children
});
} else {
item.govlist = item.child;
//
}
});
console.log(this.grouplistBackup);
},
//
async getGrouplist() {
const res = await getgroupdepartmap();
this.grouplist = res.data;
},
//
async getDutyclasslist() {
const res = await dutyclasslist(this.searchList);
this.dutyclasslist = res.data.list;
},
//
async deleteOperate(row) {
this.$confirm("此操作将永久删除, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(async () => {
this.deleFrom.state = 3;
this.deleFrom.id = row.id;
this.deleFrom.id = this.deleFrom.id.toString();
const res = await editstate(this.deleFrom);
if (res.code === 0) {
this.$message({
type: "success",
message: "删除成功!",
});
this.getDataList();
}
});
},
//
digui(item) {
//
if (item.govlist != null) {
// valuelabel,
item.govlist.forEach((ff) => {
// children
this.digui(ff);
});
} else {
// children西
// valuelabel,
// --------------------------线---------------------------------
item.govlist = item.child;
}
//
},
//
showAdd() {
this.dialogFormVisible = true;
console.log(this.dialogFormVisible);
},
//
async showEdit(row) {
this.editFrom.outid = row.outid;
const res = await gettargetinfo(this.editFrom);
this.editAdd = res.data;
console.log("this.editAdd");
console.log(this.editAdd);
this.editDialogFormVisible = true;
},
//
async changeVal(val, id) {
this.switchFrom.id = id;
this.switchFrom.id = this.switchFrom.id.toString();
if (val == 1) {
this.switchFrom.state = 1;
const res = await editstate(this.switchFrom);
if (res.code === 0) {
this.$message({
type: "success",
message: "修改状态成功",
showClose: true,
});
this.getDataList();
}
} else {
this.switchFrom.state = 2;
const res = await editstate(this.switchFrom);
if (res.code === 0) {
this.$message({
type: "success",
message: "修改状态成功",
showClose: true,
});
this.getDataList();
}
}
},
//
onReset() {
this.searchInfo = {};
},
//
onSubmit() {
this.searchInfo.page = 1;
this.searchInfo.pagesize = 10;
this.getDataList();
},
//
formatDate(nS) {
return new Date(parseInt(nS) * 1000)
.toLocaleString()
.replace(/:\d{1,2}$/, " ");
},
//
async enterDialog() {
this.$refs.addForm.validate(async (valid) => {
if (valid) {
this.form.relevantDepartments =
this.form.relevantDepartments.toString();
if (this.form.departmentsPost != null) {
this.form.departmentsPost = this.form.departmentsPost.map(String);
}
this.form.cycleattr = parseInt(this.form.cycleattr);
const res = await addposttarget(this.form);
if (res.code === 0) {
this.$message({
type: "success",
message: "添加成功",
showClose: true,
});
}
this.getDataList();
this.closeDialog();
}
});
},
//
async editEnterDialog() {
this.$refs.editForm.validate(async (valid) => {
if (valid) {
if (this.editAdd.relevantdepartmentsmap != null) {
this.editAdd.relevantdepartments =
this.editAdd.relevantdepartmentsmap.map(String);
}
if (this.editAdd.relevantdepartmentsmap == null) {
this.editAdd.relevantdepartments =
this.editAdd.relevantdepartments.split(",");
}
if (this.editAdd.visiblerangedepartmap == null) {
this.editAdd.visiblerange = this.editAdd.visiblerange.split(",");
}
if (this.editAdd.visiblerangegroupmap == null) {
this.editAdd.visiblerangegroup =
this.editAdd.visiblerangegroup.split(",");
}
console.log(this.editAdd.relevantdepartments);
if (this.editAdd.share == 1) {
this.editAdd.relevantdepartments = [];
this.editAdd.relevantdepartmentsmap = [];
this.$delete(this.editAdd, "relevantdepartments");
this.$delete(this.editAdd, "relevantdepartmentsmap");
}
this.editAdd.report = this.editAdd.reportmap;
this.editAdd.dimension = this.editAdd.dimensionidstr;
this.editAdd.cycleattr = parseInt(this.editAdd.cycleattr);
const res = await eitetarget(this.editAdd);
if (res.code === 0) {
this.$message({
type: "success",
message: "编辑成功",
showClose: true,
});
}
this.getDataList();
this.editCloseDialog();
}
});
},
//
closeDialog() {
console.log("closeDialog");
this.initForm();
this.dialogFormVisible = false;
},
//
editCloseDialog() {
this.editInitForm();
this.editDialogFormVisible = false;
},
//
initForm() {
console.log("initForm");
this.$refs.addForm.resetFields();
this.form = {};
console.log(this.form);
},
//
editInitForm() {
this.$refs.editForm.resetFields();
this.editAdd = {};
},
// pageSize
handleSizeChange(val) {
this.searchInfo.pagesize = val;
this.getDataList(this.searchInfo);
},
// page
handleCurrentChange(val) {
this.searchInfo.page = val;
this.getDataList(this.searchInfo);
},
//
async getDataList() {
if (this.searchInfo.relevantdepartments != null) {
this.searchInfo.relevantdepartments =
this.searchInfo.relevantdepartments.map(String);
}
const res = await posttargetlist(this.searchInfo);
this.tableData = res.data.list;
this.total = res.data.total;
this.searchInfo.page = res.data.page;
this.searchInfo.pagesize = res.data.pageSize;
},
},
};
</script>
<style lang="scss" scoped>
.dashboard {
&-container {
margin: 30px;
}
&-text {
font-size: 30px;
line-height: 46px;
}
}
</style>

23
src/views/basicInfo/project.vue

@ -19,9 +19,9 @@
<!-- <el-form-item v-if="searchInfo.share==2" label="关联部门" prop="relevantdepartments"> <!-- <el-form-item v-if="searchInfo.share==2" label="关联部门" prop="relevantdepartments">
<el-cascader clearable v-model="searchInfo.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> <el-cascader clearable v-model="searchInfo.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader>
</el-form-item> --> </el-form-item> -->
<el-form-item label="关联部门" prop="relevantdepartments"> <!-- <el-form-item label="关联部门" prop="relevantdepartments">
<el-cascader filterable clearable v-model="searchInfo.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> <el-cascader filterable clearable v-model="searchInfo.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader>
</el-form-item> </el-form-item> -->
<el-form-item label="指标维度" prop="dimension"> <el-form-item label="指标维度" prop="dimension">
<el-select v-model="searchInfo.dimension" clearable placeholder="请选择考核维度"> <el-select v-model="searchInfo.dimension" clearable placeholder="请选择考核维度">
<el-option <el-option
@ -46,7 +46,7 @@
</el-form-item> --> </el-form-item> -->
<el-form-item> <el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button> <el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="onReset">重置</el-button> <!-- <el-button size="mini" icon="el-icon-refresh" @click="onReset">重置</el-button> -->
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -84,7 +84,6 @@
<template #default="scope"> <template #default="scope">
<el-tag v-if="scope.row.scoringmethod==1">自动计分</el-tag> <el-tag v-if="scope.row.scoringmethod==1">自动计分</el-tag>
<el-tag v-if="scope.row.scoringmethod==2">手动计分</el-tag> <el-tag v-if="scope.row.scoringmethod==2">手动计分</el-tag>
</template> </template>
</el-table-column> </el-table-column>
@ -296,6 +295,7 @@ import {
} from '@/api/duty/group' } from '@/api/duty/group'
export default { export default {
name: 'Dashboard', name: 'Dashboard',
props:['bmId'],
data() { data() {
return { return {
grouplistBackup:[], grouplistBackup:[],
@ -413,10 +413,23 @@ export default {
this.getGrouplist() this.getGrouplist()
}, },
watch:{
bmId(){
console.log("bmid变化")
console.log(this.bmId)
const list = []
list.push(this.bmId)
this.searchInfo.relevantdepartments=list
this.getDataList()
},
},
methods: { methods: {
// //
async getSystemadminlist(){ async getSystemadminlist(){
const res = await getgroupuser() const from = {
level: 4
}
const res = await getgroupuser(from)
this.grouplistBackup=res.data this.grouplistBackup=res.data
this.grouplistBackup.forEach(item => { this.grouplistBackup.forEach(item => {
if (item.govlist != null) { if (item.govlist != null) {

456
src/views/basicInfo/projectBase.vue

@ -0,0 +1,456 @@
<template>
<!-- 考核指标录入 -->
<div class="dashboard-container">
<div class="gva-table-box">
<el-container>
<!-- 左侧内容 -->
<el-aside
width="300px"
style="border-right: 1px solid rgb(220, 223, 230);height: 750px"
>
<el-tree
:data="GovthreeList2"
:props="defaultProps1"
@node-click="handleNodeClick"
></el-tree>
</el-aside>
<el-aside
width="200px"
style="border-right: 1px solid rgb(220, 223, 230);height: 750px"
>
<el-tree
:data="postList"
:props="defaultProps1"
@node-click="NodePostClick"
></el-tree>
</el-aside>
<!-- 右侧内容 -->
<el-main style="padding: 10px">
<div v-if="tableGWShow">
<gwProject :gwId="gwId"></gwProject>
</div>
<div v-if="tableBMShow">
<project :bmId="bmId"></project>
</div>
</el-main>
</el-container>
</div>
</div>
</template>
<script>
import { govthree, positionlist } from "@/api/personnel/post";
import { dutyclasslist } from "@/api/duty/dimension";
import project from "@/views/basicInfo/project.vue";
// import gwProject from "@/views/basicInfo/gwProject.vue";
import {
posttargetlist,
addtarget,
gettargetinfo,
eiteassessinfo,
eitetarget,
deltarget,
editposttarget,
editstate,
addposttarget,
} from "@/api/duty/project";
import { getgroupdepartmap, getgroupuser } from "@/api/duty/group";
export default {
components: {
project,
// gwProject
},
name: "Dashboard",
data() {
return {
tableGWShow: false,
tableBMShow: true,
gwId:1,
bmId:1,
GovthreeList2: [],
defaultProps1: {
children: "child",
label: "name",
},
grouplistBackup: [],
grouplist: [],
props: {
checkStrictly: true,
value: "id",
label: "name",
children: "children",
emitPath: false,
// multiple: true
},
userProps: {
value: "key",
label: "name",
children: "govlist",
emitPath: false,
multiple: true,
},
dutyclasslist: {},
searchList: {
page: 1,
pagesize: 10000,
},
//
editFrom: {},
//
switchFrom: {},
//
deleFrom: {},
//
editAdd: {
unittitle: "",
parentId: "",
},
assessList: {},
//
form: {
share: 2,
cycleattr: 1,
scoringmethod: 1,
},
//
dialogFormVisible: false,
//
editDialogFormVisible: false,
total: 0,
postListAdd: [],
postList: [],
tableData: [],
//
searchInfo: {
page: 1,
pagesize: 10,
},
//
abc: {
aaa: "111",
bbb: "222",
},
};
},
created() {
console.log(this.$store.state.user.token);
if (this.$store.state.user.token == "") {
this.$router.push("/login");
}
//
this.getDataList();
this.getDutyclasslist();
this.getSystemadminlist();
this.getGrouplist();
this.getGovthree2();
},
methods: {
//
NodePostClick(val) {
this.gwId=val.id
this.tableGWShow=true
this.tableBMShow=false
console.log(val);
},
//
async getPost(val) {
const from = {
organization: val.toString(),
page: 1,
pagesize: 10,
};
const res = await positionlist(from);
this.postList = res.data.list;
},
//
handleNodeClick(val) {
// this.searchInfo.organization=val.id
// this.searchInfo.organization=this.searchInfo.organization.toString()
this.getPost(val.id);
this.bmId=val.id
this.tableGWShow=false
this.tableBMShow=true
console.log(val);
},
//
async departChange(val) {
console.log(val);
// this.searchInfo.organization=val.id
// this.searchInfo.organization=this.searchInfo.organization.toString()
const from = {
organization: val.toString(),
page: 1,
pagesize: 10,
};
const res = await positionlist(from);
this.postListAdd = res.data.list;
console.log(val);
},
//
async getGovthree2() {
const res = await govthree();
this.GovthreeList2 = res.data[0].child;
console.log("this.GovthreeList2");
console.log(res.data[0].child);
},
//
async getSystemadminlist() {
const from = {
level: 4,
};
const res = await getgroupuser(from);
this.grouplistBackup = res.data;
this.grouplistBackup.forEach((item) => {
if (item.govlist != null) {
// this.digui(item);
item.govlist.forEach((items) => {
// forEach,itemthis.digui(item);
this.digui(items); //
//
console.log(items, "看我查看完整的数据哦");
// children
});
} else {
item.govlist = item.child;
//
}
});
console.log(this.grouplistBackup);
},
//
async getGrouplist() {
const res = await getgroupdepartmap();
this.grouplist = res.data;
},
//
async getDutyclasslist() {
const res = await dutyclasslist(this.searchList);
this.dutyclasslist = res.data.list;
},
//
async deleteOperate(row) {
this.$confirm("此操作将永久删除, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(async () => {
this.deleFrom.state = 3;
this.deleFrom.id = row.id;
this.deleFrom.id = this.deleFrom.id.toString();
const res = await editstate(this.deleFrom);
if (res.code === 0) {
this.$message({
type: "success",
message: "删除成功!",
});
this.getDataList();
}
});
},
//
digui(item) {
//
if (item.govlist != null) {
// valuelabel,
item.govlist.forEach((ff) => {
// children
this.digui(ff);
});
} else {
// children西
// valuelabel,
// --------------------------线---------------------------------
item.govlist = item.child;
}
//
},
//
showAdd() {
this.dialogFormVisible = true;
console.log(this.dialogFormVisible);
},
//
async showEdit(row) {
this.editFrom.outid = row.outid;
const res = await gettargetinfo(this.editFrom);
this.editAdd = res.data;
console.log("this.editAdd");
console.log(this.editAdd);
this.editDialogFormVisible = true;
},
//
async changeVal(val, id) {
this.switchFrom.id = id;
this.switchFrom.id = this.switchFrom.id.toString();
if (val == 1) {
this.switchFrom.state = 1;
const res = await editstate(this.switchFrom);
if (res.code === 0) {
this.$message({
type: "success",
message: "修改状态成功",
showClose: true,
});
this.getDataList();
}
} else {
this.switchFrom.state = 2;
const res = await editstate(this.switchFrom);
if (res.code === 0) {
this.$message({
type: "success",
message: "修改状态成功",
showClose: true,
});
this.getDataList();
}
}
},
//
onReset() {
this.searchInfo = {};
},
//
onSubmit() {
this.searchInfo.page = 1;
this.searchInfo.pagesize = 10;
this.getDataList();
},
//
formatDate(nS) {
return new Date(parseInt(nS) * 1000)
.toLocaleString()
.replace(/:\d{1,2}$/, " ");
},
//
async enterDialog() {
this.$refs.addForm.validate(async (valid) => {
if (valid) {
this.form.relevantDepartments =
this.form.relevantDepartments.toString();
if (this.form.departmentsPost != null) {
this.form.departmentsPost = this.form.departmentsPost.map(String);
}
this.form.cycleattr = parseInt(this.form.cycleattr);
const res = await addposttarget(this.form);
if (res.code === 0) {
this.$message({
type: "success",
message: "添加成功",
showClose: true,
});
}
this.getDataList();
this.closeDialog();
}
});
},
//
async editEnterDialog() {
this.$refs.editForm.validate(async (valid) => {
if (valid) {
if (this.editAdd.relevantdepartmentsmap != null) {
this.editAdd.relevantdepartments =
this.editAdd.relevantdepartmentsmap.map(String);
}
if (this.editAdd.relevantdepartmentsmap == null) {
this.editAdd.relevantdepartments =
this.editAdd.relevantdepartments.split(",");
}
if (this.editAdd.visiblerangedepartmap == null) {
this.editAdd.visiblerange = this.editAdd.visiblerange.split(",");
}
if (this.editAdd.visiblerangegroupmap == null) {
this.editAdd.visiblerangegroup =
this.editAdd.visiblerangegroup.split(",");
}
console.log(this.editAdd.relevantdepartments);
if (this.editAdd.share == 1) {
this.editAdd.relevantdepartments = [];
this.editAdd.relevantdepartmentsmap = [];
this.$delete(this.editAdd, "relevantdepartments");
this.$delete(this.editAdd, "relevantdepartmentsmap");
}
this.editAdd.report = this.editAdd.reportmap;
this.editAdd.dimension = this.editAdd.dimensionidstr;
this.editAdd.cycleattr = parseInt(this.editAdd.cycleattr);
const res = await eitetarget(this.editAdd);
if (res.code === 0) {
this.$message({
type: "success",
message: "编辑成功",
showClose: true,
});
}
this.getDataList();
this.editCloseDialog();
}
});
},
//
closeDialog() {
console.log("closeDialog");
this.initForm();
this.dialogFormVisible = false;
},
//
editCloseDialog() {
this.editInitForm();
this.editDialogFormVisible = false;
},
//
initForm() {
console.log("initForm");
this.$refs.addForm.resetFields();
this.form = {};
console.log(this.form);
},
//
editInitForm() {
this.$refs.editForm.resetFields();
this.editAdd = {};
},
// pageSize
handleSizeChange(val) {
this.searchInfo.pagesize = val;
this.getDataList(this.searchInfo);
},
// page
handleCurrentChange(val) {
this.searchInfo.page = val;
this.getDataList(this.searchInfo);
},
//
async getDataList() {
if (this.searchInfo.relevantdepartments != null) {
this.searchInfo.relevantdepartments =
this.searchInfo.relevantdepartments.map(String);
}
const res = await posttargetlist(this.searchInfo);
this.tableData = res.data.list;
this.total = res.data.total;
this.searchInfo.page = res.data.page;
this.searchInfo.pagesize = res.data.pageSize;
},
},
};
</script>
<style lang="scss" scoped>
.dashboard {
&-container {
margin: 30px;
}
&-text {
font-size: 30px;
line-height: 46px;
}
}
</style>

2
src/views/basicInfo/qualitativeIndicators.vue

@ -91,7 +91,7 @@
<el-form-item label="定性指标名称" prop="title"> <el-form-item label="定性指标名称" prop="title">
<el-input v-model="form.title" autocomplete="off" /> <el-input v-model="form.title" autocomplete="off" />
</el-form-item> </el-form-item>
<el-form-item v-if="" label="关联部门" prop="userid"> <el-form-item label="关联部门" prop="userid">
<el-cascader clearable v-model="form.groupId" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> <el-cascader clearable v-model="form.groupId" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="数据提交" prop="userid"> <el-form-item label="数据提交" prop="userid">

19
src/views/basicInfo/target.vue

@ -4,7 +4,7 @@
<div class="gva-search-box"> <div class="gva-search-box">
<el-form ref="searchForm" :inline="true" :model="searchInfo"> <el-form ref="searchForm" :inline="true" :model="searchInfo">
<el-form-item label="部门"> <el-form-item label="部门">
<el-cascader filterable clearable v-model.string="searchInfo.departmentid" :options="buMenList" :show-all-levels="false" :props="props1"></el-cascader> <el-cascader filterable clearable v-model.string="searchInfo.departmentid" :options="chuBuMenList" :show-all-levels="false" :props="props1"></el-cascader>
<!-- <el-select filterable v-model.string="searchInfo.departmentid" clearable placeholder="请选择"> <!-- <el-select filterable v-model.string="searchInfo.departmentid" clearable placeholder="请选择">
<el-option <el-option
v-for="item in buMenList" v-for="item in buMenList"
@ -729,6 +729,7 @@ export default {
aaa:"111", aaa:"111",
bbb:"222" bbb:"222"
}, },
chuBuMenList:[],
zhibiaoList:[], zhibiaoList:[],
zhibiaoShow:false, zhibiaoShow:false,
// //
@ -751,6 +752,7 @@ export default {
// this.selectGroup() // this.selectGroup()
this.getDutyclasslist() this.getDutyclasslist()
this.buMen() this.buMen()
this.chuBuMen()
}, },
watch:{ watch:{
tableData() { tableData() {
@ -846,6 +848,21 @@ export default {
// const res = await departmentlist(departmentFrom) // const res = await departmentlist(departmentFrom)
// this.buMenList=res.data // this.buMenList=res.data
},
//
async chuBuMen(){
// const departmentFrom={
// outid:this.searchInfo.groupid
// }
const departmentFrom={
id:309
// level:3
}
const res = await departmentlist(departmentFrom)
this.chuBuMenList=res.data
// const res = await departmentlist(departmentFrom)
// this.buMenList=res.data
}, },
// //
async showJiangZhi(row){ async showJiangZhi(row){

363
src/views/course/courseware.vue

@ -0,0 +1,363 @@
<template>
<!-- 课件管理 -->
<div class="dashboard-container">
<div class="gva-search-box">
<el-form ref="searchForm" :inline="true" :model="searchInfo">
<el-form-item label="考核维度名称">
<el-input
placeholder="请输入名称"
v-model="searchInfo.title"
clearable>
</el-input>
</el-form-item>
<el-form-item label="考核维度状态">
<el-select v-model="searchInfo.state" clearable placeholder="请选择状态">
<el-option :value=1 label="正常">正常</el-option>
<el-option :value=2 label="禁止">禁止</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button>
</div>
<el-table :data="tableData">
<el-table-column align="left" label="编码" prop="outId"/>
<el-table-column align="left" label="名称" prop="title"/>
<el-table-column align="left" label="分类" prop="sort"/>
<el-table-column align="left" label="状态">
<template #default="scope">
<el-switch
inline-prompt
active-text="正常"
inactive-text="禁止"
v-model="scope.row.state"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value=1
:inactive-value=2
@change="changeVal($event,scope.row.outId)"
/>
</template>
</el-table-column>
<el-table-column align="left" label="学时" prop="sort"/>
<el-table-column align="left" label="学分" prop="sort"/>
<el-table-column align="left" label="描述" prop="sort"/>
<el-table-column align="left" fixed="right" label="操作" width="200">
<template #default="scope">
<el-button
icon="el-icon-edit"
size="small"
type="text"
@click="showEdit(scope.row)"
>编辑</el-button>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchInfo.pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
<!-- 新增弹框 -->
<el-dialog :visible.sync="dialogFormVisible" :before-close="closeDialog" title="新增" width="20%">
<el-form ref="addForm" :model="form" :rules="rules" label-width="150px">
<el-form-item label="课件编码" prop="title">
<el-input v-model="form.title" autocomplete="off" />
</el-form-item>
<el-form-item label="课件名称" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="课件分类" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="课件状态" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="学时" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="学分" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="课件类型" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="裁剪状态" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="课件" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="学习时长(分)" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
<el-form-item label="描述" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="closeDialog"> </el-button>
<el-button size="small" type="primary" @click="enterDialog"> </el-button>
</div>
</template>
</el-dialog>
<!-- 编辑弹框 -->
<el-dialog :visible.sync="editDialogFormVisible" :before-close="editCloseDialog" title="修改" width="20%">
<el-form ref="editForm" :model="editAdd" :rules="editRules" label-width="150px">
<el-form-item label="考核维度名称" prop="title">
<el-input v-model="editAdd.title" autocomplete="off" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model.number="editAdd.sort" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="editCloseDialog"> </el-button>
<el-button size="small" type="primary" @click="editEnterDialog"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import { dutyclasslist,statedutyclass,eitedutyclassinfo,getdutyclassinfo,adddutyclass } from '@/api/duty/dimension'
export default {
name: 'Dashboard',
data() {
return {
//
editFrom:{},
//
switchFrom:{},
//
deleFrom:{},
//
editAdd:{},
assessList:{},
//
form:{},
//
dialogFormVisible:false,
//
editDialogFormVisible:false,
total: 0,
tableData:[],
//
searchInfo: {
page: 1,
pagesize: 10
},
//
abc:{
aaa:"111",
bbb:"222"
},
//
rules: {
title: [{ required: true, message: '请输入名称', trigger: 'blur' }],
},
editRules:{
title: [{ required: true, message: '请输入名称', trigger: 'blur' }],
}
}
},
created() {
console.log(this.$store.state.user.token)
if (this.$store.state.user.token=='') {
this.$router.push('/login')
}
//
this.getDataList()
},
methods: {
//
//
async deleteOperate(row) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(async() => {
this.deleFrom.state=3;
this.deleFrom.outid=row.outId;
const res = await statedutyclass(this.deleFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '删除成功!'
})
this.getDataList()
}
})
},
//
showAdd(){
this.dialogFormVisible=true;
console.log(this.dialogFormVisible)
},
//
async showEdit(row){
this.editFrom.outid=row.outId
const res = await getdutyclassinfo(this.editFrom)
this.editAdd = res.data
this.editDialogFormVisible=true;
},
//
async changeVal(val,id){
console.log(val)
this.switchFrom.outid=id
if (val==1) {
this.switchFrom.state=1;
const res = await statedutyclass(this.switchFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '修改状态成功',
showClose: true
})
this.getDataList()
}
} else {
this.switchFrom.state=2;
const res = await statedutyclass(this.switchFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '修改状态成功',
showClose: true
})
this.getDataList()
}
}
},
//
onReset() {
this.searchInfo = {}
},
//
onSubmit() {
this.searchInfo.page = 1
this.searchInfo.pagesize = 10
this.getDataList()
},
//
formatDate(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');
},
//
async enterDialog(){
this.$refs.addForm.validate(async valid => {
if (valid) {
const res = await adddutyclass(this.form)
if (res.code === 0) {
this.$message({
type: 'success',
message: '添加成功',
showClose: true
})
}
this.getDataList();
this.closeDialog();
}
})
},
//
async editEnterDialog(){
this.$refs.editForm.validate(async valid => {
if (valid) {
const res = await eitedutyclassinfo(this.editAdd)
if (res.code === 0) {
this.$message({
type: 'success',
message: '编辑成功',
showClose: true
})
}
this.getDataList();
this.editCloseDialog();
}
})
},
//
closeDialog() {
console.log("closeDialog")
this.initForm()
this.dialogFormVisible = false
},
//
editCloseDialog() {
this.editInitForm()
this.editDialogFormVisible = false
},
//
initForm() {
console.log("initForm")
this.$refs.addForm.resetFields()
this.form = {}
console.log(this.form)
},
//
editInitForm() {
this.$refs.editForm.resetFields()
this.editAdd = {}
},
// pageSize
handleSizeChange(val) {
this.searchInfo.pagesize=val
this.getDataList(this.searchInfo)
},
// page
handleCurrentChange(val) {
this.searchInfo.page=val
this.getDataList(this.searchInfo)
},
//
async getDataList() {
const res = await dutyclasslist(this.searchInfo)
this.tableData = res.data.list
this.total = res.data.total
this.searchInfo.page = res.data.page
this.searchInfo.pagesize = res.data.pageSize
}
}
}
</script>
<style lang="scss" scoped>
.dashboard {
&-container {
margin: 30px;
}
&-text {
font-size: 30px;
line-height: 46px;
}
}
</style>

379
src/views/echarts/table.vue

@ -4,78 +4,78 @@
<div class="Echarts"> <div class="Echarts">
<el-tabs stretch background-color="#545c64"> <el-tabs stretch background-color="#545c64">
<el-tab-pane label="成绩表" style="padding:20px"> <el-tab-pane label="成绩表" style="padding:20px">
<el-table :data="scoreTableList.readStatisticsData" border style="width: 100%"> <el-table :data="scoreTableList.readStatisticsData" border style="width: 100%" :cell-style="{padding:'5px'}">
<el-table-column prop="department" label="部门" align="center"></el-table-column> <el-table-column prop="department" label="部门" align="center"></el-table-column>
<el-table-column prop="a" label="1月份" align="center"> <el-table-column prop="a" label="1月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.a==-10000">-</div> <div v-if="scope.row.a==-10000">-</div>
<div v-else>{{scope.row.a}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,1)" v-else>{{scope.row.a}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="b" label="2月份" align="center"> <el-table-column prop="b" label="2月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.b==-10000">-</div> <div v-if="scope.row.b==-10000">-</div>
<div v-else>{{scope.row.b}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,2)" v-else>{{scope.row.b}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="C" label="3月份" align="center"> <el-table-column prop="C" label="3月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.C==-10000">-</div> <div v-if="scope.row.C==-10000">-</div>
<div v-else>{{scope.row.C}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,3)" v-else>{{scope.row.C}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="d" label="4月份" align="center"> <el-table-column prop="d" label="4月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.d==-10000">-</div> <div v-if="scope.row.d==-10000">-</div>
<div v-else>{{scope.row.d}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,4)" v-else>{{scope.row.d}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="e" label="5月份" align="center"> <el-table-column prop="e" label="5月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.e==-10000">-</div> <div v-if="scope.row.e==-10000">-</div>
<div v-else>{{scope.row.e}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,5)" v-else>{{scope.row.e}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="f" label="6月份" align="center"> <el-table-column prop="f" label="6月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.f==-10000">-</div> <div v-if="scope.row.f==-10000">-</div>
<div v-else>{{scope.row.f}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,6)" v-else>{{scope.row.f}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="g" label="7月份" align="center"> <el-table-column prop="g" label="7月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.g==-10000">-</div> <div v-if="scope.row.g==-10000">-</div>
<div v-else>{{scope.row.g}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,7)" v-else>{{scope.row.g}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="h" label="8月份" align="center"> <el-table-column prop="h" label="8月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.h==-10000">-</div> <div v-if="scope.row.h==-10000">-</div>
<div v-else>{{scope.row.h}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,8)" v-else>{{scope.row.h}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="i" label="9月份" align="center"> <el-table-column prop="i" label="9月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.i==-10000">-</div> <div v-if="scope.row.i==-10000">-</div>
<div v-else>{{scope.row.i}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,9)" v-else>{{scope.row.i}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="J" label="10月份" align="center"> <el-table-column prop="J" label="10月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.J==-10000">-</div> <div v-if="scope.row.J==-10000">-</div>
<div v-else>{{scope.row.J}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,10)" v-else>{{scope.row.J}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="K" label="11月份" align="center"> <el-table-column prop="K" label="11月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.K==-10000">-</div> <div v-if="scope.row.K==-10000">-</div>
<div v-else>{{scope.row.K}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,11)" v-else>{{scope.row.K}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="L" label="12月份" align="center"> <el-table-column prop="L" label="12月份" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.L==-10000">-</div> <div v-if="scope.row.L==-10000">-</div>
<div v-else>{{scope.row.L}}</div> <div style="color:blue;cursor:pointer" @click="clickYue(scope.row,12)" v-else>{{scope.row.L}}</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -93,7 +93,6 @@
<el-form-item label="所属公司"> <el-form-item label="所属公司">
<el-cascader filterable clearable v-model="searchVersion.group" :options="companyList" :show-all-levels="false" :props="props2" @change="selectGroup"></el-cascader> <el-cascader filterable clearable v-model="searchVersion.group" :options="companyList" :show-all-levels="false" :props="props2" @change="selectGroup"></el-cascader>
<!-- <el-select filterable v-model="searchVersion.group" clearable placeholder="请选择" @change="selectGroup"> <!-- <el-select filterable v-model="searchVersion.group" clearable placeholder="请选择" @change="selectGroup">
<el-option <el-option
v-for="item in companyList" v-for="item in companyList"
:key="item.id" :key="item.id"
@ -163,7 +162,6 @@
</div> </div>
</template> </template>
</el-table-column> --> </el-table-column> -->
<!-- <el-table-column align="center" v-for="(iteam,index) in yueList" :key="index" :label="iteam"> <!-- <el-table-column align="center" v-for="(iteam,index) in yueList" :key="index" :label="iteam">
<template slot-scope="scope"> <template slot-scope="scope">
<el-descriptions direction="vertical" :column="1" border> <el-descriptions direction="vertical" :column="1" border>
@ -214,7 +212,6 @@
</el-table> </el-table>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="明细表"> <el-tab-pane label="明细表">
<div v-if="echartsShow==2" style="padding:50px;"> <div v-if="echartsShow==2" style="padding:50px;">
<div class="gva-search-box"> <div class="gva-search-box">
@ -335,11 +332,9 @@
<!-- <el-table-column <!-- <el-table-column
v-for="(iteam1,index1) in iteam.child" v-for="(iteam1,index1) in iteam.child"
:key="index1" :key="index1"
:label="iteam1.title" :label="iteam1.title"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<template v-for="(g,index2) in scope.row.score" > <template v-for="(g,index2) in scope.row.score" >
{{g.class[1]}} {{g.class[1]}}
</template> </template>
@ -354,6 +349,9 @@
<div style='border-bottom: 1px solid #EBEEF5;'> <div style='border-bottom: 1px solid #EBEEF5;'>
{{scope.row.score[index].zeroprize}} {{scope.row.score[index].zeroprize}}
</div> </div>
<div style='border-bottom: 1px solid #EBEEF5;'>
{{scope.row.score[index].cappingval}}
</div>
<div style='border-bottom: 1px solid #EBEEF5;'> <div style='border-bottom: 1px solid #EBEEF5;'>
{{scope.row.score[index].scoreval}} {{scope.row.score[index].scoreval}}
</div> </div>
@ -366,7 +364,6 @@
<div v-if="scope.row.manualgear==2" style='border-bottom: 1px solid #EBEEF5;color: blue;'> <div v-if="scope.row.manualgear==2" style='border-bottom: 1px solid #EBEEF5;color: blue;'>
{{scope.row.score[index].actualscore}} {{scope.row.score[index].actualscore}}
</div> </div>
</template> </template>
<!-- <el-descriptions :column="1" border> <!-- <el-descriptions :column="1" border>
<el-descriptions-item ></el-descriptions-item> <el-descriptions-item ></el-descriptions-item>
@ -382,52 +379,140 @@
</el-tabs> </el-tabs>
<!-- 得分弹框 --> <!-- 详情弹框 -->
<!-- <el-dialog :visible.sync="showUser" title="得分详情" width="50%"> <el-dialog :visible.sync="showDetails" title="得分详情" width="50%">
<el-table style="width: 100%" :data="detailsList" border :span-method="detailsSpanMethod" :cell-style="{padding:'0px'}" >
<el-table-column prop="departmentname" align="center" label="部门"></el-table-column>
<el-table-column prop="dimensionname" align="center" label="考核维度"></el-table-column>
<el-table-column prop="dimensionweight" label="维度权重" align="center"></el-table-column>
<el-table-column prop="targetname" align="center" label="考核指标">
<template slot-scope="scope">
<el-link v-if="scope.row.type==1" type="primary" >{{scope.row.targetname}}</el-link>
<div v-if="scope.row.type==2">{{scope.row.targetname}}</div>
</template>
</el-table-column>
<el-table-column prop="targetweight" label="指标权重" align="center"></el-table-column>
<el-table <el-table-column prop="unit" label="单位" align="center"/>
:data="userlistary"
style="width: 100%"> <el-table-column prop="cycle" label="周期" align="center">
<el-table-column <template slot-scope="scope">
prop="date" <el-tag v-if="scope.row.cycle==1"></el-tag>
label="头像"> <el-tag v-if="scope.row.cycle==2"></el-tag>
<template slot-scope="scope"> <el-tag v-if="scope.row.cycle==3"></el-tag>
<el-avatar shape="square" size="large" :src="scope.row.icon"></el-avatar> <el-tag v-if="scope.row.cycle==4"></el-tag>
<el-tag v-if="scope.row.cycle==5">季度</el-tag>
<el-tag v-if="scope.row.cycle==6"></el-tag>
<el-tag v-if="scope.row.cycle==7">半年</el-tag>
</template>
</el-table-column>
<el-table-column align="center" prop="cycleattr" label="频次">
<template slot-scope="scope">
<div v-if="scope.row.cycle==1">每班{{scope.row.cycleattr}}</div>
<div v-if="scope.row.cycle==2">每天{{scope.row.cycleattr}}</div>
<div v-if="scope.row.cycle==3">每周{{scope.row.cycleattr}}</div>
<div v-if="scope.row.cycle==4">每月{{scope.row.cycleattr}}</div>
<div v-if="scope.row.cycle==5">每季度{{scope.row.cycleattr}}</div>
<div v-if="scope.row.cycle==6">每年{{scope.row.cycleattr}}</div>
<div v-if="scope.row.cycle==7">每半年{{scope.row.cycleattr}}</div>
</template>
</el-table-column>
<el-table-column align="center" label="执行部门">
<template #default="scope">
<el-collapse>
<el-collapse-item title="详情">
<div v-for="(iteam,index) in scope.row.executivedepartment">
{{iteam}}
</div>
</el-collapse-item>
</el-collapse>
</template>
</el-table-column>
<el-table-column prop="score" label="得分" align="center">
<template #default="scope">
<div style="color:blue;cursor:pointer" @click="clickOld(scope.row)">{{scope.row.score}}</div>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 定性详情历史记录 -->
<el-dialog :visible.sync="dxdialogFormVisible" title="详情" width="40%">
<el-table :data="dingxingOldData" border style="width: 100%">
<el-table-column align="center" prop="addorsubtract" label="得分类型">
<template #default="scope">
<div v-if="scope.row.addorsubtract==1">加分</div>
<div v-if="scope.row.addorsubtract==2">减分</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column align="center" prop="score" label="得分">
prop="number"
label="工号">
</el-table-column> </el-table-column>
<el-table-column <el-table-column align="center" prop="count" label="原因">
prop="address" </el-table-column>
label="部门"> <el-table-column align="center" prop="evalusercont[0].department" label="测评部门">
<template slot-scope="scope"> </el-table-column>
{{scope.row.groupname}}{{scope.row.departmentname}} <el-table-column align="center" prop="evalusercont[0].username" label="测评人">
</el-table-column>
<el-table-column align="center" prop="time" label="时间">
</el-table-column>
</el-table>
</el-dialog>
<!-- 定量详情历史记录 -->
<el-dialog :visible.sync="dldialogFormVisible" title="详情" width="45%">
<el-table :data="dingliangOldData" border style="width: 100%">
<el-table-column align="center" prop="zeroprize" label="零奖值">
</el-table-column>
<el-table-column align="center" prop="allprize" label="全奖值">
</el-table-column>
<el-table-column align="center" prop="capping" label="封顶值">
</el-table-column>
<el-table-column align="center" prop="actual" label="实际值">
</el-table-column>
<el-table-column align="center" prop="completionrate" label="达成率">
</el-table-column>
<el-table-column align="center" prop="score" label="得 分">
</el-table-column>
<el-table-column align="center" prop="score" label="类 型">
<template #default="scope">
<div v-if="scope.row.mtorat==1">自动</div>
<div v-if="scope.row.mtorat==2">手动</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column align="center" prop="count" label="备 注">
prop="name"
label="姓名">
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-dialog> --> <!-- <el-descriptions border title="">
<el-descriptions-item label="零奖值">{{dingliangOldData.zeroprize}}</el-descriptions-item>
<el-descriptions-item label="全奖值">{{dingliangOldData.allprize}}</el-descriptions-item>
<el-descriptions-item label="封顶值">{{dingliangOldData.capping}}</el-descriptions-item>
<el-descriptions-item label="实际值">{{dingliangOldData.actual}}</el-descriptions-item>
<el-descriptions-item label="达成率">{{dingliangOldData.completionrate}}%</el-descriptions-item>
<el-descriptions-item label="得 分">{{dingliangOldData.score}}</el-descriptions-item>
</el-descriptions> -->
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {getquantechartorgandyear,getplanversionvalid,departmenttranscript} from '@/api/echarts/echarts' import {getquantechartorgandyear,getplanversionvalid,departmenttranscript,summarydetailslianglog,summarydetailsxinglog} from '@/api/echarts/echarts'
import { import {
grouplist, grouplist,
departmentlist, departmentlist,
getgroupdepartmap, getgroupdepartmap,
getgroupuser getgroupuser
} from '@/api/duty/group' } from '@/api/duty/group'
import { gettarget,addtarget,gettargetinfo,eiteassessinfo,eitetarget,deltarget } from '@/api/duty/project' import { gettarget,addtarget,gettargetinfo,eiteassessinfo,eitetarget,deltarget,summarydetails } from '@/api/duty/project'
export default { export default {
name: 'Echarts', name: 'Echarts',
data(){ data(){
return{ return{
dldialogFormVisible:false,
dxdialogFormVisible:false,
dingxingOldData:[],
dingliangOldData:[],
rowOldData:{},
chengjiYue:'',
showDetails:false,
props2: { props2: {
checkStrictly: true, checkStrictly: true,
value: "wxId", value: "wxId",
@ -542,6 +627,7 @@ export default {
value: '2030', value: '2030',
label: '2030' label: '2030'
}], }],
detailsList:[],
// //
companyList:[], companyList:[],
departmentList:[], departmentList:[],
@ -554,6 +640,12 @@ export default {
pos:'', pos:'',
pos1:'', pos1:'',
pos2:'', pos2:'',
detailspos:'',
detailspos1:'',
detailspos2:'',
detailsSpanArr:[],
detailsspanArr1:[],
detailsspanArr2:[],
spanArr:[], spanArr:[],
spanArr1:[], spanArr1:[],
spanArr2:[], spanArr2:[],
@ -573,6 +665,9 @@ export default {
data() { data() {
this.$nextTick(() => { this.$nextTick(() => {
this.detailsspanArr1=[],
this.detailsspanArr=[],
this.detailsspanArr2=[],
this.spanArr=[], this.spanArr=[],
this.spanArr1=[], this.spanArr1=[],
this.spanArr2=[], this.spanArr2=[],
@ -588,8 +683,77 @@ export default {
// this.getLieArr(this.data); // this.getLieArr(this.data);
}); });
}, },
detailsList() {
console.log("detailsList数据更新")
this.$nextTick(() => {
this.detailsspanArr1=[],
this.detailsspanArr=[],
this.detailsspanArr2=[],
this.detailspos2='',
this.detailspos='',
this.detailspos1='',
//createddataList
this.getdetailsSpanArr(this.detailsList);
this.getdetailsSpanArr1(this.detailsList);
// this.getLieArr(this.data);
});
},
}, },
methods: { methods: {
//
clickOld(row){
this.rowOldData=row
//
if (row.type==1) {
this.dingxingOld()
}
//
if (row.type==2) {
this.dingliangOld()
}
},
//
async dingxingOld(){
let nowDate = new Date()
const from = {
department:this.rowOldData.departmentid,
year:nowDate.getFullYear(),
month:parseInt(this.chengjiYue),
targetid:this.rowOldData.targetid
}
const res = await summarydetailsxinglog(from)
this.dingxingOldData=res.data
this.dxdialogFormVisible=true
},
//
async dingliangOld(){
let nowDate = new Date()
const from = {
department:this.rowOldData.departmentid,
year:nowDate.getFullYear(),
month:parseInt(this.chengjiYue),
targetid:this.rowOldData.targetid
}
const res = await summarydetailslianglog(from)
this.dingliangOldData=res.data
this.dldialogFormVisible=true
},
//
async clickYue(row,yue){
let nowDate = new Date()
const from = {
department:row.departmentid,
year:nowDate.getFullYear(),
month:yue
}
this.chengjiYue=yue
const res = await summarydetails(from)
this.detailsList=res.data
this.showDetails=true
},
// //
async getscoreTable(){ async getscoreTable(){
const res = await departmenttranscript() const res = await departmenttranscript()
@ -604,7 +768,6 @@ export default {
}, },
// //
async initialDepartment(){ async initialDepartment(){
const departmentFrom={ const departmentFrom={
id:309 id:309
} }
@ -619,7 +782,6 @@ export default {
} }
const res = await getgroupdepartmap(idFrom) const res = await getgroupdepartmap(idFrom)
this.companyList=res.data this.companyList=res.data
}, },
// //
async selectGroup(val){ async selectGroup(val){
@ -682,6 +844,26 @@ export default {
console.log("hangArr") console.log("hangArr")
console.log(this.spanArr) console.log(this.spanArr)
}, },
//
getdetailsSpanArr(data) {
console.log("部门合并")
// data
for (var i = 0; i < data.length; i++) {
if (i === 0) {
this.detailsspanArr.push(1);
this.detailspos = 0;
} else {
//
if (data[i].departmentid === data[i - 1].departmentid) {
this.detailsspanArr[this.detailspos] += 1;
this.detailsspanArr.push(0);
} else {
this.detailsspanArr.push(1);
this.detailspos = i;
}
}
}
},
// //
getSpanArr1(data) { getSpanArr1(data) {
// data // data
@ -701,6 +883,29 @@ export default {
} }
} }
}, },
//
getdetailsSpanArr1(data) {
console.log("纬度合并")
console.log(data)
// data
for (var i = 0; i < data.length; i++) {
if (i === 0) {
this.detailsspanArr1.push(1);
this.detailspos1 = 0;
} else {
//
if (data[i].dimensionname === data[i - 1].dimensionname) {
console.log("相同")
console.log(i)
this.detailsspanArr1[this.detailspos1] += 1;
this.detailsspanArr1.push(0);
} else {
this.detailsspanArr1.push(1);
this.detailspos1 = i;
}
}
}
},
// //
getSpanArr2(data) { getSpanArr2(data) {
// data // data
@ -732,7 +937,6 @@ export default {
// } // }
// }, // },
// spanMethod({ row, column, rowIndex, columnIndex }) { // spanMethod({ row, column, rowIndex, columnIndex }) {
// if (columnIndex === 0) { // if (columnIndex === 0) {
// const _row = this.lieArr[rowIndex]; // const _row = this.lieArr[rowIndex];
// const _col = _row > 0 ? 1 : 0; // const _col = _row > 0 ? 1 : 0;
@ -743,6 +947,36 @@ export default {
// } // }
// }, // },
//
// detailsSpanMethod({ row, column, rowIndex, columnIndex }) {
// if (columnIndex === 0) {
// const _row = this.spanArr[rowIndex];
// const _col = _row > 0 ? 1 : 0;
// return {
// // [0,0] [2,1]
// rowspan: _row,
// colspan: _col
// };
// }
// if (columnIndex === 1||columnIndex === 2) {
// const _row = this.spanArr1[rowIndex];
// const _col = _row > 0 ? 1 : 0;
// return {
// // [0,0] [2,1]
// rowspan: _row,
// colspan: _col
// };
// }
// if (columnIndex === 3) {
// const _row = this.spanArr2[rowIndex];
// const _col = _row > 0 ? 1 : 0;
// return {
// // [0,0] [2,1]
// rowspan: _row,
// colspan: _col
// };
// }
// },
// //
objectSpanMethod({ row, column, rowIndex, columnIndex }) { objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) { if (columnIndex === 0) {
@ -782,6 +1016,45 @@ export default {
// } // }
}, },
//
detailsSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
const _row = this.detailsspanArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
// [0,0] [2,1]
rowspan: _row,
colspan: _col
};
}
if (columnIndex === 1||columnIndex === 2) {
const _row = this.detailsspanArr1[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
// [0,0] [2,1]
rowspan: _row,
colspan: _col
};
}
// if (columnIndex === 3||columnIndex === 4||columnIndex === 5||columnIndex === 6||columnIndex === 7||columnIndex === 8||columnIndex === 9) {
// const _row = this.detailsspanArr2[rowIndex];
// const _col = _row > 0 ? 1 : 0;
// return {
// // [0,0] [2,1]
// rowspan: _row,
// colspan: _col
// };
// }
// if (columnIndex === 10||columnIndex === 11||columnIndex === 12||columnIndex === 13) {
// const _col = this.lieArr[rowIndex];
// const _row = _col > 0 ? 1 : 0;
// return {
// rowspan: _row,
// colspan: _col
// }
// }
},
// //
// onSubmit(){ // onSubmit(){
@ -972,13 +1245,13 @@ export default {
legend: { legend: {
data: [ data: [
"恒信高科 用电单耗达成率总值", "恒信高科 用电单耗达成率总值",
"恒信高科 用电单耗达成率平均值", "恒信高科 用电单耗达成率平均值",
"恒信高科生产部 用电单耗达成率总值", "恒信高科生产部 用电单耗达成率总值",
"恒信高科生产部 用电单耗达成率平均值", "恒信高科生产部 用电单耗达成率平均值",
"恒信高科 蒸汽单耗达成率总值", "恒信高科 蒸汽单耗达成率总值",
"恒信高科 蒸汽单耗达成率平均值", "恒信高科 蒸汽单耗达成率平均值",
"恒信高科生产部 蒸汽单耗达成率总值", "恒信高科生产部 蒸汽单耗达成率总值",
"恒信高科生产部 蒸汽单耗达成率平均值" "恒信高科生产部 蒸汽单耗达成率平均值"
] ]
}, },
series: [ series: [

655
src/views/honor/index.vue

@ -0,0 +1,655 @@
<template>
<!-- 荣誉档案管理 -->
<div class="dashboard-container">
<div class="gva-search-box">
<el-form ref="searchForm" :inline="true" :model="searchInfo">
<el-form-item label="名称">
<el-input
placeholder="请输入名称"
v-model="searchInfo.title"
clearable>
</el-input>
</el-form-item>
<el-form-item label="发放单位">
<el-input
placeholder="请输入单位名称"
v-model="searchInfo.unit"
clearable>
</el-input>
</el-form-item>
<!-- <el-form-item label="考核维度状态">
<el-select v-model="searchInfo.state" clearable placeholder="请选择状态">
<el-option :value=1 label="正常">正常</el-option>
<el-option :value=2 label="禁止">禁止</el-option>
</el-select>
</el-form-item> -->
<el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button>
</div>
<el-table :data="tableData">
<el-table-column align="left" label="名称" prop="name"/>
<el-table-column align="left" label="发放单位" prop="issuingunit"/>
<el-table-column align="left" label="载体" prop="carrier"/>
<el-table-column align="left" label="获奖时间" prop="awardtimebegin">
<template #default="scope">
{{scope.row.awardtimeend}}
</template>
</el-table-column>
<el-table-column align="left" label="有效期限" prop="awardtimeend"/>
<el-table-column align="left" label="图片" prop="sort">
<template #default="scope">
<el-button
icon="el-icon-view"
size="small"
type="text"
@click="showDetails(scope.row)"
>查看</el-button>
</template>
</el-table-column>
<el-table-column align="left" label="备注" prop="remark"/>
<el-table-column align="left" label="状态">
<template #default="scope">
<el-switch
inline-prompt
active-text="正常"
inactive-text="禁止"
v-model="scope.row.state"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value=1
:inactive-value=2
@change="changeVal($event,scope.row.id)"
/>
</template>
</el-table-column>
<el-table-column align="left" fixed="right" label="操作" width="200">
<template #default="scope">
<el-button
icon="el-icon-edit"
size="small"
type="text"
@click="showEdit(scope.row)"
>编辑</el-button>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchInfo.pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
<!-- 新增弹框 -->
<el-dialog :visible.sync="dialogFormVisible" :before-close="closeDialog" title="新增" width="30%">
<el-form ref="addForm" :model="form" :rules="rules" label-width="150px">
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" autocomplete="off" />
</el-form-item>
<el-form-item label="载体" prop="sort">
<el-select v-model="form.carrier" filterable placeholder="请选择">
<el-option
v-for="item in carrierList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="发放单位" prop="sort">
<el-input v-model="form.issuingagency" autocomplete="off" />
</el-form-item>
<el-form-item label="获奖部门" prop="sort">
<el-cascader filterable clearable v-model="form.organize" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader>
</el-form-item>
<el-form-item label="获奖人员" prop="report">
<el-cascader filterable clearable v-model="form.userkey" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader>
</el-form-item>
<el-form-item label="获奖时间" prop="sort">
<el-date-picker
v-model="form.awardtime"
type="date"
placeholder="选择日期"
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd">
</el-date-picker>
<!-- <el-input v-model="form.getTime" autocomplete="off" /> -->
</el-form-item>
<el-form-item label="有效期限" prop="sort">
<el-date-picker
v-model="form.efficientDate"
type="date"
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
<!-- <el-input v-model="form.efficientDate" autocomplete="off" /> -->
</el-form-item>
<el-form-item label="图片" prop="sort">
<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-item label="备注" prop="sort">
<el-input v-model="form.remark" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="closeDialog"> </el-button>
<el-button size="small" type="primary" @click="enterDialog"> </el-button>
</div>
</template>
</el-dialog>
<!-- 编辑弹框 -->
<el-dialog :visible.sync="editDialogFormVisible" :before-close="editCloseDialog" title="修改" width="20%">
<!-- <el-form ref="editForm" :model="editAdd" :rules="editRules" label-width="150px">
<el-form-item label="名称" prop="title">
<el-input v-model="editForm.title" autocomplete="off" />
</el-form-item>
<el-form-item label="载体" prop="sort">
<el-input v-model="editForm.carrier" autocomplete="off" />
</el-form-item>
<el-form-item label="发放单位" prop="sort">
<el-input v-model="editForm.unit" autocomplete="off" />
</el-form-item>
<el-form-item label="发放单位" prop="sort">
<el-input v-model="editForm.unit" autocomplete="off" />
</el-form-item>
<el-form-item label="获奖时间" prop="sort">
<el-input v-model="editForm.unit" autocomplete="off" />
</el-form-item>
<el-form-item label="有效期限" prop="sort">
<el-input v-model="editForm.efficientDate" autocomplete="off" />
</el-form-item>
<el-form-item label="图片" prop="sort">
<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-item label="备注" prop="sort">
<el-input v-model="editForm.remark" autocomplete="off" />
</el-form-item>
</el-form> -->
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="editCloseDialog"> </el-button>
<el-button size="small" type="primary" @click="editEnterDialog"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import {
getgroupdepartmap,
getgroupuser
} from '@/api/duty/group'
import { carrierlist,honorlist,addhonorcont,eidyhonorcont,eidyhonorcontstate } from '@/api/honer'
export default {
name: 'Dashboard',
filters: {//data
dataFormat(val) {//val
let data = new Date(val);
let y = data.getFullYear();
let m = data.getMonth() + 1;
let d = data.getDay();
let s = data.getHours();
let f = data.getMinutes();
let mi = data.getSeconds();
return `${y}-${m}-${d} ${s}:${f}:${mi} `;
}
},
data() {
return {
fileList:[],
uploadActionUrl:'/api/upordown',
//
detailsData:{},
//
detailsDialogFormVisible:false,
//
editFrom:{},
//
switchFrom:{},
//
deleFrom:{},
//
editAdd:{},
assessList:{},
//
form:{
imgurl:[],
},
//
dialogFormVisible:false,
//
editDialogFormVisible:false,
total: 0,
tableData:[
// {
// title:'',//
// unit:'',//
// carrier:'',//
// getTime:'2004/11/30',//
// efficientDate:'',//
// imgUrl:'',//
// remark:''//
// },
// {
// title:'',//
// unit:'',//
// carrier:'',//
// getTime:'2009/12/1',//
// efficientDate:'',//
// imgUrl:'',//
// remark:''//
// },
// {
// title:'',//
// unit:'',//
// carrier:'',//
// getTime:'2010/3/1',//
// efficientDate:'',//
// imgUrl:'',//
// remark:''//
// },
// {
// title:'',//
// unit:'',//
// carrier:'',//
// getTime:'2013/3/1',//
// efficientDate:'',//
// imgUrl:'',//
// remark:''//
// },
],
carrierList:[],
//
searchInfo: {
page: 1,
pagesize: 10
},
//
abc:{
aaa:"111",
bbb:"222"
},
props: {
checkStrictly: true,
value: "id",
label: "name",
children: "children",
emitPath:false,
// multiple: true
},
userProps: {
value: "id",
label: "name",
children: "govlist",
emitPath:false,
// multiple: true
},
grouplistBackup:[],
grouplist:[],
//
rules: {
title: [{ required: true, message: '请输入名称', trigger: 'blur' }],
},
editRules:{
title: [{ required: true, message: '请输入名称', trigger: 'blur' }],
}
}
},
created() {
console.log(this.$store.state.user.token)
if (this.$store.state.user.token=='') {
this.$router.push('/login')
}
//
this.getDataList()
this.getCarrierList()
this.getSystemadminlist()
this.getGrouplist()
},
methods: {
formatDate(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');
},
//
async getGrouplist(){
const res = await getgroupdepartmap()
this.grouplist=res.data
},
//
async getSystemadminlist(){
const from = {
level: 4
}
const res = await getgroupuser(from)
this.grouplistBackup=res.data
this.grouplistBackup.forEach(item => {
if (item.govlist != null) {
// this.digui(item);
item.govlist.forEach(items => {
// forEach,itemthis.digui(item);
this.digui(items); //
//
// console.log(items, '')
// children
})
} else {
item.govlist=item.child
//
}
})
console.log(this.grouplistBackup)
},
//
digui (item) {
//
if (item.govlist != null) {
// valuelabel,
item.govlist.forEach(ff => {
// children
this.digui(ff)
})
} else {
// children西
// valuelabel,
// --------------------------线---------------------------------
item.govlist=item.child
}
//
},
//
async getCarrierList(){
const searchInfo = {
page:1,
pagesize:1000000,
}
const res = await carrierlist(searchInfo)
this.carrierList = res.data.list
},
clickpj(file){
console.log("file")
console.log(file)
},
//
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)
});
},
//
uploadSuccess(response,file,fileList){
if (response.code==0) {
console.log(response.data.url)
const data = {
name: response.data.name, //
url: response.data.url, //
imgpath: response.data.physicspath,
filesize:response.data.filesize
}
this.form.imgurl.push(data)
}else{
this.$message.error('上传失败')
}
},
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)
});
},
//
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;
}
},
//
async showDetails(row){
const from = {
id:row.id
}
const res = await getdutyclassinfo(from)
this.detailsData = res.data
this.detailsDialogFormVisible=true;
},
//
async deleteOperate(row) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(async() => {
this.deleFrom.state=3;
this.deleFrom.id=row.id;
this.deleFrom.id=this.deleFrom.id.toString()
const res = await eidyhonorcontstate(this.deleFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '删除成功!'
})
this.getDataList()
}
})
},
//
showAdd(){
this.dialogFormVisible=true;
console.log(this.dialogFormVisible)
},
//
async showEdit(row){
this.editFrom.outid=row.outId
const res = await getdutyclassinfo(this.editFrom)
this.editAdd = res.data
this.editDialogFormVisible=true;
},
//
async changeVal(val,id){
console.log(id)
this.switchFrom.id=id
this.switchFrom.id=this.switchFrom.id.toString()
if (val==1) {
this.switchFrom.state=1;
const res = await eidyhonorcontstate(this.switchFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '修改状态成功',
showClose: true
})
this.getDataList()
}
} else {
this.switchFrom.state=2;
const res = await eidyhonorcontstate(this.switchFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '修改状态成功',
showClose: true
})
this.getDataList()
}
}
},
//
onReset() {
this.searchInfo = {}
},
//
onSubmit() {
this.searchInfo.page = 1
this.searchInfo.pagesize = 10
this.getDataList()
},
//
formatDate(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');
},
//
async enterDialog(){
this.$refs.addForm.validate(async valid => {
if (valid) {
const res = await addhonorcont(this.form)
if (res.code === 0) {
this.$message({
type: 'success',
message: '添加成功',
showClose: true
})
}
this.getDataList();
this.closeDialog();
}
})
},
//
async editEnterDialog(){
this.$refs.editForm.validate(async valid => {
if (valid) {
const res = await eitedutyclassinfo(this.editAdd)
if (res.code === 0) {
this.$message({
type: 'success',
message: '编辑成功',
showClose: true
})
}
this.getDataList();
this.editCloseDialog();
}
})
},
//
closeDialog() {
console.log("closeDialog")
this.initForm()
this.dialogFormVisible = false
},
//
editCloseDialog() {
this.editInitForm()
this.editDialogFormVisible = false
},
//
initForm() {
console.log("initForm")
this.$refs.addForm.resetFields()
this.form = {}
console.log(this.form)
},
//
editInitForm() {
this.$refs.editForm.resetFields()
this.editAdd = {}
},
// pageSize
handleSizeChange(val) {
this.searchInfo.pagesize=val
this.getDataList(this.searchInfo)
},
// page
handleCurrentChange(val) {
this.searchInfo.page=val
this.getDataList(this.searchInfo)
},
//
async getDataList() {
const res = await honorlist(this.searchInfo)
this.tableData = res.data.list
this.total = res.data.total
this.searchInfo.page = res.data.page
this.searchInfo.pagesize = res.data.pageSize
}
}
}
</script>
<style lang="scss" scoped>
.dashboard {
&-container {
margin: 30px;
}
&-text {
font-size: 30px;
line-height: 46px;
}
}
</style>

333
src/views/honor/type.vue

@ -0,0 +1,333 @@
<template>
<!-- 载体类型 -->
<div class="dashboard-container">
<div class="gva-search-box">
<el-form ref="searchForm" :inline="true" :model="searchInfo">
<el-form-item label="名称">
<el-input
placeholder="请输入名称"
v-model="searchInfo.name"
clearable>
</el-input>
</el-form-item>
<!-- <el-form-item label="考核维度状态">
<el-select v-model="searchInfo.state" clearable placeholder="请选择状态">
<el-option :value=1 label="正常">正常</el-option>
<el-option :value=2 label="禁止">禁止</el-option>
</el-select>
</el-form-item> -->
<el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button>
</div>
<el-table :data="tableData">
<el-table-column align="left" label="ID" prop="id"/>
<el-table-column align="left" label="名称" prop="name"/>
<el-table-column align="left" label="状态">
<template #default="scope">
<el-switch
inline-prompt
active-text="正常"
inactive-text="禁止"
v-model="scope.row.state"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value=1
:inactive-value=2
@change="changeVal($event,scope.row.id)"
/>
</template>
</el-table-column>
<el-table-column align="left" fixed="right" label="操作" width="200">
<template #default="scope">
<el-button
icon="el-icon-edit"
size="small"
type="text"
@click="showEdit(scope.row)"
>编辑</el-button>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchInfo.pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
<!-- 新增弹框 -->
<el-dialog :visible.sync="dialogFormVisible" :before-close="closeDialog" title="新增" width="20%">
<el-form ref="addForm" :model="form" :rules="rules" label-width="150px">
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" autocomplete="off" />
</el-form-item>
<!-- <el-form-item label="排序" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" />
</el-form-item> -->
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="closeDialog"> </el-button>
<el-button size="small" type="primary" @click="enterDialog"> </el-button>
</div>
</template>
</el-dialog>
<!-- 编辑弹框 -->
<el-dialog :visible.sync="editDialogFormVisible" :before-close="editCloseDialog" title="修改" width="20%">
<el-form ref="editForm" :model="editAdd" :rules="editRules" label-width="150px">
<el-form-item label="名称" prop="name">
<el-input v-model="editAdd.name" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="editCloseDialog"> </el-button>
<el-button size="small" type="primary" @click="editEnterDialog"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import { carrierlist,addcarrier,eidycarrier,eidycarrierstate } from '@/api/honer'
export default {
name: 'Dashboard',
data() {
return {
//
editFrom:{},
//
switchFrom:{},
//
deleFrom:{},
//
editAdd:{},
assessList:{},
//
form:{},
//
dialogFormVisible:false,
//
editDialogFormVisible:false,
total: 0,
tableData:[],
//
searchInfo: {
page: 1,
pagesize: 10
},
//
abc:{
aaa:"111",
bbb:"222"
},
//
rules: {
title: [{ required: true, message: '请输入名称', trigger: 'blur' }],
},
editRules:{
title: [{ required: true, message: '请输入名称', trigger: 'blur' }],
}
}
},
created() {
console.log(this.$store.state.user.token)
if (this.$store.state.user.token=='') {
this.$router.push('/login')
}
//
this.getDataList()
},
methods: {
//
//
async deleteOperate(row) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(async() => {
this.deleFrom.state=3;
this.deleFrom.id=row.id.toString();
const res = await eidycarrierstate(this.deleFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '删除成功!'
})
this.getDataList()
}
})
},
//
showAdd(){
this.dialogFormVisible=true;
console.log(this.dialogFormVisible)
},
//
async showEdit(row){
this.editFrom.id=row.id
this.editAdd = row
this.editDialogFormVisible=true;
},
//
async changeVal(val,id){
console.log(val)
this.switchFrom.id=id
this.switchFrom.id=this.switchFrom.id.toString()
if (val==1) {
this.switchFrom.state=1;
const res = await eidycarrierstate(this.switchFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '修改状态成功',
showClose: true
})
this.getDataList()
}
} else {
this.switchFrom.state=2;
const res = await eidycarrierstate(this.switchFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '修改状态成功',
showClose: true
})
this.getDataList()
}
}
},
//
onReset() {
this.searchInfo = {}
},
//
onSubmit() {
this.searchInfo.page = 1
this.searchInfo.pagesize = 10
this.getDataList()
},
//
formatDate(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');
},
//
async enterDialog(){
this.$refs.addForm.validate(async valid => {
if (valid) {
const res = await addcarrier(this.form)
if (res.code === 0) {
this.$message({
type: 'success',
message: '添加成功',
showClose: true
})
}
this.getDataList();
this.closeDialog();
}
})
},
//
async editEnterDialog(){
this.$refs.editForm.validate(async valid => {
if (valid) {
this.editAdd.id=this.editAdd.id.toString()
const res = await eidycarrier(this.editAdd)
if (res.code === 0) {
this.$message({
type: 'success',
message: '编辑成功',
showClose: true
})
}
this.getDataList();
this.editCloseDialog();
}
})
},
//
closeDialog() {
console.log("closeDialog")
this.initForm()
this.dialogFormVisible = false
},
//
editCloseDialog() {
this.editInitForm()
this.editDialogFormVisible = false
},
//
initForm() {
console.log("initForm")
this.$refs.addForm.resetFields()
this.form = {}
console.log(this.form)
},
//
editInitForm() {
this.$refs.editForm.resetFields()
this.editAdd = {}
},
// pageSize
handleSizeChange(val) {
this.searchInfo.pagesize=val
this.getDataList(this.searchInfo)
},
// page
handleCurrentChange(val) {
this.searchInfo.page=val
this.getDataList(this.searchInfo)
},
//
async getDataList() {
const res = await carrierlist(this.searchInfo)
this.tableData = res.data.list
this.total = res.data.total
this.searchInfo.page = res.data.page
this.searchInfo.pagesize = res.data.pageSize
}
}
}
</script>
<style lang="scss" scoped>
.dashboard {
&-container {
margin: 30px;
}
&-text {
font-size: 30px;
line-height: 46px;
}
}
</style>

475
src/views/hr/personnel.vue

@ -17,9 +17,9 @@
clearable> clearable>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="行政组织"> <!-- <el-form-item label="行政组织">
<el-cascader filterable clearable v-model="searchInfo.adminorg" :options="searchDepartmentList" :show-all-levels="false" :props="props1"></el-cascader> <el-cascader filterable clearable v-model="searchInfo.adminorg" :options="searchDepartmentList" :show-all-levels="false" :props="props1"></el-cascader>
</el-form-item> </el-form-item> -->
<!-- <el-form-item label="考核维度状态"> <!-- <el-form-item label="考核维度状态">
<el-select v-model="searchInfo.state" clearable placeholder="请选择状态"> <el-select v-model="searchInfo.state" clearable placeholder="请选择状态">
@ -47,18 +47,25 @@
<div class="gva-btn-list"> <div class="gva-btn-list">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button> <el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button>
</div> </div>
<el-table :data="tableData"> <el-container>
<el-table-column align="left" label="工号" prop="number"/> <!-- 左侧内容 -->
<el-table-column align="left" label="姓名" prop="name"/> <el-aside width="300px">
<el-tree :data="GovthreeList2" :props="defaultProps1" @node-click="handleNodeClick"></el-tree>
</el-aside>
<!-- 右侧内容 -->
<el-main style="padding:10px">
<el-table :data="tableData">
<el-table-column width="100" align="left" label="工号" prop="number"/>
<el-table-column width="100" align="left" label="姓名" prop="name"/>
<el-table-column align="left" label="公司" prop="companyname"/> <el-table-column align="left" label="公司" prop="companyname"/>
<el-table-column align="left" label="部门" prop="deparmentname"/> <el-table-column align="left" label="部门" prop="maindeparmentname"/>
<el-table-column align="left" label="职位" prop="positionname"/> <el-table-column width="200" align="left" label="职位" prop="positionname"/>
<el-table-column align="left" label="头像" prop=""> <!-- <el-table-column align="left" label="头像" prop="">
<template #default="scope"> <template #default="scope">
<el-avatar shape="square" size="large" :src="scope.row.icon"></el-avatar> <el-avatar shape="square" size="large" :src="scope.row.icon"></el-avatar>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column align="left" fixed="right" label="操作" width="200"> <el-table-column align="left" fixed="right" label="操作">
<template #default="scope"> <template #default="scope">
<el-button <el-button
icon="el-icon-view" icon="el-icon-view"
@ -103,6 +110,9 @@
:total="total"> :total="total">
</el-pagination> </el-pagination>
</div> </div>
</el-main>
</el-container>
</div> </div>
<!-- 新增弹框 --> <!-- 新增弹框 -->
<el-dialog :visible.sync="dialogFormVisible" :before-close="closeDialog" title="新增" width="80%"> <el-dialog :visible.sync="dialogFormVisible" :before-close="closeDialog" title="新增" width="80%">
@ -121,14 +131,20 @@
<el-descriptions-item> <el-descriptions-item>
<template slot="label">用工关系</template> <template slot="label">用工关系</template>
<el-select v-model="form.emptype" clearable placeholder="请选择"> <el-select v-model="form.emptype" clearable placeholder="请选择">
<el-option label="实习生" :value=1></el-option> <el-option label="临时工" :value=1></el-option>
<el-option label="待分配" :value=2></el-option> <el-option label="编外人员" :value=2></el-option>
<el-option label="试用员工" :value=3></el-option> <el-option label="实习&实习生" :value=3></el-option>
<el-option label="正式员工" :value=4></el-option> <el-option label="试用员工" :value=4></el-option>
<el-option label="停薪留职" :value=5></el-option> <el-option label="待分配" :value=5></el-option>
<el-option label="退休" :value=6></el-option> <el-option label="待岗" :value=6></el-option>
<el-option label="辞退" :value=7></el-option> <el-option label="临时调入" :value=7></el-option>
<el-option label="离职" :value=8></el-option> <el-option label="正式员工" :value=8></el-option>
<el-option label="长期病假" :value=9></el-option>
<el-option label="停薪留职" :value=10></el-option>
<el-option label="退休" :value=11></el-option>
<el-option label="辞职" :value=12></el-option>
<el-option label="辞退" :value=13></el-option>
<el-option label="离职" :value=14></el-option>
</el-select> </el-select>
<!-- <div v-if="staffInfo.emptype==1">实习生</div> <!-- <div v-if="staffInfo.emptype==1">实习生</div>
@ -743,14 +759,20 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label">用工关系</template> <template slot="label">用工关系</template>
<div v-if="staffInfo.emptype==1">实习生</div> <div v-show="staffInfo.emptype==1">临时工</div>
<div v-if="staffInfo.emptype==2">待分配</div> <div v-show="staffInfo.emptype==2">编外人员</div>
<div v-if="staffInfo.emptype==3">试用员工</div> <div v-show="staffInfo.emptype==3">实习&实习生</div>
<div v-if="staffInfo.emptype==4">正式员工</div> <div v-show="staffInfo.emptype==4">试用员工</div>
<div v-if="staffInfo.emptype==5">停薪留职</div> <div v-show="staffInfo.emptype==5">待分配</div>
<div v-if="staffInfo.emptype==6">退休</div> <div v-show="staffInfo.emptype==6">待岗</div>
<div v-if="staffInfo.emptype==7">辞退</div> <div v-show="staffInfo.emptype==7">临时调入</div>
<div v-if="staffInfo.emptype==8">离职</div> <div v-show="staffInfo.emptype==8">正式员工</div>
<div v-show="staffInfo.emptype==9">长期病假</div>
<div v-show="staffInfo.emptype==10">停薪留职</div>
<div v-show="staffInfo.emptype==11">退休</div>
<div v-show="staffInfo.emptype==12">辞职</div>
<div v-show="staffInfo.emptype==13">辞退</div>
<div v-show="staffInfo.emptype==14">离职</div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label">照片</template> <template slot="label">照片</template>
@ -927,188 +949,188 @@
<div v-if="staffInfo.isdoubleworker==2"></div> <div v-if="staffInfo.isdoubleworker==2"></div>
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<!-- 双职工 --> <el-tabs stretch background-color="#545c64">
<el-table :data="staffInfo.doubleworkerlist" border style="width: 100%"> <el-tab-pane label="双职工">
<el-table-column header-align="center" label="双职工"> <!-- 双职工 -->
<el-table-column prop="number" label="工号"> <el-table :data="staffInfo.doubleworkerlist" border style="width: 100%">
<el-table-column header-align="center" label="双职工">
<el-table-column prop="number" label="工号">
</el-table-column>
<el-table-column prop="name" label="姓名">
</el-table-column>
<el-table-column prop="company" label="公司">
</el-table-column>
<el-table-column prop="department" label="部门">
</el-table-column>
<el-table-column prop="position" label="岗位">
</el-table-column>
<el-table-column prop="mobilephone" label="联系电话">
</el-table-column>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="紧急联系人" style="padding:20px">
<!-- 紧急联系人 -->
<el-table :data="staffInfo.emergencycontact" border style="width: 100%">
<el-table-column header-align="center" label="紧急联系人">
<el-table-column prop="name" label="姓名">
</el-table-column>
<el-table-column prop="relationship" label="与本人关系">
</el-table-column>
<el-table-column prop="mobilephone" label="联系电话">
</el-table-column>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="家庭成员" style="padding:20px">
<!-- 家庭成员 -->
<el-table :data="staffInfo.memberoffamily" border style="width: 100%">
<el-table-column header-align="center" label="家庭成员">
<el-table-column prop="relationship" label="亲属关系">
</el-table-column>
<el-table-column prop="name" label="姓名">
</el-table-column>
<el-table-column prop="company" label="公司">
</el-table-column>
<el-table-column prop="department" label="部门">
</el-table-column>
<el-table-column prop="position" label="岗位">
</el-table-column>
<el-table-column prop="mobilephone" label="联系电话">
</el-table-column>
<el-table-column prop="politicaloutlook" label="政治面貌">
<template #default="scope">
<div v-if="scope.row.politicaloutlook==1">群众</div>
<div v-if="scope.row.politicaloutlook==2">无党派</div>
<div v-if="scope.row.politicaloutlook==3">台盟会员</div>
<div v-if="scope.row.politicaloutlook==4">九三社员</div>
<div v-if="scope.row.politicaloutlook==5">致公党员</div>
<div v-if="scope.row.politicaloutlook==6">农工党员</div>
<div v-if="scope.row.politicaloutlook==7">民进会员</div>
<div v-if="scope.row.politicaloutlook==8">民建会员</div>
<div v-if="scope.row.politicaloutlook==9">民盟盟员</div>
<div v-if="scope.row.politicaloutlook==10">民革会员</div>
<div v-if="scope.row.politicaloutlook==11">共青团员</div>
<div v-if="scope.row.politicaloutlook==12">预备党员</div>
<div v-if="scope.row.politicaloutlook==13">中共党员</div>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="教育经历" style="padding:20px">
<!-- 教育经历 -->
<el-table :data="staffInfo.educationalexperience" border style="width: 100%">
<el-table-column header-align="center" label="教育经历">
<el-table-column prop="graduationschool" label="毕业院校">
</el-table-column>
<el-table-column prop="subject" label="专业">
</el-table-column>
<el-table-column prop="company" label="学历">
<template #default="scope">
<div v-if="scope.row.education==1">初中以下</div>
<div v-if="scope.row.education==2">中专</div>
<div v-if="scope.row.education==3">高中</div>
<div v-if="scope.row.education==4">中技</div>
<div v-if="scope.row.education==5">高技</div>
<div v-if="scope.row.education==6">函授专科</div>
<div v-if="scope.row.education==7">大学专科</div>
<div v-if="scope.row.education==8">函授本科</div>
<div v-if="scope.row.education==9">大学本科</div>
<div v-if="scope.row.education==10">硕士研究生</div>
<div v-if="scope.row.education==11">博士研究生</div>
<div v-if="scope.row.education==12">专家教授</div>
</template>
</el-table-column>
<el-table-column prop="admissiontime" label="入学时间">
</el-table-column>
<el-table-column prop="graduationtime" label="毕业时间">
</el-table-column>
<el-table-column prop="academicdegree" label="学位">
<!-- <template #default="scope">
<div v-if="scope.row.academicdegree==0"></div>
<div v-if="scope.row.academicdegree==1">学士</div>
<div v-if="scope.row.academicdegree==2">硕士</div>
<div v-if="scope.row.academicdegree==3">博士</div>
</el-table-column> </template> -->
<el-table-column prop="name" label="姓名"> </el-table-column>
</el-table-column> <el-table-column prop="level" label="学历类型">
<el-table-column prop="company" label="公司"> <!-- <template #default="scope">
</el-table-column> <div v-if="scope.row.level==1">普通</div>
<el-table-column prop="department" label="部门"> <div v-if="scope.row.level==2">第一学历</div>
</el-table-column> <div v-if="scope.row.level==3">最高学历</div>
<el-table-column prop="position" label="岗位"> </template> -->
</el-table-column> </el-table-column>
<el-table-column prop="mobilephone" label="联系电话"> </el-table-column>
</el-table-column> </el-table>
</el-table-column> </el-tab-pane>
</el-table> <el-tab-pane label="工作履历" style="padding:20px">
<!-- 紧急联系人 --> <!-- 工作履历 -->
<el-table :data="staffInfo.emergencycontact" border style="width: 100%"> <el-table :data="staffInfo.workhistorylist" border style="width: 100%">
<el-table-column header-align="center" label="紧急联系人"> <el-table-column header-align="center" label="工作履历">
<el-table-column prop="name" label="姓名"> <el-table-column prop="company" label="公司">
</el-table-column> </el-table-column>
<el-table-column prop="relationship" label="与本人关系"> <el-table-column prop="department" label="部门">
</el-table-column> </el-table-column>
<el-table-column prop="mobilephone" label="联系电话"> <el-table-column prop="entrytime" label="入职时间">
</el-table-column> </el-table-column>
<!-- <el-table-column <el-table-column prop="leavedate" label="离职日期">
label="操作"> </el-table-column>
<template #default="scope"> <el-table-column prop="witness" label="证明人">
<el-button </el-table-column>
v-if="scope.$index!=0" <el-table-column prop="witnesstel" label="证明人电话">
plain </el-table-column>
icon="el-icon-delete" <el-table-column prop="remarks" label="备注">
size="mini" </el-table-column>
type="danger" </el-table-column>
@click="deleteRulesList(scope)" </el-table>
>删除</el-button> </el-tab-pane>
</template> <el-tab-pane label="集团内部工作履历" style="padding:20px">
</el-table-column> --> <!-- 集团内部工作履历 -->
</el-table-column> <el-table :data="staffInfo.groupworkhistorylist" border style="width: 100%">
</el-table> <el-table-column header-align="center" label="集团内部工作履历">
<!-- 家庭成员 --> <el-table-column prop="group" label="集团">
<el-table :data="staffInfo.memberoffamily" border style="width: 100%"> </el-table-column>
<el-table-column header-align="center" label="家庭成员"> <el-table-column prop="company" label="公司">
<el-table-column prop="relationship" label="亲属关系"> </el-table-column>
</el-table-column> <el-table-column prop="department" label="部门">
<el-table-column prop="name" label="姓名"> </el-table-column>
</el-table-column> <el-table-column prop="workshopsection" label="岗位">
<el-table-column prop="company" label="公司"> </el-table-column>
</el-table-column> <el-table-column prop="position" label="职位">
<el-table-column prop="department" label="部门"> </el-table-column>
</el-table-column> <el-table-column prop="position" label="职位">
<el-table-column prop="position" label="岗位"> </el-table-column>
</el-table-column> <el-table-column prop="starttime" label="开始日期">
<el-table-column prop="mobilephone" label="联系电话"> </el-table-column>
</el-table-column> <el-table-column prop="endtime" label="结束日期">
<el-table-column prop="politicaloutlook" label="政治面貌"> </el-table-column>
<template #default="scope"> <el-table-column prop="changetype" label="变动类型">
<div v-if="scope.row.politicaloutlook==1">群众</div> <template #default="scope">
<div v-if="scope.row.politicaloutlook==2">无党派</div> <div v-if="scope.row.changetype==1">预入职</div>
<div v-if="scope.row.politicaloutlook==3">台盟会员</div> <div v-if="scope.row.changetype==2">雇佣入职</div>
<div v-if="scope.row.politicaloutlook==4">九三社员</div> <div v-if="scope.row.changetype==3">转正</div>
<div v-if="scope.row.politicaloutlook==5">致公党员</div> <div v-if="scope.row.changetype==4">晋升</div>
<div v-if="scope.row.politicaloutlook==6">农工党员</div> <div v-if="scope.row.changetype==5">降级</div>
<div v-if="scope.row.politicaloutlook==7">民进会员</div> <div v-if="scope.row.changetype==6">职等调整</div>
<div v-if="scope.row.politicaloutlook==8">民建会员</div> <div v-if="scope.row.changetype==7">调动调入</div>
<div v-if="scope.row.politicaloutlook==9">民盟盟员</div> <div v-if="scope.row.changetype==8">跨公司调动调入</div>
<div v-if="scope.row.politicaloutlook==10">民革会员</div> <div v-if="scope.row.changetype==9">借调</div>
<div v-if="scope.row.politicaloutlook==11">共青团员</div> <div v-if="scope.row.changetype==10">平调</div>
<div v-if="scope.row.politicaloutlook==12">预备党员</div> <div v-if="scope.row.changetype==11">兼职</div>
<div v-if="scope.row.politicaloutlook==13">中共党员</div> <div v-if="scope.row.changetype==12">预离职</div>
</template> <div v-if="scope.row.changetype==13">离职</div>
</el-table-column> <div v-if="scope.row.changetype==14">退休</div>
</el-table-column> <div v-if="scope.row.changetype==15">返聘</div>
</el-table> <div v-if="scope.row.changetype==16">员工初始化</div>
<!-- 教育经历 --> </template>
<el-table :data="staffInfo.educationalexperience" border style="width: 100%"> </el-table-column>
<el-table-column header-align="center" label="教育经历">
<el-table-column prop="graduationschool" label="毕业院校">
</el-table-column>
<el-table-column prop="subject" label="专业">
</el-table-column>
<el-table-column prop="company" label="学历">
<template #default="scope">
<div v-if="scope.row.education==1">初中以下</div>
<div v-if="scope.row.education==2">中专</div>
<div v-if="scope.row.education==3">高中</div>
<div v-if="scope.row.education==4">中技</div>
<div v-if="scope.row.education==5">高技</div>
<div v-if="scope.row.education==6">函授专科</div>
<div v-if="scope.row.education==7">大学专科</div>
<div v-if="scope.row.education==8">函授本科</div>
<div v-if="scope.row.education==9">大学本科</div>
<div v-if="scope.row.education==10">硕士研究生</div>
<div v-if="scope.row.education==11">博士研究生</div>
<div v-if="scope.row.education==12">专家教授</div>
</template>
</el-table-column>
<el-table-column prop="admissiontime" label="入学时间">
</el-table-column>
<el-table-column prop="graduationtime" label="毕业时间">
</el-table-column>
<el-table-column prop="academicdegree" label="学位">
<!-- <template #default="scope">
<div v-if="scope.row.academicdegree==0"></div>
<div v-if="scope.row.academicdegree==1">学士</div>
<div v-if="scope.row.academicdegree==2">硕士</div>
<div v-if="scope.row.academicdegree==3">博士</div>
</template> --> </el-table-column>
</el-table-column> </el-table>
<el-table-column prop="level" label="学历类型"> </el-tab-pane>
<!-- <template #default="scope"> </el-tabs>
<div v-if="scope.row.level==1">普通</div>
<div v-if="scope.row.level==2">第一学历</div>
<div v-if="scope.row.level==3">最高学历</div>
</template> -->
</el-table-column>
</el-table-column>
</el-table>
<!-- 工作履历 -->
<el-table :data="staffInfo.workhistorylist" border style="width: 100%">
<el-table-column header-align="center" label="工作履历">
<el-table-column prop="company" label="公司">
</el-table-column>
<el-table-column prop="department" label="部门">
</el-table-column>
<el-table-column prop="entrytime" label="入职时间">
</el-table-column>
<el-table-column prop="leavedate" label="离职日期">
</el-table-column>
<el-table-column prop="witness" label="证明人">
</el-table-column>
<el-table-column prop="witnesstel" label="证明人电话">
</el-table-column>
<el-table-column prop="remarks" label="备注">
</el-table-column>
</el-table-column>
</el-table>
<!-- 集团内部工作履历 -->
<el-table :data="staffInfo.groupworkhistorylist" border style="width: 100%">
<el-table-column header-align="center" label="集团内部工作履历">
<el-table-column prop="group" label="集团">
</el-table-column>
<el-table-column prop="company" label="公司">
</el-table-column>
<el-table-column prop="department" label="部门">
</el-table-column>
<el-table-column prop="workshopsection" label="岗位">
</el-table-column>
<el-table-column prop="position" label="职位">
</el-table-column>
<el-table-column prop="position" label="职位">
</el-table-column>
<el-table-column prop="starttime" label="开始日期">
</el-table-column>
<el-table-column prop="endtime" label="结束日期">
</el-table-column>
<el-table-column prop="changetype" label="变动类型">
<template #default="scope">
<div v-if="scope.row.changetype==1">预入职</div>
<div v-if="scope.row.changetype==2">雇佣入职</div>
<div v-if="scope.row.changetype==3">转正</div>
<div v-if="scope.row.changetype==4">晋升</div>
<div v-if="scope.row.changetype==5">降级</div>
<div v-if="scope.row.changetype==6">职等调整</div>
<div v-if="scope.row.changetype==7">调动调入</div>
<div v-if="scope.row.changetype==8">跨公司调动调入</div>
<div v-if="scope.row.changetype==9">借调</div>
<div v-if="scope.row.changetype==10">平调</div>
<div v-if="scope.row.changetype==11">兼职</div>
<div v-if="scope.row.changetype==12">预离职</div>
<div v-if="scope.row.changetype==13">离职</div>
<div v-if="scope.row.changetype==14">退休</div>
<div v-if="scope.row.changetype==15">返聘</div>
<div v-if="scope.row.changetype==16">员工初始化</div>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-dialog> </el-dialog>
<!-- 编辑基础信息 --> <!-- 编辑基础信息 -->
<el-dialog :visible.sync="editBaseDialogFormVisible" title="人员档案" width="75%"> <el-dialog :visible.sync="editBaseDialogFormVisible" title="人员档案" width="75%">
@ -1126,14 +1148,20 @@
<el-descriptions-item> <el-descriptions-item>
<template slot="label">用工关系</template> <template slot="label">用工关系</template>
<el-select v-model="baseInfo.emptype" clearable placeholder="请选择"> <el-select v-model="baseInfo.emptype" clearable placeholder="请选择">
<el-option label="实习生" :value=1></el-option> <el-option label="临时工" :value=1></el-option>
<el-option label="待分配" :value=2></el-option> <el-option label="编外人员" :value=2></el-option>
<el-option label="试用员工" :value=3></el-option> <el-option label="实习&实习生" :value=3></el-option>
<el-option label="正式员工" :value=4></el-option> <el-option label="试用员工" :value=4></el-option>
<el-option label="停薪留职" :value=5></el-option> <el-option label="待分配" :value=5></el-option>
<el-option label="退休" :value=6></el-option> <el-option label="待岗" :value=6></el-option>
<el-option label="辞退" :value=7></el-option> <el-option label="临时调入" :value=7></el-option>
<el-option label="离职" :value=8></el-option> <el-option label="正式员工" :value=8></el-option>
<el-option label="长期病假" :value=9></el-option>
<el-option label="停薪留职" :value=10></el-option>
<el-option label="退休" :value=11></el-option>
<el-option label="辞职" :value=12></el-option>
<el-option label="辞退" :value=13></el-option>
<el-option label="离职" :value=14></el-option>
</el-select> </el-select>
<!-- <div v-if="staffInfo.emptype==1">实习生</div> <!-- <div v-if="staffInfo.emptype==1">实习生</div>
@ -1696,6 +1724,7 @@
</template> </template>
<script> <script>
import { dutyclasslist,statedutyclass,eitedutyclassinfo,getdutyclassinfo,adddutyclass } from '@/api/duty/dimension' import { dutyclasslist,statedutyclass,eitedutyclassinfo,getdutyclassinfo,adddutyclass } from '@/api/duty/dimension'
import { stafflist,archiveslist,archivescont,govthree,positionlist,dutieslist } from '@/api/personnel/post' import { stafflist,archiveslist,archivescont,govthree,positionlist,dutieslist } from '@/api/personnel/post'
import { import {
@ -1721,6 +1750,11 @@ export default {
}, },
data() { data() {
return { return {
GovthreeList2:[],
defaultProps1: {
children: 'child',
label: 'name'
},
// //
emptypeList:[ emptypeList:[
{ {
@ -2105,8 +2139,21 @@ export default {
this.getPositionlist() this.getPositionlist()
this.getDutieslist() this.getDutieslist()
this.getGroup() this.getGroup()
this.getGovthree2()
}, },
methods: { methods: {
//
handleNodeClick(val){
this.searchInfo.adminorg=val.id
this.searchInfo.adminorg=this.searchInfo.adminorg
this.getDataList()
console.log(val)
},
//
async getGovthree2(){
const res = await govthree()
this.GovthreeList2 = res.data[0].child
},
// //
async getGroup(){ async getGroup(){
const res = await departmentlist() const res = await departmentlist()

323
src/views/hr/team.vue

@ -0,0 +1,323 @@
<template>
<!-- 班组 -->
<div class="dashboard-container">
<div class="gva-search-box">
<el-form ref="searchForm" :inline="true" :model="searchInfo">
<el-form-item label="班组名称">
<el-input
placeholder="请输入名称"
v-model="searchInfo.name"
clearable>
</el-input>
</el-form-item>
<el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button>
</div>
<el-table :data="tableData">
<el-table-column align="left" label="班组ID" prop="id"/>
<el-table-column align="left" label="班组名称" prop="name"/>
<el-table-column align="left" label="状态">
<template #default="scope">
<el-switch
inline-prompt
active-text="正常"
inactive-text="禁止"
v-model="scope.row.state"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value=1
:inactive-value=2
@change="changeVal($event,scope.row.id)"
/>
</template>
</el-table-column>
<el-table-column align="left" fixed="right" label="操作" width="200">
<template #default="scope">
<el-button
icon="el-icon-edit"
size="small"
type="text"
@click="showEdit(scope.row)"
>编辑</el-button>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchInfo.pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
<!-- 新增弹框 -->
<el-dialog :visible.sync="dialogFormVisible" :before-close="closeDialog" title="新增" width="20%">
<el-form ref="addForm" :model="form" :rules="rules" label-width="150px">
<el-form-item label="班组名称" prop="title">
<el-input v-model="form.name" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="closeDialog"> </el-button>
<el-button size="small" type="primary" @click="enterDialog"> </el-button>
</div>
</template>
</el-dialog>
<!-- 编辑弹框 -->
<el-dialog :visible.sync="editDialogFormVisible" :before-close="editCloseDialog" title="修改" width="20%">
<el-form ref="editForm" :model="editAdd" :rules="editRules" label-width="150px">
<el-form-item label="考核维度名称" prop="title">
<el-input v-model="editAdd.title" autocomplete="off" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model.number="editAdd.sort" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="editCloseDialog"> </el-button>
<el-button size="small" type="primary" @click="editEnterDialog"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import { dutyclasslist,statedutyclass,eitedutyclassinfo,getdutyclassinfo,adddutyclass } from '@/api/duty/dimension'
import { addteamcont,getteamcont,eidtdelteamcont,teamcontlist,eiteteamcont } from '@/api/personnel/post'
export default {
name: 'Dashboard',
data() {
return {
//
editFrom:{},
//
switchFrom:{},
//
deleFrom:{},
//
editAdd:{},
assessList:{},
//
form:{},
//
dialogFormVisible:false,
//
editDialogFormVisible:false,
total: 0,
tableData:[],
//
searchInfo: {
page: 1,
pagesize: 10
},
//
abc:{
aaa:"111",
bbb:"222"
},
//
rules: {
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
},
editRules:{
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
}
}
},
created() {
console.log(this.$store.state.user.token)
if (this.$store.state.user.token=='') {
this.$router.push('/login')
}
//
this.getDataList()
},
methods: {
//
async deleteOperate(row) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(async() => {
this.deleFrom.state=3;
this.deleFrom.id=row.id;
const res = await eidtdelteamcont(this.deleFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '删除成功!'
})
this.getDataList()
}
})
},
//
showAdd(){
this.dialogFormVisible=true;
console.log(this.dialogFormVisible)
},
//
async showEdit(row){
this.editFrom.idstr=row.id.toString()
const res = await eiteteamcont(this.editFrom)
this.editAdd = res.data
this.editDialogFormVisible=true;
},
//
async changeVal(val,id){
console.log(val)
this.switchFrom.id=id
if (val==1) {
this.switchFrom.state=1;
const res = await eidtdelteamcont(this.switchFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '修改状态成功',
showClose: true
})
this.getDataList()
}
} else {
this.switchFrom.state=2;
const res = await eidtdelteamcont(this.switchFrom)
if (res.code === 0) {
this.$message({
type: 'success',
message: '修改状态成功',
showClose: true
})
this.getDataList()
}
}
},
//
onReset() {
this.searchInfo = {}
},
//
onSubmit() {
this.searchInfo.page = 1
this.searchInfo.pagesize = 10
this.getDataList()
},
//
formatDate(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');
},
//
async enterDialog(){
this.$refs.addForm.validate(async valid => {
if (valid) {
const res = await addteamcont(this.form)
if (res.code === 0) {
this.$message({
type: 'success',
message: '添加成功',
showClose: true
})
}
this.getDataList();
this.closeDialog();
}
})
},
//
async editEnterDialog(){
this.$refs.editForm.validate(async valid => {
if (valid) {
const res = await eitedutyclassinfo(this.editAdd)
if (res.code === 0) {
this.$message({
type: 'success',
message: '编辑成功',
showClose: true
})
}
this.getDataList();
this.editCloseDialog();
}
})
},
//
closeDialog() {
console.log("closeDialog")
this.initForm()
this.dialogFormVisible = false
},
//
editCloseDialog() {
this.editInitForm()
this.editDialogFormVisible = false
},
//
initForm() {
console.log("initForm")
this.$refs.addForm.resetFields()
this.form = {}
console.log(this.form)
},
//
editInitForm() {
this.$refs.editForm.resetFields()
this.editAdd = {}
},
// pageSize
handleSizeChange(val) {
this.searchInfo.pagesize=val
this.getDataList(this.searchInfo)
},
// page
handleCurrentChange(val) {
this.searchInfo.page=val
this.getDataList(this.searchInfo)
},
//
async getDataList() {
const res = await teamcontlist(this.searchInfo)
this.tableData = res.data.list
this.total = res.data.total
this.searchInfo.page = res.data.page
this.searchInfo.pagesize = res.data.pageSize
}
}
}
</script>
<style lang="scss" scoped>
.dashboard {
&-container {
margin: 30px;
}
&-text {
font-size: 30px;
line-height: 46px;
}
}
</style>

61
src/views/lunbo/index.vue

@ -0,0 +1,61 @@
<template>
<el-carousel height="" :interval="5000" arrow="always">
<el-carousel-item style="height:100%" v-for="item in 4" :key="item">
<h3>{{ item }}</h3>
</el-carousel-item>
</el-carousel>
</template>
<script>
export default {
data(){
return{
windowWidth: document.documentElement.clientWidth, //
windowHeight: document.documentElement.clientHeight, //
}
},
// <!--watch-->
// watch: {
// windowHeight (val) {
// let that = this;
// console.log("",val, that.windowHeight );
// },
// windowWidth (val) {
// let that = this;
// console.log("",val, that.windowHeight );
// }
// },
created(){
console.log(document.documentElement.clientHeight)
},
mounted() {
var that = this;
// <!--window.onresizemounted-->
window.onresize = () => {
return (() => {
window.fullHeight = document.documentElement.clientHeight;
window.fullWidth = document.documentElement.clientWidth;
that.windowHeight = window.fullHeight; //
that.windowWidth = window.fullWidth; //
})()
};
},
}
</script>
<style>
.el-carousel__item h3 {
color: #475669;
font-size: 18px;
opacity: 0.75;
line-height: 300px;
margin: 0;
}
.el-carousel__item:nth-child(2n) {
background-color: #99a9bf;
}
.el-carousel__item:nth-child(2n+1) {
background-color: #d3dce6;
}
</style>

287
src/views/permission/permissionSetting.vue

@ -0,0 +1,287 @@
<template>
<!-- 权限配置 -->
<div class="dashboard-container" style="padding:20px">
<el-container>
<!-- 左侧内容 -->
<el-aside width="250px">
<div>
<el-input
placeholder="搜索"
v-model="filterText">
</el-input>
<el-tree
class="filter-tree"
:data="data"
:props="defaultProps"
default-expand-all
@node-click="treeClick"
:filter-node-method="filterNode"
ref="tree">
</el-tree>
</div>
</el-aside>
<!-- 右侧内容 -->
<el-main style="padding:10px">
<div style="">
<div style="width: 180px;float: left;">
<div class="tabletop" style="width:180px;border: 1px solid #DCDFE6;padding: 5px;height: 48px;padding: 12px 0;font-weight: 500;text-overflow: ellipsis;text-align: left;color: #909399;font-size: 14px;padding-left: 10px;">主菜单</div>
<div style="width:180px;border: 1px solid #DCDFE6;padding: 5px;">
<el-checkbox-group v-model="menu">
<el-checkbox style="margin-bottom:3px" label="绩效考核" name="type"></el-checkbox>
<el-checkbox style="margin-bottom:3px" label="hr系统" name="type"></el-checkbox>
<el-checkbox style="margin-bottom:3px" label="基础信息" name="type"></el-checkbox>
<el-checkbox style="margin-bottom:3px" label="数据提报" name="type"></el-checkbox>
</el-checkbox-group>
</div>
</div>
<div style="width: 180px;float: left;">
<div class="tabletop" style="width:180px;border: 1px solid #DCDFE6;padding: 5px;height: 48px;padding: 12px 0;font-weight: 500;text-overflow: ellipsis;text-align: left;color: #909399;font-size: 14px;padding-left: 10px;">
<el-checkbox v-model="checked">全选</el-checkbox>
</div>
<div v-for="(iteam,index) in tableData" style="width:180px;border: 0.5px solid #DCDFE6;height: 104px;font-weight: 500;text-overflow: ellipsis;text-align: left;font-size: 14px;padding-left: 10px;padding: 12px 5px;line-height: 4.15;padding-left: 10px;">
<el-checkbox v-model="checked">{{iteam.name}}</el-checkbox>
</div>
</div>
<el-table
:data="tableData"
border
style="width:1000px">
<el-table-column
prop="date"
label="表单权限">
<template slot-scope="scope">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<el-checkbox v-for="city in cities" :label="city" :key="city">{{city}}</el-checkbox>
</el-checkbox-group>
</template>
</el-table-column>
<el-table-column
prop="date"
label="列表权限">
<template slot-scope="scope">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<el-checkbox v-for="iteam in listQuan" :label="iteam" :key="iteam">{{iteam}}</el-checkbox>
</el-checkbox-group>
</template>
</el-table-column>
<el-table-column
prop="name"
label="数据权限">
<template slot-scope="scope">
<el-radio-group v-model="radio">
<el-radio :label="3">本人</el-radio>
<el-radio :label="6">服务部门</el-radio>
<el-radio :label="9">全部</el-radio>
</el-radio-group>
</template>
</el-table-column>
</el-table>
</div>
</el-main>
</el-container>
</div>
</template>
<script>
const cityOptions = ['暂存', '提交', '打印', '删除'];
import { dutieslist,positionlist } from '@/api/personnel/post'
import { dutyclasslist,statedutyclass,eitedutyclassinfo,getdutyclassinfo,adddutyclass } from '@/api/duty/dimension'
export default {
name: 'Dashboard',
data() {
return {
radio:'',
checkAll: false,
checkedCities: ['暂存', '提交', '打印'],
cities: cityOptions,
listQuan:['新增','导入','导出','删除','打印二维码'],
isIndeterminate: true,
checked:'',
tableData: [{
date: '2016-05-02',
name: '期初向导',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '初始设置',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '编码规则',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '清除数据',
address: '上海市普陀区金沙江路 1516 弄'
}],
menu:'',
//
dutiesList:[],
positionList:[],
//
editFrom:{},
filterText: '',
data: [{
id: 1,
name: '角色',
children: [{
id: 4,
name: '超级管理员',
},{
id: 66,
name: '管理员',
}]
}, {
id: 2,
name: '职务',
children: []
}, {
id: 3,
name: '岗位',
children: []
}],
defaultProps: {
children: 'children',
label: 'name'
}
}
},
watch: {
filterText(val) {
this.$refs.tree.filter(val);
}
},
created() {
console.log(this.$store.state.user.token)
if (this.$store.state.user.token=='') {
this.$router.push('/login')
}
//
// this.getDataList()
this.getDutiesList()
this.getPositionlistList()
},
methods: {
//
treeClick(val){
console.log("val")
console.log(val)
},
handleCheckAllChange(val) {
this.checkedCities = val ? cityOptions : [];
this.isIndeterminate = false;
},
handleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.cities.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
},
// el
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
async getDutiesList() {
const searchInfo = {
page: 1, //
pagesize: 1000000, //
}
const res = await dutieslist(searchInfo)
this.dutiesList = res.data.list
this.data[1].children=this.dutiesList
},
//
async getPositionlistList() {
const searchInfo = {
page: 1, //
pagesize: 1000000, //
}
const res = await positionlist(searchInfo)
this.positionList = res.data.list
this.data[2].children=this.positionList
},
//
// async getDataList() {
// const res = await dutyclasslist(this.searchInfo)
// this.tableData = res.data.list
// this.total = res.data.total
// this.searchInfo.page = res.data.page
// this.searchInfo.pagesize = res.data.pageSize
// }
}
}
</script>
<style lang="scss" scoped>
.el-table__header .el-table-column--selection .cell .el-checkbox:after {
color: #333;
content: "全选" !important;
font-size: 16px;
margin-left: 12px;
font-weight: bold;
}
.tabletop{
padding: 12px 0;
min-width: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
text-overflow: ellipsis;
vertical-align: middle;
position: relative;
text-align: left;
}
// .el-aside::-webkit-scrollbar {
// display: none;
// }
// .el-input {
// width: 200px;
// }
// .el-header, .el-footer {
// background-color: #B3C0D1;
// color: #333;
// text-align: center;
// line-height: 60px;
// }
// .el-aside {
// background-color: #D3DCE6;
// color: #333;
// text-align: center;
// line-height: 200px;
// }
// .el-main {
// background-color: #E9EEF3;
// color: #333;
// text-align: center;
// line-height: 160px;
// }
// body > .el-container {
// margin-bottom: 40px;
// }
// .el-container:nth-child(5) .el-aside,
// .el-container:nth-child(6) .el-aside {
// line-height: 260px;
// }
// .el-container:nth-child(7) .el-aside {
// line-height: 320px;
// }
// .dashboard {
// &-container {
// margin: 30px;
// }
// &-text {
// font-size: 30px;
// line-height: 46px;
// }
// }
</style>

159
src/views/personnel/post/index.vue

@ -23,71 +23,82 @@
</el-form> </el-form>
</div> </div>
<div class="gva-table-box"> <div class="gva-table-box">
<div class="gva-btn-list"> <div class="gva-btn-list" style="width: 100%">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button> <el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button>
</div> </div>
<el-table :data="tableData"> <el-container>
<el-table-column align="left" label="编号" min-width="100" prop="number" /> <!-- 左侧内容 -->
<el-table-column align="left" label="职务名称" prop="name" /> <el-aside width="300px">
<el-table-column align="left" label="归属行政组织名称"> <el-tree :data="GovthreeList2" :props="defaultProps1" @node-click="handleNodeClick"></el-tree>
<template #default="scope"> </el-aside>
{{scope.row.departmentname}} / {{scope.row.aoname}} <!-- 右侧内容 -->
</template> <el-main style="padding:10px">
</el-table-column> <el-table :data="tableData">
<el-table-column align="left" label="归属职务类别" prop="jobname" /> <el-table-column align="left" label="编号" min-width="100" prop="number" />
<el-table-column align="left" label="权限设置" prop="jobname"> <el-table-column align="left" label="职位(岗位)名称" prop="name" />
<template #default="scope"> <el-table-column align="left" label="归属行政组织名称">
<el-button icon="el-icon-s-tools" @click="setting(scope.row)"></el-button> <template #default="scope">
</template> {{scope.row.departmentname}} / {{scope.row.aoname}}
</el-table-column> </template>
<el-table-column align="left" label="状态" min-width="140" prop="authorityName"> </el-table-column>
<template #default="scope"> <el-table-column align="left" label="归属职务类别" prop="jobname" />
<el-switch <el-table-column align="left" label="权限清单" prop="jobname">
inline-prompt <template #default="scope">
active-text="正常" <el-button icon="el-icon-s-tools" @click="setting(scope.row)"></el-button>
inactive-text="禁止" </template>
v-model="scope.row.state" </el-table-column>
active-color="#13ce66" <el-table-column align="left" label="状态" min-width="140" prop="authorityName">
inactive-color="#ff4949" <template #default="scope">
:active-value=1 <el-switch
:inactive-value=2 inline-prompt
@change="changeVal($event,scope.row.id)" active-text="正常"
/> inactive-text="禁止"
</template> v-model="scope.row.state"
</el-table-column> active-color="#13ce66"
<el-table-column align="left" fixed="right" label="操作" width="300"> inactive-color="#ff4949"
<template #default="scope"> :active-value=1
<!-- <el-button :inactive-value=2
size="mini" @change="changeVal($event,scope.row.id)"
type="text" />
icon="el-icon-plus" </template>
@click="addSonMenu(scope.row)" </el-table-column>
>添加子菜单</el-button> --> <el-table-column align="left" fixed="right" label="操作" width="300">
<el-button <template #default="scope">
size="mini" <!-- <el-button
type="text" size="mini"
icon="el-icon-edit" type="text"
@click="editMenu(scope.row)" icon="el-icon-plus"
>编辑</el-button> @click="addSonMenu(scope.row)"
<el-button >添加子菜单</el-button> -->
size="mini" <el-button
type="text" size="mini"
icon="el-icon-delete" type="text"
@click="deleteMenu(scope.row)" icon="el-icon-edit"
>删除</el-button> @click="editMenu(scope.row)"
</template> >编辑</el-button>
</el-table-column> <el-button
</el-table> size="mini"
<div class="gva-pagination"> type="text"
<el-pagination icon="el-icon-delete"
@size-change="handleSizeChange" @click="deleteMenu(scope.row)"
@current-change="handleCurrentChange" >删除</el-button>
:page-sizes="[10, 30, 50, 100]" </template>
:page-size="searchInfo.pagesize" </el-table-column>
layout="total, sizes, prev, pager, next, jumper" </el-table>
:total="total"> <div class="gva-pagination">
</el-pagination> <el-pagination
</div> @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchInfo.pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</el-main>
</el-container>
</div> </div>
<!-- 新增弹框 --> <!-- 新增弹框 -->
<el-dialog :visible.sync="dialogFormVisible" :before-close="closeDialog" :close-on-click-modal="false" title="新增" width="20%"> <el-dialog :visible.sync="dialogFormVisible" :before-close="closeDialog" :close-on-click-modal="false" title="新增" width="20%">
@ -250,6 +261,11 @@ export default {
name: 'Dashboard', name: 'Dashboard',
data() { data() {
return { return {
defaultProps1: {
children: 'child',
label: 'name'
},
GovthreeList2:[],
// //
checkList:[], checkList:[],
// //
@ -340,9 +356,17 @@ export default {
this.getDataList() this.getDataList()
this.getJobTitleList() this.getJobTitleList()
this.getGovthree() this.getGovthree()
this.getGovthree2()
this.getBuMenthree() this.getBuMenthree()
}, },
methods: { methods: {
//
handleNodeClick(val){
this.searchInfo.organization=val.id
this.searchInfo.organization=this.searchInfo.organization.toString()
this.getDataList()
console.log(val)
},
// //
async settingFrom(){ async settingFrom(){
const from = { const from = {
@ -419,11 +443,18 @@ export default {
// //
async getGovthree(){ async getGovthree(){
const searchData = { const searchData = {
} }
const res = await govthree() const res = await govthree()
this.GovthreeList = res.data this.GovthreeList = res.data
}, },
//
async getGovthree2(){
const res = await govthree()
this.GovthreeList2 = res.data[0].child
console.log("this.GovthreeList2")
console.log(res.data[0].child)
},
// //
async getBuMenthree(){ async getBuMenthree(){
const searchData = { const searchData = {

Loading…
Cancel
Save