| api/house/household.js | ●●●●● patch | view | raw | blame | history | |
| api/workLog/workLog.js | ●●●●● patch | view | raw | blame | history | |
| common/setting.js | ●●●●● patch | view | raw | blame | history | |
| components/myIssue/myIssue.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/grid/comment.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/grid/tenement.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/workbench/views/cshw.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/workbench/views/csjl.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/workbench/views/editExamine.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/workbench/views/report.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/workbench/views/reportAudit.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/workbench/views/workLog.vue | ●●●●● patch | view | raw | blame | history |
api/house/household.js
@@ -39,6 +39,17 @@ } // 查询住户 export const fetchHousehold = (params) => { return http.request({ url: 'blade-household/household/selectHouseholdList', method: 'GET', params: params }) } // 获取住户列表 export const getHouseholdList = (params) => { return http.request({ @@ -56,4 +67,4 @@ method: 'GET', params: params }) } } api/workLog/workLog.js
@@ -7,4 +7,4 @@ method: 'POST', data }) } } common/setting.js
@@ -9,9 +9,9 @@ // 版本号 version: '2.0.0', // 开发环境接口Url devUrl: 'http://z4042833u6.wicp.vip', // devUrl: 'http://192.168.0.106:9528', // devUrl: 'https://srgdjczzxtpt.com:2080/api', // devUrl: 'http://z4042833u6.wicp.vip', // devUrl: 'http://192.168.0.109:9528', devUrl: 'https://srgdjczzxtpt.com:2080/api', // devUrl: 'https://kt39592615.goho.co', minioBaseUrl: "https://srgdjczzxtpt.com:2080/gminio/jczz/", // minioBaseUrl:"http://192.168.0.103:9528/", components/myIssue/myIssue.vue
@@ -12,7 +12,9 @@ </view> <textarea v-if="textareaShow" @blur="blur" v-model="infoReceive.content" :placeholder="textareaPlaceholder" /> <view class="issue-btn-box"> <button v-if="submitShow" class="submit-btn bgc-main c-ff" @click="doSubmit">{{submitText}}</button> <button v-if="submitShow" class="submit-btn bgc-main c-ff" :disabled="infoReceive.content && infoReceive.score?false:true" @click="doSubmit">{{submitText}}</button> <slot name="submit"></slot> </view> </view> @@ -97,7 +99,8 @@ infoReceive: { score: 0, content: "" } }, canSubmit: false } }, @@ -136,7 +139,9 @@ * @name 提交 */ doSubmit() { this.$emit('submit', this.infoReceive) } }, created() { @@ -151,7 +156,7 @@ $fontSize: 28upx; .issue { background-color: $backgroundC; /* background-color: $backgroundC; */ &-head { background-color: $white; @@ -213,6 +218,12 @@ /* background-color: #3682FF; */ line-height: 80upx } button[disabled] { color: #fff !important; border-color: #999 !important; background-color: #999 !important; } } } subPackage/grid/comment.vue
@@ -27,14 +27,14 @@ return { content: "", id: "", title: "", title: "评分", isEdit: false, score: 0 } }, onLoad(option) { this.id = option.id; this.title = option.title; // this.title = option.title; if (option.data) { let data = JSON.parse(option.data); this.score = data.score; @@ -45,7 +45,7 @@ methods: { submitInfo(val) { let data = val; data.propertyCompanyid = this.id; data.propertyCompanyId = this.id; data.createUser = uni.getStorageSync("userInfo").user_id; if (this.isEdit) { delete data.content; @@ -67,6 +67,10 @@ </script> <style> page { background-color: #f5f5f5; } .container { padding: 30rpx 30rpx 0; } subPackage/grid/tenement.vue
@@ -40,7 +40,7 @@ <view class="comment" v-if="commentList.length"> <caption-row title="留言" /> <view class="comment-list bgc-ff mt-20"> <view class="comment-item flex " v-for="(item,index) in commentList" :key="index"> <view class="comment-item flex " v-for="(item,index) in commentList" :key="index" v-if="item.content"> <u-avatar size="45" src="/static/icon/user-01.png"></u-avatar> <view class="comment-item-content"> <view class="flex j-c-s-b a-i-c mb-20"> @@ -55,11 +55,11 @@ </view> </view> <view class="footer" v-if="!scoreInfo.score"> <view class="footer" v-if="!scoreInfo.id"> <u-search searchIcon='edit-pen' :animation="true" placeholder="写留言" disabled @click="navToComment"></u-search> </view> <footer-btn v-if="scoreInfo.score" text="修改评分" @submit="navToScore" /> <!-- <footer-btn v-if="!scoreInfo.score" text="修改评分" @click="navToScore" /> --> </view> @@ -146,11 +146,15 @@ url: `comment?id=${this.detailInfo.id}&title=${this.detailInfo.name}` }) }, // navToScore() { // uni.navigateTo({ // url: `comment?id=${this.detailInfo.id}&title=${this.detailInfo.name}&data=${JSON.stringify(this.scroeInfo)}` // }) // } navToScore() { console.log(11111) uni.navigateTo({ url: `comment?id=${this.detailInfo.id}&title=${this.detailInfo.name}&data=${JSON.stringify(this.scoreInfo)}`, complete: (res) => { console.log("res=>", res) } }) } } } </script> subPackage/workbench/views/cshw.vue
@@ -109,6 +109,9 @@ this.tabIndex = 1; this.tabStatus = 1; } if (option.placeId) { this.pagingParams.placeId = option.placeId } }, onShow() { subPackage/workbench/views/csjl.vue
@@ -29,7 +29,7 @@ <view class="info"> <view class="charge-man"> <text>场所负责人:</text> <text>{{ records.username || '未完善' }}</text> <text>{{ records.principal || '未完善' }}</text> </view> <view class="phone"> <text>手机号:</text> subPackage/workbench/views/editExamine.vue
@@ -275,8 +275,9 @@ this.form.placePractitioner = placePractitioner this.updatePlaceExt(this.form) }, pushPage() { this.$u.func.globalNavigator('/subPackage/workbench/views/cshw') this.$u.func.globalNavigator(`/subPackage/workbench/views/cshw?placeId=${this.form.placeId}`) } } } @@ -344,6 +345,8 @@ position: fixed; left: 0; bottom: 0; padding-bottom: calc(env(safe-area-inset-bottom) + 20rpx); z-index: 999; } } subPackage/workbench/views/report.vue
@@ -83,7 +83,7 @@ { name: "已处理", status: 3, type: 'error' type: 'success' }, ], typeList: [{ subPackage/workbench/views/reportAudit.vue
@@ -28,11 +28,7 @@ <view class="text">审核信息</view> </view> --> <caption-row title="审核信息" /> <view class="step"> <view class="step-list " v-for="i in defaultData.taskRepairStepList" v-if="defaultData.taskRepairStepList.length"> @@ -79,7 +75,7 @@ <view class="f-28">视频</view> <view class="mt-20"> <u-upload :fileList="form.videoList" :previewFullImage="uploadConfig.previewFullImage" :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" :accept="uploadConfig.acceptVideo" :multiple="uploadConfig.multiple" :maxCount="confirmFlag == 3 && form.videoList.length?form.videoList.length:uploadConfig.maxCount" :capture="uploadConfig.capture" :deletable="confirmFlag == 3 && form.videoList.length?false:true" @afterRead="afterReadImg($event,'videoList')" @delete="deletePics($event,'videoList')"> @@ -106,7 +102,7 @@ @confirm="handleConfirm"></u-picker> <u-picker :defaultIndex="peopleIndex" :closeOnClickOverlay="true" @close="isShowPeoplePicker = false" :show="isShowPeoplePicker" ref="pPicker" :columns="peopleList" keyName="distictName" :show="isShowPeoplePicker" ref="pPicker" :columns="peopleList" keyName="name" @cancel="isShowPeoplePicker = false" @confirm="handlePeopleConfirm" @change="changePeople"></u-picker> @@ -158,6 +154,11 @@ { label: '事件描述', name: 'remark', value: '未完善' }, { label: '提交时间', name: 'createTime', value: '未完善' } ], @@ -214,11 +215,11 @@ from: "list", peopleList: [ [{ distictName: "网格员", name: "网格员", type: 0 }, { distictName: "物业人员", name: "物业人员", type: 2 } ], @@ -433,7 +434,7 @@ let data = { addressCode: this.defaultData.addressCode, confirmFlag: 1, content: `事件已移交至${value[0].distictName}${value[1].distictName}`, content: `事件已移交至${value[0].name}${value[1].name}`, peopleType: 1, repairId: this.defaultData.id, transferUserId: value[1].id subPackage/workbench/views/workLog.vue
@@ -3,17 +3,45 @@ <view class="content bgc-ff"> <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="90" :labelStyle="{fontSize:'28rpx'}"> <u-form-item label="姓名" prop="info.name" borderBottom required> <u-form-item label="走访类型" prop="type" :borderBottom="false" required @click="isShowTypePicker = true"> <u-input v-model="typeName" disabled disabledColor="#fff" border="none" placeholder="请选择" placeholderClass="f-28 c-99" inputAlign="right"></u-input> <u-icon slot="right" name="arrow-right"></u-icon> </u-form-item> <u-form-item label="重点人群类型" prop="peopleType" :borderBottom="false" required @click="isShowLabelPicker = true" v-if="info.type == 2"> <u-input v-model="labelName" disabled disabledColor="#fff" border="none" placeholder="请选择" placeholderClass="f-28 c-99" inputAlign="right"></u-input> <u-icon slot="right" name="arrow-right"></u-icon> </u-form-item> <u-form-item label="被访人姓名" prop="name" :borderBottom="false" required @click="isShowPopup = true"> <u-input v-model="selectedHousehold.name" disabled disabledColor="#fff" border="none" placeholder="请选择" placeholderClass="f-28 c-99" inputAlign="right"></u-input> <u-icon slot="right" name="arrow-right"></u-icon> </u-form-item> <u-form-item label="手机号" borderBottom required v-if="info.householdId"> <u-input v-model="selectedHousehold.phoneNumber" border="none" disabled disabledColor="#f5f5f5" placeholderClass="f-28 c-99" inputAlign="right"></u-input> </u-form-item> <u-form-item label="走访地址" borderBottom required v-if="info.householdId"> <!-- <u-input v-model="address" border="none" disabled disabledColor="#f5f5f5" placeholderClass="f-28 c-99" inputAlign="right"></u-input> --> <view class="address-content"> {{address}} </view> </u-form-item> <!-- <u-form-item label="姓名" prop="info.name" borderBottom required> <u-input v-model="info.name" border="none" placeholder="请输入" placeholderClass="f-28 c-99" inputAlign="right"></u-input> </u-form-item> <u-form-item label="手机号" prop="phone" borderBottom required> <u-input v-model="info.phone" border="none" placeholder="请输入手机号" placeholderClass="f-28 c-99" <u-form-item label="手机号" prop="phone" borderBottom required> <u-input v-model="info.phone" border="none" placeholder="请输入手机号" placeholderClass="f-28 c-99" inputAlign="right"></u-input> </u-form-item> <u-form-item label="内容" borderBottom required> <u-input type="textarea" v-model="info.context" border="none" placeholderClass="f-28 c-99" inputAlign="right" placeholder="请输入内容"> </u-form-item> --> <u-form-item label="内容" borderBottom required> <u-input type="textarea" v-model="info.context" border="none" placeholderClass="f-28 c-99" inputAlign="right" placeholder="请输入内容"> </u-input> </u-form-item> <u-form-item label="走访时间" prop="workTime" :borderBottom="false" required @click="showSelectDate = true"> @@ -43,11 +71,42 @@ </view> <u-datetime-picker ref="datetimePicker" :show="showSelectDate" v-model="workTime" mode="datetime" :formatter="formatter" @confirm="confirmDate" @cancel="isShowPicker = false"></u-datetime-picker> <!-- <u-picker :show="isShowPicker" :columns="scStatus" :defaultIndex="houseIndex" @cancel="isShowPicker = false" @confirm="confirmHouse()"></u-picker> --> <footer-btn @click="submitInfo" /> :formatter="formatter" @confirm="confirmDate" @cancel="showSelectDate = false"></u-datetime-picker> <u-picker :show="isShowTypePicker" :columns="typeList" :defaultIndex="typeIndex" @cancel="isShowTypePicker = false" @confirm="confirmType()" keyName="dictValue"></u-picker> <u-picker :show="isShowLabelPicker" :columns="labelList" :defaultIndex="labelIndex" @cancel="isShowLabelPicker = false" @confirm="confirmLabelType()" keyName="name"></u-picker> <footer-btn @click="submitInfo" /> <u-popup :show="isShowPopup" mode="bottom" :round="10" closeable="true" @close="isShowPopup = false"> <view class="popup-content"> <view class="popup-title f-30"> 选择居民 </view> <u-search placeholder="请输入要搜索的内容(姓名 手机号)" :showAction="true" actionText="搜索" :animation="true" v-model="keyword" @search="searchHousehold" @custom="searchHousehold" @clear="clearKeyword"></u-search> <scroll-view class="popup-list" :scroll-y="true"> <view class="popup-list-item" v-for="(i,k) in houseHoldList" :key="k" @click="selectHousehold(i)"> <view class="flex a-i-c mb-10"> <text class="f-28 fw mr-20">{{i.name}}</text> <text class="f-26" v-if="i.phoneNumber">{{i.phoneNumber}}</text> </view> <view class="f-28"> {{i.townStreetName}}{{i.neiName}}{{i.aoiName}}{{i.address || ""}} </view> <view class="check-icon" v-if="i.id == info.householdId"> <u-icon name="checkbox-mark" color="#017BFC" size="30"></u-icon> </view> </view> </scroll-view> </view> </u-popup> </view> </template> @@ -57,6 +116,15 @@ addWorkLog } from "@/api/workLog/workLog.js" import uploadMixin from "@/mixin/uploadMixin"; import { bizDictionary } from '@/api/system/dict.js' import { getLabelListByParentId } from "@/api/label/label.js"; import { fetchHousehold } from "@/api/house/household.js" export default { mixins: [uploadMixin], data() { @@ -70,16 +138,29 @@ context: "" }, rules: { 'name': { // 'name': { // type: 'string', // required: true, // message: '请输入姓名', // trigger: ['blur', 'change'] // }, // 'phone': { // type: 'string', // required: true, // message: '请输入手机号', // trigger: ['blur', 'change'] // }, 'type': { type: 'string', required: true, message: '请输入姓名', message: '请选择走访类型', trigger: ['blur', 'change'] }, 'phone': { 'householdId': { type: 'string', required: true, message: '请输入手机号', message: '请选择被访问人', trigger: ['blur', 'change'] }, 'context': { @@ -92,7 +173,20 @@ showSelectDate: false, workTime: Number(new Date()), isShowPicker: false, houseIndex: [0] houseIndex: [0], typeList: [], typeName: "", typeIndex: [0], isShowTypePicker: false, isShowLabelPicker: false, labelList: [], labelIndex: [0], labelName: "", keyword: "", houseHoldList: [], selectedHousehold: {}, isShowPopup: false, address: "" } }, // onLoad() { @@ -100,7 +194,42 @@ // this.$set(this.info, "name", userInfo.real_name); // this.$set(this.info, "phone", userInfo.phone); // }, onLoad() { this.getTypeList(); this.getLabelLit(); }, methods: { getTypeList() { bizDictionary({ code: "haveType" }).then(res => { console.log(res) this.typeList = [res.data]; }) }, getLabelLit() { getLabelListByParentId({ parentId: 100 }).then(res => { this.labelList = [res.data]; }) }, getHouseholdList() { fetchHousehold({ labelId: this.info.personType, searchKey: this.keyword, limit: 20 }).then(res => { this.houseHoldList = res.data; }) }, confirmDate(e) { this.showSelectDate = false; @@ -111,6 +240,48 @@ this.houseIndex = e.indexs; this.info.houseCode = e.value[0]; this.isShowPicker = false; }, //选择走访类型 confirmType(e) { console.log("type==>", e); this.typeIndex = e.indexs; this.info.type = e.value[0].dictKey; this.typeName = e.value[0].dictValue; if (e.value[0].dictKey == 1) { this.info.personType = ""; this.keyword = ""; this.getHouseholdList(); } this.isShowTypePicker = false; }, //选择重点人群类型 confirmLabelType(e) { this.labelIndex = e.indexs; this.info.personType = e.value[0].id; this.labelName = e.value[0].name; this.isShowLabelPicker = false; this.getHouseholdList(); }, //搜索住户 searchHousehold() { this.getHouseholdList() }, clearKeyword() { this.keyword = ""; this.getHouseholdList() }, //选择住户 selectHousehold(item) { this.selectedHousehold = item; this.info.householdId = item.id; this.address = `${item.townStreetName}${item.neiName}${item.aoiName}${item.address || ""}` this.isShowPopup = false; }, checkImages() { @@ -203,4 +374,39 @@ font-size: 32rpx; } } .popup-content { width: 100%; padding: 0 30rpx 30rpx; box-sizing: border-box; .popup-title { padding: 30rpx 0; text-align: center; font-weight: bold; } .popup-list { height: 650rpx; } .popup-list-item { padding: 20rpx 0; border-bottom: 1px solid #f1f1f1; position: relative; } .check-icon { position: absolute; right: 20rpx; top: 20rpx; } } .address-content { flex: 1; background-color: #F5F5F5; font-size: 28rpx; padding: 2rpx 10rpx; } </style>