22 changed files with 3083 additions and 166 deletions
|
After Width: | Height: | Size: 9.0 KiB |
@ -0,0 +1,49 @@ |
|||||
|
.div_form { |
||||
|
margin: 20px 50px; |
||||
|
} |
||||
|
.form_item { |
||||
|
display: flex; |
||||
|
justify-content: flex-start; |
||||
|
font-size: 15px; |
||||
|
|
||||
|
.item_title { |
||||
|
text-align: right; |
||||
|
|
||||
|
flex: 0 0 150px; |
||||
|
line-height: 36px; |
||||
|
} |
||||
|
|
||||
|
.item_content { |
||||
|
margin-left: 30px; |
||||
|
line-height: 36px; |
||||
|
} |
||||
|
|
||||
|
.attach_item { |
||||
|
display: flex; |
||||
|
justify-content: flex-start; |
||||
|
align-items: center; |
||||
|
margin-left: 30px; |
||||
|
line-height: 36px; |
||||
|
|
||||
|
.attach_item_name { |
||||
|
margin-left: 10px; |
||||
|
color: #3e8ef7; |
||||
|
text-decoration: underline; |
||||
|
} |
||||
|
.attach_item_name:hover { |
||||
|
cursor: pointer; |
||||
|
color: #1461c7; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.div_btn { |
||||
|
margin-top: 15px; |
||||
|
display: flex; |
||||
|
width: 100%; |
||||
|
justify-content: center; |
||||
|
|
||||
|
.btn_right { |
||||
|
margin-left: 50px; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,62 @@ |
|||||
|
@import "../c/anime"; |
||||
|
@import "../c/config"; |
||||
|
@import "../c/function"; |
||||
|
|
||||
|
.m-notice { |
||||
|
position: fixed; |
||||
|
z-index: 10000; |
||||
|
bottom: 0; |
||||
|
right: 0; |
||||
|
background-color: #fff; |
||||
|
box-shadow: 0 0 10px 0 rgba(#000, 0.1); |
||||
|
width: 500px; |
||||
|
height: 300px; |
||||
|
box-sizing: border-box; |
||||
|
padding: 25px; |
||||
|
|
||||
|
.header { |
||||
|
margin-bottom: 20px; |
||||
|
font-size: 24px; |
||||
|
font-weight: bold; |
||||
|
color: #3e8ef7; |
||||
|
} |
||||
|
.type { |
||||
|
margin-bottom: 10px; |
||||
|
font-size: 20px; |
||||
|
font-weight: bold; |
||||
|
color: #333; |
||||
|
} |
||||
|
.content { |
||||
|
@include toeM(2); |
||||
|
margin-bottom: 10px; |
||||
|
font-size: 16px; |
||||
|
color: #333; |
||||
|
line-height: 30px; |
||||
|
} |
||||
|
.date { |
||||
|
margin-bottom: 30px; |
||||
|
font-size: 16px; |
||||
|
color: #999; |
||||
|
line-height: 30px; |
||||
|
} |
||||
|
.operate { |
||||
|
display: flex; |
||||
|
justify-content: space-around; |
||||
|
|
||||
|
.btn { |
||||
|
box-sizing: border-box; |
||||
|
padding: 0 20px; |
||||
|
width: 180px; |
||||
|
text-align: center; |
||||
|
font-size: 20px; |
||||
|
color: #3e8ef7; |
||||
|
line-height: 40px; |
||||
|
cursor: pointer; |
||||
|
|
||||
|
&.z-stress { |
||||
|
background-color: #3e8ef7; |
||||
|
color: #fff; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,102 @@ |
|||||
|
<template> |
||||
|
<div class="m-notice a-fade-in-up" v-if="displayed && list.length > 0"> |
||||
|
<div class="header">通知提醒</div> |
||||
|
<div class="type">{{ list[0].typeName }}</div> |
||||
|
<div class="content">{{ list[0].content }}</div> |
||||
|
<div class="date">{{ list[0].remindTime }}</div> |
||||
|
<div class="operate"> |
||||
|
<div class="btn" @click="read">我知道了</div> |
||||
|
<div class="btn z-stress" @click="checkInfo">查看详情</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { requestPost } from "@/js/dai/request2"; |
||||
|
import nextTick from "dai-js/tools/nextTick"; |
||||
|
|
||||
|
export default { |
||||
|
components: {}, |
||||
|
data() { |
||||
|
return { |
||||
|
displayed: false, |
||||
|
|
||||
|
lastTime: 0, |
||||
|
|
||||
|
list: [ |
||||
|
{ |
||||
|
memoId: "1", |
||||
|
type: "work_diary", |
||||
|
typeName: "工作日志", |
||||
|
content: |
||||
|
"提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容提醒内容", |
||||
|
remindTime: "2022-02-22 22:22", |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
}, |
||||
|
computed: {}, |
||||
|
watch: { |
||||
|
currentIndex() {}, |
||||
|
}, |
||||
|
async mounted() { |
||||
|
this.poll(); |
||||
|
}, |
||||
|
methods: { |
||||
|
async poll() { |
||||
|
let nowTime = new Date().getTime(); |
||||
|
if (nowTime - this.lastTime > 60 * 1000) { |
||||
|
this.lastTime = nowTime; |
||||
|
this.getList(); |
||||
|
} |
||||
|
await nextTick(1000); |
||||
|
this.poll(); |
||||
|
}, |
||||
|
|
||||
|
checkInfo() { |
||||
|
const { memoId, type } = this.list[0]; |
||||
|
if (type == "work_diary") { |
||||
|
this.$router.push({ |
||||
|
path: `/main/visual-basicinfo-people/${uid}`, |
||||
|
}); |
||||
|
} else if (type == "concern") { |
||||
|
} else if (type == "difficulty") { |
||||
|
} |
||||
|
|
||||
|
this.read(); |
||||
|
}, |
||||
|
|
||||
|
async read() { |
||||
|
const item = this.list[0]; |
||||
|
const url = "/gov/project/memoAttr/setReaded"; |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, { |
||||
|
memoId: item.memoId, |
||||
|
}); |
||||
|
|
||||
|
if (code === 0) { |
||||
|
// this.$message.success("删除成功!"); |
||||
|
this.displayed = false; |
||||
|
this.getList(); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
async getList() { |
||||
|
const url = "/gov/project/memoAttr/memosToRemind"; |
||||
|
const { data, code, msg } = await requestPost(url, {}); |
||||
|
if (code === 0) { |
||||
|
console.log("列表请求成功!!!!!!!!!!!!!!"); |
||||
|
this.displayed = true; |
||||
|
this.lastTime = new Date().getTime(); |
||||
|
// this.list = data; |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style |
||||
|
lang="scss" |
||||
|
src="@/assets/scss/modules/shujirizhi-notice.scss" |
||||
|
scoped |
||||
|
></style> |
||||
@ -0,0 +1,177 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
|
||||
|
<div class="dialog-h-content scroll-h div_form"> |
||||
|
|
||||
|
<div class="form_item"> |
||||
|
<div class="item_title">关怀类型</div> |
||||
|
<div class="item_content"> {{formData.concernType}}</div> |
||||
|
</div> |
||||
|
<div class="form_item"> |
||||
|
<div class="item_title">关怀人员</div> |
||||
|
<div class="item_content"> {{formData.resiName}}</div> |
||||
|
</div> |
||||
|
<div v-if="formData.phone" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">电话</div> |
||||
|
<div class="item_content"> {{formData.phone}}</div> |
||||
|
</div> |
||||
|
<div v-if="formData.address" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">地址</div> |
||||
|
<div class="item_content"> {{formData.address}}</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="form_item"> |
||||
|
<div class="item_title">关怀事项</div> |
||||
|
<div class="item_content"> {{formData.content}}</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="formData.scheduledTime" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">预计关怀时间</div> |
||||
|
<div class="item_content"> {{formData.scheduledTime}}</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="formData.remindTime" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">提醒时间</div> |
||||
|
<div class="item_content"> {{formData.remindTime}}</div> |
||||
|
</div> |
||||
|
<div v-if="formData.status" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">状态</div> |
||||
|
<div class="item_content"> {{formData.status==='0'?'未完成':'已完成'}}</div> |
||||
|
</div> |
||||
|
<div v-if="formData.attachmentList.length>0" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">附件</div> |
||||
|
<div> |
||||
|
<div class="attach_item" |
||||
|
v-for="(item, index) in formData.attachmentList" |
||||
|
:key="index"> |
||||
|
<i class="el-icon-tickets"></i> |
||||
|
<div class="attach_item_name" |
||||
|
@click="handleFileDownload(item)">{{item.fileName}}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="div_btn"> |
||||
|
<el-button size="small" |
||||
|
@click="handleCancle">取 消</el-button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
|
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
|
||||
|
difficultyId: '', |
||||
|
formData: { |
||||
|
content: '',//内容 |
||||
|
resolveWay: '',//解决方式 |
||||
|
remark: '',//备注 |
||||
|
scheduledTime: '',//预计处理时间yyyy-mm-dd hh:mm |
||||
|
remindTime: '',//提醒时间yyyy-mm-dd hh:mm |
||||
|
attachmentList: [] |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initForm (row) { |
||||
|
this.startLoading() |
||||
|
|
||||
|
this.difficultyId = row.id |
||||
|
await this.loadFormData() |
||||
|
|
||||
|
this.endLoading() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async loadFormData () { |
||||
|
|
||||
|
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/detail' |
||||
|
const url = '/gov/project/memoDifficulty/detail' |
||||
|
let params = { |
||||
|
id: this.difficultyId, |
||||
|
readFlag: '0', |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.formData = data |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleCancle () { |
||||
|
|
||||
|
|
||||
|
this.$emit('diaClose') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
//下载 |
||||
|
handleFileDownload (file) { |
||||
|
var a = document.createElement('a'); |
||||
|
var event = new MouseEvent('click'); |
||||
|
a.download = file.fileName; |
||||
|
console.log(a) |
||||
|
a.href = file.attachmentUrl; |
||||
|
a.dispatchEvent(event); |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: {}, |
||||
|
props: {} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/management/secretaryLog.scss"; |
||||
|
</style> |
||||
|
<style lang="scss" scoped> |
||||
|
</style> |
||||
|
|
||||
@ -0,0 +1,383 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
|
||||
|
<div class="dialog-h-content scroll-h"> |
||||
|
<el-form ref="ref_form" |
||||
|
:inline="true" |
||||
|
:model="formData" |
||||
|
:rules="dataRule" |
||||
|
class="form"> |
||||
|
|
||||
|
<el-form-item label="内容" |
||||
|
prop="content" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="100" |
||||
|
show-word-limit |
||||
|
:rows="3" |
||||
|
placeholder="请输入内容" |
||||
|
v-model="formData.content"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="解决方式" |
||||
|
prop="resolveWay" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="100" |
||||
|
show-word-limit |
||||
|
:rows="3" |
||||
|
placeholder="请输入解决方式" |
||||
|
v-model="formData.resolveWay"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="预计处理时间" |
||||
|
style="display: block" |
||||
|
prop="scheduledTime" |
||||
|
label-width="150px"> |
||||
|
<el-date-picker class="item_width_1" |
||||
|
v-model="formData.scheduledTime" |
||||
|
format="yyyy-MM-dd HH:mm" |
||||
|
value-format="yyyy-MM-dd HH:mm" |
||||
|
type="datetime" |
||||
|
placeholder="选择时间"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="提醒时间" |
||||
|
style="display: block" |
||||
|
prop="remindTime" |
||||
|
label-width="150px"> |
||||
|
<el-date-picker class="item_width_1" |
||||
|
v-model="formData.remindTime" |
||||
|
format="yyyy-MM-dd HH:mm" |
||||
|
value-format="yyyy-MM-dd HH:mm" |
||||
|
type="datetime" |
||||
|
placeholder="选择时间"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="备注" |
||||
|
prop="remark" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="100" |
||||
|
show-word-limit |
||||
|
:rows="3" |
||||
|
placeholder="请输入备注" |
||||
|
v-model="formData.remark"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item class="block" |
||||
|
label-width="150px" |
||||
|
style="display: block" |
||||
|
label="添加附件" |
||||
|
prop="attach"> |
||||
|
|
||||
|
<el-upload class="upload-demo" |
||||
|
:action="uploadUlr" |
||||
|
accept=".doc,.pdf,.xls,.docx,.xlsx" |
||||
|
:on-success="handleFileSuccess" |
||||
|
:on-remove="handleFileRemove" |
||||
|
:on-preview="handleFileDownload" |
||||
|
:limit="3" |
||||
|
:before-upload="beforeUpload" |
||||
|
:file-list="fileList"> |
||||
|
<el-button size="small" |
||||
|
:disabled="fileList.length==3" |
||||
|
type="primary">点击上传</el-button> |
||||
|
<div slot="tip" |
||||
|
class="el-upload__tip">最多三个附件,只能上传word、excel、pdf文件</div> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
|
||||
|
</el-form> |
||||
|
</div> |
||||
|
|
||||
|
<div class="div_btn"> |
||||
|
<el-button size="small" |
||||
|
@click="handleCancle">取 消</el-button> |
||||
|
<el-button size="small" |
||||
|
type="primary" |
||||
|
:disabled="btnDisable" |
||||
|
@click="handleComfirm">确 定</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 |
||||
|
|
||||
|
btnDisable: false, |
||||
|
|
||||
|
difficultyId: '', |
||||
|
formData: { |
||||
|
content: '',//内容 |
||||
|
resolveWay: '',//解决方式 |
||||
|
remark: '',//备注 |
||||
|
scheduledTime: '',//预计处理时间yyyy-mm-dd hh:mm |
||||
|
remindTime: '',//提醒时间yyyy-mm-dd hh:mm |
||||
|
attachmentList: [] |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
fileList: [], |
||||
|
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile', |
||||
|
dialogImageUrl: '', |
||||
|
dialogVisible: false |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initForm (type, difficultyId) { |
||||
|
this.startLoading() |
||||
|
this.$refs.ref_form.resetFields(); |
||||
|
|
||||
|
this.formType = type |
||||
|
if (difficultyId) { |
||||
|
this.difficultyId = difficultyId |
||||
|
this.formData.id = difficultyId |
||||
|
await this.loadFormData() |
||||
|
} |
||||
|
this.endLoading() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async loadFormData () { |
||||
|
|
||||
|
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/detail' |
||||
|
const url = '/gov/project/memoDifficulty/detail' |
||||
|
let params = { |
||||
|
id: this.difficultyId, |
||||
|
readFlag: '0', |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.formData = data |
||||
|
|
||||
|
if (data.attachmentList) { |
||||
|
data.attachmentList.forEach(element => { |
||||
|
element.name = element.fileName |
||||
|
element.type = element.attachmentType |
||||
|
element.size = element.attachmentSize |
||||
|
}); |
||||
|
this.fileList = data.attachmentList |
||||
|
} |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
async handleComfirm () { |
||||
|
this.btnDisable = true |
||||
|
setTimeout(() => { |
||||
|
this.btnDisable = false |
||||
|
}, 10000) |
||||
|
this.$refs['ref_form'].validate((valid, messageObj) => { |
||||
|
if (!valid) { |
||||
|
app.util.validateRule(messageObj) |
||||
|
this.btnDisable = false |
||||
|
} else { |
||||
|
|
||||
|
this.addDifficulty() |
||||
|
} |
||||
|
|
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
async addDifficulty () { |
||||
|
|
||||
|
|
||||
|
|
||||
|
if (this.fileList.length > 0) { |
||||
|
this.formData.attachmentList = this.fileList |
||||
|
} |
||||
|
|
||||
|
let url = '' |
||||
|
if (this.formType === 'add') { |
||||
|
url = '/gov/project/memoDifficulty/save' |
||||
|
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/save" |
||||
|
this.formData.id = '' |
||||
|
|
||||
|
} else { |
||||
|
url = '/gov/project/memoDifficulty/update' |
||||
|
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/update" |
||||
|
} |
||||
|
|
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, this.formData) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '操作成功' |
||||
|
}) |
||||
|
this.resetData() |
||||
|
this.$emit('dialogOk') |
||||
|
this.btnDisable = false |
||||
|
} else { |
||||
|
this.btnDisable = false |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleCancle () { |
||||
|
|
||||
|
this.resetData() |
||||
|
this.$emit('dialogCancle') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
beforeUpload (file) { |
||||
|
const array = file.name.split('.') |
||||
|
const extension = array[array.length - 1] |
||||
|
|
||||
|
if (extension !== 'xls' |
||||
|
&& extension !== 'xlsx' |
||||
|
&& extension !== 'doc' |
||||
|
&& extension !== 'docx' |
||||
|
&& extension !== 'pdf') { |
||||
|
this.$message.error('只能上传word、excel、pdf文件!') |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleFileRemove (file) { |
||||
|
|
||||
|
if (file && file.status === "success") { |
||||
|
this.fileList.splice(this.fileList.findIndex(item => item.uid === file.uid), 1) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleFileSuccess (res, file) { |
||||
|
|
||||
|
if (res.code === 0 && res.msg === 'success') { |
||||
|
const array = file.name.split('.') |
||||
|
const fileType = array[array.length - 1] |
||||
|
|
||||
|
file.fileName = file.name |
||||
|
file.attachmentUrl = res.data.url |
||||
|
file.attachmentSize = file.size |
||||
|
file.attachmentType = 'doc' |
||||
|
file.attachmentFormat = fileType |
||||
|
|
||||
|
this.fileList.push(file) |
||||
|
console.log(this.fileList) |
||||
|
} else this.$message.error(res.msg) |
||||
|
}, |
||||
|
|
||||
|
//下载 |
||||
|
handleFileDownload (file) { |
||||
|
|
||||
|
var a = document.createElement('a'); |
||||
|
var event = new MouseEvent('click'); |
||||
|
a.download = file.name; |
||||
|
console.log(a) |
||||
|
a.href = file.url; |
||||
|
a.dispatchEvent(event); |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
resetData () { |
||||
|
this.difficultyId = '' |
||||
|
|
||||
|
this.formData = { |
||||
|
content: '',//内容 |
||||
|
resolveWay: '',//解决方式 |
||||
|
remark: '',//备注 |
||||
|
scheduledTime: '',//预计处理时间yyyy-mm-dd hh:mm |
||||
|
remindTime: '',//提醒时间yyyy-mm-dd hh:mm |
||||
|
attachmentList: [] |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
dataRule () { |
||||
|
return { |
||||
|
resiName: [ |
||||
|
{ required: true, message: '关怀人员不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
content: [ |
||||
|
{ required: true, message: '关怀事项不能为空', trigger: 'blur' }, |
||||
|
], |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
|
||||
|
|
||||
|
// serviceList: { |
||||
|
// type: Array, |
||||
|
// default: [] |
||||
|
// }, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/visual/communityManageForm.scss"; |
||||
|
</style> |
||||
|
<style lang="scss" scoped> |
||||
|
.item_width_1 { |
||||
|
width: 560px; |
||||
|
} |
||||
|
.item_width_2 { |
||||
|
width: 220px; |
||||
|
} |
||||
|
|
||||
|
.text_p { |
||||
|
margin: 0; |
||||
|
padding: 0 10px; |
||||
|
border: 1px solid #d9d9d9; |
||||
|
border-radius: 5px; |
||||
|
> p { |
||||
|
margin: 0; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
@ -0,0 +1,531 @@ |
|||||
|
<template> |
||||
|
<div class="div_main"> |
||||
|
<div class="div_search"> |
||||
|
<el-form :inline="true" |
||||
|
:model="formData" |
||||
|
ref="ref_searchform" |
||||
|
:label-width="'100px'"> |
||||
|
<div> |
||||
|
<el-form-item label="内容摘要" |
||||
|
prop="content"> |
||||
|
<el-input v-model="formData.content" |
||||
|
size="small" |
||||
|
class="item_width_1" |
||||
|
clearable |
||||
|
placeholder="请输入内容摘要"> |
||||
|
</el-input> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="预计处理时间" |
||||
|
prop="scheduledStartTime"> |
||||
|
<el-date-picker v-model="scheduledTimeRange" |
||||
|
size="small" |
||||
|
type="daterange" |
||||
|
value-format="yyyy-MM-dd" |
||||
|
@change="handleScheduledTimeChange" |
||||
|
range-separator="至" |
||||
|
start-placeholder="开始时间" |
||||
|
end-placeholder="结束时间"> |
||||
|
</el-date-picker> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-form-item label="创建时间" |
||||
|
prop="startTime"> |
||||
|
<el-date-picker v-model="timeRange" |
||||
|
size="small" |
||||
|
type="daterange" |
||||
|
value-format="yyyy-MM-dd" |
||||
|
@change="handleTimeChange" |
||||
|
range-separator="至" |
||||
|
start-placeholder="开始时间" |
||||
|
end-placeholder="结束时间"> |
||||
|
</el-date-picker> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-button style="margin-left:10px" |
||||
|
class="diy-button--search" |
||||
|
size="small" |
||||
|
@click="handleSearch">查询</el-button> |
||||
|
<el-button style="margin-left:10px" |
||||
|
class="diy-button--reset" |
||||
|
size="small" |
||||
|
@click="resetSearch">重置</el-button> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
<div class="div_table"> |
||||
|
<div class="div_btn"> |
||||
|
<el-button style="" |
||||
|
class="diy-button--add" |
||||
|
size="small" |
||||
|
@click="handleAdd">新增</el-button> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<el-table class="table" |
||||
|
:data="tableData" |
||||
|
border |
||||
|
:height="tableHeight" |
||||
|
v-loading="tableLoading" |
||||
|
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
||||
|
style="width: 100%"> |
||||
|
|
||||
|
<el-table-column label="序号" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
type="index" |
||||
|
width="50"></el-table-column> |
||||
|
|
||||
|
<el-table-column prop="content" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="内容" |
||||
|
min-width="180"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div class="twoline">{{scope.row.content}}</div> |
||||
|
|
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="resolveWay" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="解决方式" |
||||
|
min-width="120"> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column prop="scheduledTime" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="预计处理时间" |
||||
|
width="170"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="remindTime" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="提醒时间" |
||||
|
width="170"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="remark" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="备注" |
||||
|
width="180"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="createdTime" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="创建时间" |
||||
|
width="170"> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column label="操作" |
||||
|
fixed="right" |
||||
|
width="170" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
class="operate"> |
||||
|
<template slot-scope="scope"> |
||||
|
|
||||
|
<el-button type="text" |
||||
|
class="div-table-button--detail" |
||||
|
size="small" |
||||
|
@click="handleDetail(scope.row)">查看</el-button> |
||||
|
<el-button v-if="!scope.row.actId" |
||||
|
type="text" |
||||
|
class="div-table-button--edit" |
||||
|
size="small" |
||||
|
@click="handleEdit(scope.row)">修改</el-button> |
||||
|
<el-button v-if="!scope.row.actId" |
||||
|
type="text" |
||||
|
class="div-table-button--detail" |
||||
|
size="small" |
||||
|
@click="handleExport(scope.row)">导出</el-button> |
||||
|
|
||||
|
<el-button type="text" |
||||
|
class="div-table-button--delete" |
||||
|
size="small" |
||||
|
@click="handleDelete(scope.row)">删除</el-button> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<div> |
||||
|
<el-pagination @size-change="handleSizeChange" |
||||
|
@current-change="handleCurrentChange" |
||||
|
:current-page.sync="pageNo" |
||||
|
:page-sizes="[10, 20, 50]" |
||||
|
:page-size="pageSize" |
||||
|
layout="sizes, prev, pager, next, total" |
||||
|
:total="total"> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- 修改弹出框 --> |
||||
|
<el-dialog :visible.sync="formShow" |
||||
|
:close-on-click-modal="false" |
||||
|
:close-on-press-escape="false" |
||||
|
:title="formTitle" |
||||
|
width="950px" |
||||
|
top="5vh" |
||||
|
class="dialog-h" |
||||
|
@closed="diaClose"> |
||||
|
<difficulty-form ref="ref_form" |
||||
|
@dialogCancle="addFormCancle" |
||||
|
@dialogOk="addFormOk"></difficulty-form> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<el-dialog :visible.sync="detailShow" |
||||
|
:close-on-click-modal="false" |
||||
|
:close-on-press-escape="false" |
||||
|
:title="'详情'" |
||||
|
width="950px" |
||||
|
top="5vh" |
||||
|
class="dialog-h" |
||||
|
@closed="diaClose"> |
||||
|
<difficulty-detail ref="ref_detail" |
||||
|
@diaClose="diaClose"></difficulty-detail> |
||||
|
</el-dialog> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import difficultyForm from './difficultyForm' |
||||
|
import difficultyDetail from './difficultyDetail' |
||||
|
import util from '@js/util.js'; |
||||
|
import { requestPost } from "@/js/dai/request"; |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
loading: false, |
||||
|
total: 0, |
||||
|
pageSize: 10, |
||||
|
pageNo: 0, |
||||
|
tableLoading: false, |
||||
|
|
||||
|
scheduledTimeRange: [], |
||||
|
timeRange: [], |
||||
|
formData: { |
||||
|
content: '',//内容摘要 |
||||
|
startTime: '',//开始时间yyyy-mm-dd |
||||
|
endTime: '',//结束时间yyyy-mm-dd |
||||
|
scheduledStartTime: '',//预计处理开始时间yyyy-mm-dd |
||||
|
scheduledEndTime: '',//预计处理结束时间 yyyy-mm-dd |
||||
|
}, |
||||
|
|
||||
|
tableData: [], |
||||
|
|
||||
|
//form相关 |
||||
|
formShow: false, |
||||
|
formTitle: '新增', |
||||
|
detailShow: false, |
||||
|
|
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: { |
||||
|
difficultyForm, difficultyDetail |
||||
|
}, |
||||
|
async created () { |
||||
|
|
||||
|
}, |
||||
|
async mounted () { |
||||
|
|
||||
|
//获取网格下拉框数据 |
||||
|
await this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
handleSearch () { |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
async loadTable () { |
||||
|
this.tableLoading = true |
||||
|
|
||||
|
const url = "/gov/project/memoDifficulty/page" |
||||
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/page" |
||||
|
let params = { |
||||
|
pageSize: this.pageSize, |
||||
|
pageNo: this.pageNo, |
||||
|
...this.formData |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.total = data.total |
||||
|
this.tableData = data.list |
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
this.tableLoading = false |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
diaClose () { |
||||
|
if (this.formShow) { |
||||
|
this.$refs.ref_form.resetData() |
||||
|
this.formShow = false |
||||
|
} else { |
||||
|
this.detailShow = false |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
handleDetail (row) { |
||||
|
this.detailShow = true |
||||
|
this.formTitle = '详情' |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.ref_detail.initForm(row) |
||||
|
|
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
handleAdd () { |
||||
|
this.formTitle = '新增' |
||||
|
this.formShow = true |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.ref_form.initForm('add', null) |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
handleEdit (row) { |
||||
|
this.formTitle = '修改' |
||||
|
this.formShow = true |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.ref_form.initForm('edit', row.id) |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
addFormCancle () { |
||||
|
this.formShow = false |
||||
|
}, |
||||
|
addFormOk () { |
||||
|
this.formShow = false |
||||
|
this.loadTable() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async handleDelete (row) { |
||||
|
|
||||
|
this.$confirm("确认删除?", "提示", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning" |
||||
|
}) |
||||
|
.then(() => { |
||||
|
this.deleteDifficulty(row) |
||||
|
}) |
||||
|
.catch(err => { |
||||
|
if (err == "cancel") { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
async deleteDifficulty (row) { |
||||
|
const url = "/gov/project/memoDifficulty/delete" |
||||
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/delete" |
||||
|
let ids = [row.id] |
||||
|
let params = { |
||||
|
ids: ids |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, ids) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "删除成功" |
||||
|
}); |
||||
|
|
||||
|
this.loadTable() |
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//重置搜索条件 |
||||
|
resetSearch () { |
||||
|
this.scheduledTimeRange = [] |
||||
|
this.timeRange = [] |
||||
|
this.formData = { |
||||
|
content: '',//内容摘要 |
||||
|
startTime: '',//开始时间yyyy-mm-dd |
||||
|
endTime: '',//结束时间yyyy-mm-dd |
||||
|
scheduledStartTime: '',//预计处理开始时间yyyy-mm-dd |
||||
|
scheduledEndTime: '',//预计处理结束时间 yyyy-mm-dd |
||||
|
} |
||||
|
this.pageSize = 10 |
||||
|
this.pageNo = 0 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
//导出表格 |
||||
|
async handleExport (row) { |
||||
|
let title = '难点堵点详情' |
||||
|
let url = `/gov/project/memoDifficulty/${row.id}/exportWord` |
||||
|
|
||||
|
let params = {} |
||||
|
|
||||
|
app.ajax.exportFilePost( |
||||
|
url, |
||||
|
params, |
||||
|
(data, rspMsg) => { |
||||
|
|
||||
|
this.download(data, title + '.doc') |
||||
|
}, |
||||
|
(rspMsg, data) => { |
||||
|
this.$message.error(rspMsg); |
||||
|
} |
||||
|
); |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
// 下载文件 |
||||
|
download (data, fileName) { |
||||
|
if (!data) { |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
var csvData = new Blob([data]) |
||||
|
|
||||
|
if (window.navigator && window.navigator.msSaveOrOpenBlob) { |
||||
|
window.navigator.msSaveOrOpenBlob(csvData, fileName); |
||||
|
} |
||||
|
// for Non-IE (chrome, firefox etc.) |
||||
|
else { |
||||
|
var a = document.createElement('a'); |
||||
|
document.body.appendChild(a); |
||||
|
a.style = 'display: none'; |
||||
|
var url = window.URL.createObjectURL(csvData); |
||||
|
a.href = url; |
||||
|
a.download = fileName; |
||||
|
a.click(); |
||||
|
a.remove(); |
||||
|
window.URL.revokeObjectURL(url); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleScheduledTimeChange (time) { |
||||
|
if (time) { |
||||
|
this.formData.scheduledStartTime = time[0] |
||||
|
this.formData.scheduledEndTime = time[1] |
||||
|
|
||||
|
} else { |
||||
|
this.formData.scheduledStartTime = '' |
||||
|
this.formData.scheduledEndTime = '' |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
handleTimeChange (time) { |
||||
|
if (time) { |
||||
|
this.formData.startTime = time[0] |
||||
|
this.formData.endTime = time[1] |
||||
|
|
||||
|
} else { |
||||
|
this.formData.startTime = '' |
||||
|
this.formData.endTime = '' |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleSizeChange (val) { |
||||
|
this.pageSize = val |
||||
|
this.pageNo = 1 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
handleCurrentChange (val) { |
||||
|
this.pageNo = val |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
tableHeight () { |
||||
|
|
||||
|
return (this.clientHeight - 380) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
...mapGetters(['clientHeight']) |
||||
|
}, |
||||
|
watch: { |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped > |
||||
|
.div_main { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.div_search { |
||||
|
background: #ffffff; |
||||
|
border-radius: 4px; |
||||
|
padding: 30px 20px 5px; |
||||
|
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
||||
|
} |
||||
|
|
||||
|
.item_width_1 { |
||||
|
width: 260px; |
||||
|
} |
||||
|
|
||||
|
.div_table { |
||||
|
background: #ffffff; |
||||
|
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
||||
|
border-radius: 4px; |
||||
|
margin-top: 15px; |
||||
|
padding: 23px 30px 10px; |
||||
|
|
||||
|
.table { |
||||
|
margin-top: 20px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.el-row { |
||||
|
/* margin-bottom: 20px; */ |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
margin-top: 10px; |
||||
|
margin-right: 50px; |
||||
|
} |
||||
|
|
||||
|
.twoline { |
||||
|
display: -webkit-box; |
||||
|
-webkit-box-orient: vertical; |
||||
|
-webkit-line-clamp: 2; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,182 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
|
||||
|
<div class="dialog-h-content scroll-h div_form"> |
||||
|
|
||||
|
<div v-if="formData.concernType" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">关怀类型</div> |
||||
|
<div class="item_content"> {{formData.concernType}}</div> |
||||
|
</div> |
||||
|
<div class="form_item"> |
||||
|
<div class="item_title">关怀人员</div> |
||||
|
<div class="item_content"> {{formData.resiName}}</div> |
||||
|
</div> |
||||
|
<div v-if="formData.phone" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">电话</div> |
||||
|
<div class="item_content"> {{formData.phone}}</div> |
||||
|
</div> |
||||
|
<div v-if="formData.address" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">地址</div> |
||||
|
<div class="item_content"> {{formData.address}}</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="form_item"> |
||||
|
<div class="item_title">关怀事项</div> |
||||
|
<div class="item_content"> {{formData.content}}</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="formData.scheduledTime" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">预计关怀时间</div> |
||||
|
<div class="item_content"> {{formData.scheduledTime}}</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="formData.remindTime" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">提醒时间</div> |
||||
|
<div class="item_content"> {{formData.remindTime}}</div> |
||||
|
</div> |
||||
|
<div v-if="formData.status" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">状态</div> |
||||
|
<div class="item_content"> {{formData.status==='0'?'未完成':'已完成'}}</div> |
||||
|
</div> |
||||
|
<div v-if="formData.attachmentList.length>0" |
||||
|
class="form_item"> |
||||
|
<div class="item_title">附件</div> |
||||
|
<div> |
||||
|
<div class="attach_item" |
||||
|
v-for="(item, index) in formData.attachmentList" |
||||
|
:key="index"> |
||||
|
<i class="el-icon-tickets"></i> |
||||
|
<div class="attach_item_name" |
||||
|
@click="handleFileDownload(item)">{{item.fileName}}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="div_btn"> |
||||
|
<el-button size="small" |
||||
|
@click="handleCancle">取 消</el-button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
|
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
|
||||
|
careId: '', |
||||
|
formData: { |
||||
|
content: '',//关怀事项 |
||||
|
concernType: '',//关怀类型 |
||||
|
resiName: '',//关怀人员 |
||||
|
status: '',//状态 0未完成 1已完成 |
||||
|
phone: '',//电话 |
||||
|
address: '',//地址 |
||||
|
scheduledTime: '',//预计关怀时间yyyy-mm-dd hh:mm |
||||
|
remindTime: '',//提醒时间yyyy-mm-dd hh:mm |
||||
|
attachmentList: [] |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initForm (row) { |
||||
|
this.startLoading() |
||||
|
|
||||
|
this.careId = row.id |
||||
|
await this.loadFormData() |
||||
|
|
||||
|
this.endLoading() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async loadFormData () { |
||||
|
|
||||
|
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern' |
||||
|
const url = '/gov/project/memoConcern' |
||||
|
let params = { |
||||
|
id: this.careId, |
||||
|
readFlag: '0', |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.formData = data |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleCancle () { |
||||
|
|
||||
|
|
||||
|
this.$emit('diaClose') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
//下载 |
||||
|
handleFileDownload (file) { |
||||
|
|
||||
|
var a = document.createElement('a'); |
||||
|
var event = new MouseEvent('click'); |
||||
|
a.download = file.fileName; |
||||
|
console.log(a) |
||||
|
a.href = file.attachmentUrl; |
||||
|
a.dispatchEvent(event); |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: {}, |
||||
|
props: {} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/management/secretaryLog.scss"; |
||||
|
</style> |
||||
|
<style lang="scss" scoped> |
||||
|
</style> |
||||
|
|
||||
@ -0,0 +1,457 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
|
||||
|
<div class="dialog-h-content scroll-h"> |
||||
|
<el-form ref="ref_form" |
||||
|
:inline="true" |
||||
|
:model="formData" |
||||
|
:rules="dataRule" |
||||
|
class="form"> |
||||
|
|
||||
|
<el-form-item label="关怀类型" |
||||
|
prop="concernType" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_2" |
||||
|
placeholder="请输入关怀类型" |
||||
|
v-model="formData.concernType"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="关怀人员" |
||||
|
prop="resiName" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_2" |
||||
|
placeholder="请输入关怀人员" |
||||
|
v-model="formData.resiName"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="电话" |
||||
|
prop="phone" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_2" |
||||
|
placeholder="请输入电话" |
||||
|
v-model="formData.phone"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="地址" |
||||
|
prop="address" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
placeholder="请输入地址" |
||||
|
v-model="formData.address"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="关怀事项" |
||||
|
prop="content" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="100" |
||||
|
show-word-limit |
||||
|
:rows="3" |
||||
|
placeholder="请输入关怀事项" |
||||
|
v-model="formData.content"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="预计关怀时间" |
||||
|
style="display: block" |
||||
|
prop="scheduledTime" |
||||
|
label-width="150px"> |
||||
|
<el-date-picker class="item_width_2" |
||||
|
v-model="formData.scheduledTime" |
||||
|
format="yyyy-MM-dd HH:mm" |
||||
|
value-format="yyyy-MM-dd HH:mm" |
||||
|
type="datetime" |
||||
|
placeholder="选择时间"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="提醒时间" |
||||
|
style="display: block" |
||||
|
prop="remindTime" |
||||
|
label-width="150px"> |
||||
|
<el-date-picker class="item_width_2" |
||||
|
v-model="formData.remindTime" |
||||
|
format="yyyy-MM-dd HH:mm" |
||||
|
value-format="yyyy-MM-dd HH:mm" |
||||
|
type="datetime" |
||||
|
placeholder="选择时间"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="状态" |
||||
|
label-width="150px" |
||||
|
prop="status"> |
||||
|
|
||||
|
<el-select class="item_width_2" |
||||
|
v-model="formData.status" |
||||
|
placeholder="请选择" |
||||
|
clearable> |
||||
|
<el-option class="item_width_2" |
||||
|
v-for="item in stateList" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item class="block" |
||||
|
label-width="150px" |
||||
|
style="display: block" |
||||
|
label="添加附件" |
||||
|
prop="attach"> |
||||
|
|
||||
|
<el-upload class="upload-demo" |
||||
|
:action="uploadUlr" |
||||
|
accept=".doc,.pdf,.xls,.docx,.xlsx" |
||||
|
:on-success="handleFileSuccess" |
||||
|
:on-remove="handleFileRemove" |
||||
|
:on-preview="handleFileDownload" |
||||
|
:limit="3" |
||||
|
:before-upload="beforeUpload" |
||||
|
:file-list="fileList"> |
||||
|
<el-button size="small" |
||||
|
:disabled="fileList.length==3" |
||||
|
type="primary">点击上传</el-button> |
||||
|
<div slot="tip" |
||||
|
class="el-upload__tip">最多三个附件,只能上传word、excel、pdf文件</div> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
|
||||
|
</el-form> |
||||
|
</div> |
||||
|
|
||||
|
<div class="div_btn"> |
||||
|
<el-button size="small" |
||||
|
@click="handleCancle">取 消</el-button> |
||||
|
<el-button size="small" |
||||
|
type="primary" |
||||
|
:disabled="btnDisable" |
||||
|
@click="handleComfirm">确 定</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 |
||||
|
stateList: [ |
||||
|
{ |
||||
|
value: 1, |
||||
|
label: '已完成' |
||||
|
}, |
||||
|
{ |
||||
|
value: 0, |
||||
|
label: '未完成' |
||||
|
}, |
||||
|
], |
||||
|
|
||||
|
btnDisable: false, |
||||
|
|
||||
|
careId: '', |
||||
|
formData: { |
||||
|
content: '',//关怀事项 |
||||
|
concernType: '',//关怀类型 |
||||
|
resiName: '',//关怀人员 |
||||
|
status: '',//状态 0未完成 1已完成 |
||||
|
phone: '',//电话 |
||||
|
address: '',//地址 |
||||
|
scheduledTime: '',//预计关怀时间yyyy-mm-dd hh:mm |
||||
|
remindTime: '',//提醒时间yyyy-mm-dd hh:mm |
||||
|
attachmentList: [] |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
fileList: [], |
||||
|
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile', |
||||
|
dialogImageUrl: '', |
||||
|
dialogVisible: false |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initForm (type, careId) { |
||||
|
this.startLoading() |
||||
|
this.$refs['ref_form'].resetFields(); |
||||
|
|
||||
|
this.formType = type |
||||
|
if (careId) { |
||||
|
this.careId = careId |
||||
|
this.formData.id = careId |
||||
|
await this.loadFormData() |
||||
|
} |
||||
|
this.endLoading() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async loadFormData () { |
||||
|
|
||||
|
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern' |
||||
|
const url = '/gov/project/memoConcern' |
||||
|
let params = { |
||||
|
id: this.careId, |
||||
|
readFlag: '0', |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.formData = data |
||||
|
|
||||
|
if (data.attachmentList) { |
||||
|
data.attachmentList.forEach(element => { |
||||
|
element.name = element.fileName |
||||
|
element.type = element.attachmentType |
||||
|
element.size = element.attachmentSize |
||||
|
}); |
||||
|
this.fileList = data.attachmentList |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
async handleComfirm () { |
||||
|
this.btnDisable = true |
||||
|
setTimeout(() => { |
||||
|
this.btnDisable = false |
||||
|
}, 10000) |
||||
|
this.$refs['ref_form'].validate((valid, messageObj) => { |
||||
|
if (!valid) { |
||||
|
app.util.validateRule(messageObj) |
||||
|
this.btnDisable = false |
||||
|
} else { |
||||
|
|
||||
|
this.addCare() |
||||
|
} |
||||
|
|
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
async addCare () { |
||||
|
|
||||
|
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 |
||||
|
// if (regPhone.test(this.formData.mobile) === false) { |
||||
|
// this.btnDisable = false |
||||
|
// this.$message({ |
||||
|
// type: 'warning', |
||||
|
// message: '请输入正确的手机号码' |
||||
|
// }) |
||||
|
// return false; |
||||
|
// } |
||||
|
|
||||
|
if (this.fileList.length > 0) { |
||||
|
this.formData.attachmentList = this.fileList |
||||
|
} |
||||
|
|
||||
|
let url = '' |
||||
|
if (this.formType === 'add') { |
||||
|
url = '/gov/project/memoConcern/save' |
||||
|
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/save" |
||||
|
this.formData.id = '' |
||||
|
|
||||
|
} else { |
||||
|
url = '/gov/project/memoConcern/update' |
||||
|
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/update" |
||||
|
} |
||||
|
|
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, this.formData) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '操作成功' |
||||
|
}) |
||||
|
this.resetData() |
||||
|
this.$emit('dialogOk') |
||||
|
this.btnDisable = false |
||||
|
} else { |
||||
|
this.btnDisable = false |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleCancle () { |
||||
|
|
||||
|
this.resetData() |
||||
|
this.$emit('dialogCancle') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
beforeUpload (file) { |
||||
|
const array = file.name.split('.') |
||||
|
const extension = array[array.length - 1] |
||||
|
|
||||
|
if (extension !== 'xls' |
||||
|
&& extension !== 'xlsx' |
||||
|
&& extension !== 'doc' |
||||
|
&& extension !== 'docx' |
||||
|
&& extension !== 'pdf') { |
||||
|
this.$message.error('只能上传word、excel、pdf文件!') |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleFileRemove (file) { |
||||
|
|
||||
|
if (file && file.status === "success") { |
||||
|
this.fileList.splice(this.fileList.findIndex(item => item.uid === file.uid), 1) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleFileSuccess (res, file) { |
||||
|
|
||||
|
if (res.code === 0 && res.msg === 'success') { |
||||
|
const array = file.name.split('.') |
||||
|
const fileType = array[array.length - 1] |
||||
|
|
||||
|
file.fileName = file.name |
||||
|
file.attachmentUrl = res.data.url |
||||
|
file.attachmentSize = file.size |
||||
|
file.attachmentType = 'doc' |
||||
|
file.attachmentFormat = fileType |
||||
|
|
||||
|
this.fileList.push(file) |
||||
|
console.log(this.fileList) |
||||
|
} else this.$message.error(res.msg) |
||||
|
}, |
||||
|
|
||||
|
//下载 |
||||
|
handleFileDownload (file) { |
||||
|
|
||||
|
var a = document.createElement('a'); |
||||
|
var event = new MouseEvent('click'); |
||||
|
a.download = file.name; |
||||
|
console.log(a) |
||||
|
a.href = file.url; |
||||
|
a.dispatchEvent(event); |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
resetData () { |
||||
|
this.careId = '' |
||||
|
|
||||
|
this.formData = { |
||||
|
content: '',//关怀事项 |
||||
|
concernType: '',//关怀类型 |
||||
|
resiName: '',//关怀人员 |
||||
|
status: '',//状态 0未完成 1已完成 |
||||
|
phone: '',//电话 |
||||
|
address: '',//地址 |
||||
|
scheduledTime: '',//预计关怀时间yyyy-mm-dd hh:mm |
||||
|
remindTime: '',//提醒时间yyyy-mm-dd hh:mm |
||||
|
attachmentList: [] |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
dataRule () { |
||||
|
return { |
||||
|
resiName: [ |
||||
|
{ required: true, message: '关怀人员不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
content: [ |
||||
|
{ required: true, message: '关怀事项不能为空', trigger: 'blur' }, |
||||
|
], |
||||
|
concernType: [ |
||||
|
{ required: false }, |
||||
|
], |
||||
|
status: [ |
||||
|
{ required: false }, |
||||
|
], |
||||
|
phone: [ |
||||
|
{ required: false }, |
||||
|
], |
||||
|
address: [ |
||||
|
{ required: false }, |
||||
|
], |
||||
|
scheduledTime: [ |
||||
|
{ required: false }, |
||||
|
], |
||||
|
remindTime: [ |
||||
|
{ required: false }, |
||||
|
], |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
|
||||
|
|
||||
|
// serviceList: { |
||||
|
// type: Array, |
||||
|
// default: [] |
||||
|
// }, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/visual/communityManageForm.scss"; |
||||
|
</style> |
||||
|
<style lang="scss" scoped> |
||||
|
.item_width_1 { |
||||
|
width: 560px; |
||||
|
} |
||||
|
.item_width_2 { |
||||
|
width: 220px; |
||||
|
} |
||||
|
|
||||
|
.text_p { |
||||
|
margin: 0; |
||||
|
padding: 0 10px; |
||||
|
border: 1px solid #d9d9d9; |
||||
|
border-radius: 5px; |
||||
|
> p { |
||||
|
margin: 0; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
@ -0,0 +1,603 @@ |
|||||
|
<template> |
||||
|
<div class="div_main"> |
||||
|
<div class="div_search"> |
||||
|
<el-form :inline="true" |
||||
|
:model="formData" |
||||
|
ref="ref_searchform" |
||||
|
:label-width="'100px'"> |
||||
|
<div> |
||||
|
<el-form-item label="关怀类型" |
||||
|
prop="concernType"> |
||||
|
<el-input v-model="formData.concernType" |
||||
|
size="small" |
||||
|
class="item_width_1" |
||||
|
clearable |
||||
|
placeholder="请输入内容"> |
||||
|
</el-input> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-form-item label="关怀人员" |
||||
|
prop="resiName"> |
||||
|
<el-input v-model="formData.resiName" |
||||
|
size="small" |
||||
|
class="item_width_1" |
||||
|
clearable |
||||
|
placeholder="请输入内容"> |
||||
|
</el-input> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-form-item label="关怀事项" |
||||
|
prop="content"> |
||||
|
<el-input v-model="formData.content" |
||||
|
size="small" |
||||
|
class="item_width_1" |
||||
|
clearable |
||||
|
placeholder="请输入内容"> |
||||
|
</el-input> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="状态" |
||||
|
prop="status"> |
||||
|
<el-select class="item_width_1" |
||||
|
v-model="formData.status" |
||||
|
size="small" |
||||
|
placeholder="全部" |
||||
|
clearable> |
||||
|
<el-option v-for="item in stateList" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
</div> |
||||
|
<div> |
||||
|
|
||||
|
<el-form-item label="预计关怀时间" |
||||
|
prop="scheduledStartTime"> |
||||
|
<el-date-picker v-model="scheduledTimeRange" |
||||
|
size="small" |
||||
|
type="daterange" |
||||
|
value-format="yyyy-MM-dd" |
||||
|
@change="handleScheduledTimeChange" |
||||
|
range-separator="至" |
||||
|
start-placeholder="开始时间" |
||||
|
end-placeholder="结束时间"> |
||||
|
</el-date-picker> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-form-item label="创建时间" |
||||
|
prop="startTime"> |
||||
|
<el-date-picker v-model="timeRange" |
||||
|
size="small" |
||||
|
type="daterange" |
||||
|
value-format="yyyy-MM-dd" |
||||
|
@change="handleTimeChange" |
||||
|
range-separator="至" |
||||
|
start-placeholder="开始时间" |
||||
|
end-placeholder="结束时间"> |
||||
|
</el-date-picker> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-button style="margin-left:10px" |
||||
|
class="diy-button--search" |
||||
|
size="small" |
||||
|
@click="handleSearch">查询</el-button> |
||||
|
<el-button style="margin-left:10px" |
||||
|
class="diy-button--reset" |
||||
|
size="small" |
||||
|
@click="resetSearch">重置</el-button> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
<div class="div_table"> |
||||
|
<div class="div_btn"> |
||||
|
<el-button style="" |
||||
|
class="diy-button--add" |
||||
|
size="small" |
||||
|
@click="handleAdd">新增</el-button> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<el-table class="table" |
||||
|
:data="tableData" |
||||
|
border |
||||
|
:height="tableHeight" |
||||
|
v-loading="tableLoading" |
||||
|
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
||||
|
style="width: 100%"> |
||||
|
|
||||
|
<el-table-column label="序号" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
type="index" |
||||
|
width="50"></el-table-column> |
||||
|
<el-table-column prop="concernType" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="关怀类型" |
||||
|
width="180"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="resiName" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="关怀人员" |
||||
|
min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="phnoe" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="电话" |
||||
|
width="120"> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column prop="address" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="地址" |
||||
|
min-width="150"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="content" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="关怀事项" |
||||
|
min-width="200"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="scheduledTime" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="预计关怀时间" |
||||
|
width="170"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="remindTime" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="提醒时间" |
||||
|
width="170"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="status" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="状态" |
||||
|
width="80"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div>{{scope.row.status===0?'未完成':'已完成'}}</div> |
||||
|
|
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="createdTime" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="创建时间" |
||||
|
width="170"> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column label="操作" |
||||
|
fixed="right" |
||||
|
width="170" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
class="operate"> |
||||
|
<template slot-scope="scope"> |
||||
|
|
||||
|
<el-button type="text" |
||||
|
class="div-table-button--detail" |
||||
|
size="small" |
||||
|
@click="handleDetail(scope.row)">查看</el-button> |
||||
|
<el-button v-if="!scope.row.actId" |
||||
|
type="text" |
||||
|
class="div-table-button--edit" |
||||
|
size="small" |
||||
|
@click="handleEdit(scope.row)">修改</el-button> |
||||
|
<el-button v-if="!scope.row.actId" |
||||
|
type="text" |
||||
|
class="div-table-button--detail" |
||||
|
size="small" |
||||
|
@click="handleExport(scope.row)">导出</el-button> |
||||
|
|
||||
|
<el-button type="text" |
||||
|
class="div-table-button--delete" |
||||
|
size="small" |
||||
|
@click="handleDelete(scope.row)">删除</el-button> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<div> |
||||
|
<el-pagination @size-change="handleSizeChange" |
||||
|
@current-change="handleCurrentChange" |
||||
|
:current-page.sync="pageNo" |
||||
|
:page-sizes="[10, 20, 50]" |
||||
|
:page-size="pageSize" |
||||
|
layout="sizes, prev, pager, next, total" |
||||
|
:total="total"> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- 修改弹出框 --> |
||||
|
<el-dialog :visible.sync="formShow" |
||||
|
:close-on-click-modal="false" |
||||
|
:close-on-press-escape="false" |
||||
|
:title="formTitle" |
||||
|
width="950px" |
||||
|
top="5vh" |
||||
|
class="dialog-h" |
||||
|
@closed="diaClose"> |
||||
|
<care-form ref="ref_form" |
||||
|
@dialogCancle="addFormCancle" |
||||
|
@dialogOk="addFormOk"></care-form> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<el-dialog :visible.sync="detailShow" |
||||
|
:close-on-click-modal="false" |
||||
|
:close-on-press-escape="false" |
||||
|
:title="'详情'" |
||||
|
width="950px" |
||||
|
top="5vh" |
||||
|
class="dialog-h" |
||||
|
@closed="diaClose"> |
||||
|
<care-detail ref="ref_detail" |
||||
|
@diaClose="diaClose"></care-detail> |
||||
|
</el-dialog> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import careForm from './careForm' |
||||
|
import careDetail from './careDetail' |
||||
|
import util from '@js/util.js'; |
||||
|
import { requestPost } from "@/js/dai/request"; |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
loading: false, |
||||
|
total: 0, |
||||
|
pageSize: 10, |
||||
|
pageNo: 0, |
||||
|
tableLoading: false, |
||||
|
|
||||
|
stateList: [ |
||||
|
{ |
||||
|
value: 1, |
||||
|
label: '已完成' |
||||
|
}, |
||||
|
{ |
||||
|
value: 0, |
||||
|
label: '未完成' |
||||
|
}, |
||||
|
], |
||||
|
|
||||
|
scheduledTimeRange: [], |
||||
|
timeRange: [], |
||||
|
formData: { |
||||
|
content: '',//关怀事项 |
||||
|
concernType: '',//关怀类型 |
||||
|
resiName: '',//关怀人员 |
||||
|
status: '',//状态 0未完成 1已完成 |
||||
|
startTime: '',//开始时间 yyyy-mm-dd |
||||
|
endTime: '',//结束时间 yyyy-mm-dd |
||||
|
scheduledStartTime: '',//预计关怀开始时间 yyyy-mm-dd |
||||
|
scheduledEndTime: '',//预计关怀结束时间 yyyy-mm-dd |
||||
|
}, |
||||
|
|
||||
|
tableData: [], |
||||
|
|
||||
|
//form相关 |
||||
|
formShow: false, |
||||
|
formTitle: '新增', |
||||
|
detailShow: false, |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: { |
||||
|
careForm, careDetail |
||||
|
}, |
||||
|
async created () { |
||||
|
|
||||
|
}, |
||||
|
async mounted () { |
||||
|
|
||||
|
//获取网格下拉框数据 |
||||
|
await this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
handleSearch () { |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
async loadTable () { |
||||
|
this.tableLoading = true |
||||
|
|
||||
|
const url = "/gov/project/memoConcern/page" |
||||
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/page" |
||||
|
let params = { |
||||
|
pageSize: this.pageSize, |
||||
|
pageNo: this.pageNo, |
||||
|
...this.formData |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.total = data.total |
||||
|
this.tableData = data.list |
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
this.tableLoading = false |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
diaClose () { |
||||
|
if (this.formShow) { |
||||
|
// this.$refs.ref_form.resetData() |
||||
|
this.formShow = false |
||||
|
} else { |
||||
|
this.detailShow = false |
||||
|
} |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
handleDetail (row) { |
||||
|
this.detailShow = true |
||||
|
this.formTitle = '详情' |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.ref_detail.initForm(row) |
||||
|
|
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
handleAdd () { |
||||
|
this.formTitle = '新增' |
||||
|
this.formShow = true |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.ref_form.initForm('add', null) |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
handleEdit (row) { |
||||
|
this.formTitle = '修改' |
||||
|
this.formShow = true |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.ref_form.initForm('edit', row.id) |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
addFormCancle () { |
||||
|
this.formShow = false |
||||
|
}, |
||||
|
addFormOk () { |
||||
|
this.formShow = false |
||||
|
this.loadTable() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async handleDelete (row) { |
||||
|
|
||||
|
this.$confirm("确认删除?", "提示", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning" |
||||
|
}) |
||||
|
.then(() => { |
||||
|
this.deleteCare(row) |
||||
|
}) |
||||
|
.catch(err => { |
||||
|
if (err == "cancel") { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
async deleteCare (row) { |
||||
|
const url = "/gov/project/memoConcern/delete" |
||||
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/delete" |
||||
|
let ids = [row.id] |
||||
|
let params = { |
||||
|
ids: ids |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, ids) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "删除成功" |
||||
|
}); |
||||
|
|
||||
|
this.loadTable() |
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//重置搜索条件 |
||||
|
resetSearch () { |
||||
|
this.scheduledTimeRange = [] |
||||
|
this.timeRange = [] |
||||
|
this.formData = { |
||||
|
content: '',//关怀事项 |
||||
|
concernType: '',//关怀类型 |
||||
|
resiName: '',//关怀人员 |
||||
|
status: '',//状态 0未完成 1已完成 |
||||
|
startTime: '',//开始时间 yyyy-mm-dd |
||||
|
endTime: '',//结束时间 yyyy-mm-dd |
||||
|
scheduledStartTime: '',//预计关怀开始时间 yyyy-mm-dd |
||||
|
scheduledEndTime: '',//预计关怀结束时间 yyyy-mm-dd |
||||
|
} |
||||
|
this.pageSize = 10 |
||||
|
this.pageNo = 0 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
//导出表格 |
||||
|
async handleExport (row) { |
||||
|
let title = '人员关怀' |
||||
|
|
||||
|
let url = `/gov/project/memoConcern/${row.id}/exportWord` |
||||
|
let params = {} |
||||
|
|
||||
|
app.ajax.exportFilePost( |
||||
|
url, |
||||
|
params, |
||||
|
(data, rspMsg) => { |
||||
|
|
||||
|
this.download(data, title + '.doc') |
||||
|
}, |
||||
|
(rspMsg, data) => { |
||||
|
this.$message.error(rspMsg); |
||||
|
} |
||||
|
); |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
// 下载文件 |
||||
|
download (data, fileName) { |
||||
|
if (!data) { |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
var csvData = new Blob([data]) |
||||
|
|
||||
|
if (window.navigator && window.navigator.msSaveOrOpenBlob) { |
||||
|
window.navigator.msSaveOrOpenBlob(csvData, fileName); |
||||
|
} |
||||
|
// for Non-IE (chrome, firefox etc.) |
||||
|
else { |
||||
|
var a = document.createElement('a'); |
||||
|
document.body.appendChild(a); |
||||
|
a.style = 'display: none'; |
||||
|
var url = window.URL.createObjectURL(csvData); |
||||
|
a.href = url; |
||||
|
a.download = fileName; |
||||
|
a.click(); |
||||
|
a.remove(); |
||||
|
window.URL.revokeObjectURL(url); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleScheduledTimeChange (time) { |
||||
|
if (time) { |
||||
|
this.formData.scheduledStartTime = time[0] |
||||
|
this.formData.scheduledEndTime = time[1] |
||||
|
|
||||
|
} else { |
||||
|
this.formData.scheduledStartTime = '' |
||||
|
this.formData.scheduledEndTime = '' |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
handleTimeChange (time) { |
||||
|
if (time) { |
||||
|
this.formData.startTime = time[0] |
||||
|
this.formData.endTime = time[1] |
||||
|
|
||||
|
} else { |
||||
|
this.formData.startTime = '' |
||||
|
this.formData.endTime = '' |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleSizeChange (val) { |
||||
|
this.pageSize = val |
||||
|
this.pageNo = 1 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
handleCurrentChange (val) { |
||||
|
this.pageNo = val |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
tableHeight () { |
||||
|
|
||||
|
return (this.clientHeight - 430) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
...mapGetters(['clientHeight']) |
||||
|
}, |
||||
|
watch: { |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped > |
||||
|
.div_main { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.div_search { |
||||
|
background: #ffffff; |
||||
|
border-radius: 4px; |
||||
|
padding: 30px 20px 5px; |
||||
|
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
||||
|
} |
||||
|
|
||||
|
.item_width_1 { |
||||
|
width: 260px; |
||||
|
} |
||||
|
.item_width_2 { |
||||
|
width: 495px; |
||||
|
} |
||||
|
|
||||
|
.div_table { |
||||
|
background: #ffffff; |
||||
|
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
||||
|
border-radius: 4px; |
||||
|
margin-top: 15px; |
||||
|
padding: 23px 30px 10px; |
||||
|
|
||||
|
.table { |
||||
|
margin-top: 20px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.div_btn { |
||||
|
} |
||||
|
|
||||
|
.el-row { |
||||
|
/* margin-bottom: 20px; */ |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
margin-top: 10px; |
||||
|
margin-right: 50px; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,51 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="m-hint"> |
||||
|
<div class="wrap"> |
||||
|
<img src="@/assets/img/unopen-hint.png" alt="" /> |
||||
|
<span>功能暂未开放</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
data() { |
||||
|
return {}; |
||||
|
}, |
||||
|
components: {}, |
||||
|
mounted() {}, |
||||
|
methods: { |
||||
|
changeCustomerName(customerName) {}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.m-hint { |
||||
|
position: relative; |
||||
|
background-color: #ffffff; |
||||
|
height: calc(100vh - 150px); |
||||
|
|
||||
|
.wrap { |
||||
|
position: absolute; |
||||
|
display: block; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
margin: auto; |
||||
|
width: 271px; |
||||
|
height: 240px; |
||||
|
font-size: 20px; |
||||
|
line-height: 30px; |
||||
|
font-weight: bold; |
||||
|
color: #aaa; |
||||
|
text-align: center; |
||||
|
img { |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,103 @@ |
|||||
|
<template> |
||||
|
<div class="msg-tips" :class="showTips ? 'show-tips' : 'hide-tips'"> |
||||
|
<el-card class="tips-card"> |
||||
|
<div class="tips-wr"> |
||||
|
<div class="tips-wr-title">通知提醒</div> |
||||
|
<div class="tips-wr-name">{{ info.typeName }}</div> |
||||
|
<div class="tips-wr-desc">{{ info.content }}</div> |
||||
|
<div class="tips-wr-time">{{ info.remindTime }}</div> |
||||
|
<div class="tips-btn"> |
||||
|
<el-button type="text" size="small" @click="handleClose">我知道了</el-button> |
||||
|
<el-button class="diy-button--search" size="small" @click="handleLook">查看详情</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-card> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
props: { |
||||
|
show: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
}, |
||||
|
info: { |
||||
|
type: Object, |
||||
|
default: () => {} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
showTips: false |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.showTips = this.show |
||||
|
}, |
||||
|
methods: { |
||||
|
handleClose() { |
||||
|
this.showTips = false |
||||
|
this.$emit('close') |
||||
|
}, |
||||
|
handleLook() { |
||||
|
this.$emit('look') |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.msg-tips { |
||||
|
position: fixed; |
||||
|
right: 0; |
||||
|
z-index: 999; |
||||
|
transition: bottom .5s; |
||||
|
.tips-card { |
||||
|
width: 400px; |
||||
|
height: 200px; |
||||
|
background: #fff; |
||||
|
} |
||||
|
.tips-wr-title { |
||||
|
font-size: 16px; |
||||
|
color: #3E8EF7; |
||||
|
} |
||||
|
.tips-wr-name { |
||||
|
margin-top: 10px; |
||||
|
padding-left: 20px; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.tips-wr-desc { |
||||
|
width: 100%; |
||||
|
height: 33px; |
||||
|
margin-top: 10px; |
||||
|
padding-left: 20px; |
||||
|
display: -webkit-box; |
||||
|
-webkit-box-orient: vertical; |
||||
|
-webkit-line-clamp: 2; |
||||
|
overflow: hidden; |
||||
|
|
||||
|
} |
||||
|
.tips-wr-time { |
||||
|
margin-top: 10px; |
||||
|
padding-left: 20px; |
||||
|
} |
||||
|
.tips-btn { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-around; |
||||
|
width: 100%; |
||||
|
box-sizing: border-box; |
||||
|
margin-top: 10px; |
||||
|
padding: 0 20px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
.hide-tips { |
||||
|
bottom: -220px; |
||||
|
|
||||
|
} |
||||
|
.show-tips { |
||||
|
bottom: 0px; |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue