Browse Source

Merge branch 'dev_fuwu0527'

shibei_master
dai 3 years ago
parent
commit
2a8564fffd
  1. 63
      src/views/modules/communityService/fuwujilu/addForm.vue
  2. 209
      src/views/modules/communityService/fuwujilu/detailForm.vue
  3. 6
      src/views/modules/communityService/fuwujilu/fuwuList.vue
  4. 40
      src/views/modules/communityService/fuwuxiangmu/cpts/edit.vue
  5. 2
      src/views/modules/communityService/fuwuxiangmu/index.vue
  6. 29
      src/views/modules/communityService/fuwuzuzhi/cpts/edit.vue
  7. 11
      src/views/modules/shequzhili/event/cpts/process-form-demand.vue

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

@ -122,10 +122,10 @@
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="500"
maxlength="1000"
show-word-limit
:rows="3"
placeholder="请输入备注,不超过500字"
placeholder="请输入备注,不超过1000字"
v-model="formData.remark"></el-input>
</el-form-item>
<el-form-item label="直接反馈"
@ -162,10 +162,10 @@
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="500"
maxlength="1000"
show-word-limit
:rows="3"
placeholder="请输入服务目标,不超过500字"
placeholder="请输入服务目标,不超过1000字"
v-model="feedbackFormData.serviceGoal"></el-input>
</el-form-item>
@ -175,10 +175,10 @@
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="500"
maxlength="1000"
show-word-limit
:rows="3"
placeholder="请输入服务效果,不超过500字"
placeholder="请输入服务效果,不超过1000字"
v-model="feedbackFormData.serviceEffect"></el-input>
</el-form-item>
@ -362,41 +362,6 @@ export default {
address: '',
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
orgList: [],//list
@ -430,18 +395,17 @@ export default {
async mounted () {
this.startLoading()
this.initMap()
this.$refs.ref_form_feedback.resetFields();
if (this.formType === 'add') {
this.$refs.ref_form.resetFields();
await this.loadScopeTree()
}
this.$refs.ref_form_feedback.resetFields();
} else {
this.$set(this.feedbackFormData, 'serviceProjectName', this.serviceProjectName)
}
this.endLoading()
this.formData = JSON.parse(JSON.stringify(this.formDataTemp));
this.feedbackFormData = { ...this.formData.feedback }
},
@ -598,7 +562,7 @@ export default {
console.log(this.formData)
// return false
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
if (regPhone.test(this.formData.principalContact) === false) {
if (this.formData.principalContact && regPhone.test(this.formData.principalContact) === false) {
this.btnDisable = false
this.$message({
type: 'warning',
@ -959,6 +923,11 @@ export default {
type: String,
required: ''
},
serviceProjectName: {//
type: String,
required: false,
default: ''
},
formType: { // addeditdetail,feedback
type: String,
required: ''

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

@ -139,6 +139,142 @@
</el-form>
<div v-show="formData.serviceStatus==='completed'">
<h3 class="d-h3">反馈内容</h3>
<el-form ref="ref_form_feedback"
:inline="true"
:disabled="true"
:model="feedbackFormData"
class="div_form">
<el-form-item label="服务目标"
prop="serviceGoal"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="1000"
show-word-limit
:rows="3"
placeholder="请输入服务目标,不超过1000字"
v-model="feedbackFormData.serviceGoal"></el-input>
</el-form-item>
<el-form-item label="服务效果"
prop="serviceEffect"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="1000"
show-word-limit
:rows="3"
placeholder="请输入服务效果,不超过1000字"
v-model="feedbackFormData.serviceEffect"></el-input>
</el-form-item>
<el-form-item label="服务人数"
style="display: block"
prop="servicePeopleNumber"
label-width="150px">
<el-input-number class="item_width_1"
v-model="feedbackFormData.servicePeopleNumber"
:min="0"
:max="9999"
label="服务人数"></el-input-number>
</el-form-item>
<el-form-item label="服务状态"
label-width="150px"
prop="serviceStatus">
<span>已完成</span>
<!-- <el-select class="item_width_1"
v-model="feedbackFormData.serviceStatus"
placeholder="全部"
clearable>
<el-option v-for="item in statusArray"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select> -->
</el-form-item>
<el-form-item label="满意度"
label-width="150px"
prop="satisfaction">
<el-select class="item_width_1"
v-model="feedbackFormData.satisfaction"
placeholder="全部"
clearable>
<el-option v-for="item in satisfyArray"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="地址"
prop="address"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
v-model="feedbackFormData.address"></el-input>
</el-form-item>
<!-- <el-form-item label="地图位置"
label-width="150px"
style="display: block">
<div style="width:500px">
<div class="div_map">
<div id="map_app">
</div>
<div class="div_searchmap">
<el-input 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>
</el-form-item> -->
<el-form-item class="block"
label="附件"
label-width="150px"
prop="attach">
<!-- <el-upload v-if="feedbackFormData.attachmentList&&feedbackFormData.attachmentList.length>0"
class="upload-demo"
:on-preview="handleFileDownload"
accept=".doc,.pdf,.xls,.docx,.xlsx,.jpg,.png,.jpeg,.bmp,.mp4,.wma,.m4a,.mp3"
:limit="3"
:file-list="fileList">
</el-upload> -->
<div v-if="feedbackFormData.attachmentList&&feedbackFormData.attachmentList.length>0"
class="attachement-list">
<a :href="att.attachmentUrl"
target="_blank"
:key="att.attachmentUrl"
v-for="att in feedbackFormData.attachmentList">
<i class="el-icon-folder-opened"></i>
{{ att.attachmentName }}
</a>
</div>
<span v-else>无附件</span>
</el-form-item>
</el-form>
</div>
</div>
<div class="div_btn">
@ -202,6 +338,20 @@ export default {
longitude: 36.0722275, //
latitude: 120.38945519 //
},
feedbackFormData: {
serviceProjectId: '',// id
serviceProjectName: '',
serviceGoal: '',//
serviceEffect: '',//
servicePeopleNumber: null,//
serviceStatus: 'completed',// in_servicecompleted:
satisfaction: '',//:bad:good:perfect
longitude: '',//
latitude: '',//
address: '',
attachmentList: [],//
},
serviceList: [],//list
endPickerOptions: {
@ -211,18 +361,19 @@ export default {
disabledDate: startDisabledDate
},
projectList: [],
fileList: [],
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile',
}
},
components: {},
mounted () {
if (this.serviceRecordId) {//
this.loadInfo()
}
// this.initMap()
console.log('mounted')
},
@ -240,13 +391,26 @@ export default {
if (code === 0) {
this.formData = { ...data }
this.formData.serviceRecordId = this.serviceRecordId
this.feedbackFormData = { ...data.feedBack }
this.feedbackFormData.servicePeopleNumber = this.formData.servicePeopleNumber
this.fileList = []
if (data.feedBack.attachmentList && data.feedBack.attachmentList.length > 0) {
data.feedBack.attachmentList.forEach(element => {
let obj = {
name: element.attachmentName,
format: element.attachmentFormat,
url: element.attachmentUrl,
}
this.fileList.push(obj)
});
}
} else {
this.$message.error(msg)
}
},
async handleComfirm () {
this.btnDisable = true
@ -303,6 +467,19 @@ export default {
},
//
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);
},
// init
initMap () {
//
@ -485,7 +662,13 @@ export default {
default () {
return []
}
}
},
satisfyArray: {
type: Array,
default () {
return []
}
},
}
}
</script>
@ -493,4 +676,18 @@ export default {
<style lang="scss" scoped >
@import "@/assets/scss/modules/management/form-main.scss";
.attachement-list {
// padding-left: 20px;
a {
display: block;
cursor: pointer;
// color: #4df0ff;
font-size: 14px;
i {
color: #333;
}
}
}
</style>

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

@ -238,6 +238,7 @@
:statusArray="statusArray"
:satisfyArray="satisfyArray"
:serviceRecordId="serviceRecordId"
:serviceProjectName="serviceProjectName"
@handleOk="handleOk"
@handleClose="handleClose"></add-form>
</el-dialog>
@ -252,6 +253,7 @@
@closed="showDetail = false">
<detail-form ref="ref_detail_form"
:serviceRecordId="serviceRecordId"
:satisfyArray="satisfyArray"
:categrayArray="categrayArray"
@handleOk="handleOk"
@handleClose="handleClose"
@ -344,6 +346,7 @@ export default {
disabledDate: startDisabledDate
},
serviceRecordId: '',
serviceProjectName: '',
showAdd: false,
showDetail: false,
@ -411,6 +414,7 @@ export default {
async handleDetail (row) {
this.serviceRecordId = row.serviceRecordId
this.formType = 'detail'
this.showDetail = true
@ -424,7 +428,9 @@ export default {
//
async handleFeedback (row) {
this.serviceRecordId = row.serviceRecordId
this.serviceProjectName = row.serviceProjectName
this.addDiaTitle = '服务反馈'
this.formType = 'feedback'
this.showAdd = true;

40
src/views/modules/communityService/fuwuxiangmu/cpts/edit.vue

@ -29,7 +29,7 @@
>
</el-option>
</el-select>
<div v-else>{{ fmData.serviceCategory || "--" }}</div>
<div style="width:610px" v-else>{{ fmData.serviceCategory || "--" }}</div>
</el-form-item>
<el-form-item
@ -47,7 +47,7 @@
v-model="fmData.serviceName"
>
</el-input>
<div v-else>{{ fmData.serviceName || "--" }}</div>
<div style="width:610px" v-else>{{ fmData.serviceName || "--" }}</div>
</el-form-item>
<el-form-item
@ -66,7 +66,7 @@
placeholder="请输入服务内容,不超过1000字"
v-model="fmData.serviceContent"
></el-input>
<div v-else>{{ fmData.serviceContent || "--" }}</div>
<div style="width:610px" v-else>{{ fmData.serviceContent || "--" }}</div>
</el-form-item>
<el-form-item
@ -89,7 +89,7 @@
>
</el-option>
</el-select>
<div v-else>{{ fmData.policyLevelName || "--" }}</div>
<div style="width:610px" v-else>{{ fmData.policyLevelName || "--" }}</div>
</el-form-item>
<el-form-item
@ -108,7 +108,7 @@
placeholder="请输入政策依据,不超过1000字"
v-model="fmData.policyGround"
></el-input>
<div v-else>{{ fmData.policyGround || "--" }}</div>
<div style="width:610px" v-else>{{ fmData.policyGround || "--" }}</div>
</el-form-item>
<el-form-item
@ -123,11 +123,15 @@
:data="{ customerId: customerId }"
:show-file-list="true"
:file-list="fmData.attachmentList"
:on-preview="handleImgPreview"
:on-success="handleImgSuccess"
:on-remove="handleImgRemove"
:on-exceed="handleImgExceed"
:before-upload="beforeImgUpload"
:limit="3"
>
<i class="el-icon-plus avatar-uploader-icon"></i>
<span style="color: #999"> 点击上传支持图片wordpdf格式</span>
</el-upload>
</el-form-item>
</el-form>
@ -210,12 +214,12 @@ export default {
serviceContent: [
{ required: true, message: "服务内容不能为空", trigger: "blur" },
],
policyGround: [
{ required: true, message: "政策依据不能为空", trigger: "blur" },
],
policyLevel: [
{ required: true, message: "政策级别不能为空", trigger: "blur" },
],
// policyGround: [
// { required: true, message: "", trigger: "blur" },
// ],
// policyLevel: [
// { required: true, message: "", trigger: "blur" },
// ],
};
},
},
@ -277,7 +281,7 @@ export default {
["doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"].indexOf(format) ==
-1
) {
this.$message.error("文档仅限pdf和office文件!");
this.$message.error("仅限图片、word和pdf文件!");
return false;
}
return true;
@ -308,6 +312,11 @@ export default {
}
},
handleImgPreview(file) {
console.log(file);
window.open(file.url || file.response.data.url);
},
handleImgRemove(file) {
console.log("handleImgRemove", file);
if (file.response) {
@ -323,6 +332,13 @@ export default {
}
},
handleImgExceed() {
this.$message({
type: "warning",
message: "文件数量最多不超过三个",
});
},
watchImg(src) {
window.open(src);
},

2
src/views/modules/communityService/fuwuxiangmu/index.vue

@ -140,7 +140,7 @@
</el-table-column>
<el-table-column
prop="policyLevel"
prop="policyLevelName"
align="center"
label="政策级别"
:show-overflow-tooltip="true"

29
src/views/modules/communityService/fuwuzuzhi/cpts/edit.vue

@ -30,7 +30,7 @@
>
</el-option>
</el-select>
<div v-else>{{ fmData.serviceTypeName }}</div>
<div style="width:610px" v-else>{{ fmData.serviceTypeName }}</div>
</el-form-item>
<el-form-item
@ -48,7 +48,7 @@
v-model="fmData.orgName"
>
</el-input>
<div v-else>{{ fmData.orgName || '--' }}</div>
<div style="width:610px" v-else>{{ fmData.orgName || "--" }}</div>
</el-form-item>
<el-form-item
@ -67,7 +67,7 @@
placeholder="请输入服务内容,不超过1000字"
v-model="fmData.orgDescribe"
></el-input>
<div v-else>{{ fmData.orgDescribe || '--' }}</div>
<div style="width:610px" v-else>{{ fmData.orgDescribe || "--" }}</div>
</el-form-item>
<el-form-item
@ -84,7 +84,7 @@
placeholder="请输入负责人姓名"
v-model="fmData.principalName"
></el-input>
<div v-else>{{ fmData.principalName || '--' }}</div>
<div style="width:610px" v-else>{{ fmData.principalName || "--" }}</div>
</el-form-item>
<el-form-item
@ -101,7 +101,7 @@
placeholder="请输入联系方式"
v-model="fmData.principalMobile"
></el-input>
<div v-else>{{ fmData.principalMobile || '--' }}</div>
<div style="width:610px" v-else>{{ fmData.principalMobile || "--" }}</div>
</el-form-item>
<el-form-item
@ -113,14 +113,16 @@
<div style="width: 500px">
<el-input
class="item_width_4"
maxlength="50"
placeholder="请输入关键字"
maxlength="100"
style="width: 430px"
show-word-limit
placeholder="请输入所在地址"
v-model="fmData.address"
>
</el-input>
<el-button
style="margin-left: 10px"
type="primary"
type="default"
size="small"
@click="handleSearchMap"
>查询</el-button
@ -163,7 +165,7 @@
placeholder="请输入备注,不超过500字"
v-model="fmData.remark"
></el-input>
<div v-else>{{ fmData.remark || '--' }}</div>
<div style="width:610px" v-else>{{ fmData.remark || "--" }}</div>
</el-form-item>
</el-form>
</div>
@ -191,6 +193,7 @@ var map;
var search;
var markers;
var infoWindowList;
var geocoder; //
export default {
props: {
@ -282,6 +285,8 @@ export default {
});
infoWindowList = Array(10);
geocoder = new TMap.service.Geocoder(); //
//
map.on("panend", () => {
this.handleMoveCenter();
@ -339,6 +344,12 @@ export default {
this.fmData.latitude = lat;
this.fmData.longitude = lng;
this.setMarker(lat, lng);
geocoder
.getAddress({ location: new TMap.LatLng(lat, lng) }) //
.then((result) => {
// this.fmData.address = result.result.address;
});
},
async getInfo() {

11
src/views/modules/shequzhili/event/cpts/process-form-demand.vue

@ -469,9 +469,14 @@ export default {
handleServiceChange (type, val) {
if (val === "social_org") {
if (type === "add") this.getServiceuserList(val, "add_demand");
else this.getServiceuserList(val, "query_demand");
} else this.getServiceuserList(val, "");
if (type === "add") {
this.getServiceuserList(val, "add_demand");
} else {
this.getServiceuserList(val, "query_demand");
}
} else {
this.getServiceuserList(val, "");
}
},
async getServiceuserList (serviceType, query) {

Loading…
Cancel
Save