Browse Source

Merge branch 'dev_fuwu0527' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into dev_fuwu0527

shibei_master
dai 3 years ago
parent
commit
b0f0e9dc79
  1. 237
      src/views/modules/communityService/fuwujilu/addForm.vue
  2. 387
      src/views/modules/communityService/fuwujilu/detailForm.vue
  3. 145
      src/views/modules/communityService/fuwujilu/fuwuList.vue

237
src/views/modules/communityService/fuwujilu/addForm.vue

@ -11,8 +11,8 @@
<el-form-item label="服务分类" <el-form-item label="服务分类"
label-width="150px" label-width="150px"
prop="serviceCategoryId"> prop="serviceCategoryKey">
<el-select v-model="formData.serviceCategoryId" <el-select v-model="formData.serviceCategoryKey"
placeholder="请选择" placeholder="请选择"
clearable clearable
class="item_width_1"> class="item_width_1">
@ -85,12 +85,12 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="联系方式" <el-form-item label="联系方式"
prop="principalConcat" prop="principalContact"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_1" <el-input class="item_width_1"
placeholder="请输入联系人电话" placeholder="请输入联系人电话"
v-model="formData.principalConcat"> v-model="formData.principalContact">
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -101,7 +101,7 @@
:picker-options="startPickerOptions" :picker-options="startPickerOptions"
class="item_width_2" class="item_width_2"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
value="yyyy-MM-dd" value="yyyy-MM-dd"
placeholder="开始时间"> placeholder="开始时间">
</el-date-picker> </el-date-picker>
@ -110,7 +110,7 @@
:picker-options="endPickerOptions" :picker-options="endPickerOptions"
class="item_width_2 data-tag" class="item_width_2 data-tag"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
value="yyyy-MM-dd" value="yyyy-MM-dd"
placeholder="结束时间"> placeholder="结束时间">
</el-date-picker> </el-date-picker>
@ -139,7 +139,7 @@
</el-form> </el-form>
<div v-show="formType==='feedback'||showFeedback"> <div v-show="formType==='feedback'||showFeedback">
<h3 class="d-h3">反馈内容</h3> <!-- <h3 class="d-h3">反馈内容</h3> -->
<el-form ref="ref_form_feedback" <el-form ref="ref_form_feedback"
:inline="true" :inline="true"
@ -196,7 +196,8 @@
<el-form-item label="服务状态" <el-form-item label="服务状态"
label-width="150px" label-width="150px"
prop="serviceStatus"> prop="serviceStatus">
<el-select class="item_width_1" <span>已完成</span>
<!-- <el-select class="item_width_1"
v-model="feedbackFormData.serviceStatus" v-model="feedbackFormData.serviceStatus"
placeholder="全部" placeholder="全部"
clearable> clearable>
@ -205,7 +206,7 @@
:label="item.label" :label="item.label"
:value="item.value"> :value="item.value">
</el-option> </el-option>
</el-select> </el-select> -->
</el-form-item> </el-form-item>
<el-form-item label="满意度" <el-form-item label="满意度"
@ -261,17 +262,17 @@
prop="attach"> prop="attach">
<el-upload class="upload-demo" <el-upload class="upload-demo"
:action="uploadUlr" :action="uploadUlr"
accept=".doc,.pdf,.xls,.docx,.xlsx" accept=".doc,.pdf,.xls,.docx,.xlsx,.jpg,.png,.jpeg,.bmp,.mp4,.wma,.m4a,.mp3"
:on-success="handleFileSuccess" :on-success="handleFileSuccess"
:on-remove="handleFileRemove" :on-remove="handleFileRemove"
:on-preview="handleFileDownload"
:limit="3" :limit="3"
:before-upload="beforeUpload" :before-upload="beforeUpload"
:file-list="fileList"> :file-list="fileList">
<el-button size="small" <el-button size="small"
:disabled="fileList.length===3"
type="primary">点击上传</el-button> type="primary">点击上传</el-button>
<div slot="tip" <div slot="tip"
class="el-upload__tip">只能上传wordexcelpdf文件</div> class="el-upload__tip">支持图片wordpdf</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -336,12 +337,12 @@ export default {
keyWords: '', keyWords: '',
formData: { formData: {
serviceCategoryId: '',//id serviceCategoryKey: '',//id
serviceProjectId: '',//id serviceProjectId: '',//id
serviceOrgId: '',//id serviceOrgId: '',//id
serviceScope: [],// serviceScope: [],//
principalName: '',//() principalName: '',//()
principalConcat: '',// principalContact: '',//
serviceTimeStart: '',//yyyy-MM-dd serviceTimeStart: '',//yyyy-MM-dd
serviceTimeEnd: '',//yyyy-MM-dd serviceTimeEnd: '',//yyyy-MM-dd
remark: '',// remark: '',//
@ -354,13 +355,48 @@ export default {
serviceGoal: '',// serviceGoal: '',//
serviceEffect: '',// serviceEffect: '',//
servicePeopleNumber: null,// servicePeopleNumber: null,//
serviceStatus: '',// in_servicecompleted: serviceStatus: 'completed',// in_servicecompleted:
satisfaction: '',//:bad:good:perfect satisfaction: '',//:bad:good:perfect
longitude: '',// longitude: '',//
latitude: '',// latitude: '',//
address: '', address: '',
attachmentList: [],// attachmentList: [],//
}, },
formDataTemp: {
principalContact: "15111111111",
principalName: "31231",
remark: "4234234",
serviceCategoryKey: "01",
serviceOrgId: "1531105677127692289",
serviceProjectId: "1531514265581076482",
serviceScope: [
{
objectId: "1479033225060757506",
objectName: "合肥路街道",
objectType: "street",
},
{
objectId: "1514064686570147842",
objectName: "ss",
objectType: "street",
}
],
serviceTimeEnd: "",
serviceTimeStart: "",
feedback: {
address: "山东省青岛市市南区南京路73号",
latitude: 36.0722275,
longitude: 120.38945519,
satisfaction: "bad",
serviceEffect: "234234234",
serviceGoal: "234234",
servicePeopleNumber: 1,
serviceProjectId: "1531514265581076482",
serviceProjectName: "223",
serviceStatus: "completed",
}
},
projectList: [],//list projectList: [],//list
orgList: [],//list orgList: [],//list
@ -382,22 +418,30 @@ export default {
}, },
watch: { watch: {
// "formData.serviceTimeEnd": function (val) { "formData.serviceTimeEnd": function (val) {
// if (val && val != '') { if (val && val != '') {
// let arrayTemp = val.split(' ') let arrayTemp = val.split(' ')
// this.formData.serviceTimeEnd = arrayTemp[0] this.formData.serviceTimeEnd = arrayTemp[0] + ' 23:59:59'
// } }
// }, },
}, },
components: {}, components: {},
async mounted () { async mounted () {
this.startLoading() this.startLoading()
this.initMap() this.initMap()
this.$refs.ref_form.resetFields(); if (this.formType === 'add') {
this.$refs.ref_form.resetFields();
await this.loadScopeTree()
}
this.$refs.ref_form_feedback.resetFields(); this.$refs.ref_form_feedback.resetFields();
await this.loadScopeTree()
this.endLoading() this.endLoading()
this.formData = JSON.parse(JSON.stringify(this.formDataTemp));
this.feedbackFormData = { ...this.formData.feedback }
}, },
@ -408,6 +452,8 @@ export default {
}, },
hancleClickCategray () { hancleClickCategray () {
this.formData.serviceProjectId = ''
this.formData.serviceOrgId = ''
// //
this.loadProjectList() this.loadProjectList()
// //
@ -421,8 +467,8 @@ export default {
// //
loadScopeTree () { loadScopeTree () {
// const url = '/gov/org/isServiceProject/service/serviceScopeTree' const url = '/gov/org/icServiceProject/service/serviceScopeTree'
const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree' // const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree'
let params = {} let params = {}
window.app.ajax.post( window.app.ajax.post(
url, url,
@ -448,10 +494,11 @@ export default {
this.formData.serviceScope = [] this.formData.serviceScope = []
let selArray = this.$refs["myCascader"].getCheckedNodes() let selArray = this.$refs["myCascader"].getCheckedNodes()
selArray.forEach(element => { selArray.forEach(element => {
let obj = { let obj = {
objectType: element.objectType, objectType: element.data.objectType === 'grid' ? 'grid' : element.data.objectType === 'neighborhood' ? 'neighborhood' : 'agency',
objectId: element.objectId, objectId: element.data.objectId,
objectName: element.objectName, objectName: element.data.objectName,
} }
this.formData.serviceScope.push(obj) this.formData.serviceScope.push(obj)
}); });
@ -460,17 +507,17 @@ export default {
// //
async loadProjectList () { async loadProjectList () {
// const url = '/heart/icServiceProject/serviceProjectList' const url = '/heart/icServiceProject/serviceProjectList'
const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/serviceProjectList' // const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/serviceProjectList'
let params = { let params = {
isPage: false, isPage: false,
serviceCategory: this.formData.serviceCategoryId, serviceCategoryKey: this.formData.serviceCategoryKey,
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
if (code === 0) { if (code === 0) {
this.projectList = data.list this.projectList = [...data.list]
} else { } else {
this.$message.error(msg) this.$message.error(msg)
} }
@ -478,10 +525,10 @@ export default {
// //
async loadOrgList () { async loadOrgList () {
// const url = '/heart/icServiceOrg/selectlist' const url = '/heart/icServiceOrg/selectlist'
const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceOrg/selectlist' // const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceOrg/selectlist'
let params = { let params = {
serviceType: this.formData.serviceCategoryId, serviceType: this.formData.serviceCategoryKey,
} }
@ -496,6 +543,15 @@ export default {
async handleComfirm () { async handleComfirm () {
if (this.formType === 'add') {
this.handleAdd()
} else if (this.formType === 'feedback') {
this.handleFeedback()
}
},
async handleAdd () {
this.btnDisable = true this.btnDisable = true
setTimeout(() => { setTimeout(() => {
this.btnDisable = false this.btnDisable = false
@ -530,10 +586,30 @@ export default {
}, },
async addFuwu () { async addFuwu () {
if (this.showFeedback) {
this.feedbackFormData.attachmentList = []
this.feedbackFormData.attachmentList = [...this.fileList]
this.formData.feedback = { ... this.feedbackFormData }
} else {
this.formData.feedback = null
}
console.log(this.formData) console.log(this.formData)
return false // return false
// const url = '/heart/icServiceProject/service/initiate' const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/service/initiate' if (regPhone.test(this.formData.principalContact) === false) {
this.btnDisable = false
this.$message({
type: 'warning',
message: '请输入正确的手机号码'
})
return false;
}
const url = '/heart/icServiceProject/service/initiate'
// const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/service/initiate'
let params = { let params = {
...this.formData ...this.formData
@ -549,17 +625,62 @@ export default {
this.$message.error(msg) this.$message.error(msg)
} }
}, },
async handleFeedback () {
this.btnDisable = true
setTimeout(() => {
this.btnDisable = false
}, 10000)
this.$refs['ref_form_feedback'].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj)
this.btnDisable = false
} else {
this.addFeecback()
}
})
},
async addFeecback () {
this.feedbackFormData.attachmentList = []
this.feedbackFormData.attachmentList = [...this.fileList]
this.feedbackFormData.serviceRecordId = this.serviceRecordId
console.log(this.feedbackFormData)
// return false
const url = '/heart/icServiceProject/service/feedback'
// const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/service/initiate'
let params = {
...this.feedbackFormData
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message.success('发起成功')
this.resetData()
this.$emit('handleOk')
} else {
this.$message.error(msg)
}
},
beforeUpload (file) { beforeUpload (file) {
const array = file.name.split('.') const array = file.name.split('.')
const extension = array[array.length - 1] const extension = array[array.length - 1]
if (extension !== 'xls' const formatarray = ['jpg', 'png', 'jpeg', 'bmp', 'mp4', 'wma', 'm4a', 'mp3', 'doc', 'docx', 'xls', 'xlsx', 'pdf']
&& extension !== 'xlsx'
&& extension !== 'doc' if (formatarray.indexOf(extension) === -1) {
&& extension !== 'docx' this.$message.error('只支持图片、word、pdf')
&& extension !== 'pdf') {
this.$message.error('只能上传word、excel、pdf文件!')
return false return false
} }
@ -578,8 +699,28 @@ export default {
const array = file.name.split('.') const array = file.name.split('.')
const fileType = array[array.length - 1] const fileType = array[array.length - 1]
const picArray = ['jpg', 'png', 'jpeg', 'bmp']
const videoarray = ['mp4', 'wma', 'm4a']
const docArray = ['doc', 'docx', 'xls', 'xlsx', 'pdf']
const mp3Array = ['mp3']
if (picArray.indexOf(fileType) > -1) {
file.attachmentFormat = 'image'
} else if (videoarray.indexOf(fileType) > -1) {
file.attachmentFormat = 'video'
} else if (docArray.indexOf(fileType) > -1) {
file.attachmentFormat = 'doc'
} else if (mp3Array.indexOf(fileType) > -1) {
file.attachmentFormat = 'voice'
}
file.url = res.data.url file.url = res.data.url
file.type = fileType file.type = fileType
file.attachmentName = file.name
file.attachmentType = file.type
file.attachmentUrl = file.url
this.fileList.push(file) this.fileList.push(file)
console.log(this.fileList) console.log(this.fileList)
} else this.$message.error(res.msg) } else this.$message.error(res.msg)
@ -718,12 +859,12 @@ export default {
resetData () { resetData () {
this.formData = { this.formData = {
serviceCategoryId: '',//id serviceCategoryKey: '',//id
serviceProjectId: '',//id serviceProjectId: '',//id
serviceOrgId: '',//id serviceOrgId: '',//id
serviceScope: [],// serviceScope: [],//
principalName: '',//() principalName: '',//()
principalConcat: '',// principalContact: '',//
serviceTimeStart: '',//yyyy-MM-dd serviceTimeStart: '',//yyyy-MM-dd
serviceTimeEnd: '',//yyyy-MM-dd serviceTimeEnd: '',//yyyy-MM-dd
remark: '',// remark: '',//
@ -736,7 +877,7 @@ export default {
serviceGoal: '',// serviceGoal: '',//
serviceEffect: '',// serviceEffect: '',//
servicePeopleNumber: null,// servicePeopleNumber: null,//
serviceStatus: '',// in_servicecompleted: serviceStatus: 'completed',// in_servicecompleted:
satisfaction: '',//:bad:good:perfect satisfaction: '',//:bad:good:perfect
longitude: '',// longitude: '',//
latitude: '',// latitude: '',//
@ -764,7 +905,7 @@ export default {
dataRule () { dataRule () {
return { return {
serviceCategoryId: [ serviceCategoryKey: [
{ required: true, message: '服务类别不能为空', trigger: 'blur' }, { required: true, message: '服务类别不能为空', trigger: 'blur' },
], ],
serviceProjectId: [ serviceProjectId: [

387
src/views/modules/communityService/fuwujilu/detailForm.vue

@ -5,97 +5,109 @@
<el-form ref="ref_form" <el-form ref="ref_form"
:inline="true" :inline="true"
:model="formData" :model="formData"
:disabled="formType==='detail'"
:rules="dataRule" :rules="dataRule"
:disabled="formType === 'detail'" class="div_form">
class="form">
<el-form-item label="服务分类" <el-form-item label="服务分类"
prop="serviceCategoryId"> label-width="150px"
<el-select v-model="formData.serviceCategoryId" prop="serviceCategoryKey">
<span>{{formData.serviceCategoryName}}</span>
<!-- <el-select v-model="formData.serviceCategoryKey"
placeholder="请选择" placeholder="请选择"
size="small"
clearable clearable
class="item_width_2"> class="item_width_1">
<el-option v-for="item in categrayArray" <el-option v-for="(item,index) in categrayArray"
@click.native="hancleClickCategray(index)"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"> :value="item.value">
</el-option> </el-option>
</el-select> </el-select> -->
</el-form-item> </el-form-item>
<el-form-item label="服务项目" <el-form-item label="服务项目"
prop="type" prop="serviceProjectId"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-select class="item_width_1" <span>{{formData.serviceProjectName}}</span>
v-model="formData.type" <!-- <el-select class="item_width_1"
v-model="formData.serviceProjectId"
placeholder="请选择" placeholder="请选择"
filterable filterable
clearable> clearable>
<el-option v-for="item in typeList" <el-option v-for="(item,index) in projectList"
:key="item.value" @click.native="hancleClickProject(index)"
:label="item.label" :key="item.serviceProjectId"
:value="item.value"> :label="item.serviceName"
:value="item.serviceProjectId">
</el-option> </el-option>
</el-select> </el-select> -->
</el-form-item> </el-form-item>
<el-form-item label="服务组织" <el-form-item label="服务组织"
prop="type" prop="serviceOrgId"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-select class="item_width_1" <span>{{formData.serviceOrgName}}</span>
v-model="formData.type" <!-- <el-select class="item_width_1"
v-model="formData.serviceOrgId"
placeholder="请选择" placeholder="请选择"
filterable filterable
clearable> clearable>
<el-option v-for="item in typeList" <el-option v-for="item in orgList"
:key="item.value" :key="item.icServiceOrgId"
:label="item.label" :label="item.orgName"
:value="item.value"> :value="item.icServiceOrgId">
</el-option> </el-option>
</el-select> </el-select> -->
</el-form-item> </el-form-item>
<el-form-item label="服务范围" <el-form-item label="服务范围"
prop="unitName" prop="serviceScope"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_1" <div v-for="item in formData.serviceScope"
maxlength="50" :key="item.objectId">
show-word-limit <div>{{item.objectName}}</div>
placeholder="请输入单位名称" </div>
v-model="formData.unitName"> <!-- <el-cascader class="item_width_1"
</el-input> ref="myCascader"
v-model="scopeIdArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeScope"></el-cascader> -->
</el-form-item> </el-form-item>
<el-form-item label="经办人" <el-form-item label="经办人"
prop="contact" prop="principalName"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_1" <el-input class="item_width_1"
placeholder="请输入联系人姓名" placeholder="请输入联系人姓名"
v-model="formData.contact"> v-model="formData.principalName">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="联系方式" <el-form-item label="联系方式"
prop="contactMobile" prop="principalContact"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_1" <el-input class="item_width_1"
placeholder="请输入联系人电话" placeholder="请输入联系人电话"
v-model="formData.contactMobile"> v-model="formData.principalContact">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="服务时间" <el-form-item label="服务时间"
label-width="150px"
prop="serviceTimeStart"> prop="serviceTimeStart">
<el-date-picker v-model="formData.serviceTimeStart" <el-date-picker v-model="formData.serviceTimeStart"
:picker-options="startPickerOptions" :picker-options="startPickerOptions"
class="item_width_2" class="item_width_2"
size="small"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
value="yyyy-MM-dd" value="yyyy-MM-dd"
@ -105,7 +117,6 @@
<el-date-picker v-model="formData.serviceTimeEnd" <el-date-picker v-model="formData.serviceTimeEnd"
:picker-options="endPickerOptions" :picker-options="endPickerOptions"
class="item_width_2 data-tag" class="item_width_2 data-tag"
size="small"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
value="yyyy-MM-dd" value="yyyy-MM-dd"
@ -128,150 +139,6 @@
</el-form> </el-form>
<h3>反馈内容</h3>
<el-form ref="ref_form"
:inline="true"
:model="formData"
:rules="dataRule"
:disabled="formType === 'detail'"
class="form">
<el-form-item label="分类"
prop="type"
label-width="150px"
style="display: block">
<el-select class="item_width_1"
v-model="formData.type"
placeholder="请选择"
filterable
clearable>
<el-option v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="单位名称"
prop="unitName"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入单位名称"
v-model="formData.unitName">
</el-input>
</el-form-item>
<el-form-item label="服务事项"
prop="serviceMatterList"
label-width="150px"
style="display: block">
<el-checkbox-group class="item_width_1"
style="display:flex;flex-wrap:wrap"
v-model="formData.serviceMatterList">
<el-checkbox v-for="item in serviceList"
:key="item.value"
:label="item.value">{{item.label}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="联系人"
prop="contact"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入联系人姓名"
v-model="formData.contact">
</el-input>
</el-form-item>
<el-form-item label="联系电话"
prop="contactMobile"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入联系人电话"
v-model="formData.contactMobile">
</el-input>
</el-form-item>
<el-form-item label="在职党员"
style="display: block"
prop="memberCount"
label-width="150px">
<el-input-number class="item_width_4"
v-model="formData.memberCount"
:min="0"
:max="9999"
label="在职党员"></el-input-number>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="500"
show-word-limit
:rows="3"
placeholder="请输入备注,不超过500字"
v-model="formData.remark"></el-input>
</el-form-item>
<el-form-item label="位置坐标"
prop="longitude"
label-width="150px"
style="display: block">
<div style="width:500px">
<div class="div_map">
<div id="app">
</div>
<div class="div_searchmap">
<el-input class="item_width_4"
maxlength="50"
size="mini"
placeholder="请输入关键字"
v-model="keyWords">
</el-input>
<el-button style="margin-left: 10px"
type="primary"
size="mini"
@click="handleSearchMap">查询</el-button>
</div>
</div>
<div style="margin-top: 10px">
<span>经度</span>
<el-input class="item_width_3"
maxlength="50"
placeholder="请输入经度"
v-model="formData.longitude">
</el-input>
<span style="margin-left: 20px">纬度</span>
<el-input class="item_width_3"
maxlength="50"
placeholder="请输入纬度"
v-model="formData.latitude">
</el-input>
</div>
</div>
</el-form-item>
<el-form-item label="地理位置"
prop="address"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
v-model="formData.address">
</el-input>
</el-form-item>
</el-form>
</div> </div>
<div class="div_btn"> <div class="div_btn">
@ -318,11 +185,10 @@ export default {
} }
return { return {
formType: 'add', // addeditdetail,feedback
btnDisable: false, btnDisable: false,
unitId: '',
keyWords: '', keyWords: '',
formData: { formData: {
unitName: '', unitName: '',
@ -345,7 +211,7 @@ export default {
disabledDate: startDisabledDate disabledDate: startDisabledDate
}, },
categrayArray: [],
projectList: [], projectList: [],
} }
@ -353,75 +219,27 @@ export default {
components: {}, components: {},
mounted () { mounted () {
if (this.serviceRecordId) {// if (this.serviceRecordId) {//
this.loadInfo()
} }
this.initMap() // this.initMap()
console.log('mounted') console.log('mounted')
}, },
activated () {
console.log('activated')
},
methods: {
async initForm (type, unitId) {
this.startLoading()
this.$refs.ref_form.resetFields();
//
await this.loadService()
this.formType = type
if (unitId) {
this.unitId = unitId
this.formData.id = unitId
await this.loadFormData()
} else {
map.setCenter(new TMap.LatLng(36.0722275, 120.38945519))
this.setMarker(36.0722275, 120.38945519)
}
this.endLoading()
},
//
async loadService () {
const url = "/heart/serviceitem/dict-list"
let params = {
type: 'usable'
// parentCategoryCode: '1010'
}
const { data, code, msg } = await requestPost(url, params) methods: {
if (code === 0) {
this.serviceList = data
} else {
this.$message.error(msg)
}
},
// //
async loadFormData () { async loadInfo () {
const url = '/heart/icpartyunit/detail' const url = `/heart/icServiceProject/service/detail/${this.serviceRecordId}`
// const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/detail' // const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/detail' + this.serviceRecordId
let params = { let params = {}
id: this.unitId
}
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
if (code === 0) { if (code === 0) {
if (!data.serviceMatterList || !Array.isArray(data.serviceMatterList)) {
data.serviceMatterList = []
}
this.formData = { ...data } this.formData = { ...data }
map.setCenter(new TMap.LatLng(this.formData.latitude, this.formData.longitude)) this.formData.serviceRecordId = this.serviceRecordId
this.setMarker(this.formData.latitude, this.formData.longitude)
} else { } else {
this.$message.error(msg) this.$message.error(msg)
} }
@ -440,16 +258,16 @@ export default {
app.util.validateRule(messageObj) app.util.validateRule(messageObj)
this.btnDisable = false this.btnDisable = false
} else { } else {
this.addUnit() this.editFuwu()
} }
}) })
}, },
async addUnit () { async editFuwu () {
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; // const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
if (regPhone.test(this.formData.contactMobile) === false) { if (regPhone.test(this.formData.principalContact) === false) {
this.btnDisable = false this.btnDisable = false
this.$message({ this.$message({
type: 'warning', type: 'warning',
@ -458,11 +276,9 @@ export default {
return false; return false;
} }
let url = '/heart/icpartyunit/save' let url = '/heart/icServiceProject/service/update'
// let url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/save" // let url = "http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/service/update"
// if (this.formType === 'edit') {
// this.formData.id = this.unitId
// }
const { data, code, msg } = await requestPost(url, this.formData) const { data, code, msg } = await requestPost(url, this.formData)
@ -472,8 +288,8 @@ export default {
message: '操作成功' message: '操作成功'
}) })
this.resetData() this.resetData()
this.$emit('dialogOk')
this.btnDisable = false this.$emit('handleOk')
} else { } else {
this.btnDisable = false this.btnDisable = false
this.$message.error(msg) this.$message.error(msg)
@ -600,19 +416,17 @@ export default {
resetData () { resetData () {
this.unitId = ''
this.keyWords = ''
this.formData = { this.formData = {
unitName: '', serviceCategoryKey: '',//id
serviceMatterList: [], serviceProjectId: '',//id
type: '', serviceOrgId: '',//id
contact: '', serviceScope: [],//
contactMobile: '', principalName: '',//()
memberCount: 0, principalContact: '',//
remark: '', //500 serviceTimeStart: '',//yyyy-MM-dd
address: '', // serviceTimeEnd: '',//yyyy-MM-dd
longitude: '', // remark: '',//
latitude: '' //
} }
}, },
// //
@ -635,44 +449,39 @@ export default {
dataRule () { dataRule () {
return { return {
unitName: [ serviceCategoryKey: [
{ required: true, message: '单位名称不能为空', trigger: 'blur' }, { required: true, message: '服务类别不能为空', trigger: 'blur' },
], ],
type: [ serviceProjectId: [
{ required: true, message: '分类不能为空', trigger: 'blur' } { required: true, message: '服务项目不能为空', trigger: 'blur' }
], ],
contact: [ serviceOrgId: [
{ required: true, message: '联系人不能为空', trigger: 'blur' } { required: true, message: '服务组织不能为空', trigger: 'blur' }
], ],
contactMobile: [ serviceTimeStart: [
{ required: true, message: '联系电话不能为空', trigger: 'blur' } { required: true, message: '服务时间不能为空', trigger: 'blur' }
], ],
memberCount: [ serviceScope: [
{ required: true, message: '在职党员数不能为空', trigger: 'blur' } { required: true, message: '服务范围不能为空', trigger: 'blur' }
], ],
address: [
{ required: true, message: '详细地址不能为空', trigger: 'blur' }
],
longitude: [
{ required: true, message: '坐标不能为空', trigger: 'blur' }
]
} }
}, },
}, },
props: { props: {
serviceRecordId: { serviceRecordId: {
type: String, type: String,
required: '' required: true
}, },
formType: { formType: {// addeditdetail,feedback
type: String, type: String,
required: '' required: true
}, },
categrayArray: { categrayArray: {
type: Array, type: Array,
required: true,
default () { default () {
return [] return []
} }
@ -680,18 +489,8 @@ export default {
} }
} }
</script> </script>
<style scoped>
.div_map {
position: relative;
}
.div_searchmap {
z-index: 5000;
position: absolute;
top: 5px;
left: 5px;
}
</style>
<style lang="scss" scoped > <style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManageForm.scss"; @import "@/assets/scss/modules/management/form-main.scss";
</style> </style>

145
src/views/modules/communityService/fuwujilu/fuwuList.vue

@ -9,8 +9,8 @@
<div> <div>
<el-form-item label="服务分类" <el-form-item label="服务分类"
prop="serviceCategoryId"> prop="serviceCategoryKey">
<el-select v-model="formData.serviceCategoryId" <el-select v-model="formData.serviceCategoryKey"
placeholder="请选择" placeholder="请选择"
size="small" size="small"
clearable clearable
@ -49,7 +49,7 @@
class="item_width_2" class="item_width_2"
size="small" size="small"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
value="yyyy-MM-dd" value="yyyy-MM-dd"
placeholder="开始时间"> placeholder="开始时间">
</el-date-picker> </el-date-picker>
@ -59,7 +59,7 @@
class="item_width_2 data-tag" class="item_width_2 data-tag"
size="small" size="small"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
value="yyyy-MM-dd" value="yyyy-MM-dd"
placeholder="结束时间"> placeholder="结束时间">
</el-date-picker> </el-date-picker>
@ -133,6 +133,7 @@
<el-table-column prop="serviceCategoryName" <el-table-column prop="serviceCategoryName"
align="center" align="center"
width="100"
label="服务类别" label="服务类别"
:show-overflow-tooltip="true"> :show-overflow-tooltip="true">
</el-table-column> </el-table-column>
@ -143,17 +144,17 @@
:show-overflow-tooltip="true"> :show-overflow-tooltip="true">
</el-table-column> </el-table-column>
<el-table-column prop="serviceTimeStart" <el-table-column prop="serviceOrgName"
align="center" align="center"
width="110" min-width="150"
label="服务组织名称" label="服务组织名称"
:show-overflow-tooltip="true"> :show-overflow-tooltip="true">
</el-table-column> </el-table-column>
<el-table-column prop="address" <el-table-column prop="serviceTimeStart"
align="center" align="center"
min-width="210" width="250"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
label="服务时间"> label="服务时间">
<template slot-scope="scope"> <template slot-scope="scope">
@ -167,7 +168,7 @@
label="服务状态" label="服务状态"
:show-overflow-tooltip="true"> :show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.serviceStatus==='in_service'?'服务':'已完成'}}</span> <span>{{scope.row.serviceStatus==='in_service'?'进行中':'已完成'}}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -181,7 +182,7 @@
<el-table-column fixed="right" <el-table-column fixed="right"
label="操作" label="操作"
align="center" align="center"
width="100"> width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button @click="handleDetail(scope.row)" <el-button @click="handleDetail(scope.row)"
type="text" type="text"
@ -193,12 +194,12 @@
size="small" size="small"
class="div-table-button--edit">编辑</el-button> class="div-table-button--edit">编辑</el-button>
<el-button v-if="scope.row.serviceStatus==='in_service'" <el-button v-if="scope.row.serviceStatus==='in_service'"
@click="handleFreeBack(scope.row)" @click="handleFeedback(scope.row)"
type="text" type="text"
size="small" size="small"
class="div-table-button--edit">反馈</el-button> class="div-table-button--edit">反馈</el-button>
<el-button v-if="scope.row.serviceStatus==='in_service'" <el-button v-if="scope.row.serviceStatus==='in_service'"
@click="handleCancel(scope.row)" @click="handleDel(scope.row)"
type="text" type="text"
size="small" size="small"
class="div-table-button--delete">取消</el-button> class="div-table-button--delete">取消</el-button>
@ -225,7 +226,7 @@
:visible.sync="showAdd" :visible.sync="showAdd"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
:title="'新增记录'" :title="addDiaTitle"
width="850px" width="850px"
top="5vh" top="5vh"
class="dialog-h" class="dialog-h"
@ -235,19 +236,25 @@
:categrayArray="categrayArray" :categrayArray="categrayArray"
:statusArray="statusArray" :statusArray="statusArray"
:satisfyArray="satisfyArray" :satisfyArray="satisfyArray"
:serviceRecordId="serviceRecordId"
@handleOk="handleOk" @handleOk="handleOk"
@handleClose="handleClose"></add-form> @handleClose="handleClose"></add-form>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="showDetail" <el-dialog v-if="showDetail"
:visible.sync="showDetail"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
:title="'记录详情'" :title="detailDiaTitle"
width="850px" width="850px"
top="5vh" top="5vh"
class="dialog-h" class="dialog-h"
@closed="showDetail = false"> @closed="showDetail = false">
<detail-form ref="ref_detail_form" <detail-form ref="ref_detail_form"
:serviceRecordId="serviceRecordId"> :serviceRecordId="serviceRecordId"
:categrayArray="categrayArray"
@handleOk="handleOk"
@handleClose="handleClose"
:formType="formType">
</detail-form> </detail-form>
</el-dialog> </el-dialog>
@ -317,7 +324,7 @@ export default {
], ],
formData: { formData: {
serviceCategoryId: '',//id serviceCategoryKey: '',//id
serviceProjectName: '',// serviceProjectName: '',//
serviceOrgName: '',// serviceOrgName: '',//
serviceTimeStart: '',//yyyy-MM-dd serviceTimeStart: '',//yyyy-MM-dd
@ -340,7 +347,9 @@ export default {
showAdd: false, showAdd: false,
showDetail: false, showDetail: false,
showFeedback: false, showFeedback: false,
formType: 'add' formType: 'add',
addDiaTitle: '发起服务',
detailDiaTitle: '服务详情',
}; };
}, },
@ -353,13 +362,13 @@ export default {
...mapGetters(["clientHeight", "iframeHeight"]), ...mapGetters(["clientHeight", "iframeHeight"]),
}, },
watch: { watch: {
// "formData.serviceTimeEnd": function (val) { "formData.serviceTimeEnd": function (val) {
// if (val && val != '') { if (val && val != '') {
// let arrayTemp = val.split(' ') let arrayTemp = val.split(' ')
// this.formData.serviceTimeEnd = arrayTemp[0] this.formData.serviceTimeEnd = arrayTemp[0] + ' 23:59:59'
// } }
// }, },
}, },
mounted () { mounted () {
console.log(this.$store.state) console.log(this.$store.state)
@ -394,6 +403,7 @@ export default {
async handleAdd () { async handleAdd () {
this.addDiaTitle = '发起服务'
this.formType = 'add' this.formType = 'add'
this.showAdd = true; this.showAdd = true;
}, },
@ -401,27 +411,22 @@ export default {
async handleDetail (row) { async handleDetail (row) {
this.serviceRecordId = row.serviceRecordId this.serviceRecordId = row.serviceRecordId
this.formType = 'detail' this.formType = 'detail'
// this.showDetail = true this.showDetail = true
this.showAdd = true;
},
// },
async handleDispose (row) { async handleEdit (row) {
this.serviceRecordId = row.serviceRecordId this.serviceRecordId = row.serviceRecordId
const url = "/gov/project/icEvent/detail"; this.formType = 'edit'
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/detail"; this.showDetail = true
const { data, code, msg } = await requestPost(url, { },
serviceRecordId: this.serviceRecordId,
});
if (code === 0) {
this.eventDetailData = { ...data };
} else { //
this.$message.error(msg); async handleFeedback (row) {
} this.serviceRecordId = row.serviceRecordId
this.addDiaTitle = '服务反馈'
this.formType = 'feedback'
this.showAdd = true;
}, },
@ -429,33 +434,54 @@ export default {
this.serviceRecordId = "" this.serviceRecordId = ""
this.formType = '' this.formType = ''
this.showAdd = false; this.showAdd = false
this.getTableData() this.showDetail = false
}, },
handleOk () { handleOk () {
this.handleClose() this.handleClose()
this.pageNo = 1 this.pageNo = 1
this.getTableData()
}, },
handleEditSuccess () {
this.handleClose(); async handleDel (row) {
this.getTableData();
this.serviceRecordId = row.serviceRecordId
this.$confirm("确认取消服务?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.cancelFuwu()
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
}, },
async handleDel (rowData, rowIndex) { async cancelFuwu () {
console.log(rowData, rowIndex);
const url =
"/heart/iccommunityselforganization/delcommunityselforganization";
const { tableData } = this;
const { data, code, msg } = await requestPost(url, { const url = `/heart/icServiceProject/service/cancel/${this.serviceRecordId}`;
orgId: tableData[rowIndex].orgId,
});
const { data, code, msg } = await requestPost(url, {});
if (code === 0) { if (code === 0) {
this.$message.success("删除成功!"); this.$message.success("取消成功!");
this.getTableData(); this.getTableData();
} else { } else {
this.$message.error("操作失败!"); this.$message.error("操作失败!");
@ -463,8 +489,8 @@ export default {
}, },
async getTableData () { async getTableData () {
// const url = "/heart/icServiceProject/service/recordList"; const url = "/heart/icServiceProject/service/recordList";
const url = "http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/service/recordList"; // const url = "http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/service/recordList";
const { pageSize, pageNo, formData } = this; const { pageSize, pageNo, formData } = this;
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
pageSize, pageSize,
@ -546,14 +572,13 @@ export default {
resetSearch () { resetSearch () {
this.formData = { this.formData = {
gridId: '', serviceCategoryKey: '',
serviceCategoryId: '',
serviceProjectName: '', serviceProjectName: '',
serviceOrgName: '', serviceOrgName: '',
mobile: '',
serviceTimeStart: '', serviceTimeStart: '',
serviceTimeEnd: '', serviceTimeEnd: '',
serviceStatus: '', serviceStatus: '',
satisfaction: ''
} }

Loading…
Cancel
Save