Browse Source

干部评价功能增加

master
李鹏飞 6 years ago
parent
commit
fb3028dd67
  1. BIN
      src/assets/img/like.png
  2. BIN
      src/assets/img/oppose.png
  3. 32
      src/views/modules/custom/evaluatecount.vue
  4. 166
      src/views/modules/custom/evaluatedept-add-or-update.vue
  5. 85
      src/views/modules/custom/evaluatedept.vue
  6. 126
      src/views/modules/custom/evaluatedeptcount.vue
  7. 29
      src/views/modules/custom/evaluatedeptroute.vue
  8. 151
      src/views/modules/custom/evaluateinfo.vue
  9. 156
      src/views/modules/custom/evaluateofficer-add-or-update.vue
  10. 160
      src/views/modules/custom/evaluateofficer-add.vue
  11. 182
      src/views/modules/custom/evaluateofficer.vue
  12. 127
      src/views/modules/custom/evaluateofficercount.vue
  13. 141
      src/views/modules/custom/evaluateoption-add-or-update.vue
  14. 135
      src/views/modules/custom/evaluateoption.vue
  15. 120
      src/views/modules/custom/evaluaterole-add-or-update.vue
  16. 69
      src/views/modules/custom/evaluaterole-switch.vue
  17. 74
      src/views/modules/custom/evaluaterole.vue

BIN
src/assets/img/like.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 B

BIN
src/assets/img/oppose.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

32
src/views/modules/custom/evaluatecount.vue

@ -0,0 +1,32 @@
<template>
<keep-alive include="evaluateDeptCountList">
<component :is="selectComponent"></component>
</keep-alive>
</template>
<script>
import EvaluateDeptCountList from './evaluatedeptcount'
import EvaluateOfficerCountList from './evaluateofficercount'
import EvaluateInfoList from './evaluateinfo'
export default {
data () {
return {
selectComponent: EvaluateDeptCountList
}
},
components: {
EvaluateDeptCountList,
EvaluateOfficerCountList,
EvaluateInfoList
},
methods: {
init () {
this.selectComponent = EvaluateDeptCountList
}
}
}
</script>
<style lang="scss" scoped>
</style>

166
src/views/modules/custom/evaluatedept-add-or-update.vue

@ -0,0 +1,166 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="部门ID" prop="deptId">
<el-input v-model="dataForm.deptId" placeholder="部门ID"></el-input>
</el-form-item>
<el-form-item label="部门名称" prop="deptName">
<el-input v-model="dataForm.deptName" placeholder="部门名称"></el-input>
</el-form-item>
<el-form-item label="父所有部门ID" prop="parentDeptIds">
<el-input v-model="dataForm.parentDeptIds" placeholder="父所有部门ID"></el-input>
</el-form-item>
<el-form-item label="父所有部门名称" prop="parentDeptNames">
<el-input v-model="dataForm.parentDeptNames" placeholder="父所有部门名称"></el-input>
</el-form-item>
<el-form-item label="所有部门ID" prop="allDeptIds">
<el-input v-model="dataForm.allDeptIds" placeholder="所有部门ID"></el-input>
</el-form-item>
<el-form-item label="所有部门名称" prop="allDeptNames">
<el-input v-model="dataForm.allDeptNames" placeholder="所有部门名称"></el-input>
</el-form-item>
<el-form-item label="干部人数" prop="officerCount">
<el-input v-model="dataForm.officerCount" placeholder="干部人数"></el-input>
</el-form-item>
<el-form-item label="删除标识 0:否,1:是" prop="delFlag">
<el-input v-model="dataForm.delFlag" placeholder="删除标识 0:否,1:是"></el-input>
</el-form-item>
<el-form-item label="乐观锁" prop="revision">
<el-input v-model="dataForm.revision" placeholder="乐观锁"></el-input>
</el-form-item>
<el-form-item label="创建人" prop="createdBy">
<el-input v-model="dataForm.createdBy" placeholder="创建人"></el-input>
</el-form-item>
<el-form-item label="创建时间" prop="createdTime">
<el-input v-model="dataForm.createdTime" placeholder="创建时间"></el-input>
</el-form-item>
<el-form-item label="更新人" prop="updatedBy">
<el-input v-model="dataForm.updatedBy" placeholder="更新人"></el-input>
</el-form-item>
<el-form-item label="更新时间" prop="updatedTime">
<el-input v-model="dataForm.updatedTime" placeholder="更新时间"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
deptId: '',
deptName: '',
parentDeptIds: '',
parentDeptNames: '',
allDeptIds: '',
allDeptNames: '',
officerCount: '',
delFlag: '',
revision: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: ''
}
}
},
computed: {
dataRule () {
return {
deptId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
deptName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
parentDeptIds: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
parentDeptNames: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
allDeptIds: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
allDeptNames: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
officerCount: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
delFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
revision: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/custom/evaluatedept/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/custom/evaluatedept/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

85
src/views/modules/custom/evaluatedept.vue

@ -0,0 +1,85 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__evaluatedept}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<!-- <el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
</el-form-item> -->
<el-form-item label="街道名称" prop="deptName">
<el-input v-model="dataForm.deptName" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('custom:evaluatedept:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('custom:evaluatedept:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="deptName" label="部门名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="parentDeptNames" label="父所有部门名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="allDeptNames" label="所有部门名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="officerCount" label="干部人数" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('custom:evaluatedept:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('custom:evaluatedept:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
<el-button type="text" size="small" @click="manageHandle(scope.row.deptId)">管理</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<evaluateofficer v-if="evaluateofficerVisible" ref="evaluateofficer" @refreshDataList="getDataList"></evaluateofficer>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './evaluatedept-add-or-update'
import Evaluateofficer from './evaluateofficer'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/evaluatedept/page',
getDataListIsPage: true,
deleteURL: '/custom/evaluatedept',
deleteIsBatch: true
},
dataForm: {
id: ''
},
evaluateofficerVisible: false
}
},
components: {
AddOrUpdate,
Evaluateofficer
},
created: function () {
this.getDataList()
},
methods: {
manageHandle (deptId) {
this.$parent.selectComponent = 'Evaluateofficer'
this.$router.push({ path: '/custom-evaluatedeptroute', query: { deptId: deptId } })
}
}
}
</script>

