|
@ -1,8 +1,24 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div> |
|
|
|
|
|
<div class="resi-container"> |
|
|
<div class="resi-container"> |
|
|
<el-card class="resi-card"> |
|
|
<el-card class="resi-card"> |
|
|
<el-row class="resi-row-box" |
|
|
<div class=""> |
|
|
|
|
|
<el-form ref="fmData" :inline="true" :model="fmData" class="demo-form-inline"> |
|
|
|
|
|
<el-form-item label="组织名称" prop="societyName"> |
|
|
|
|
|
<el-input v-model="fmData.societyName" placeholder="请输入" class="input-width" clearable></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item label="服务电话" prop="mobile"> |
|
|
|
|
|
<el-input v-model="fmData.mobile" placeholder="请输入" class="input-width" clearable></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item label="服务时间" prop="serviceTimeStr"> |
|
|
|
|
|
<el-input v-model="fmData.serviceTimeStr" placeholder="请输入" class="input-width" clearable></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item> |
|
|
|
|
|
<el-button class="diy-button--search" size="small" @click="handleSearch">查询</el-button> |
|
|
|
|
|
<el-button class="diy-button--reset" size="small" @click="resetForm('fmData')">重置</el-button> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
</div> |
|
|
|
|
|
<!-- <el-row class="resi-row-box" |
|
|
:class="openSearch && 'resi-row-more'"> |
|
|
:class="openSearch && 'resi-row-more'"> |
|
|
<el-row class="resi-row" |
|
|
<el-row class="resi-row" |
|
|
:gutter="20"> |
|
|
:gutter="20"> |
|
@ -23,10 +39,10 @@ |
|
|
|
|
|
|
|
|
<el-col :span="8"> |
|
|
<el-col :span="8"> |
|
|
<div class="resi-cell"> |
|
|
<div class="resi-cell"> |
|
|
<div class="resi-cell-label">负责人</div> |
|
|
<div class="resi-cell-label">服务电话</div> |
|
|
<div class="resi-cell-value" |
|
|
<div class="resi-cell-value" |
|
|
:class="'resi-cell-value-radio'"> |
|
|
:class="'resi-cell-value-radio'"> |
|
|
<el-input v-model="fmData.personInCharge" |
|
|
<el-input v-model="fmData.mobile" |
|
|
class="resi-cell-input" |
|
|
class="resi-cell-input" |
|
|
size="small" |
|
|
size="small" |
|
|
clearable |
|
|
clearable |
|
@ -35,13 +51,12 @@ |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
|
|
|
|
|
|
<el-col :span="8"> |
|
|
<el-col :span="8"> |
|
|
<div class="resi-cell"> |
|
|
<div class="resi-cell"> |
|
|
<div class="resi-cell-label">联系电话</div> |
|
|
<div class="resi-cell-label">服务时间</div> |
|
|
<div class="resi-cell-value" |
|
|
<div class="resi-cell-value" |
|
|
:class="'resi-cell-value-radio'"> |
|
|
:class="'resi-cell-value-radio'"> |
|
|
<el-input v-model="fmData.mobile" |
|
|
<el-input v-model="fmData.serviceTimeStr" |
|
|
class="resi-cell-input" |
|
|
class="resi-cell-input" |
|
|
size="small" |
|
|
size="small" |
|
|
clearable |
|
|
clearable |
|
@ -51,39 +66,28 @@ |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
</el-row> |
|
|
</el-row> |
|
|
<el-row> |
|
|
|
|
|
<el-col :span="24"> |
|
|
|
|
|
<div class="resi-cell"> |
|
|
|
|
|
<div class="resi-cell-label">服务时间</div> |
|
|
|
|
|
<div class="resi-cell-value" |
|
|
|
|
|
:class="'resi-cell-value-radio'"> |
|
|
|
|
|
<el-date-picker v-model="fmData.serviceTime" |
|
|
|
|
|
type="daterange" |
|
|
|
|
|
range-separator="至" |
|
|
|
|
|
start-placeholder="开始日期" |
|
|
|
|
|
end-placeholder="结束日期" |
|
|
|
|
|
value-format="yyyy-MM-dd"> |
|
|
|
|
|
</el-date-picker> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
</el-row> |
|
|
|
|
|
</el-row> |
|
|
</el-row> |
|
|
<el-row class="resi-search"> |
|
|
<el-row class="resi-search"> |
|
|
<el-col :span="24"> |
|
|
<el-col :span="24"> |
|
|
<el-button type="primary" |
|
|
<el-button class="diy-button--add" |
|
|
size="small" |
|
|
size="small" |
|
|
@click="handleSearch">查询</el-button> |
|
|
@click="handleSearch">查询 |
|
|
|
|
|
</el-button> |
|
|
</el-col> |
|
|
</el-col> |
|
|
</el-row> |
|
|
</el-row>--> |
|
|
</el-card> |
|
|
</el-card> |
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<el-card class="resi-card-table"> |
|
|
<el-card class="resi-card-table"> |
|
|
<div class="resi-row-btn"> |
|
|
<div class="resi-row-btn"> |
|
|
<el-button type="success" |
|
|
<el-button class="diy-button--add" |
|
|
|
|
|
size="small" |
|
|
|
|
|
@click="handleAdd">新增 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
<el-button class="diy-button--search" |
|
|
|
|
|
style="margin-left:10px" |
|
|
size="small" |
|
|
size="small" |
|
|
@click="handleAdd">新增</el-button> |
|
|
@click="handleExportModule('room')">下载模板 |
|
|
|
|
|
</el-button> |
|
|
<el-upload ref="upload" |
|
|
<el-upload ref="upload" |
|
|
class="upload-btn" |
|
|
class="upload-btn" |
|
|
action="uploadUlr" |
|
|
action="uploadUlr" |
|
@ -95,16 +99,18 @@ |
|
|
:on-success="handleExcelSuccess" |
|
|
:on-success="handleExcelSuccess" |
|
|
:before-upload="beforeExcelUpload" |
|
|
:before-upload="beforeExcelUpload" |
|
|
:http-request="uploadHttpRequest"> |
|
|
:http-request="uploadHttpRequest"> |
|
|
<el-button type="warning" |
|
|
<el-button class="diy-button--delete" |
|
|
size="small" |
|
|
size="small" |
|
|
:loading="importLoading">{{ |
|
|
:loading="importLoading">{{ |
|
|
importBtnTitle |
|
|
importBtnTitle |
|
|
}}</el-button> |
|
|
}} |
|
|
|
|
|
</el-button> |
|
|
</el-upload> |
|
|
</el-upload> |
|
|
|
|
|
|
|
|
<el-button @click="handleChu" |
|
|
<el-button @click="handleChu" |
|
|
type="danger" |
|
|
class="diy-button--reset" |
|
|
size="small">excel导出</el-button> |
|
|
size="small">导出 |
|
|
|
|
|
</el-button> |
|
|
</div> |
|
|
</div> |
|
|
<el-table :data="tableData" |
|
|
<el-table :data="tableData" |
|
|
border |
|
|
border |
|
@ -116,21 +122,21 @@ |
|
|
align="center" |
|
|
align="center" |
|
|
width="50"/> |
|
|
width="50"/> |
|
|
<el-table-column prop="societyName" |
|
|
<el-table-column prop="societyName" |
|
|
label="社会组织名称"> |
|
|
label="组织名称"> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="serviceMatters" |
|
|
<el-table-column prop="serviceMatters" |
|
|
label="服务事项"> |
|
|
label="服务内容"> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="personInCharge" |
|
|
<!-- <el-table-column prop="personInCharge" |
|
|
label="负责人"> |
|
|
label="负责人"> |
|
|
</el-table-column> |
|
|
</el-table-column>--> |
|
|
<el-table-column prop="mobile" |
|
|
<el-table-column prop="mobile" |
|
|
label="负责人电话"> </el-table-column> |
|
|
label="服务电话"></el-table-column> |
|
|
<el-table-column prop="serviceTime" |
|
|
<el-table-column prop="serviceTimeStr" |
|
|
label="服务时间"></el-table-column> |
|
|
label="服务时间"></el-table-column> |
|
|
<el-table-column prop="score" |
|
|
<!-- <el-table-column prop="score" |
|
|
width="80" |
|
|
width="80" |
|
|
label="积分"> </el-table-column> |
|
|
label="积分"> </el-table-column>--> |
|
|
<el-table-column fixed="right" |
|
|
<el-table-column fixed="right" |
|
|
label="操作" |
|
|
label="操作" |
|
|
align="center" |
|
|
align="center" |
|
@ -138,16 +144,18 @@ |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<el-button @click="handleWatch(scope.$index)" |
|
|
<el-button @click="handleWatch(scope.$index)" |
|
|
type="text" |
|
|
type="text" |
|
|
size="small">查看</el-button> |
|
|
size="small">查看 |
|
|
<el-button type="text" |
|
|
</el-button> |
|
|
|
|
|
<!-- <el-button type="text" |
|
|
style="color:#00A7A9;" |
|
|
style="color:#00A7A9;" |
|
|
size="small" |
|
|
size="small" |
|
|
@click="handleScore(scope.row)">积分记录</el-button> |
|
|
@click="handleScore(scope.row)">积分记录</el-button>--> |
|
|
|
|
|
|
|
|
<el-button @click="handleEdit(scope.$index)" |
|
|
<el-button @click="handleEdit(scope.$index)" |
|
|
type="text" |
|
|
type="text" |
|
|
size="small" |
|
|
size="small" |
|
|
style="margin-right: 10px; color: #00a7a9">编辑</el-button> |
|
|
style="margin-right: 10px; color: #00a7a9">编辑 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
|
<el-popconfirm title="删除之后无法回复,确认删除?" |
|
|
<el-popconfirm title="删除之后无法回复,确认删除?" |
|
|
@onConfirm="handleDel(scope.row, scope.$index)" |
|
|
@onConfirm="handleDel(scope.row, scope.$index)" |
|
@ -155,7 +163,8 @@ |
|
|
<el-button slot="reference" |
|
|
<el-button slot="reference" |
|
|
type="text" |
|
|
type="text" |
|
|
size="small" |
|
|
size="small" |
|
|
style="color: #d51010">删除</el-button> |
|
|
style="color: #d51010">删除 |
|
|
|
|
|
</el-button> |
|
|
</el-popconfirm> |
|
|
</el-popconfirm> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
@ -229,9 +238,10 @@ export default { |
|
|
serviceStartTime: "", |
|
|
serviceStartTime: "", |
|
|
serviceEndTime: "", |
|
|
serviceEndTime: "", |
|
|
serviceTime: "", |
|
|
serviceTime: "", |
|
|
|
|
|
serviceTimeStr: "", |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
importBtnTitle: "excel导入", |
|
|
importBtnTitle: "导入", |
|
|
importLoading: false, |
|
|
importLoading: false, |
|
|
|
|
|
|
|
|
//积分记录 |
|
|
//积分记录 |
|
@ -247,6 +257,7 @@ export default { |
|
|
}, |
|
|
}, |
|
|
watch: { |
|
|
watch: { |
|
|
"fmData.serviceTime": function (val) { |
|
|
"fmData.serviceTime": function (val) { |
|
|
|
|
|
console.log("watch start" + val + '_' + Array.isArray(val)) |
|
|
if (Array.isArray(val) && val.length == 2) { |
|
|
if (Array.isArray(val) && val.length == 2) { |
|
|
this.fmData.serviceStartTime = val[0]; |
|
|
this.fmData.serviceStartTime = val[0]; |
|
|
this.fmData.serviceEndTime = val[1]; |
|
|
this.fmData.serviceEndTime = val[1]; |
|
@ -295,22 +306,22 @@ export default { |
|
|
const formData = new FormData(); //FormData对象,添加参数只能通过append('key', value)的形式添加 |
|
|
const formData = new FormData(); //FormData对象,添加参数只能通过append('key', value)的形式添加 |
|
|
formData.append("file", file.file); //添加文件对象 |
|
|
formData.append("file", file.file); //添加文件对象 |
|
|
axios({ |
|
|
axios({ |
|
|
url: window.SITE_CONFIG["apiURL"] + "/heart/societyorg/import", |
|
|
url: window.SITE_CONFIG["apiURL"] + "/heart/societyorg/importV2", |
|
|
method: "post", |
|
|
method: "post", |
|
|
data: formData, |
|
|
data: formData, |
|
|
// responseType: "blob", |
|
|
// responseType: "blob", |
|
|
}) |
|
|
}) |
|
|
.then((res) => { |
|
|
.then((res) => { |
|
|
this.importLoading = false; |
|
|
this.importLoading = false; |
|
|
this.importBtnTitle = "excel导入"; |
|
|
this.importBtnTitle = "导入"; |
|
|
console.log("resresresresresresres", res); |
|
|
console.log("resresresresresresres", res); |
|
|
|
|
|
|
|
|
this.getTableData(); |
|
|
this.getTableData(); |
|
|
if (res.data.code == 0) { |
|
|
this.$message({ |
|
|
return this.$message.success(res.data.data || '导入成功'); |
|
|
showClose: true, |
|
|
} else { |
|
|
message: '导入中,请到系统管理-导入记录中查看进度', |
|
|
return this.$message.error(res.data.msg); |
|
|
duration: 0 |
|
|
} |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
.catch((err) => { |
|
|
.catch((err) => { |
|
|
console.log("失败", err); |
|
|
console.log("失败", err); |
|
@ -338,7 +349,10 @@ export default { |
|
|
this.pageNo = 1; |
|
|
this.pageNo = 1; |
|
|
this.getTableData(); |
|
|
this.getTableData(); |
|
|
}, |
|
|
}, |
|
|
|
|
|
resetForm(formName) { |
|
|
|
|
|
this.$refs[formName].resetFields() |
|
|
|
|
|
this.handleSearch() |
|
|
|
|
|
}, |
|
|
async handleAdd() { |
|
|
async handleAdd() { |
|
|
this.formShow = true; |
|
|
this.formShow = true; |
|
|
await nextTick(); |
|
|
await nextTick(); |
|
@ -448,6 +462,43 @@ export default { |
|
|
|
|
|
|
|
|
this.scoreDiaShow = false |
|
|
this.scoreDiaShow = false |
|
|
}, |
|
|
}, |
|
|
|
|
|
async handleExportModule() { |
|
|
|
|
|
let url = "/heart/societyorg/import-template-download"; |
|
|
|
|
|
|
|
|
|
|
|
let params = {}; |
|
|
|
|
|
await this.$http({ |
|
|
|
|
|
method: "POST", |
|
|
|
|
|
url, |
|
|
|
|
|
responseType: "blob", |
|
|
|
|
|
data: params, |
|
|
|
|
|
}) |
|
|
|
|
|
.then((res) => { |
|
|
|
|
|
// this.download(res.data, title + '.xls') |
|
|
|
|
|
if (res.headers["content-disposition"]) { |
|
|
|
|
|
let fileName = window.decodeURI( |
|
|
|
|
|
res.headers["content-disposition"].split(";")[1].split("=")[1] |
|
|
|
|
|
); |
|
|
|
|
|
console.log("filename", fileName); |
|
|
|
|
|
let blob = new Blob([res.data], { |
|
|
|
|
|
type: "application/vnd.ms-excel", |
|
|
|
|
|
}); |
|
|
|
|
|
var url = window.URL.createObjectURL(blob); |
|
|
|
|
|
var aLink = document.createElement("a"); |
|
|
|
|
|
aLink.style.display = "none"; |
|
|
|
|
|
aLink.href = url; |
|
|
|
|
|
aLink.setAttribute("download", fileName); |
|
|
|
|
|
document.body.appendChild(aLink); |
|
|
|
|
|
aLink.click(); |
|
|
|
|
|
document.body.removeChild(aLink); //下载完成移除元素 |
|
|
|
|
|
window.URL.revokeObjectURL(url); //释放掉blob对象 |
|
|
|
|
|
} else this.$message.error("下载失败"); |
|
|
|
|
|
}) |
|
|
|
|
|
.catch((err) => { |
|
|
|
|
|
console.log("err", err); |
|
|
|
|
|
return this.$message.error("网络错误"); |
|
|
|
|
|
}); |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
}; |
|
|
}; |
|
|
</script> |
|
|
</script> |
|
@ -467,10 +518,12 @@ export default { |
|
|
background: #ebecf1; |
|
|
background: #ebecf1; |
|
|
border-radius: 2px; |
|
|
border-radius: 2px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.el-tabs__nav-wrap::after, |
|
|
.el-tabs__nav-wrap::after, |
|
|
.el-tabs__active-bar { |
|
|
.el-tabs__active-bar { |
|
|
display: none; |
|
|
display: none; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.el-tabs__nav-next, |
|
|
.el-tabs__nav-next, |
|
|
.el-tabs__nav-prev { |
|
|
.el-tabs__nav-prev { |
|
|
line-height: 20px; |
|
|
line-height: 20px; |
|
@ -480,16 +533,20 @@ export default { |
|
|
.resi-card-table { |
|
|
.resi-card-table { |
|
|
margin-top: 20px; |
|
|
margin-top: 20px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-row-btn { |
|
|
.resi-row-btn { |
|
|
margin-bottom: 13px; |
|
|
margin-bottom: 13px; |
|
|
|
|
|
|
|
|
.upload-btn { |
|
|
.upload-btn { |
|
|
display: inline-block; |
|
|
display: inline-block; |
|
|
margin: 0 10px; |
|
|
margin: 0 10px; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-other { |
|
|
.resi-other { |
|
|
width: 100%; |
|
|
width: 100%; |
|
|
display: flex; |
|
|
display: flex; |
|
|
|
|
|
|
|
|
.resi-other-title { |
|
|
.resi-other-title { |
|
|
width: 100px; |
|
|
width: 100px; |
|
|
box-sizing: border-box; |
|
|
box-sizing: border-box; |
|
@ -500,6 +557,7 @@ export default { |
|
|
color: #333; |
|
|
color: #333; |
|
|
text-align: center; |
|
|
text-align: center; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.tabs-other-info { |
|
|
.tabs-other-info { |
|
|
// padding-left: 60px; |
|
|
// padding-left: 60px; |
|
|
} |
|
|
} |
|
@ -514,6 +572,7 @@ export default { |
|
|
position: relative; |
|
|
position: relative; |
|
|
overflow: visible; |
|
|
overflow: visible; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-down { |
|
|
.resi-down { |
|
|
position: absolute; |
|
|
position: absolute; |
|
|
left: 50%; |
|
|
left: 50%; |
|
@ -528,30 +587,37 @@ export default { |
|
|
cursor: pointer; |
|
|
cursor: pointer; |
|
|
background: #ffffff; |
|
|
background: #ffffff; |
|
|
border-radius: 0 0 10px 10px; |
|
|
border-radius: 0 0 10px 10px; |
|
|
|
|
|
|
|
|
img { |
|
|
img { |
|
|
display: block; |
|
|
display: block; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-row-box { |
|
|
.resi-row-box { |
|
|
height: 104px; |
|
|
height: 104px; |
|
|
overflow: hidden; |
|
|
overflow: hidden; |
|
|
transition: height 0.5s; |
|
|
transition: height 0.5s; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-row-more { |
|
|
.resi-row-more { |
|
|
height: max-content; |
|
|
height: max-content; |
|
|
transition: height 0.5s; |
|
|
transition: height 0.5s; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-row { |
|
|
.resi-row { |
|
|
margin-bottom: 20px; |
|
|
margin-bottom: 20px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-search { |
|
|
.resi-search { |
|
|
.el-col { |
|
|
.el-col { |
|
|
text-align: right; |
|
|
text-align: right; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-cell { |
|
|
.resi-cell { |
|
|
display: flex; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
align-items: center; |
|
|
|
|
|
|
|
|
.resi-cell-label { |
|
|
.resi-cell-label { |
|
|
width: 70px; |
|
|
width: 70px; |
|
|
box-sizing: border-box; |
|
|
box-sizing: border-box; |
|
@ -559,25 +625,31 @@ export default { |
|
|
text-align: right; |
|
|
text-align: right; |
|
|
// line-height: 32; |
|
|
// line-height: 32; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-cell-value-radio { |
|
|
.resi-cell-value-radio { |
|
|
display: flex; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
align-items: center; |
|
|
min-height: 32px; |
|
|
min-height: 32px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-cell-input { |
|
|
.resi-cell-input { |
|
|
width: 180px; |
|
|
width: 180px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-cell-select { |
|
|
.resi-cell-select { |
|
|
width: 180px; |
|
|
width: 180px; |
|
|
box-sizing: border-box; |
|
|
box-sizing: border-box; |
|
|
margin-right: 10px; |
|
|
margin-right: 10px; |
|
|
|
|
|
|
|
|
&-middle { |
|
|
&-middle { |
|
|
width: 130px; |
|
|
width: 130px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
&-small { |
|
|
&-small { |
|
|
width: 88px; |
|
|
width: 88px; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.resi-cell-select:last-child { |
|
|
.resi-cell-select:last-child { |
|
|
margin-right: 0; |
|
|
margin-right: 0; |
|
|
} |
|
|
} |
|
|