Browse Source

Merge remote-tracking branch 'origin/feature/appletsModify'

# Conflicts:
#	src/views/modules/epidemic/persontesting-add-or-update.vue
origin/sync_user
liuchuang 4 years ago
parent
commit
70dbd4888c
  1. 206
      src/views/modules/api/imgconfig-add-or-update.vue
  2. 133
      src/views/modules/api/imgconfig.vue
  3. 68
      src/views/modules/custom/suggestionfeedback-add-or-update.vue
  4. 229
      src/views/modules/custom/suggestionmake-add-or-update.vue
  5. 115
      src/views/modules/custom/suggestionmake-detail.vue
  6. 188
      src/views/modules/custom/suggestionmake.vue
  7. 163
      src/views/modules/custom/suggestiontype-add-or-update.vue
  8. 58
      src/views/modules/custom/suggestiontype.vue
  9. 45
      src/views/modules/epidemic/persontesting-add-or-update.vue
  10. 6
      src/views/modules/epidemic/persontesting-look.vue
  11. 2
      src/views/modules/epidemic/persontesting.vue
  12. 21
      src/views/modules/epidemic/reader.vue
  13. 143
      src/views/modules/epidemic/testingpoint-add-or-update.vue
  14. 70
      src/views/modules/epidemic/testingpoint-detail.vue
  15. 82
      src/views/modules/epidemic/testingpoint.vue
  16. 153
      src/views/modules/heart/org-user.vue
  17. 138
      src/views/modules/heart/vactorgtype-add-or-update.vue
  18. 77
      src/views/modules/heart/vactorgtype.vue
  19. 185
      src/views/modules/heart/volunteerorg-add-or-update.vue
  20. 194
      src/views/modules/heart/volunteerorg-look.vue
  21. 66
      src/views/modules/heart/volunteerorg.vue
  22. 58
      src/views/modules/news/moduletype-add-or-update.vue
  23. 297
      src/views/modules/sys/gridmember-add-or-update.vue
  24. 125
      src/views/modules/sys/gridmember.vue
  25. 45
      src/views/modules/sys/user-add-or-update.vue
  26. 10
      src/views/modules/user/userinfo.vue

206
src/views/modules/api/imgconfig-add-or-update.vue

@ -0,0 +1,206 @@
<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="imgType">
<el-select v-model="dataForm.imgType" placeholder="请选择类型">
<el-option
v-for="item in optionImgType"
:key="item.dictValue"
:label="item.dictName"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="图片编码" prop="imgCode">
<el-input v-model="dataForm.imgCode" placeholder="请输入图片编码"></el-input>
</el-form-item>
<el-row>
<el-form-item label="图片" prop="imgUrl"
v-loading="loading">
<el-upload class="avatar-uploader"
:action="uploadUrl"
:show-file-list="false"
:on-success="handleAvatarActSuccess"
:on-error="handelError"
:before-upload="beforeAvatarUpload">
<img v-if="dataForm.imgUrl"
:src="dataForm.imgUrl"
class="avatar">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
<div slot="tip"
class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>
</el-upload>
</el-form-item>
</el-row>
<el-form-item label="排序" prop="sort">
<el-input-number v-model="dataForm.sort" :min="0"></el-input-number>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input type="textarea" autosize v-model="dataForm.remark" maxlength="200" placeholder="请输入备注"></el-input>
</el-form-item>
<el-form-item label="是否启用" prop="enableFlag">
<el-select v-model="dataForm.enableFlag" placeholder="是否启用" clearable>
<el-option v-for="item in enableFlagArr"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</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'
import Cookies from 'js-cookie'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
imgType: '',
imgUrl: '',
imgCode: '',
sort: '',
revision: '',
delFlag: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: '',
remark: ''
},
optionImgType: [],
//
loading: false,
uploadUrl: '',
enableFlagArr: [
{
label: '是',
value: '1'
},
{
label: '否',
value: '0'
}
]
}
},
computed: {
dataRule () {
return {
imgType: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
imgCode: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
imgUrl: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
created () {
this.getListImgTypeByHeartImgType()
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/upload?token=${Cookies.get('token')}`
this.dataForm.imgUrl = ''
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getListImgTypeByHeartImgType () {
this.$http.get(`/api/imgconfig/heartImgType/heart_img_type`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.optionImgType = res.data
}).catch(() => {})
},
//
getInfo () {
this.$http.get(`/api/imgconfig/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
handleAvatarActSuccess (res, file) {
this.loading = false
this.dataForm.imgUrl = res.data.url
},
beforeAvatarUpload (file) {
this.loading = true
},
handelError () {
this.loading = false
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/api/imgconfig/', 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>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>

133
src/views/modules/api/imgconfig.vue

@ -0,0 +1,133 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-api__imgconfig}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="类型" prop="imgType">
<el-select v-model="dataForm.imgType" placeholder="请选择类型" clearable>
<el-option
v-for="item in optionImgType"
: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 v-if="$hasPermission('api:imgconfig:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('api:imgconfig: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="序号" type="index" show-overflow-tooltip align="center" width="50"></el-table-column>
<el-table-column prop="imgType" label="类型" :formatter="imgTypeFormat" header-align="center" align="center"></el-table-column>
<el-table-column prop="imgCode" label="图片编码" header-align="center" align="center"></el-table-column>
<el-table-column align="center" label="图片" :show-overflow-tooltip="true" prop="imgUrl">
<template slot-scope="scope">
<el-popover placement="right"
title=""
trigger="click"
class="big_image">
<el-image slot="reference"
min-width="70"
height="70"
:src="scope.row.imgUrl"
:alt="scope.row.imgUrl"></el-image>
<img class="big_image"
:src="scope.row.imgUrl" />
</el-popover>
</template>
</el-table-column>
<el-table-column prop="sort" 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="remark" label="备注" header-align="center" align="center"></el-table-column>
<el-table-column prop="enableFlag" label="是否启用" header-align="center" align="center" :formatter="enableFlagFormat"></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('api:imgconfig:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('api:imgconfig: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 './imgconfig-add-or-update'
import 'element-ui/lib/theme-chalk/image.css'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/api/imgconfig/page',
getDataListIsPage: true,
deleteURL: '/api/imgconfig',
deleteIsBatch: true
},
dataForm: {
id: ''
},
optionImgType: []
}
},
components: {
AddOrUpdate
},
created () {
this.getListImgTypeByHeartImgType()
},
methods: {
//
getListImgTypeByHeartImgType () {
this.$http.get(`/api/imgconfig/heartImgType/heart_img_type`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.optionImgType = res.data
}).catch(() => {})
},
imgTypeFormat (row, column) {
for (var property in this.optionImgType) {
if (row.imgType === this.optionImgType[property].dictValue) {
return this.optionImgType[property].dictName
}
}
},
enableFlagFormat (row) {
let enableFlag = row.enableFlag
if (enableFlag === '1') {
return '是'
} else if (enableFlag === '0') {
return '否'
} else {
return '未知'
}
}
}
}
</script>
<style scoped>
.big_image {
width: 300px;
height: 240px;
}
</style>

68
src/views/modules/custom/suggestionfeedback-add-or-update.vue