126
src/views/modules/custom/evaluatedeptcount.vue

@ -0,0 +1,126 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__evaluatedeptcount}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<div>
<el-form-item label="街道"><el-input v-model="dataForm.deptName" placeholder="请输入" clearable></el-input></el-form-item>
<el-form-item label="排序">
<el-select v-model="dataForm.sort" placeholder="排序" clearable>
<el-option label="点赞最多" :value="1"></el-option>
<el-option label="吐槽最多" :value="2"></el-option>
<el-option label="点赞最少" :value="3"></el-option>
<el-option label="吐槽最少" :value="4"></el-option>
</el-select></el-form-item>
</div>
<div class="block">
<el-form-item label="时间"
prop="startTime">
<el-date-picker v-model="dataForm.startTime"
type="date"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item label="至"
label-width="25px"
prop="endTime">
<el-date-picker v-model="dataForm.endTime"
type="date"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('epdc:evaluateDeptCount:export')" type="primary" @click="exportHandle()">{{ $t('export') }}</el-button>
</el-form-item>
</div>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column label="序号" header-align="center" align="center" width="50px">
<template slot-scope="scope">
{{scope.$index+1}}
</template>
</el-table-column>
<el-table-column prop="deptName" label="街道名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="officerCount" label="干部人数" header-align="center" align="center"></el-table-column>
<el-table-column prop="beEvaluatedCount" label="被评价干部人数" header-align="center" align="center"></el-table-column>
<el-table-column prop="evaluatePeopleCount" label="评价总人数" header-align="center" align="center"></el-table-column>
<el-table-column prop="evaluateCount" label="评价总次数" header-align="center" align="center"></el-table-column>
<el-table-column prop="likeCount" label="被点赞总次数" header-align="center" align="center"></el-table-column>
<el-table-column prop="opposeCount" label="被吐槽总次数" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('custom:evaluateCount:lookOfficer')" type="text" size="small" @click="officerAction(scope.row.deptId)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import EvaluateOfficerCountList from './evaluateofficercount'
export default {
mixins: [mixinViewModule],
name: 'EvaluateDeptCountList',
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/evaluatedept/countPage',
getDataListIsPage: true,
exportURL: '/custom/evaluatedept/countExport'
},
dataForm: {
deptName: '',
sort: '',
startTime: '',
endTime: ''
},
pickerBeginDateBefore: {
disabledDate: (time) => {
let beginDateVal = this.dataForm.startTime
if (beginDateVal) {
return time.getTime() > new Date(beginDateVal).getTime()
}
}
},
pickerBeginDateAfter: {
disabledDate: (time) => {
let EndDateVal = this.dataForm.endTime
if (EndDateVal) {
return time.getTime() < new Date(EndDateVal).getTime()
}
}
}
}
},
created: function () {
this.getDataList();
},
methods: {
officerAction (deptId) {
this.$parent.selectComponent = 'EvaluateOfficerCountList'
this.$router.push({ path: '/custom-evaluatecount', query: { deptId: deptId } })
}
}
}
</script>

