diff --git a/src/assets/img/icon-add.png b/src/assets/img/icon-add.png new file mode 100644 index 00000000..07d1bb4d Binary files /dev/null and b/src/assets/img/icon-add.png differ diff --git a/src/assets/img/icon-del.png b/src/assets/img/icon-del.png new file mode 100644 index 00000000..e7900056 Binary files /dev/null and b/src/assets/img/icon-del.png differ diff --git a/src/js/util.js b/src/js/util.js index 333f0351..eceb943b 100644 --- a/src/js/util.js +++ b/src/js/util.js @@ -12,6 +12,7 @@ export default { * @param {*} messageObj */ validateRule(messageObj) { + let message = '' for (var oneObj in messageObj) { message = message + messageObj[oneObj][0].message + '
' diff --git a/src/views/modules/communityService/fuwujilu/addForm.vue b/src/views/modules/communityService/fuwujilu/addForm.vue index 8cb7c9c7..49d37065 100644 --- a/src/views/modules/communityService/fuwujilu/addForm.vue +++ b/src/views/modules/communityService/fuwujilu/addForm.vue @@ -8,61 +8,48 @@ :model="formData" :rules="dataRule" class="div_form"> + + + + - - + - + - - - - - - - - - - - - + + + + + + + + 预览 + + - - {{feedbackFormData.serviceProjectName}} - -- - - - - 已完成 @@ -210,9 +210,10 @@ - @@ -287,6 +288,24 @@ :disabled="btnDisable" @click="handleComfirm">确 定 + + + + + @@ -294,7 +313,7 @@ import { mapGetters } from 'vuex' import { Loading } from 'element-ui' // 引入Loading服务 import { requestPost } from '@/js/dai/request' - +import personList from "../policy/personList"; var map @@ -337,10 +356,11 @@ export default { keyWords: '', formData: { - serviceCategoryKey: '',//服务分类id - serviceProjectId: '',//服务项目id - serviceOrgId: '',//服务组织id - serviceScope: [],// + serviceName: '',//服务名称 + serviceOrgType: '',//服务组织类型 社区自组织:community_org, 志愿者:ic_user_volunteer, 联建单位:party_unit + serviceOrgId: '',//服务组织Id + objList: [],// + policyId: '', principalName: '',//经办人(责任人)姓名 principalContact: '',//经办人联系方式 serviceTimeStart: '',//服务起始时间yyyy-MM-dd @@ -350,8 +370,6 @@ export default { }, feedbackFormData: { - serviceProjectId: '',// 服务项目id - serviceProjectName: '', serviceGoal: '',// 服务目标 serviceEffect: '',// 服务效果 servicePeopleNumber: null,// 服务人数 @@ -360,11 +378,9 @@ export default { longitude: '',// 经度 latitude: '',// 维度 address: '', - attachmentList: [],// 附件列表 + fileList: [],// 附件列表 }, - projectList: [],//服务项目list - orgList: [],//服务组织list endPickerOptions: { disabledDate: endDisabledDate @@ -374,11 +390,17 @@ export default { }, showFeedback: true, - + serviceOptions: [], + serviceOptiondList: [], + policyList: [], fileList: [], uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile', + policyId: '', + showPersonList: false, + ruleList: [] + } }, @@ -391,16 +413,18 @@ export default { }, }, - components: {}, + components: { personList }, async mounted () { this.startLoading() this.initMap() + this.getDictOptions(); + this.getPolicyList(); this.$refs.ref_form_feedback.resetFields(); if (this.formType === 'add') { this.$refs.ref_form.resetFields(); await this.loadScopeTree() } else { - this.$set(this.feedbackFormData, 'serviceProjectName', this.serviceProjectName) + } @@ -410,25 +434,113 @@ export default { methods: { - handleChangeFeedback (val) { - this.showFeedback = val + + //加载组织数据 + async handlePersonList () { + if (!this.formData.policyId) { + this.$message.info('请先选择政策') + return false + } + + this.policyId = this.formData.policyId + await this.loadRuleList() + + this.showPersonList = true; + }, + + async loadRuleList () { + + const url = "/heart/policy/rulelist/" + this.policyId + + let params = {} + + const { data, code, msg } = await requestPost(url, params) + + if (code === 0) { + this.ruleList = data + + } else { + this.$message.error(msg) + } + + }, + + handleClose () { + this.showPersonList = false + }, + handleOk () { + this.showPersonList = false - hancleClickCategray () { - this.formData.serviceProjectId = '' - this.formData.serviceOrgId = '' - //获取服务项目 - this.loadProjectList() - //获取服务组织 - this.loadOrgList() + + }, + + + async getPolicyList () { + const url = '/heart/policy/policyListSelect' + + let params = {} + + const { data, code, msg } = await requestPost(url, params) + + if (code === 0) { + this.policyList = data + } else { + this.$message.error(msg) + } + }, + async getDictOptions () { + this.$http + .post("/sys/dict/data/dictlist", { + dictType: "user_demand_service_type", + }) + .then(({ data: res }) => { + if (res.code !== 0) { + return this.$message.error(res.msg); + } else { + this.serviceOptions = res.data; + } + }) + .catch(() => { + return this.$message.error("网络错误"); + }); + }, + 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, ""); }, - hancleClickProject (index) { - this.feedbackFormData.serviceProjectId = this.projectList[index].serviceProjectId - this.feedbackFormData.serviceProjectName = this.projectList[index].serviceName + async getServiceuserList (serviceType, query) { + if (!serviceType) return false; + + const params = { + serviceName: "", + serviceType: serviceType, + queryPurpose: query, + }; + await this.$http + .post("/heart/userdemand/servicelist", params) + .then(({ data: res }) => { + if (res.code !== 0) { + return this.$message.error(res.msg); + } else { + this.serviceOptiondList = res.data + } + }) + .catch(() => { + return this.$message.error("网络错误"); + }); + }, + handleChangeFeedback (val) { + this.showFeedback = val + }, + + // 获取服务范围树 loadScopeTree () { const url = '/gov/org/icServiceProject/service/serviceScopeTree' @@ -455,7 +567,7 @@ export default { handleChangeScope (value) { - this.formData.serviceScope = [] + this.formData.objList = [] let selArray = this.$refs["myCascader"].getCheckedNodes() selArray.forEach(element => { @@ -464,46 +576,12 @@ export default { objectId: element.data.objectId, objectName: element.data.objectName, } - this.formData.serviceScope.push(obj) + this.formData.objList.push(obj) }); }, - //加载组织 - async loadProjectList () { - const url = '/heart/icServiceProject/serviceProjectList' - // const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/serviceProjectList' - let params = { - isPage: false, - serviceCategoryKey: this.formData.serviceCategoryKey, - } - const { data, code, msg } = await requestPost(url, params) - - if (code === 0) { - this.projectList = [...data.list] - } else { - this.$message.error(msg) - } - }, - - //加载组织 - async loadOrgList () { - const url = '/heart/icServiceOrg/selectlist' - // const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceOrg/selectlist' - let params = { - serviceType: this.formData.serviceCategoryKey, - - } - - const { data, code, msg } = await requestPost(url, params) - - if (code === 0) { - this.orgList = data - } else { - this.$message.error(msg) - } - }, async handleComfirm () { @@ -525,6 +603,13 @@ export default { app.util.validateRule(messageObj) this.btnDisable = false } else { + var oDate1 = new Date(this.formData.serviceTimeStart); + var oDate2 = new Date(this.formData.serviceTimeEnd); + if (oDate1.getTime() > oDate2.getTime()) { + this.$message.error('服务截止时间必须大于服务开始时间') + return false + } + if (this.showFeedback) { this.$refs['ref_form_feedback'].validate((valid, messageObj) => { @@ -551,8 +636,8 @@ export default { async addFuwu () { if (this.showFeedback) { - this.feedbackFormData.attachmentList = [] - this.feedbackFormData.attachmentList = [...this.fileList] + this.feedbackFormData.fileList = [] + this.feedbackFormData.fileList = [...this.fileList] this.formData.feedback = { ... this.feedbackFormData } } else { this.formData.feedback = null @@ -562,6 +647,7 @@ export default { console.log(this.formData) // return false const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 + if (this.formData.principalContact && regPhone.test(this.formData.principalContact) === false) { this.btnDisable = false this.$message({ @@ -572,10 +658,10 @@ export default { } - const url = '/heart/icServiceProject/service/initiate' + const url = '/heart/icServiceRecordV2/add' // const url = 'http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/service/initiate' let params = { - + serviceCategoryKey: this.serviceCategoryKey, ...this.formData } @@ -589,6 +675,7 @@ export default { this.$message.error(msg) } }, + async handleFeedback () { this.btnDisable = true @@ -612,15 +699,15 @@ export default { async addFeecback () { - this.feedbackFormData.attachmentList = [] - this.feedbackFormData.attachmentList = [...this.fileList] + this.feedbackFormData.fileList = [] + this.feedbackFormData.fileList = [...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' + const url = '/heart/icServiceFeedbackV2/add' + let params = { ...this.feedbackFormData @@ -629,7 +716,7 @@ export default { const { data, code, msg } = await requestPost(url, params) if (code === 0) { - this.$message.success('发起成功') + this.$message.success('反馈成功') this.resetData() this.$emit('handleOk') } else { @@ -669,21 +756,21 @@ export default { const mp3Array = ['mp3'] if (picArray.indexOf(fileType) > -1) { - file.attachmentFormat = 'image' + file.format = 'image' } else if (videoarray.indexOf(fileType) > -1) { - file.attachmentFormat = 'video' + file.format = 'video' } else if (docArray.indexOf(fileType) > -1) { - file.attachmentFormat = 'doc' + file.format = 'doc' } else if (mp3Array.indexOf(fileType) > -1) { - file.attachmentFormat = 'voice' + file.format = 'voice' } file.url = res.data.url file.type = fileType - file.attachmentName = file.name - file.attachmentType = file.type - file.attachmentUrl = file.url + file.name = file.name + file.type = file.type + file.url = file.url this.fileList.push(file) console.log(this.fileList) @@ -823,10 +910,8 @@ export default { resetData () { this.formData = { - serviceCategoryKey: '',//服务分类id - serviceProjectId: '',//服务项目id - serviceOrgId: '',//服务组织id - serviceScope: [],// + + objList: [],// principalName: '',//经办人(责任人)姓名 principalContact: '',//经办人联系方式 serviceTimeStart: '',//服务起始时间yyyy-MM-dd @@ -836,8 +921,8 @@ export default { } this.feedbackFormData = { - serviceProjectId: '',// 服务项目id - serviceProjectName: '', + + serviceGoal: '',// 服务目标 serviceEffect: '',// 服务效果 servicePeopleNumber: null,// 服务人数 @@ -846,7 +931,7 @@ export default { longitude: '',// 经度 latitude: '',// 维度 address: '', - attachmentList: [],// 附件列表 + fileList: [],// 附件列表 } }, // 开启加载动画 @@ -869,21 +954,19 @@ export default { dataRule () { return { - serviceCategoryKey: [ - { required: true, message: '服务类别不能为空', trigger: 'blur' }, - ], - serviceProjectId: [ - { required: true, message: '服务项目不能为空', trigger: 'blur' } - ], + serviceName: [ + { required: true, message: '服务名称不能为空', trigger: 'change' } + ], serviceOrgId: [ - { required: true, message: '服务组织不能为空', trigger: 'blur' } + { required: true, message: '服务组织不能为空', trigger: 'change' } ], + serviceTimeStart: [ - { required: true, message: '服务时间不能为空', trigger: 'blur' } + { required: true, message: '服务时间不能为空', trigger: 'change' } ], - serviceScope: [ - { required: true, message: '服务范围不能为空', trigger: 'blur' } + objList: [ + { required: true, message: '服务范围不能为空', trigger: 'change' } ], } @@ -891,9 +974,7 @@ export default { feedbackDataRule () { return { - serviceProjectName: [ - { required: true, message: '服务项目不能为空', trigger: 'blur' }, - ], + serviceGoal: [ { required: true, message: '服务目标不能为空', trigger: 'blur' } ], @@ -923,6 +1004,10 @@ export default { type: String, required: '' }, + serviceCategoryKey: { + type: String, + required: '' + }, serviceProjectName: {//服务项目名称 type: String, required: false, diff --git a/src/views/modules/communityService/fuwujilu/detailForm.vue b/src/views/modules/communityService/fuwujilu/detailForm.vue index 6125199c..970e9984 100644 --- a/src/views/modules/communityService/fuwujilu/detailForm.vue +++ b/src/views/modules/communityService/fuwujilu/detailForm.vue @@ -5,33 +5,14 @@ - - {{formData.serviceCategoryName}} - - - - - - {{formData.serviceProjectName}} + {{formData.serviceName}} + + + + + + + 预览 + + - @@ -96,8 +100,9 @@ prop="principalContact" label-width="150px" style="display: block"> - @@ -105,7 +110,8 @@ - - - - 已完成 - 无附件 @@ -286,6 +296,24 @@ :disabled="btnDisable" @click="handleComfirm">确 定 + + + + + @@ -293,7 +321,7 @@ import { mapGetters } from 'vuex' import { Loading } from 'element-ui' // 引入Loading服务 import { requestPost } from '@/js/dai/request' - +import personList from "../policy/personList"; var map @@ -326,22 +354,11 @@ export default { btnDisable: false, keyWords: '', - formData: { - unitName: '', - serviceMatterList: [], - type: '', - contact: '', - contactMobile: '', - memberCount: 0, - remark: '', //备注【最大500字】 - address: '', //详细地址 - longitude: 36.0722275, //经度 - latitude: 120.38945519 //纬度 - }, + formData: {}, feedbackFormData: { serviceProjectId: '',// 服务项目id - serviceProjectName: '', + serviceName: '', serviceGoal: '',// 服务目标 serviceEffect: '',// 服务效果 servicePeopleNumber: null,// 服务人数 @@ -350,7 +367,7 @@ export default { longitude: '',// 经度 latitude: '',// 维度 address: '', - attachmentList: [],// 附件列表 + fileList: [],// 附件列表 }, serviceList: [],//服务list @@ -360,14 +377,19 @@ export default { startPickerOptions: { disabledDate: startDisabledDate }, - + policyList: [], projectList: [], fileList: [], uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile', + + policyId: '', + showPersonList: false, + ruleList: [] } }, - components: {}, + components: { personList }, mounted () { + this.getPolicyList() if (this.serviceRecordId) {//详情 this.loadInfo() @@ -378,28 +400,82 @@ export default { methods: { + //加载组织数据 + async handlePersonList () { + if (!this.formData.policyId) { + this.$message.info('请先选择政策') + return false + } + + this.policyId = this.formData.policyId + await this.loadRuleList() + + this.showPersonList = true; + }, + + async loadRuleList () { + + const url = "/heart/policy/rulelist/" + this.policyId + + let params = {} + + const { data, code, msg } = await requestPost(url, params) + + if (code === 0) { + this.ruleList = data + + } else { + this.$message.error(msg) + } + }, + + handleClose () { + this.showPersonList = false + + + }, + handleOk () { + this.showPersonList = false + + }, + + async getPolicyList () { + const url = '/heart/policy/policyListSelect' + + let params = {} + + const { data, code, msg } = await requestPost(url, params) + + if (code === 0) { + this.policyList = data + } else { + this.$message.error(msg) + } + }, //加载组织 async loadInfo () { - const url = `/heart/icServiceProject/service/detail/${this.serviceRecordId}` - // const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/detail' + this.serviceRecordId - let params = {} + const url = '/heart/icServiceRecordV2/detail' + + let params = { + serviceRecordId: this.serviceRecordId + } const { data, code, msg } = await requestPost(url, params) if (code === 0) { this.formData = { ...data } this.formData.serviceRecordId = this.serviceRecordId - this.feedbackFormData = { ...data.feedBack } - this.feedbackFormData.servicePeopleNumber = this.formData.servicePeopleNumber + this.feedbackFormData = { ...data.feedback } + this.fileList = [] - if (data.feedBack.attachmentList && data.feedBack.attachmentList.length > 0) { - data.feedBack.attachmentList.forEach(element => { + if (data.feedback && data.feedback.fileList && data.feedback.fileList.length > 0) { + data.feedback.fileList.forEach(element => { let obj = { - name: element.attachmentName, - format: element.attachmentFormat, - url: element.attachmentUrl, + name: element.name, + format: element.format, + url: element.url, } this.fileList.push(obj) }); @@ -431,7 +507,7 @@ export default { }, async editFuwu () { 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', @@ -440,7 +516,7 @@ export default { return false; } - let url = '/heart/icServiceProject/service/update' + let url = '/heart/icServiceRecordV2/edit' // let url = "http://yapi.elinkservice.cn/mock/245/heart/icServiceProject/service/update" @@ -593,18 +669,7 @@ export default { resetData () { - this.formData = { - serviceCategoryKey: '',//服务分类id - serviceProjectId: '',//服务项目id - serviceOrgId: '',//服务组织id - serviceScope: [],// - principalName: '',//经办人(责任人)姓名 - principalContact: '',//经办人联系方式 - serviceTimeStart: '',//服务起始时间yyyy-MM-dd - serviceTimeEnd: '',//服务截止时间yyyy-MM-dd - remark: '',// - - } + this.formData = {} }, // 开启加载动画 startLoading () { @@ -626,22 +691,11 @@ export default { dataRule () { return { - serviceCategoryKey: [ - { required: true, message: '服务类别不能为空', trigger: 'blur' }, - ], - serviceProjectId: [ - { required: true, message: '服务项目不能为空', trigger: 'blur' } - ], - serviceOrgId: [ - { required: true, message: '服务组织不能为空', trigger: 'blur' } - ], serviceTimeStart: [ { required: true, message: '服务时间不能为空', trigger: 'blur' } ], - serviceScope: [ - { required: true, message: '服务范围不能为空', trigger: 'blur' } - ], + } }, @@ -652,17 +706,15 @@ export default { type: String, required: true }, - formType: {//表单操作类型 add新增,edit编辑,detail详情,feedback反馈 + serviceOrgName: { type: String, required: true }, - categrayArray: { - type: Array, - required: true, - default () { - return [] - } + formType: {//表单操作类型 add新增,edit编辑,detail详情,feedback反馈 + type: String, + required: true }, + satisfyArray: { type: Array, default () { diff --git a/src/views/modules/communityService/fuwujilu/fuwuList.vue b/src/views/modules/communityService/fuwujilu/fuwuList.vue index c670f259..aacc936b 100644 --- a/src/views/modules/communityService/fuwujilu/fuwuList.vue +++ b/src/views/modules/communityService/fuwujilu/fuwuList.vue @@ -8,23 +8,9 @@ :label-width="'80px'">
- - - - - - - - + - - + prop="serviceOrgType"> + + + + + - + + + + @@ -59,7 +62,7 @@ class="item_width_2 data-tag" size="small" type="date" - value-format="yyyy-MM-dd HH:mm:ss" + value-format="yyyy-MM-dd" value="yyyy-MM-dd" placeholder="结束时间"> @@ -132,15 +135,8 @@ align="center" width="50" /> - - - - @@ -155,7 +151,7 @@