@ -0,0 +1,68 @@
<template>
<el-dialog :visible.sync="visible" title="回复" :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="feedbackContent">
<el-input type="textarea" autosize v-model="dataForm.feedbackContent" placeholder="请输入回复内容" maxlength="500" show-word-limit></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: '',
feedbackContent: '',
suggestionId: ''
}
}
},
computed: {
dataRule () {
return {
feedbackContent: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
})
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/custom/suggestionfeedback/', 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>

229
src/views/modules/custom/suggestionmake-add-or-update.vue

@ -0,0 +1,229 @@
<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="建议类别 关联:epdc_suggestion_type" prop="suggestionTypeId">
<el-input v-model="dataForm.suggestionTypeId" placeholder="建议类别 关联:epdc_suggestion_type"></el-input>
</el-form-item>
<el-form-item label="建议标题" prop="suggestionTitle">
<el-input v-model="dataForm.suggestionTitle" placeholder="建议标题"></el-input>
</el-form-item>
<el-form-item label="建议内容" prop="suggestionContent">
<el-input v-model="dataForm.suggestionContent" placeholder="建议内容"></el-input>
</el-form-item>
<el-form-item label="建议图片 关联:epdc_custom_img 表;最多三张,逗号分隔" prop="suggestionPic">
<el-input v-model="dataForm.suggestionPic" placeholder="建议图片 关联:epdc_custom_img 表;最多三张,逗号分隔"></el-input>
</el-form-item>
<el-form-item label="提意见的用户ID" prop="userId">
<el-input v-model="dataForm.userId" placeholder="提意见的用户ID"></el-input>
</el-form-item>
<el-form-item label="用户昵称" prop="nickname">
<el-input v-model="dataForm.nickname" placeholder="用户昵称"></el-input>
</el-form-item>
<el-form-item label="用户头像" prop="faceImg">
<el-input v-model="dataForm.faceImg" placeholder="用户头像"></el-input>
</el-form-item>
<el-form-item label="手机号" prop="mobile">
<el-input v-model="dataForm.mobile" placeholder="手机号"></el-input>
</el-form-item>
<el-form-item label="是否是党员(0-否,1-是)" prop="partyFlag">
<el-input v-model="dataForm.partyFlag" placeholder="是否是党员(0-否,1-是)"></el-input>
</el-form-item>
<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="是否反馈 0-否,1-是" prop="isFeedback">
<el-input v-model="dataForm.isFeedback" placeholder="是否反馈 0-否,1-是"></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: '',
suggestionTypeId: '',
suggestionTitle: '',
suggestionContent: '',
suggestionPic: '',
userId: '',
nickname: '',
faceImg: '',
mobile: '',
partyFlag: '',
deptId: '',
deptName: '',
parentDeptIds: '',
parentDeptNames: '',
allDeptIds: '',
allDeptNames: '',
isFeedback: '',
delFlag: '',
revision: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: ''
}
}
},
computed: {
dataRule () {
return {
suggestionTypeId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
suggestionTitle: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
suggestionContent: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
suggestionPic: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
userId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
nickname: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
faceImg: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
mobile: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
partyFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
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' }
],
isFeedback: [
{ 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/suggestionmake/${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/suggestionmake/', 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>

115
src/views/modules/custom/suggestionmake-detail.vue

@ -0,0 +1,115 @@
<template>
<el-dialog :visible.sync="visible" title="详情" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" ref="dataForm" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="建议标题 :">
<span>{{dataForm.suggestionTitle}}</span>
</el-form-item>
<el-form-item label="提交人 :">
<span>{{dataForm.nickname}}</span>
</el-form-item>
<el-form-item label="所在网格 :">
<span>{{dataForm.deptName}}</span>
</el-form-item>
<el-form-item label="提交时间 :">
<span>{{dataForm.createdTimeStr}}</span>
</el-form-item>
<el-form-item label="建议内容 :">
<span>{{dataForm.suggestionContent}}</span>
</el-form-item>
<el-form-item label="图片 :">
<el-image v-for="url in dataForm.suggestionPicList"
style="width: 100px; height: 100px; margin-right: 10px"
:key="url"
:src="url"
:preview-src-list="previewImgList"
@click="clickImg(url)">
</el-image>
</el-form-item>
</el-form>
<el-table :data="dataList" border style="width: 100%;">
<el-table-column prop="createdTime" label="回复时间" header-align="center" align="center" width="160px"></el-table-column>
<el-table-column prop="deptName" label="回复部门" header-align="center" align="center"></el-table-column>
<el-table-column prop="feedbackContent" label="回复内容" header-align="center" align="center"></el-table-column>
</el-table>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import debounce from 'lodash/debounce'
import 'element-ui/lib/theme-chalk/image.css'
export default {
mixins: [mixinViewModule],
data () {
return {
visible: false,
dataForm: {
id: '',
suggestionPics: '',
suggestionPicList: []
},
dataList: [],
previewImgList: [],
dialogVisible: true
}
},
computed: {
dataRule () {
return {}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getFeedbackInfo()
this.getInfo()
}
})
},
clickImg (url) {
this.previewImgList = []
this.previewImgList.push(url)
},
//
getInfo: debounce (
function () {
this.$http
.get(`/custom/suggestionmake/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
})
.catch(() => {})
},
1000,
{ leading: true, trailing: false }
),
//
getFeedbackInfo () {
this.$http
.get(`/custom/suggestionfeedback/feedbackInfo/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataList = res.data
})
.catch(() => { })
}
}
}
</script>

188
src/views/modules/custom/suggestionmake.vue

@ -0,0 +1,188 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__suggestionmake}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="所属组织">
<el-cascader v-model="ids"
:options="options"
:props="{ checkStrictly: true }"
clearable></el-cascader>
</el-form-item>
<el-form-item label="建议类别">
<el-cascader v-model="typeIds"
:options="optionSuggestionType"
:props="{ checkStrictly: true }"
clearable></el-cascader>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="dataForm.isFeedback" style="width: 100%;" clearable>
<el-option
v-for="item in optionIsFeedback"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="建议标题">
<el-input v-model="dataForm.suggestionTitle"
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:suggestionmake:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column prop="suggestionTypeName" label="建议类别" header-align="center" align="center"></el-table-column>
<el-table-column prop="suggestionTitle" label="建议标题" header-align="center" align="center"></el-table-column>
<el-table-column prop="deptName" label="网格" header-align="center" align="center"></el-table-column>
<el-table-column prop="nickname" label="建议人" header-align="center" align="center"></el-table-column>
<el-table-column prop="isFeedback" label="状态" :formatter="formatFeedback" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdTimeStr" 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="detailHandle(scope.row.id)">查看</el-button>
<el-button v-if="$hasPermission('custom:suggestionmake:feedback')" :disabled="scope.row.isFeedback==='1'"
type="text" size="small" @click="feedbackHandle(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>
<!-- 弹窗, 反馈 -->
<suggestionfeedback-add-or-update v-if="feedbackVisible"
ref="suggestionfeedbackAddOrUpdate"
@refreshDataList="getDataList"></suggestionfeedback-add-or-update>
<suggestionmake-detail v-if="detailVisible"
ref="suggestionmakeDetail"
@refreshDataList="getDataList"></suggestionmake-detail>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './suggestionmake-add-or-update'
import suggestionfeedbackAddOrUpdate from './suggestionfeedback-add-or-update'
import suggestionmakeDetail from './suggestionmake-detail'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/suggestionmake/page',
getDataListIsPage: true,
deleteURL: '/custom/suggestionmake',
deleteIsBatch: true
},
dataForm: {
id: '',
allDeptIds: '',
suggestionTypeId: ''
},
options: [],
optionSuggestionType: [],
ids: [],
typeIds: [],
optionIsFeedback: [{
value: '0',
label: '未回复'
},{
value: '1',
label: '已回复'
}],
feedbackVisible: false,
detailVisible: false
}
},
watch: {
'ids': function (val) {
if (val.length === 0) {
this.dataForm.allDeptIds = ''
}
if (val.length === 1) {
this.dataForm.allDeptIds = this.ids[0]
}
if (val.length === 2) {
this.dataForm.allDeptIds = this.ids[0] + ',' + this.ids[1]
}
if (val.length === 3) {
this.dataForm.allDeptIds = this.ids[0] + ',' + this.ids[1] + ',' + this.ids[2]
}
},
'typeIds': function (val) {
if (val.length === 0) {
this.dataForm.suggestionTypeId = ''
}
if (val.length === 1) {
this.dataForm.suggestionTypeId = this.typeIds[0]
}
if (val.length === 2) {
this.dataForm.suggestionTypeId = this.typeIds[1]
}
if (val.length === 3) {
this.dataForm.suggestionTypeId = this.typeIds[2]
}
}
},
created () {
this.$http
.get(`/sys/user/deptOptions/getByLoginUser`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.options = res.data.options
})
.catch(() => { })
this.getListSuggestionType()
},
methods: {
formatFeedback (row, column) {
if (row.isFeedback === '0') {
return '未回复'
} else if (row.isFeedback === '1') {
return '已回复'
}
},
getListSuggestionType () {
this.$http.get(`/custom/suggestiontype/getSuggestionTypeOptions`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.optionSuggestionType = res.data.options
}).catch(() => {})
},
feedbackHandle (id) {
this.feedbackVisible = true
this.$nextTick(() => {
this.$refs.suggestionfeedbackAddOrUpdate.dataForm.suggestionId = id
this.$refs.suggestionfeedbackAddOrUpdate.init()
})
},
detailHandle (id) {
this.detailVisible = true
this.$nextTick(() => {
this.$refs.suggestionmakeDetail.dataForm.id = id
this.$refs.suggestionmakeDetail.init()
})
}
},
components: {
AddOrUpdate,
suggestionfeedbackAddOrUpdate,
suggestionmakeDetail
}
}
</script>

163
src/views/modules/custom/suggestiontype-add-or-update.vue

@ -0,0 +1,163 @@
<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="suggestionName">
<el-input v-model="dataForm.suggestionName" placeholder="建议类别名称" maxlength="50" show-word-limit></el-input>
</el-form-item>
<el-form-item prop="pid" label="上级分类" class="category-list">
<el-popover v-model="categoryListVisible" ref="categoryListPopover" placement="bottom-start" trigger="click">
<el-tree :data="categoryList"
:props="{ label: 'suggestionName', children: 'children' }"
node-key="id"
ref="categoryListTree"
:highlight-current="true"
:expand-on-click-node="false"
accordion
@current-change="categoryListTreeCurrentChangeHandle">
</el-tree>
</el-popover>
<el-input v-model="dataForm.parentName" v-popover:categoryListPopover :readonly="true" placeholder="上级分类">
<i v-if="dataForm.pid !== '0'" slot="suffix" @click.stop="categoryListTreeSetDefaultHandle()" class="el-icon-circle-close el-input__icon"></i>
</el-input>
</el-form-item>
<el-form-item label="排序">
<el-input-number v-model="dataForm.sort" :min="0" :max="999999"></el-input-number>
</el-form-item>
<el-form-item label="启用标识" prop="enableFlag">
<el-select v-model="dataForm.enableFlag" style="width: 100%;">
<el-option
v-for="item in optionEnableFlag"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</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: '',
suggestionName: '',
parentName: '',
pid: '',
pids: '',
sort: '',
enableFlag: '1'
},
optionEnableFlag: [
{
value: '0',
label: '否'
},
{
value: '1',
label: '是'
}
],
categoryList: [],
categoryListVisible: false
}
},
computed: {
dataRule () {
return {
suggestionName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
pid: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
enableFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.getcategoryList().then(() => {
this.categoryListTreeSetDefaultHandle()
if (this.dataForm.id) {
this.getInfo()
} else {
this.dataForm.pid = '0'
this.dataForm.sort = 0
}
})
})
},
getcategoryList () {
return this.$http.get('/custom/suggestiontype/list').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.categoryList = res.data
}).catch(() => { })
},
//
getInfo () {
this.$http.get(`/custom/suggestiontype/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
if (this.dataForm.pid === '0') {
return this.categoryListTreeSetDefaultHandle()
}
this.$refs.categoryListTree.setCurrentKey(this.dataForm.pid)
}).catch(() => {})
},
categoryListTreeSetDefaultHandle () {
this.dataForm.pid = '0'
this.dataForm.pids = '0'
this.dataForm.parentName = '一级分类'
},
categoryListTreeCurrentChangeHandle (data) {
this.dataForm.pid = data.id
this.dataForm.parentName = data.suggestionName
this.categoryListVisible = false
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/custom/suggestiontype/', 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>

58
src/views/modules/custom/suggestiontype.vue

@ -0,0 +1,58 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__suggestiontype}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-button v-if="$hasPermission('custom:suggestiontype:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border style="width: 100%;">
<table-tree-column prop="suggestionName" label="类别名称" header-align="center"></table-tree-column>
<el-table-column prop="parentName" label="父名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="sort" label="排序" header-align="center" align="center" width="100"></el-table-column>
<el-table-column prop="enableFlag" label="是否启用" header-align="center" align="center" width="100" :formatter="enableFormat"></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:suggestiontype:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('custom:suggestiontype:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<!-- 弹窗, 新增 / 修改 -->
<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 TableTreeColumn from '@/components/table-tree-column'
import AddOrUpdate from './suggestiontype-add-or-update'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/suggestiontype/list',
deleteURL: '/custom/suggestiontype'
},
dataForm: {
id: ''
}
}
},
methods: {
enableFormat (row, column) {
if (row.enableFlag === '0') {
return '否'
} else if(row.enableFlag === '1'){
return '是'
}
}
},
components: {
TableTreeColumn,
AddOrUpdate
}
}
</script>

45
src/views/modules/epidemic/persontesting-add-or-update.vue

@ -72,27 +72,15 @@
<el-form-item label="住址" prop="address" label-width="120px">
<el-input v-model="dataForm.address" placeholder="住址"></el-input>
</el-form-item>
<!-- <el-form-item label="核酸接测结果" prop="testingResult">-->
<!-- <el-input v-model="dataForm.testingResult" placeholder="核酸接测结果"></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-item label="逻辑删除标识" prop="delFlag">-->
<!-- <el-input v-model="dataForm.delFlag" placeholder="逻辑删除标识"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="核酸检测点" label-width="120px">
<el-select v-model="dataForm.testingPointId" placeholder="请选择..." clearable style="width: 100%;">
<el-option v-for="item in optionTestingPoint"
:key="item.tagValue"
:label="item.tagName"
:value="item.tagValue">
</el-option>
</el-select>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
@ -128,10 +116,12 @@
updatedBy: '',
updatedTime: '',
delFlag: '',
mobile:''
mobile:'',
testingPointId:''
},
uploadUrl: '',
loading: false,
optionTestingPoint: []
}
},
computed: {
@ -205,6 +195,8 @@
methods: {
init() {
this.visible = true
this.dataForm.testingPointId = ''
this.getListSimpleByDictType()
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
// this.$set(this.dataForm,'testingTime', new Date())
@ -250,6 +242,14 @@
}
}
},
getListSimpleByDictType () {
this.$http.get(`/custom/testingpoint/testingPointSelection`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.optionTestingPoint = res.data
}).catch(() => {})
},
//
getInfo() {
this.$http.get(`/custom/persontesting/${this.dataForm.id}`).then(({data: res}) => {
@ -317,3 +317,4 @@
display: block;
}
</style>

6
src/views/modules/epidemic/persontesting-look.vue

@ -58,6 +58,9 @@
<el-form-item label="住址:" prop="address" label-width="120px">
{{dataForm.address}}
</el-form-item>
<el-form-item label="核酸检测点" label-width="120px">
{{dataForm.testingPointName}}
</el-form-item>
<!-- <el-form-item label="核酸接测结果" prop="testingResult">-->
<!-- <el-input v-model="dataForm.testingResult" placeholder="核酸接测结果"></el-input>-->
<!-- </el-form-item>-->
@ -112,7 +115,8 @@ export default {
createdTime: '',
updatedBy: '',
updatedTime: '',
delFlag: ''
delFlag: '',
testingPointName: ''
},
uploadUrl: '',
loading: false,

2
src/views/modules/epidemic/persontesting.vue

@ -72,8 +72,8 @@
<!-- <el-table-column prop="delFlag" 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('news:persontesting:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>-->
<el-button type="text" size="small" @click="lookDetail(scope.row.id)">{{ $t('查看') }}</el-button>
<el-button v-if="$hasPermission('custom:persontesting:update')" 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>

21
src/views/modules/epidemic/reader.vue

@ -46,6 +46,15 @@
<el-form-item label="签发机关:" prop="organ" label-width="100px">
<el-input type="text" v-model="dataForm.organ" placeholder="签发机关" readonly></el-input>
</el-form-item>
<el-form-item label="核酸检测点" label-width="100px">
<el-select v-model="dataForm.testingPointId" placeholder="请选择..." clearable style="width: 120%;">
<el-option v-for="item in optionTestingPoint"
:key="item.tagValue"
:label="item.tagName"
:value="item.tagValue">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="开始期限:" prop="effDate">
<el-input type="text" v-model="dataForm.effDate" placeholder="开始期限" readonly></el-input>
</el-form-item>
@ -81,12 +90,14 @@ export default {
idcard: '', // certNumber
organ: '', // certOrg
imgCode: '', // identityPic
testingPointId: ''
// effDate: '',
// expDate: '',
// result: ''
},
imageSrc: '',
connectStatus: false, //
optionTestingPoint: []
}
},
computed: {
@ -123,6 +134,8 @@ export default {
init () {
this.btnAble = false
this.visible = true
this.dataForm.testingPointId = ''
this.getListSimpleByDictType()
this.connect()
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
@ -137,6 +150,14 @@ export default {
formatDate (str) {
return str.substring(0,4) + '-' + str.substring(4,6) + '-' + str.substring(6,8)
},
getListSimpleByDictType () {
this.$http.get(`/custom/testingpoint/testingPointSelection`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.optionTestingPoint = res.data
}).catch(() => {})
},
//
connect () {
axios.get(`http://127.0.0.1:19196/OpenDevice`).then(({ data: res }) => {

143
src/views/modules/epidemic/testingpoint-add-or-update.vue

@ -0,0 +1,143 @@
<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' ? '180px' : '120px'">
<el-form-item label="检测" prop="testingPointName">
<el-input v-model="dataForm.testingPointName" placeholder="监测" maxlength="100" show-word-limit></el-input>
</el-form-item>
<el-form-item label="介绍">
<el-input type="textarea" autosize placeholder="请输入内容" v-model="dataForm.introduce" maxlength="200"></el-input>
</el-form-item>
<el-form-item label="负责人" prop="contacts">
<el-input v-model="dataForm.contacts" placeholder="负责人" maxlength="50" show-word-limit></el-input>
</el-form-item>
<el-form-item label="联系电话" prop="tel">
<el-input v-model="dataForm.tel" placeholder="联系电话" maxlength="20" show-word-limit></el-input>
</el-form-item>
<el-form-item label="经度" prop="longitude">
<el-input v-model="dataForm.longitude" :disabled = "true" placeholder="经度"></el-input>
</el-form-item>
<el-form-item label="纬度" prop="latitude">
<el-input v-model="dataForm.latitude" :disabled = "true" placeholder="纬度"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="mapSelectHandle(2)">地图选择</el-button>
</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>
<map-select v-if="mapSelectVisible"
ref="mapSelect"
v-on:position="position"></map-select>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
import MapSelect from '../sys/map-select'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
testingPointName: '',
address: '',
longitude: '',
latitude: '',
contacts: '',
tel: '',
introduce: ''
},
mapSelectVisible: false
}
},
computed: {
dataRule () {
return {
testingPointName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
address: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
longitude: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
latitude: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
contacts: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
tel: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.dataForm.introduce = ''
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
position (position) {
this.dataForm.address = position.address
this.dataForm.latitude = position.latitude
this.dataForm.longitude = position.longitude
this.mapSelectVisible = false
},
mapSelectHandle (type) {
this.mapSelectVisible = true
this.$nextTick(() => {
this.$refs.mapSelect.init(type, 200)
})
},
//
getInfo () {
this.$http.get(`/custom/testingpoint/${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/testingpoint/', 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 })
},
components: {
MapSelect
}
}
</script>

70
src/views/modules/epidemic/testingpoint-detail.vue

@ -0,0 +1,70 @@
<template>
<el-dialog :visible.sync="visible" title="详情" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" ref="dataForm" :label-width="$i18n.locale === 'en-US' ? '180px' : '120px'">
<el-form-item label="监测">
<div>{{dataForm.testingPointName}}</div>
</el-form-item>
<el-form-item label="介绍">
<div>{{dataForm.introduce}}</div>
</el-form-item>
<el-form-item label="负责人">
<div>{{dataForm.contacts}}</div>
</el-form-item>
<el-form-item label="联系电话">
<div>{{dataForm.tel}}</div>
</el-form-item>
<el-form-item label="位置">
<div>{{dataForm.address}}</div>
</el-form-item>
<el-form-item label="经度">
<div>{{dataForm.longitude}}</div>
</el-form-item>
<el-form-item label="纬度">
<div>{{dataForm.latitude}}</div>
</el-form-item>
<el-form-item label="检测人数">
<div>{{dataForm.testNum}}</div>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false"
type="primary">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
export default {
data () {
return {
visible: false,
dataForm: {
id: ''
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/custom/testingpoint/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
}
}
}
</script>

82
src/views/modules/epidemic/testingpoint.vue

@ -0,0 +1,82 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-custom__testingpoint}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.testingPointName" 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:testingpoint:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</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="testingPointName" label="监测" header-align="center" align="center"></el-table-column>
<el-table-column prop="address" label="位置" header-align="center" align="center"></el-table-column>
<el-table-column prop="contacts" label="负责人" header-align="center" align="center"></el-table-column>
<el-table-column prop="tel" label="联系电话" header-align="center" align="center"></el-table-column>
<el-table-column prop="testNum" 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="detailQuery(scope.row.id)">详情</el-button>
<el-button v-if="$hasPermission('custom:testingpoint:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('custom:testingpoint: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>
<!-- 弹窗, 详情 -->
<detail v-if="detailVisible" ref="detail"></detail>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './testingpoint-add-or-update'
import Detail from './testingpoint-detail'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/custom/testingpoint/page',
getDataListIsPage: true,
deleteURL: '/custom/testingpoint',
deleteIsBatch: true
},
dataForm: {
id: ''
},
detailVisible: false
}
},
methods: {
//
detailQuery (id) {
this.detailVisible = true
this.$nextTick(() => {
this.$refs.detail.dataForm.id = id
this.$refs.detail.init()
})
}
},
components: {
AddOrUpdate,
Detail
}
}
</script>

153
src/views/modules/heart/org-user.vue

@ -0,0 +1,153 @@
<template>
<el-dialog :visible.sync="visible"
append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
width="80%"
height="90%">
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataListSearch()">
<!-- <el-form-item label="用户名">-->
<!-- <el-input v-model="dataForm.username" :placeholder="$t('user.username')" clearable maxlength="10" @keyup.native="btKeyUpUserName"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="真实姓名">
<el-input v-model="dataForm.realName" placeholder='真实姓名' clearable maxlength="10" @keyup.native="btKeyUpRealname"></el-input>
</el-form-item>
<!-- <el-form-item label="邮箱">-->
<!-- <el-input v-model="dataForm.email" placeholder="邮箱" clearable maxlength="20" @keyup.native="btKeyUpEmail"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="手机号">
<el-input v-model="dataForm.mobile" placeholder="手机号" clearable maxlength="11" @keyup.native="btKeyUpMobile"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataListOverWrite()" type="success">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" ref="Table" :data="dataList" max-height="450" style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column
type="index"
header-align="center"
align="center"
width="50"
label='序号'
></el-table-column>
<el-table-column prop="nickname" :label="$t('user.username')" sortable="custom" header-align="center" align="center" width="100"></el-table-column>
<el-table-column prop="realName" :label="$t('user.realName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="allDeptNames" :label="$t('user.deptName')" header-align="center" align="center" min-width="120"></el-table-column>
<!-- <el-table-column prop="email" :label="$t('user.email')" header-align="center" align="center" width="200"></el-table-column>-->
<el-table-column prop="mobile" :label="$t('user.mobile')" sortable="custom" header-align="center" align="center" width="120"></el-table-column>
<!-- <el-table-column prop="status" :label="$t('user.status')" sortable="custom" header-align="center" align="center" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <el-tag v-if="scope.row.status === 0" size="small" type="danger">{{ $t('user.status0') }}</el-tag>-->
<!-- <el-tag v-else size="small" type="success">{{ $t('user.status1') }}</el-tag>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="createdTime" :label="$t('user.createDate')" sortable="custom" header-align="center" align="center" width="180"></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>
<el-form>
<el-button type="primary" @click="getInfo()" style="margin-left:48%" class="end">{{"确定"}}</el-button>
</el-form>
</div>
</el-card>
</el-dialog>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/app-user/user/getUserListForVolunteerOrg',
getDataListIsPage: true,
deleteURL: '/sys/user',
deleteIsBatch: true,
exportURL: '/sys/user/export'
},
visible: false,
dataForm: {
realName: '',
mobile: ''
},
responseData: []
}
},
methods: {
// btKeyUpUserName (e) {
// e.target.value = e.target.value.replace(/[`~!@#$%^&*()_\-+=<>?:"{}|·~@#%&*\-+={}|]/g, '')
// this.dataForm.username = e.target.value
// },
btKeyUpRealname (e) {
e.target.value = e.target.value.replace(/[`~!@#$%^&*()_\-+=<>?:"{}|·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/g, '')
this.dataForm.realname = e.target.value
},
// btKeyUpEmail (e) {
// e.target.value = e.target.value.replace(/[`~!#$%^&*()_\-+=<>?:"{}|~#%&*={}|]/g, '')
// this.dataForm.email = e.target.value
// },
btKeyUpMobile (e) {
e.target.value = e.target.value.replace(/[`~!@#$%^&*()_=<>?:"{}|·~!@#¥%……&*()——={}|《》?:“”【】、;‘’,。、]/g, '')
this.dataForm.mobile = e.target.value
},
getDataListOverWrite () {
this.page = 1
this.getDataList()
},
//
init () {
this.dataForm.realName = ''
this.dataForm.mobile = ''
this.visible = true
this.$nextTick(() => {
this.getDataList()
})
},
handleSelectionChange (val) {
console.log(val)
this.responseData = val
if (val.length > 1) {
this.$refs.Table.clearSelection()
this.$refs.Table.toggleRowSelection(val.pop())
}
},
getInfo () {
if (this.responseData.length === 0) {
this.$message({
message: '请选择用户!',
type: 'warning'
})
return false
}
this.$emit('connectResponse', this.responseData)
this.visible = false
}
}
}
</script>
<style scoped lang='scss'>
.el-form{
.end{
margin-top: 10px;
}
}
.el-button--success{
margin-top: 0px!important;
}
thead .el-table-column--selection .cell{
display: none;
}
</style>

138
src/views/modules/heart/vactorgtype-add-or-update.vue

@ -0,0 +1,138 @@
<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="typeName">
<el-input v-model="dataForm.typeName" maxlength="10" placeholder="组织类型,10字以内" ></el-input>
</el-form-item>
<!-- <el-form-item label="类别编码" prop="typeCode">-->
<!-- <el-input v-model="dataForm.typeCode" placeholder="类别编码"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="排序" prop="sort">-->
<!-- <el-input-number v-model="dataForm.sort" controls-position="right" :min="0" label="排序"></el-input-number>-->
<!-- </el-form-item>-->
<el-form-item label="备注" prop="note">
<el-input v-model="dataForm.note" type="textarea" maxlength="50" placeholder="输入内容,50字以内" ></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="creator">-->
<!-- <el-input v-model="dataForm.creator" placeholder="创建者"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="创建时间" prop="createDate">-->
<!-- <el-input v-model="dataForm.createDate" placeholder="创建时间"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="更新者" prop="updater">-->
<!-- <el-input v-model="dataForm.updater" placeholder="更新者"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="更新时间" prop="updateDate">-->
<!-- <el-input v-model="dataForm.updateDate" 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: '',
typeName: '',
typeCode: '',
sort: '',
note: '',
delFlag: '',
creator: '',
createDate: '',
updater: '',
updateDate: ''
}
}
},
computed: {
dataRule () {
return {
typeName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
// typeCode: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// sort: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// note: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// delFlag: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// creator: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// createDate: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// updater: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// updateDate: [
// { 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(`/heart/vactorgtype/${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']('/heart/vactorgtype/', 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>

77
src/views/modules/heart/vactorgtype.vue

@ -0,0 +1,77 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-heart__vactorgtype}">
<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('heart:vactorgtype: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="index"
width="50"
label="序号" align="center"></el-table-column>
<!-- <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="typeName" label="组织类型" header-align="center" align="center"></el-table-column>
<!-- <el-table-column prop="typeCode" 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 prop="note" label="备注" 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="creator" label="创建者" header-align="center" align="center"></el-table-column>-->
<!-- <el-table-column prop="createDate" label="创建时间" header-align="center" align="center"></el-table-column>-->
<!-- <el-table-column prop="updater" label="更新者" header-align="center" align="center"></el-table-column>-->
<!-- <el-table-column prop="updateDate" 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>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './vactorgtype-add-or-update'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/heart/vactorgtype/page',
getDataListIsPage: true,
deleteURL: '/heart/vactorgtype',
deleteIsBatch: true
},
dataForm: {
id: ''
}
}
},
components: {
AddOrUpdate
}
}
</script>

185
src/views/modules/heart/volunteerorg-add-or-update.vue

@ -1,14 +1,22 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? '新增公益组织' : $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="volunteerOrgName" >
<el-form-item label="组织类型" prop="orgType" label-width="100px">
<el-select v-model="dataForm.orgType" clearable placeholder="组织类型" style="width:300px">
<el-option v-for="item in orgTypeList" :key="item.id" :label="item.typeName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="组织名称" prop="volunteerOrgName" label-width="100px">
<el-input v-model="dataForm.volunteerOrgName" placeholder="组织名称" style="width:300px"></el-input>
</el-form-item>
<el-form-item label="负责人" prop="headName">
<el-input v-model="dataForm.headName" placeholder="负责人" style="width:300px"></el-input>
<el-form-item label="组织管理员" prop="headName" label-width="100px">
<el-input v-model="dataForm.headName" disabled placeholder="组织管理员" style="width:300px"></el-input>
<el-button type="primary" @click="selectUserMethod()" style="margin-left: 30px">{{"选择管理员"}}</el-button>
</el-form-item>
<el-form-item label="负责电话" prop="mobile">
<el-input v-model="dataForm.mobile" placeholder="负责电话" style="width:300px"></el-input>
<el-form-item label="管理员电话" prop="mobile" label-width="100px">
<el-input v-model="dataForm.mobile" disabled placeholder="管理员电话" style="width:300px"></el-input>
</el-form-item>
<!-- <el-form-item label="组织编码" prop="volunteerOrgCode">-->
<!-- <el-input v-model="dataForm.volunteerOrgCode" placeholder="组织编码"></el-input>-->
@ -16,50 +24,53 @@
<!-- <el-form-item label="是否启用" prop="isOpen">-->
<!-- <el-input v-model="dataForm.isOpen" placeholder="是否启用"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="是否启用" prop="isOpen">
<el-form-item label="是否启用" prop="isOpen" label-width="100px">
<el-select v-model="dataForm.isOpen" clearable placeholder="是否启用" style="width:300px">
<el-option v-for="item in isOpenList" :key="item.dictValue" :label="item.dictName" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="sort" label="排序">
<el-form-item prop="sort" label="排序" label-width="100px">
<el-input-number v-model="dataForm.sort" controls-position="right" :min="0" label="排序" style="width:300px"></el-input-number>
</el-form-item>
<el-form-item label="地址" prop="address">
<el-form-item label="照片"
label-width="100px"
v-loading="loading"
prop="imgUrl">
<el-upload class="avatar-uploader"
:action="uploadUrl"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="dataForm.imgUrl"
:src="dataForm.imgUrl"
class="avatar">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
<div slot="tip"
class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>
</el-upload>
</el-form-item>
<el-form-item label="地址" prop="address" label-width="100px">
<el-input v-model="dataForm.address" clearable="" maxlength="200" placeholder="请输入地址,最多200字"></el-input>
</el-form-item>
<el-form-item label="备注" prop="note">
<el-input v-model="dataForm.note" clearable type="textarea" maxlength="200" placeholder="请输入备注,最多200字"></el-input>
<el-form-item label="组织介绍" prop="note" label-width="100px">
<el-input v-model="dataForm.note" clearable type="textarea" maxlength="200" placeholder="请输入组织介绍,最多200字"></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>
<org-user v-if="orgUserVisible" ref="orgUser" v-on:connectResponse="connectResponse"></org-user>
<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'
import Cookies from 'js-cookie'
import OrgUser from './org-user'
export default {
data () {
return {
@ -79,8 +90,14 @@ export default {
createdTime: '',
updatedBy: '',
updatedTime: '',
note:''
note:'',
orgType: '',
imgUrl:''
},
orgUserVisible:false,
uploadUrl: '',
loading: false,
orgTypeList:[],
isOpenList: [
{dictValue: '0', dictName: '启用'},
{dictValue: '1', dictName: '禁用'},
@ -90,50 +107,67 @@ export default {
computed: {
dataRule () {
return {
orgType: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
volunteerOrgName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
// volunteerOrgCode: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// isOpen: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// sort: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
headName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
imgUrl: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
note: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
mobile: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ pattern: /^[1][1,2,3,4,5,6,7,8,9][0-9]{9}$/, message: '请输入正确号码格式', trigger: 'blur' }
],
// address: [
// { 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' }
// ]
address: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
}
}
},
created: function () {
this.getOrgTypeList()
this.$nextTick(() => {
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/upload?token=${Cookies.get('token')}`
})
},
components: {
OrgUser
},
methods: {
// dialog
connectResponse (connectResponse) {
this.dataForm.mobile = connectResponse[0].mobile
this.dataForm.headName = connectResponse[0].realName
},
//
selectUserMethod () {
this.orgUserVisible = true
this.$nextTick(() => {
this.$refs.orgUser.init()
})
},
//
handleAvatarSuccess (res, file) {
this.loading = false
this.dataForm.imgUrl = res.data.url
},
beforeAvatarUpload (file) {
this.loading = true
},
getOrgTypeList() {
this.$http.get(`heart/vactorgtype/getOrgTypeList`).then(({data: res}) => {
this.orgTypeList = res.data
}).catch(() => {
})
},
init () {
this.visible = true
this.$nextTick(() => {
@ -165,6 +199,12 @@ export default {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
// this.$alert(res.data, '', {
// confirmButtonText: '',
// callback: action => {
// this.visible = false
// this.$emit('refreshDataList')
// } });
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -180,3 +220,28 @@ export default {
}
}
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>

194
src/views/modules/heart/volunteerorg-look.vue

@ -0,0 +1,194 @@
<template>
<el-dialog :visible.sync="visible" title="查看" :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="orgType" label-width="100px">
<!-- <el-select v-model="dataForm.orgType" clearable placeholder="组织类型" style="width:300px">-->
<!-- <el-option v-for="item in orgTypeList" :key="item.id" :label="item.typeName" :value="item.id">-->
<!-- </el-option>-->
<!-- </el-select>-->
{{getTypeName(dataForm.orgType)}}
</el-form-item>
<el-form-item label="组织名称:" prop="volunteerOrgName" label-width="100px">
{{dataForm.volunteerOrgName}}
</el-form-item>
<el-form-item label="组织管理员:" prop="headName" label-width="100px">
{{dataForm.headName}}
</el-form-item>
<el-form-item label="管理员电话:" prop="mobile" label-width="100px">
{{dataForm.mobile}}
</el-form-item>
<!-- <el-form-item label="组织编码" prop="volunteerOrgCode">-->
<!-- <el-input v-model="dataForm.volunteerOrgCode" placeholder="组织编码"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="是否启用" prop="isOpen">-->
<!-- <el-input v-model="dataForm.isOpen" placeholder="是否启用"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="是否启用:" prop="isOpen" label-width="100px">
<template slot-scope="scope">
{{
dataForm.isOpen == 0
? "启用"
: dataForm.isOpen == 1
? "禁用"
: ""
}}
</template>
</el-form-item>
<el-form-item prop="sort" label="排序:" label-width="100px">
{{dataForm.sort}}
</el-form-item>
<el-form-item label="照片:"
label-width="100px"
v-loading="loading"
prop="imgUrl">
<el-upload class="avatar-uploader"
:action="uploadUrl"
:show-file-list="false"
:disabled="true">
<img v-if="dataForm.imgUrl"
:src="dataForm.imgUrl"
class="avatar">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="地址:" prop="address" label-width="100px">
{{dataForm.address}}
</el-form-item>
<el-form-item label="组织介绍:" prop="note" label-width="100px">
{{dataForm.note}}
</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: '',
volunteerOrgName: '',
volunteerOrgCode: '',
isOpen: '',
sort: '',
headName: '',
mobile: '',
address: '',
delFlag: '',
revision: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: '',
note:''
},
uploadUrl: '',
loading: false,
orgTypeList:[],
isOpenList: [
{dictValue: '0', dictName: '启用'},
{dictValue: '1', dictName: '禁用'},
]
}
},
computed: {
getTypeName(orgType){
return function(orgType){
let typeName;
this.orgTypeList.forEach(item =>{
if(item.id == orgType){
typeName = item.typeName;
}
})
return typeName;
}
},
dataRule () {
return {
}
}
},
created: function () {
this.getOrgTypeList()
},
methods: {
getOrgTypeList() {
this.$http.get(`heart/vactorgtype/getOrgTypeList`).then(({data: res}) => {
this.orgTypeList = res.data
}).catch(() => {
})
},
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/heart/volunteerorg/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
}
}
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>

66
src/views/modules/heart/volunteerorg.vue

@ -2,11 +2,28 @@
<el-card shadow="never" class="aui-card--fill">
<div class="mod-heart__volunteerorg}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="组织名称" prop="volunteerOrgName">
<el-form-item label="组织类型" prop="orgType" label-width="80px">
<el-select v-model="dataForm.orgType" clearable placeholder="组织类型">
<el-option v-for="item in orgTypeList" :key="item.id" :label="item.typeName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="组织名称" prop="volunteerOrgName" label-width="80px">
<el-input v-model="dataForm.volunteerOrgName"
placeholder="组织名称"
clearable></el-input>
</el-form-item>
<br>
<el-form-item label="负责人" prop="headName" label-width="80px">
<el-input v-model="dataForm.headName"
placeholder="负责人"
clearable></el-input>
</el-form-item>
<el-form-item label="电话" prop="mobile" label-width="80px">
<el-input v-model="dataForm.mobile"
placeholder="电话"
clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
@ -27,13 +44,15 @@
width="50"
label="序号" align="center"></el-table-column>
<!-- <el-table-column prop="id" label="主键" header-align="center" align="center"></el-table-column>-->
<el-table-column prop="orgTypeName" label="组织类型" header-align="center" align="center"></el-table-column>
<el-table-column prop="volunteerOrgName" label="组织名称" header-align="center" align="center"></el-table-column>
<!-- <el-table-column prop="volunteerOrgCode" label="组织编码" header-align="center" align="center"></el-table-column>-->
<!-- <el-table-column prop="volunteerO rgCode" label="组织编码" header-align="center" align="center"></el-table-column>-->
<!-- <el-table-column prop="isOpen" label="是否启用:0启用 1禁用" 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 prop="headName" 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="address" label="地址" header-align="center" align="center"></el-table-column>
<el-table-column prop="headName" 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="associatedStates" label="居民端管理员" header-align="center" align="center"></el-table-column>-->
<el-table-column prop="address" label="地址" 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>-->
@ -42,8 +61,9 @@
<!-- <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 type="text" size="small" @click="lookDetail(scope.row.id)">{{ $t('详情') }}</el-button>
<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>
<!-- <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>-->
</template>
</el-table-column>
</el-table>
@ -58,6 +78,7 @@
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<volunteerorg-look v-if="lookVisible" ref="volunteerorgLook" @refreshDataList="getDataList"></volunteerorg-look>
</div>
</el-card>
</template>
@ -65,6 +86,7 @@
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './volunteerorg-add-or-update'
import VolunteerorgLook from './volunteerorg-look'
export default {
mixins: [mixinViewModule],
data () {
@ -77,12 +99,34 @@ export default {
exportURL: '/heart/volunteerorg/export'
},
dataForm: {
id: ''
}
id: '',
orgType:''
},
lookVisible:false,
orgTypeList:[]
}
},
created: function () {
this.getOrgTypeList()
},
components: {
AddOrUpdate
}
}
AddOrUpdate,
VolunteerorgLook
},
methods: {
lookDetail (id) {
this.lookVisible = true
this.$nextTick(() => {
this.$refs.volunteerorgLook.dataForm.id = id
this.$refs.volunteerorgLook.init()
})
},
getOrgTypeList() {
this.$http.get(`heart/vactorgtype/getOrgTypeList`).then(({data: res}) => {
this.orgTypeList = res.data
}).catch(() => {
})
},
}
}
</script>

58
src/views/modules/news/moduletype-add-or-update.vue

@ -7,6 +7,23 @@
<!-- <el-form-item label="所有上级ID 逗号分隔" prop="pids">-->
<!-- <el-input v-model="dataForm.pids" placeholder="所有上级ID 逗号分隔"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="栏目图片"
v-loading="loading"
prop="imgUrl">
<el-upload class="avatar-uploader"
:action="uploadUrl"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="dataForm.imgUrl"
:src="dataForm.imgUrl"
class="avatar">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
<div slot="tip"
class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>
</el-upload>
</el-form-item>
<el-form-item label="类别名称" prop="typeName">
<el-input v-model="dataForm.typeName" placeholder="类别名称"></el-input>
</el-form-item>
@ -63,6 +80,7 @@
<script>
import debounce from 'lodash/debounce'
import Cookies from 'js-cookie'
export default {
data () {
return {
@ -82,6 +100,8 @@ export default {
updatedBy: '',
updatedTime: ''
},
uploadUrl: '',
loading: false,
categoryList: [],
categoryListVisible: false,
}
@ -131,7 +151,20 @@ export default {
}
}
},
created () {
this.$nextTick(() => {
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/upload?token=${Cookies.get('token')}`
})
},
methods: {
//
handleAvatarSuccess (res, file) {
this.loading = false
this.dataForm.imgUrl = res.data.url
},
beforeAvatarUpload (file) {
this.loading = true
},
init () {
this.visible = true
this.$nextTick(() => {
@ -211,3 +244,28 @@ export default {
}
}
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>

297
src/views/modules/sys/gridmember-add-or-update.vue

@ -0,0 +1,297 @@
<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="name">
<el-input v-model="dataForm.name" placeholder="姓名" style="width: 260px"></el-input>
</el-form-item>
<!-- <el-form-item label="党员标识" prop="partyFlag">-->
<!-- <el-select v-model="dataForm.partyFlag" clearable placeholder="党员标识" style="width: 260px">-->
<!-- <el-option v-for="item in partyFlagList" :key="item.dictValue" :label="item.dictName" :value="item.dictValue">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="头像"
v-loading="loading"
prop="imgUrl">
<el-upload class="avatar-uploader"
:action="uploadUrl"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="dataForm.imgUrl"
:src="dataForm.imgUrl"
class="avatar">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
<div slot="tip"
class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>
</el-upload>
</el-form-item>
<el-form-item label="所属组织"
prop="allDeptIdsShow">
<el-cascader v-model="dataForm.allDeptIdsShow"
:options="options"
:props="{ multiple: false, emitPath: true }"
clearable
@change="changeHandle"
collapse-tags
style="width: 500px"></el-cascader>
</el-form-item>
<el-form-item label="格言" prop="motto">
<el-input v-model="dataForm.motto" placeholder="格言"></el-input>
</el-form-item>
<el-form-item label="职责" prop="duty">
<el-input v-model="dataForm.duty" placeholder="职责"></el-input>
</el-form-item>
<el-form-item label="负责区域" prop="territory">
<el-input v-model="dataForm.territory" placeholder="负责区域"></el-input>
</el-form-item>
<el-form-item label="电话" prop="mobile">
<el-input v-model="dataForm.mobile" placeholder="电话"></el-input>
</el-form-item>
<!-- <el-form-item label="所属网格名称" prop="dept">-->
<!-- <el-input v-model="dataForm.dept" placeholder="所属网格名称"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="所属网格" prop="deptId">-->
<!-- <el-input v-model="dataForm.deptId" placeholder="所属网格"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="父所有部门" prop="parentDeptIds">-->
<!-- <el-input v-model="dataForm.parentDeptIds" placeholder="父所有部门"></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="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-item label="删除标记" prop="delFlag">-->
<!-- <el-input v-model="dataForm.delFlag" 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'
import Cookies from 'js-cookie'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
name: '',
imgUrl: '',
// partyFlag: '',
motto: '',
duty: '',
territory: '',
mobile: '',
dept: '',
deptId: '',
parentDeptIds: '',
parentDeptNames: '',
allDeptIds: '',
allDeptNames: '',
revision: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: '',
delFlag: '',
allDeptIdsShow:[]
},
uploadUrl: '',
loading: false,
options: [],
// partyFlagList: [
// {dictValue: '0', dictName: ''},
// {dictValue: '1', dictName: ''},
// ]
}
},
computed: {
dataRule () {
return {
name: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
imgUrl: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
// partyFlag: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
motto: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
duty: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
territory: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
mobile: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ pattern: /^[1][1,2,3,4,5,6,7,8,9][0-9]{9}$/, message: '请输入正确号码格式', trigger: 'blur' }
],
dept: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
deptId: [
{ 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' }
],
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' }
],
delFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
created () {
this.$http
.get(`/sys/user/deptOptions/getAllByLoginUser`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.options = res.data.options
})
.catch(() => { })
this.$nextTick(() => {
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/upload?token=${Cookies.get('token')}`
})
},
methods: {
changeHandle(value) {
this.dataForm.deptId = this.dataForm.allDeptIdsShow[this.dataForm.allDeptIdsShow.length - 1]
},
//
handleAvatarSuccess (res, file) {
this.loading = false
this.dataForm.imgUrl = res.data.url
},
beforeAvatarUpload (file) {
this.loading = true
},
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/sys/gridmember/${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']('/sys/gridmember/', 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>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>

125
src/views/modules/sys/gridmember.vue

@ -0,0 +1,125 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__gridmember}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="姓名" prop="name">
<el-input v-model="dataForm.name"
placeholder="姓名"
clearable></el-input>
</el-form-item>
<el-form-item label="电话" prop="mobile">
<el-input v-model="dataForm.mobile"
placeholder="电话"
clearable></el-input>
</el-form-item>
<el-form-item label="所属组织"
prop="allDeptIds">
<el-cascader v-model="allDeptIds"
:options="options"
:props="{ checkStrictly: true,multiple: false, emitPath: true }"
clearable
@change="changeHandle"
collapse-tags></el-cascader>
</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('sys:gridmember: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="index"
width="50"
label="序号" align="center"></el-table-column>
<!-- <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="name" label="姓名" header-align="center" align="center"></el-table-column>
<!-- <el-table-column prop="imgUrl" label="头像" header-align="center" align="center"></el-table-column>-->
<!-- <el-table-column prop="partyFlag" label="党员标识" header-align="center" align="center"></el-table-column>-->
<!-- <el-table-column prop="motto" label="格言" header-align="center" align="center"></el-table-column>-->
<el-table-column prop="duty" label="职责" header-align="center" align="center"></el-table-column>
<!-- <el-table-column prop="territory" 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="dept" label="所属部门" header-align="center" align="center"></el-table-column>
<!-- <el-table-column prop="deptId" label="所属网格id" header-align="center" align="center"></el-table-column>-->
<!-- <el-table-column prop="parentDeptIds" 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="allDeptIds" label="所有部门ID" 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="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 prop="delFlag" 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>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './gridmember-add-or-update'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/gridmember/page',
getDataListIsPage: true,
deleteURL: '/sys/gridmember',
deleteIsBatch: true
},
dataForm: {
id: ''
},
options: [],
allDeptIds:{}
}
},
components: {
AddOrUpdate
},
watch: {
allDeptIds: function (val) {
if (val.length === 0) {
this.dataForm.deptId = ''
} else {
this.dataForm.deptId = this.allDeptIds[val.length - 1]
}
}
},
created () {
this.$http
.get(`/sys/user/deptOptions/getAllByLoginUser`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.options = res.data.options
})
.catch(() => { })
},
}
</script>

45
src/views/modules/sys/user-add-or-update.vue

@ -36,6 +36,17 @@
:readonly="true"
:placeholder="$t('user.deptName')"></el-input>
</el-form-item>
<el-form-item label="物业项目"
prop="projectName">
<el-select v-model="dataForm.projectId" placeholder="用户类型"
@change="projectHandleChange" style="width: 100%">
<el-option v-for="item in projectList"
:key="item.dictValue"
:label="item.dictName"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="用户类型"
prop="userTagKey">
<el-select v-model="dataForm.userTagKey"
@ -163,7 +174,7 @@
<script>
import debounce from 'lodash/debounce'
import { isEmail, isMobile } from '@/utils/validate'
import Cookies from "js-cookie"
import Cookies from 'js-cookie'
export default {
data () {
return {
@ -178,6 +189,8 @@ export default {
username: '',
deptId: '0',
deptName: '',
projectName: '',
projectId: '',
password: '',
comfirmPassword: '',
realName: '',
@ -204,6 +217,7 @@ export default {
},
verifyMobileList: [],
userTagDictList: [],
projectList: [],
loading: false
}
},
@ -275,7 +289,7 @@ export default {
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/upload?token=${Cookies.get('token')}`
Promise.all([
this.getDeptList(),
this.getRoleList()
this.getRoleList(),
]).then(() => {
if (this.dataForm.id) {
this.getInfo()
@ -283,6 +297,7 @@ export default {
})
})
this.getUserTagDicList()
this.getProjectList()
},
//
relationEpmetStaffUser (mobile) {
@ -329,6 +344,14 @@ export default {
this.roleList = res.data
}).catch(() => { })
},
getPropertyUserList () {
return this.$http.get('/sys/syspropertyuser/list').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.propertyUserList = res.data
}).catch(() => { })
},
//
getUserTagDicList () {
this.$http.get(`/sys/dict/listSimple/user_tag`).then(({ data: res }) => {
@ -338,6 +361,16 @@ export default {
this.userTagDictList = res.data
}).catch(() => { })
},
//
getProjectList () {
this.$http.get(`/property/project/dict`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.projectList = res.data
}).catch(() => {
})
},
//
getInfo () {
this.$http.get(`/sys/user/${this.dataForm.id}`).then(({ data: res }) => {
@ -433,6 +466,14 @@ export default {
},
handelError () {
this.loading = false
},
projectHandleChange (value) {
console.log(value)
let obj = this.projectList.find((item) => {
return item.dictValue === value
})
console.log(obj.dictName)
this.dataForm.projectName = obj.dictName
}
}
}

10
src/views/modules/user/userinfo.vue

@ -21,11 +21,11 @@
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table-column prop="deptName" label="所属组织" header-align="center" align="center" width="500px"></el-table-column>
<el-table-column prop="realName" label="姓名" header-align="center" align="center" width="150px"></el-table-column>
<el-table-column prop="mobile" label="电话" header-align="center" align="center" width="180px"></el-table-column>
<el-table-column prop="recommendFlag" label="推荐状态" :formatter="showIsRecommendFormatter" header-align="center" align="center" width="150px"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150px">
<el-table-column prop="deptName" label="所属组织" header-align="center" align="center" width="450px"></el-table-column>
<el-table-column prop="realName" label="姓名" header-align="center" align="center" width="120px"></el-table-column>
<el-table-column prop="mobile" label="电话" header-align="center" align="center" width="150px"></el-table-column>
<el-table-column prop="recommendFlag" label="推荐状态" :formatter="showIsRecommendFormatter" header-align="center" align="center" width="120px"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="120px">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">详情</el-button>
<el-button type="text" size="small" @click="handleIsTop(scope.row)">

Loading…
Cancel
Save