29
src/views/modules/custom/evaluatedeptroute.vue

@ -0,0 +1,29 @@
<template>
<keep-alive include="evaluatedept">
<component :is="selectComponent"></component>
</keep-alive>
</template>
<script>
import Evaluatedept from './evaluatedept'
import Evaluateofficer from './evaluateofficer'
export default {
data () {
return {
selectComponent: Evaluatedept
}
},
components: {
Evaluatedept,
Evaluateofficer
},
methods: {
init () {
this.selectComponent = Evaluatedept
}
}
}
</script>
<style lang="scss" scoped>
</style>

151
src/views/modules/custom/evaluateinfo.vue

@ -0,0 +1,151 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__evaluateinfo}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-button type="primary" @click="backToOfficerList">返回</el-button>
</el-form-item>
<div>
<el-form-item label="姓名"><el-input v-model="dataForm.fullName" placeholder="请输入姓名" clearable></el-input></el-form-item>
<el-form-item label="电话"><el-input v-model="dataForm.mobile" placeholder="请输入电话" clearable></el-input></el-form-item>
</div>
<div class="block">
<el-form-item label="时间"
prop="startTime">
<el-date-picker v-model="dataForm.startTime"
type="date"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item label="至"
label-width="25px"
prop="endTime">
<el-date-picker v-model="dataForm.endTime"
type="date"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item label="评价状态">
<el-select v-model="dataForm.roleCode" placeholder="评价状态" clearable>
<el-option label="点赞" :value="1"></el-option>
<el-option label="吐槽" :value="2"></el-option>
</el-select></el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
</div>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column label="序号" header-align="center" align="center" width="50px">
<template slot-scope="scope">
{{scope.$index+1}}
</template>
</el-table-column>
<el-table-column prop="fullName" label="提交人姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="mobile" label="联系电话" header-align="center" align="center"></el-table-column>
<el-table-column prop="roleCode" label="评价类别" :formatter="formatState" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdTime" label="评价时间" header-align="center" align="center"></el-table-column>
<el-table-column
v-for="(option) in optionList"
:key="option.optionId"
:label="option.optionContent"
align="center"
show-overflow-tooltip>
<template slot-scope="scope">
<div v-for="(item) in scope.row.optionsList">
<div v-if="item.optionId == option.optionId">
<div v-if="item.selectFlag == 1 && option.roleCode == 1">
<img src="@/assets/img/like.png">
</div>
<div v-if="item.selectFlag == 1 && option.roleCode == 2">
<img src="@/assets/img/oppose.png">
</div>
<div v-if="item.selectFlag == 0"></div>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="content" label="评价内容" header-align="center" align="center"></el-table-column>
<!-- <el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button v-if="$hasPermission('custom:evaluateinfo:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>-->
<!-- <el-button v-if="$hasPermission('custom:evaluateinfo:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/evaluateinfo/page',
getDataListIsPage: true,
deleteURL: '/custom/evaluateinfo',
deleteIsBatch: true
},
dataForm: {
id: '',
deptId: '',
fullName: '',
mobile: '',
startTime: '',
endTime: '',
roleCode: ''
},
optionList: [],
}
},
created: function () {
this.getOptionsList()
},
mounted () {
this.dataForm.id = this.$route.query.id
this.dataForm.deptId = this.$route.query.deptId
this.getDataList()
},
methods: {
getOptionsList () {
this.$http.get(`/custom/evaluateoption/optionShowList`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.optionList = res.data.optionList
}).catch(() => {})
},
backToOfficerList () {
this.$emit('refreshDataList')
this.$parent.selectComponent = 'EvaluateOfficerCountList'
this.$router.push({ path: '/custom-evaluatecount', query: { deptId: this.dataForm.deptId } })
},
formatState: function (row) {
let state = row.roleCode
if (state === 1) {
return '点赞'
} else if (state === 2) {
return '吐槽'
}
}
}
}
</script>

