加入回访页面

This commit is contained in:
java110 2021-04-06 12:22:15 +08:00
parent c0f6fd69f6
commit 03a5c3e2ea
7 changed files with 418 additions and 57 deletions

View File

@ -7,40 +7,7 @@
<div class="ibox-content">
<div>
<div>
<!-- <div class="form-group row">
<label class="col-sm-2 col-form-label">报修范围</label>
<div class="col-sm-10">
<select class="custom-select" v-model="editOwnerRepairInfo.repairObjType" @change="_changeEditRepairObjType()">
<option selected disabled value="">必填,请选择报修范围</option>
<option value="001">小区</option>
<option value="002">楼栋</option>
<option value="003">单元</option>
<option value="004">房屋</option>
</select></div>
</div>
<div class="form-group row" v-if="editOwnerRepairInfo.repairObjType != '001'">
<label class="col-sm-2 col-form-label">归属楼栋</label>
<div class="col-sm-10">
<vc:create path="property/floorSelect2" parentModal="editOwnerRepairModel"
namespace="editOwnerRepair"></vc:create>
</div>
</div>
<div class="form-group row" v-if="editOwnerRepairInfo.repairObjType == '003' || editOwnerRepairInfo.repairObjType == '004'">
<label class="col-sm-2 col-form-label">归属单元</label>
<div class="col-sm-10">
<vc:create path="property/unitSelect2" parentModal="editOwnerRepairModel"
callBackListener="editOwnerRepair" callBackFunction="notify2"
namespace="editOwnerRepair"></vc:create>
</div>
</div>
<div class="form-group row" v-if="editOwnerRepairInfo.repairObjType == '004'">
<label class="col-sm-2 col-form-label">归属房屋</label>
<div class="col-sm-10">
<vc:create path="property/roomSelect2" parentModal="editOwnerRepairModel"
callBackListener="editOwnerRepair" callBackFunction="notify"
namespace="editOwnerRepair"></vc:create>
</div>
</div> -->
<div class="form-group row">
<label class="col-sm-2 col-form-label">报修类型</label>
<div class="col-sm-10">

View File

@ -0,0 +1,44 @@
<div id="visitOwnerRepairModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-body">
<h3 class="m-t-none m-b ">回访</h3>
<div class="ibox-content">
<div>
<div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">满意度</label>
<div class="col-sm-10">
<select class="custom-select" v-model="visitOwnerRepairInfo.visitType">
<option selected disabled value="">必填,请选择满意度</option>
<option value="1001">满意</option>
<option value="2002">不满意</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">回访内容</label>
<div class="col-sm-10">
<textarea placeholder="必填,请填写回访内容" cols="15" class="form-control"
v-model="visitOwnerRepairInfo.context"></textarea>
</div>
</div>
<div class="ibox-content">
<button class="btn btn-primary float-right" type="button"
v-on:click="_visitOwnerRepair()">
<i class="fa fa-check"></i>&nbsp;提交
</button>
<button type="button" class="btn btn-warning float-right" style="margin-right:20px;"
data-dismiss="modal">
<i class="fa fa-times"></i>&nbsp;取消
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,94 @@
(function (vc, vm) {
vc.extends({
data: {
visitOwnerRepairInfo: {
repairId: '',
visitType: '',
context: ''
}
},
_initMethod: function () {
vc.component._initEditOwnerRepairInfo();
},
_initEvent: function () {
vc.on('visitOwnerRepair', 'openVisitOwnerRepairModal', function (_params) {
vc.component.refreshVisitOwnerRepairInfo();
vc.copyObject(_params, vc.component.visitOwnerRepairInfo);
$('#visitOwnerRepairModel').modal('show');
vc.component.visitOwnerRepairInfo.communityId = vc.getCurrentCommunity().communityId;
});
},
methods: {
visitOwnerRepairValidate: function () {
return vc.validate.validate({
visitOwnerRepairInfo: vc.component.visitOwnerRepairInfo
}, {
'visitOwnerRepairInfo.visitType': [
{
limit: "required",
param: "",
errInfo: "报修类型不能为空"
},
{
limit: "maxin",
param: "2,50",
errInfo: "报修类型错误"
},
],
'visitOwnerRepairInfo.context': [
{
limit: "required",
param: "",
errInfo: "报修内容不能为空"
},
{
limit: "maxLength",
param: "1000",
errInfo: "报修内容不能超过1000个字"
},
],
'visitOwnerRepairInfo.repairId': [
{
limit: "required",
param: "",
errInfo: "报修ID不能为空"
}]
});
},
_visitOwnerRepair: function () {
if (!vc.component.visitOwnerRepairValidate()) {
vc.toast(vc.validate.errInfo);
return;
}
vc.component.visitOwnerRepairInfo.communityId = vc.getCurrentCommunity().communityId;
vc.http.apiPost(
'/repair/saveRepairReturnVisit',
JSON.stringify(vc.component.visitOwnerRepairInfo),
{
emulateJSON: true
},
function (json, res) {
//vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
if (res.status == 200) {
//关闭model
$('#visitOwnerRepairModel').modal('hide');
vc.emit('repairReturnVisit', 'listRepairPool', {});
}
},
function (errInfo, error) {
console.log('请求失败处理');
vc.toast(errInfo);
});
},
refreshVisitOwnerRepairInfo: function () {
vc.component.visitOwnerRepairInfo = {
repairId: '',
visitType: '',
context: ''
}
}
}
});
})(window.vc, window.vc.component);

View File

@ -72,6 +72,20 @@
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label class="col-form-label">回访满意度:</label>
<label class="">{{ownerRepairDetailInfo.visitType=='1001'?'满意':'不满意'}}</label>
</div>
</div>
<div class="col-sm-8">
<div class="form-group">
<label class="col-form-label">回访内容:</label>
<label class="">{{ownerRepairDetailInfo.visitContext}}</label>
</div>
</div>
</div>
</div>
</div>
</div>
@ -91,9 +105,9 @@
<div>
<div class="row">
<div class="form-group margin-left"
v-for="(item,index) in ownerRepairDetailInfo.repairPhotos">
v-for="(item,index) in ownerRepairDetailInfo.repairPhotos">
<img style="width: 120px; height: 120px;" v-bind:src="item.url"
v-on:click="openFile(item)"/>
v-on:click="openFile(item)" />
</div>
</div>
</div>
@ -113,9 +127,9 @@
<div>
<div class="row">
<div class="form-group margin-left"
v-for="(item,index) in ownerRepairDetailInfo.beforePhotos">
v-for="(item,index) in ownerRepairDetailInfo.beforePhotos">
<img style="width: 120px; height: 120px;" v-bind:src="item.url"
v-on:click="openFile(item)"/>
v-on:click="openFile(item)" />
</div>
</div>
</div>
@ -135,9 +149,9 @@
<div>
<div class="row">
<div class="form-group margin-left"
v-for="(item,index) in ownerRepairDetailInfo.afterPhotos">
v-for="(item,index) in ownerRepairDetailInfo.afterPhotos">
<img style="width: 120px; height: 120px;" v-bind:src="item.url"
v-on:click="openFile(item)"/>
v-on:click="openFile(item)" />
</div>
</div>
</div>
@ -157,24 +171,24 @@
<div class="ibox-content">
<table class="table table-stripped">
<thead>
<tr>
<th scope="col" class="text-center">序号</th>
<th scope="col" class="text-center">处理人</th>
<th scope="col" class="text-center">状态</th>
<th scope="col" class="text-center">处理时间</th>
<th scope="col" class="text-center">耗时</th>
<th scope="col" class="text-center">意见</th>
</tr>
<tr>
<th scope="col" class="text-center">序号</th>
<th scope="col" class="text-center">处理人</th>
<th scope="col" class="text-center">状态</th>
<th scope="col" class="text-center">处理时间</th>
<th scope="col" class="text-center">耗时</th>
<th scope="col" class="text-center">意见</th>
</tr>
</thead>
<tbody>
<tr v-for="(item,index) in ownerRepairDetailInfo.repairUsers">
<td scope="row" class="text-center">{{index+1}}</td>
<td class="text-center">{{item.staffName}}</td>
<td class="text-center">{{item.stateName}}</td>
<td class="text-center">{{item.endTime}}</td>
<td class="text-center">{{item.duration}}</td>
<td class="text-center">{{item.context}}</td>
</tr>
<tr v-for="(item,index) in ownerRepairDetailInfo.repairUsers">
<td scope="row" class="text-center">{{index+1}}</td>
<td class="text-center">{{item.staffName}}</td>
<td class="text-center">{{item.stateName}}</td>
<td class="text-center">{{item.endTime}}</td>
<td class="text-center">{{item.duration}}</td>
<td class="text-center">{{item.context}}</td>
</tr>
</tbody>
</table>
</div>

View File

@ -19,7 +19,9 @@
photos: [],
repairPhotos: [],
beforePhotos: [],
afterPhotos: []
afterPhotos: [],
visitType:'',
visitContext:''
}
},
_initMethod: function () {

View File

@ -0,0 +1,119 @@
<div class="animated fadeInRight ecommerce">
<div class="row">
<div class="col-lg-12">
<div class="ibox ">
<div class="ibox-title">
<h5>查询条件</h5>
<div class="ibox-tools" style="top:10px;">
<button type="button" class="btn btn-link btn-sm" style="margin-right:10px;"
v-on:click="_moreCondition()">{{repairReturnVisitInfo.moreCondition == true?'隐藏':'更多'}}
</button>
</div>
</div>
<div class="ibox-content">
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<select class="custom-select" v-model="repairReturnVisitInfo.conditions.repairType">
<option selected value="">请选择报修类型</option>
<option v-for="(item,index) in repairReturnVisitInfo.repairSettings"
:value="item.repairType">{{item.repairTypeName}}
</option>
</select>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<input type="text" placeholder="请输入报修人"
v-model="repairReturnVisitInfo.conditions.repairName" class=" form-control">
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<select class="custom-select" v-model="repairReturnVisitInfo.conditions.state">
<option selected value="waiting"> 待回访</option>
<option selected value="finish"> 已回访</option>
</select>
</div>
</div>
<div class="col-sm-2">
<button type="button" class="btn btn-primary btn-sm" v-on:click="_queryRepairPoolMethod()">
<i class="fa fa-search"></i> 查询
</button>
</div>
</div>
<div class="row">
<div class="col-sm-4" v-if="repairReturnVisitInfo.moreCondition == true">
<input type="text" placeholder="请输入报修ID" v-model="repairReturnVisitInfo.conditions.repairId"
class=" form-control">
</div>
<div class="col-sm-3" v-if="repairReturnVisitInfo.moreCondition == true">
<input type="text" placeholder="请输入报修电话" v-model="repairReturnVisitInfo.conditions.tel"
class=" form-control">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="ibox">
<div class="ibox-title">
<h5><span v-text="repairReturnVisitInfo.conditions.roomName"></span>报修回访</h5>
<div class="ibox-tools" style="top:10px;">
</div>
</div>
<div class="ibox-content">
<table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
<thead>
<tr>
<th class="text-center">工单编码</th>
<th class="text-center">位置</th>
<th class="text-center">报修类型</th>
<th class="text-center">报修人</th>
<th class="text-center">联系方式</th>
<th class="text-center">预约时间</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
<tr v-for="repairPool in repairReturnVisitInfo.repairPools">
<td class="text-center">{{repairPool.repairId}}</td>
<td class="text-center">{{repairPool.repairObjName}}</td>
<td class="text-center">{{repairPool.repairTypeName}}</td>
<td class="text-center">{{repairPool.repairName}}</td>
<td class="text-center">{{repairPool.tel}}</td>
<td class="text-center">{{repairPool.appointmentTime}}</td>
<td class="text-center">
<div class="btn-group">
<button class="btn-white btn btn-xs"
v-on:click="_openEditOwnerRepairModel(repairPool)">回访
</button>
</div>
<div class="btn-group">
<button class="btn-white btn btn-xs"
v-on:click="_openRepairDetail(repairPool)">详情
</button>
</div>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="7">
<ul class="pagination float-right"></ul>
</td>
</tr>
</tfoot>
</table>
<!-- 分页 -->
<vc:create path="frame/pagination"></vc:create>
</div>
</div>
</div>
</div>
<vc:create path="property/visitOwnerRepair"></vc:create>
</div>

View File

@ -0,0 +1,121 @@
/**
入驻小区
**/
(function (vc) {
var DEFAULT_PAGE = 1;
var DEFAULT_ROWS = 10;
vc.extends({
data: {
repairReturnVisitInfo: {
repairPools: [],
total: 0,
records: 1,
moreCondition: false,
repairName: '',
repairSettings: [],
states: [],
conditions: {
repairId: '',
repairName: '',
tel: '',
repairType: '',
roomId: '',
roomName: '',
ownerId: '',
state: 'waiting'
}
}
},
_initMethod: function () {
//vc.component._listRepairPools(DEFAULT_PAGE, DEFAULT_ROWS);
//vc.component._validateParam();
$that._listRepairSettings(DEFAULT_PAGE, 50);
vc.getDict('r_repair_pool', "state", function (_data) {
vc.component.repairReturnVisitInfo.states = _data;
});
vc.component._listRepairPools(DEFAULT_PAGE, DEFAULT_ROWS);
},
_initEvent: function () {
vc.on('repairReturnVisit', 'listRepairPool', function (_param) {
vc.component._listRepairPools(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('pagination', 'page_event', function (_currentPage) {
vc.component._listRepairPools(_currentPage, DEFAULT_ROWS);
});
},
methods: {
//查询方法
_listRepairPools: function (_page, _rows) {
vc.component.repairReturnVisitInfo.conditions.page = _page;
vc.component.repairReturnVisitInfo.conditions.row = _rows;
vc.component.repairReturnVisitInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
var param = {
params: vc.component.repairReturnVisitInfo.conditions
};
//报修人查询框去空
param.params.repairName = param.params.repairName.trim();
//报修ID查询框去空
param.params.repairId = param.params.repairId.trim();
//报修电话查询框去空
param.params.tel = param.params.tel.trim();
//发送get请求
vc.http.apiGet('/repair/queryRepairReturnVisit',
param,
function (json, res) {
var _repairReturnVisitInfo = JSON.parse(json);
vc.component.repairReturnVisitInfo.total = _repairReturnVisitInfo.total;
vc.component.repairReturnVisitInfo.records = _repairReturnVisitInfo.records;
vc.component.repairReturnVisitInfo.repairPools = _repairReturnVisitInfo.data;
vc.emit('pagination', 'init', {
total: vc.component.repairReturnVisitInfo.records,
currentPage: _page
});
}, function (errInfo, error) {
console.log('请求失败处理');
}
);
},
_openRepairDetail: function (_repairPool) {
vc.jumpToPage('/admin.html#/pages/property/ownerRepairDetail?repairId=' + _repairPool.repairId)
},
//查询
_queryRepairPoolMethod: function () {
vc.component._listRepairPools(DEFAULT_PAGE, DEFAULT_ROWS);
},
_openEditOwnerRepairModel: function (_repairPool) {
// _ownerRepair.roomName = vc.component.ownerRepairManageInfo.conditions.roomName;
// _ownerRepair.roomId = vc.component.ownerRepairManageInfo.conditions.roomId;
vc.emit('visitOwnerRepair', 'openVisitOwnerRepairModal', _repairPool);
},
_moreCondition: function () {
if (vc.component.repairReturnVisitInfo.moreCondition) {
vc.component.repairReturnVisitInfo.moreCondition = false;
} else {
vc.component.repairReturnVisitInfo.moreCondition = true;
}
},
_listRepairSettings: function (_page, _rows) {
var param = {
params: {
page: _page,
row: _rows,
communityId: vc.getCurrentCommunity().communityId
}
};
//发送get请求
vc.http.apiGet('repair.listRepairSettings',
param,
function (json, res) {
var _repairSettingManageInfo = JSON.parse(json);
vc.component.repairReturnVisitInfo.repairSettings = _repairSettingManageInfo.data;
}, function (errInfo, error) {
console.log('请求失败处理');
}
);
}
}
});
})(window.vc);