156
src/views/modules/custom/evaluateofficer-add-or-update.vue

@ -0,0 +1,156 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item v-if=false label="街道名称" prop="deptId">
<el-input v-model="dataForm.deptId" placeholder="部门ID 部门表主键ID"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="fullName">
<el-input v-model="dataForm.fullName" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-select v-model="dataForm.sex" placeholder="性别">
<el-option v-for="item in sexFlagArr" :key="item.dictValue" :label="item.dictName" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="单位职务" prop="position">
<el-input v-model="dataForm.position" placeholder="单位职务"></el-input>
</el-form-item>
<!-- <el-form-item label="点赞次数" prop="likesCount">
<el-input v-model="dataForm.likesCount" placeholder="点赞次数"></el-input>
</el-form-item>
<el-form-item label="被踩次数" prop="opposeCount">
<el-input v-model="dataForm.opposeCount" placeholder="被踩次数"></el-input>
</el-form-item> -->
<el-form-item label="排序" prop="sort">
<!-- <el-input v-model="dataForm.sort" placeholder="排序"></el-input> -->
<el-input-number v-model="dataForm.sort" controls-position="right" :min="1" label="显示顺序" max=2000000000></el-input-number>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
deptId: '',
fullName: '',
sex: '',
position: '',
likesCount: '',
opposeCount: '',
sort: '',
revision: '',
delFlag: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: ''
},
sexFlagArr: [
{ dictValue: '1', dictName: '男' },
{ dictValue: '0', dictName: '女' }
]
}
},
computed: {
dataRule () {
return {
deptId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
fullName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
sex: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
position: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
likesCount: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
opposeCount: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
sort: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
revision: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
delFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/custom/evaluateofficer/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/custom/evaluateofficer/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

160
src/views/modules/custom/evaluateofficer-add.vue

@ -0,0 +1,160 @@
<template>
<el-dialog :visible.sync="visible" :title="$t('add')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item v-if=false label="街道ID" prop="deptId">
<el-input v-model="dataForm.deptId" placeholder="部门ID 部门表主键ID"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="fullName">
<el-input v-model="dataForm.fullName" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-select v-model="dataForm.sex" placeholder="性别">
<el-option v-for="item in sexFlagArr" :key="item.dictValue" :label="item.dictName" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="单位职务" prop="position">
<el-input v-model="dataForm.position" placeholder="单位职务"></el-input>
</el-form-item>
<!-- <el-form-item label="点赞次数" prop="likesCount">
<el-input v-model="dataForm.likesCount" placeholder="点赞次数"></el-input>
</el-form-item>
<el-form-item label="被踩次数" prop="opposeCount">
<el-input v-model="dataForm.opposeCount" placeholder="被踩次数"></el-input>
</el-form-item> -->
<el-form-item label="排序" prop="sort">
<!-- <el-input v-model="dataForm.sort" placeholder="排序"></el-input> -->
<el-input-number v-model="dataForm.sort" controls-position="right" :min="1" label="显示顺序" max=2000000000></el-input-number>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
deptId: '',
fullName: '',
sex: '',
position: '',
likesCount: '',
opposeCount: '',
sort: '',
revision: '',
delFlag: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: ''
},
sexFlagArr: [
{ dictValue: '1', dictName: '男' },
{ dictValue: '0', dictName: '女' }
]
}
},
// mounted () {
// // this.dataForm.id = this.$route.query.id
// this.dataForm.deptId = this.$route.query.deptId
// },
computed: {
dataRule () {
return {
deptId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
fullName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
sex: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
position: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
likesCount: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
opposeCount: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
sort: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
revision: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
delFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/custom/evaluateofficer/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/custom/evaluateofficer/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

182
src/views/modules/custom/evaluateofficer.vue

@ -0,0 +1,182 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__evaluateofficer}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<!-- <el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
</el-form-item> -->
<div>
<el-form-item>
<el-button type="primary" @click="backToDeptList">返回</el-button>
</el-form-item>
</div>
<el-form-item label="干部名称" prop="fullName">
<el-input v-model="dataForm.fullName" placeholder="干部名称" clearable></el-input>
</el-form-item>
<el-form-item label="时间"
prop="startTime">
<el-date-picker v-model="dataForm.startTime"
type="date"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item label="至"
label-width="25px"
prop="endTime">
<el-date-picker v-model="dataForm.endTime"
type="date"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="evaluateofficerAddHandle(dataForm.deptId)">{{ $t('add') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('epdc:topic:export')" type="primary" @click="exportHandle()">{{ $t('export') }}</el-button>
</el-form-item>
<el-form-item>
<el-upload class="upload-demo"
ref="upload"
v-loading="dataListLoading"
:action="uploadUrl"
:on-preview="handlePreview"
multiple
:limit="1"
:before-upload='beforeUpload'
:on-success='uploadSuccess'
:on-error='errorExceed'>
<el-button type="primary">导入</el-button>
</el-upload>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('custom:evaluateofficer:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="fullName" label="干部姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="sex" label="性别" header-align="center" align="center" :formatter="showFlagFormat"></el-table-column>
<el-table-column prop="position" label="单位职务" header-align="center" align="center"></el-table-column>
<el-table-column prop="likesCount" label="点赞次数" header-align="center" align="center"></el-table-column>
<el-table-column prop="opposeCount" label="被踩次数" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="sort" label="排序" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<evaluateofficer-add v-if="evaluateofficerAddVisible" ref="evaluateofficerAdd" @refreshDataList="getDataList"></evaluateofficer-add>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './evaluateofficer-add-or-update'
import evaluateofficerAdd from './evaluateofficer-add'
import Cookies from 'js-cookie'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/evaluateofficer/page',
getDataListIsPage: true,
deleteURL: '/custom/evaluateofficer',
deleteIsBatch: true,
exportURL: '/custom/evaluateofficer/export'
},
dataForm: {
id: '',
deptId: ''
},
evaluateofficerAddVisible: false,
upLoadUrl: ''
}
},
mounted () {
// this.dataForm.id = this.$route.query.id
this.dataForm.deptId = this.$route.query.deptId
this.getDataList()
},
components: {
AddOrUpdate,
evaluateofficerAdd
},
created: function () {
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/custom/evaluateofficer/importExcel/${this.$route.query.deptId}?token=${Cookies.get('token')}`
},
methods: {
showFlagFormat (row, column) {
if (row.sex === '0') {
return '女'
} else {
return '男'
}
},
backToDeptList () {
this.$emit('refreshDataList')
this.$parent.selectComponent = 'Evaluatedept'
this.$router.push({ path: '/custom-evaluatedeptroute'})
},
evaluateofficerAddHandle (deptId) {
this.evaluateofficerAddVisible = true
this.$nextTick(() => {
this.$refs.evaluateofficerAdd.dataForm.deptId = deptId
this.$refs.evaluateofficerAdd.init()
})
},
beforeUpload (file) {
if(confirm('上传会覆盖之前数据,是否继续?')==true){
return true
}else{
return false
}
},
errorExceed (file, fileList) {
this.$message.error('上传失败请重试')
},
uploadSuccess (response, file, fileList) {
this.getDataList()//
this.dataListLoading = false
this.$refs.upload.clearFiles()
if (response.data !== null && response.data.length > 0) {
this.faultDataVisible = true
this.errordataList = response.data
return
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.getDataList()
}
})
}
}
}
</script>

127
src/views/modules/custom/evaluateofficercount.vue

@ -0,0 +1,127 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__evaluateofficercount}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-button type="primary" @click="backToDeptList">返回</el-button>
</el-form-item>
<div>
<el-form-item label="干部"><el-input v-model="dataForm.fullName" placeholder="请输入姓名" clearable></el-input></el-form-item>
<el-form-item label="排序">
<el-select v-model="dataForm.sort" placeholder="排序" clearable>
<el-option label="点赞最多" :value="1"></el-option>
<el-option label="吐槽最多" :value="2"></el-option>
<el-option label="点赞最少" :value="3"></el-option>
<el-option label="吐槽最少" :value="4"></el-option>
</el-select></el-form-item>
</div>
<div class="block">
<el-form-item label="时间"
prop="startTime">
<el-date-picker v-model="dataForm.startTime"
type="date"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item label="至"
label-width="25px"
prop="endTime">
<el-date-picker v-model="dataForm.endTime"
type="date"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('epdc:evaluateDeptCount:export')" type="primary" @click="exportHandle()">{{ $t('export') }}</el-button>
</el-form-item>
</div>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column label="序号" header-align="center" align="center" width="50px">
<template slot-scope="scope">
{{scope.$index+1}}
</template>
</el-table-column>
<el-table-column prop="fullName" label="姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="sex" label="性别" :formatter="formatSex" header-align="center" align="center"></el-table-column>
<el-table-column prop="position" label="单位职位" header-align="center" align="center"></el-table-column>
<el-table-column prop="evaluatePeopleCount" label="评价总人数" header-align="center" align="center"></el-table-column>
<el-table-column prop="evaluateCount" label="评价总次数" header-align="center" align="center"></el-table-column>
<el-table-column prop="likesCount" label="点赞次数" header-align="center" align="center"></el-table-column>
<el-table-column prop="likesOptionCount" label="点赞选项次数" header-align="center" align="center"></el-table-column>
<el-table-column prop="opposeCount" label="吐槽次数" header-align="center" align="center"></el-table-column>
<el-table-column prop="opposeOptionCount" label="吐槽选项次数" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('custom:evaluateCount:lookOfficer')" type="text" size="small" @click="detailAction(scope.row.id)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
name: 'EvaluateOfficerCountList',
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/evaluateofficer/countPage',
getDataListIsPage: true,
exportURL: '/custom/evaluateofficer/countExport'
},
dataForm: {
deptId: '',
fullName:'',
sort: '',
startTime: '',
endTime: ''
}
}
},
mounted () {
this.dataForm.deptId = this.$route.query.deptId
this.getDataList()
},
methods: {
backToDeptList () {
this.$emit('refreshDataList')
this.$parent.selectComponent = 'EvaluateDeptCountList'
this.$router.push({ path: '/custom-evaluatecount'})
},
detailAction (id) {
this.$parent.selectComponent = 'EvaluateInfoList'
this.$router.push({ path: '/custom-evaluatecount', query: { id: id,deptId:this.dataForm.deptId } })
},
formatSex: function (row, column) {
let state = row.sex
if (state === '0') {
return '女'
} else if (state === '1') {
return '男'
}
}
}
}
</script>

141
src/views/modules/custom/evaluateoption-add-or-update.vue

@ -0,0 +1,141 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="类别" prop="roleCode">
<el-select v-model="dataForm.roleCode" placeholder="类别" clearable=true>
<el-option v-for="item in roleFlagArr" :key="item.dictValue" :label="item.dictName" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="是否启用" prop="available">
<el-switch v-model="dataForm.available" active-color="#13ce66" inactive-color="#ff4949" active-value="1" inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="显示顺序" prop="sort">
<el-input-number v-model="dataForm.sort" controls-position="right" :min="1" label="显示顺序" max=2000000000></el-input-number>
</el-form-item>
<el-form-item label="评价选项" prop="optionContent">
<el-input type="textarea" :rows="2" placeholder="评价选项" v-model="dataForm.optionContent"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
roleCode: '',
optionContent: '',
sort: '',
available: '1',
revision: '',
delFlag: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: ''
},
roleFlagArr: []
}
},
computed: {
dataRule () {
return {
roleCode: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
optionContent: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
sort: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
available: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
revision: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
delFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.getRoleListInfo()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getRoleListInfo () {
this.$http.get(`/custom/evaluateoption/listSimple`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.roleFlagArr = res.data
}).catch(() => {})
},
//
getInfo () {
this.$http.get(`/custom/evaluateoption/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/custom/evaluateoption/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

135
src/views/modules/custom/evaluateoption.vue

@ -0,0 +1,135 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__evaluateoption}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<!-- <el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
</el-form-item> -->
<el-form-item label="评价选项" prop="optionContent">
<el-input v-model="dataForm.optionContent" placeholder="评价选项" clearable></el-input>
</el-form-item>
<el-form-item label="类别" prop="roleCode">
<el-select v-model="dataForm.roleCode" placeholder="类别" clearable=true>
<el-option v-for="item in roleFlagArr" :key="item.dictValue" :label="item.dictName" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('custom:evaluateoption:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<!-- <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> -->
<el-table-column label="序号" header-align="center" align="center" width="50px">
<template slot-scope="scope">
{{scope.$index+1}}
</template>
</el-table-column>
<el-table-column prop="optionContent" label="评价选项" header-align="center" align="center"></el-table-column>
<el-table-column prop="roleCode" label="类别" header-align="center" align="center" :formatter="showFlagFormat"></el-table-column>
<el-table-column prop="sort" label="排序" header-align="center" align="center"></el-table-column>
<el-table-column prop="available" label="操作" header-align="center" align="center">
<template slot-scope="scope">
<el-switch v-model="scope.row.available" active-color="#13ce66" inactive-color="#ff4949" active-value="1" inactive-value="0" @change="availableHandle(scope.row.id,scope.row.available)"></el-switch>
&nbsp;
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
</template>
</el-table-column>
<el-table-column v-if=false :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('custom:evaluateoption:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('custom:evaluateoption:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './evaluateoption-add-or-update'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/evaluateoption/page',
getDataListIsPage: true,
deleteURL: '/custom/evaluateoption',
deleteIsBatch: true
},
dataForm: {
id: ''
},
roleFlagArr: []
}
},
components: {
AddOrUpdate
},
created () {
this.getRoleListInfo()
},
methods: {
//
getRoleListInfo () {
this.$http.get(`/custom/evaluateoption/listSimple`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.roleFlagArr = res.data
}).catch(() => {})
},
showFlagFormat (row, column) {
if (row.roleCode === 1) {
return '点赞'
} else {
return '吐槽'
}
},
availableHandle (id, availableValue) {
let postData = {
id: id,
available: availableValue
}
this.$http['post'](
'/custom/evaluateoption/updateOptionInfo',
postData
)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
})
.catch(() => {})
}
}
}
</script>

120
src/views/modules/custom/evaluaterole-add-or-update.vue

@ -0,0 +1,120 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="权限编码(1.点赞,2.吐槽)" prop="roleCode">
<el-input v-model="dataForm.roleCode" placeholder="权限编码(1.点赞,2.吐槽)"></el-input>
</el-form-item>
<el-form-item label="权限描述" prop="ruleDesc">
<el-input v-model="dataForm.ruleDesc" placeholder="权限描述"></el-input>
</el-form-item>
<el-form-item label="可用标记(0-不可用,1-可用)" prop="available">
<el-input v-model="dataForm.available" placeholder="可用标记(0-不可用,1-可用)"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
roleCode: '',
ruleDesc: '',
available: '',
delFlag: '',
revision: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: ''
}
}
},
computed: {
dataRule () {
return {
roleCode: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
ruleDesc: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
available: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
delFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
revision: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/custom/evaluaterole/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/custom/evaluaterole/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

69
src/views/modules/custom/evaluaterole-switch.vue

@ -0,0 +1,69 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__evaluaterole}">
<el-form :inline="true" :model="dataForm" ref="dataForm">
<!-- <el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
</el-form-item> -->
<el-form-item label="是否开启“干部评价”功能" prop="available">
<el-switch v-model="dataForm.available" active-color="#13ce66" inactive-color="#ff4949" active-value="1" inactive-value="0" @change="availableHandle()"></el-switch>
</el-form-item>
</el-form>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
data () {
return {
dataForm: {
id: ''
}
}
},
created () {
this.getInfo()
},
methods: {
//
getInfo () {
this.$http.get(`/custom/evaluaterole/getAvailable`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
availableHandle () {
let postData = {
available: this.dataForm.available
}
this.$http['post'](
'/custom/evaluaterole/updateRoleInfo',
postData
)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
})
.catch(() => {})
}
}
}
</script>

74
src/views/modules/custom/evaluaterole.vue

@ -0,0 +1,74 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__evaluaterole}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('custom:evaluaterole:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="id" label="主键" header-align="center" align="center"></el-table-column>
<el-table-column prop="roleCode" label="权限编码(1.点赞,2.吐槽)" header-align="center" align="center"></el-table-column>
<el-table-column prop="ruleDesc" label="权限描述" header-align="center" align="center"></el-table-column>
<el-table-column prop="available" label="可用标记(0-不可用,1-可用)" header-align="center" align="center"></el-table-column>
<el-table-column prop="delFlag" label="删除标识 0:否,1:是" header-align="center" align="center"></el-table-column>
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdBy" label="创建人" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedBy" label="更新人" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('custom:evaluaterole:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('custom:evaluaterole:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './evaluaterole-add-or-update'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/evaluaterole/page',
getDataListIsPage: true,
deleteURL: '/custom/evaluaterole',
deleteIsBatch: true
},
dataForm: {
id: ''
}
}
},
components: {
AddOrUpdate
}
}
</script>
Loading…
Cancel
Save