| | |
| | | <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-input v-model="info.name" border="none" placeholder="请输入标题" placeholderClass="f-28 c-99" |
| | | <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="householdId" :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"> |
| | | </u-form-item> --> |
| | | <u-form-item label="内容" borderBottom required prop="context"> |
| | | <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"> |
| | |
| | | </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> --> |
| | | <view class="footer"> |
| | | <button class="footer-btn" @click="submitInfo">提交</button> |
| | | </view> |
| | | :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" :text="isEdit?'保存':'提交'" /> --> |
| | | |
| | | <button class="submit-btn" @click="submitInfo">{{isEdit?"保存":"提交"}}</button> |
| | | <button class="list-btn" @click="navToRecord">走访记录</button> |
| | | |
| | | |
| | | <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> |
| | | |
| | | <script> |
| | | import { |
| | | addWorkLog |
| | | addWorkLog, |
| | | getWorkLogDetail, |
| | | updateWorkLog |
| | | } from "@/api/workLog/workLog.js" |
| | | import uploadMixin from "@/mixin/uploadMixin"; |
| | | import { |
| | | bizDictionary, |
| | | update |
| | | } from '@/api/system/dict.js' |
| | | import { |
| | | getLabelListByParentId |
| | | } from "@/api/label/label.js"; |
| | | import { |
| | | fetchHousehold |
| | | } from "@/api/house/household.js" |
| | | import { |
| | | getHouseholdDetail |
| | | } from '@/api/house/household.js' |
| | | export default { |
| | | mixins: [uploadMixin], |
| | | data() { |
| | |
| | | images: [] |
| | | }, |
| | | info: { |
| | | name: "", |
| | | phone: "", |
| | | context: "" |
| | | // name: "", |
| | | // phone: "", |
| | | type: "", |
| | | householdId: "", |
| | | context: "", |
| | | workTime: "", |
| | | personType: "" |
| | | }, |
| | | rules: { |
| | | 'name': { |
| | | // 'name': { |
| | | // type: 'string', |
| | | // required: true, |
| | | // message: '请输入姓名', |
| | | // trigger: ['blur', 'change'] |
| | | // }, |
| | | // 'phone': { |
| | | // type: 'string', |
| | | // required: true, |
| | | // message: '请输入手机号', |
| | | // trigger: ['blur', 'change'] |
| | | // }, |
| | | |
| | | type: [{ |
| | | type: 'number', |
| | | required: true, |
| | | message: '请选择走访类型', |
| | | trigger: ['blur', 'change'] |
| | | }], |
| | | // peopleType: [{ |
| | | // type: 'number', |
| | | // required: true, |
| | | // message: '请选择重点人群类型', |
| | | // trigger: ['blur', 'change'] |
| | | // }], |
| | | householdId: [{ |
| | | type: 'string', |
| | | required: true, |
| | | message: '请输入姓名', |
| | | message: '请选择被访问人', |
| | | trigger: ['blur', 'change'] |
| | | }, |
| | | 'phone': { |
| | | type: 'string', |
| | | required: true, |
| | | message: '请输入手机号', |
| | | trigger: ['blur', 'change'] |
| | | }, |
| | | 'context': { |
| | | }], |
| | | context: [{ |
| | | type: 'string', |
| | | required: true, |
| | | message: '请输入工作内容', |
| | | trigger: ['blur', 'change'] |
| | | }, |
| | | }], |
| | | }, |
| | | 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: "", |
| | | isEdit: false, |
| | | id: "" |
| | | } |
| | | }, |
| | | onLoad() { |
| | | let userInfo = uni.getStorageSync("userInfo"); |
| | | this.$set(this.info, "name", userInfo.real_name); |
| | | this.$set(this.info, "phone", userInfo.phone); |
| | | // onLoad() { |
| | | // let userInfo = uni.getStorageSync("userInfo"); |
| | | // this.$set(this.info, "name", userInfo.real_name); |
| | | // this.$set(this.info, "phone", userInfo.phone); |
| | | // }, |
| | | |
| | | |
| | | async onLoad(option) { |
| | | await this.getTypeList(); |
| | | await this.getLabelList(); |
| | | if (option.id) { |
| | | this.isEdit = true; |
| | | this.id = option.id; |
| | | setTimeout(() => { |
| | | this.getDetail(option.id) |
| | | }, 200) |
| | | } |
| | | }, |
| | | |
| | | onReady() { |
| | | //onReady 为uni-app支持的生命周期之一 |
| | | this.$refs.form.setRules(this.rules) |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | getDetail(id) { |
| | | getWorkLogDetail({ |
| | | id |
| | | }).then(res => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | let data = res.data |
| | | this.tyepIndex = this.$getIndex(this.typeList[0], data.type, "dictKey", "dictValue").index; |
| | | this.typeName = this.$getIndex(this.typeList[0], data.type, "dictKey", "dictValue").name; |
| | | if (data.workTime) { |
| | | this.workTime = Number(new Date(data.workTime)) |
| | | } |
| | | // this.info.type = data.type; |
| | | // this.info.workTime = data.workTime; |
| | | // this.info.context = data.context; |
| | | // this.info.householdId = data.householdId; |
| | | // this.info.personType = data.personType; |
| | | console.log(typeof data.personType) |
| | | this.labelIndex = this.$getIndex(this.labelList[0], data.personType, "id", "name").index; |
| | | this.labelName = this.$getIndex(this.labelList[0], data.personType, "id", "name").name; |
| | | this.getHouseholdList(); |
| | | this.getHousehold(data.householdId); |
| | | this.form.images = this.$setImageUrl(data.url, 2); |
| | | this.info.id = data.id; |
| | | for (let i in this.info) { |
| | | this.$set(this.info, i, data[i]) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | getTypeList() { |
| | | bizDictionary({ |
| | | code: "haveType" |
| | | }).then(res => { |
| | | console.log(res) |
| | | this.typeList = [res.data]; |
| | | }) |
| | | }, |
| | | |
| | | getLabelList() { |
| | | getLabelListByParentId({ |
| | | parentId: 100 |
| | | }).then(res => { |
| | | this.labelList = [res.data]; |
| | | }) |
| | | }, |
| | | |
| | | getHousehold(id) { |
| | | getHouseholdDetail({ |
| | | id |
| | | }).then(res => { |
| | | console.log(res); |
| | | this.address = res.data.currentAddress; |
| | | this.selectedHousehold = res.data; |
| | | }) |
| | | }, |
| | | |
| | | getHouseholdList() { |
| | | fetchHousehold({ |
| | | labelId: this.info.personType, |
| | | searchKey: this.keyword, |
| | | limit: 20 |
| | | }).then(res => { |
| | | this.houseHoldList = res.data; |
| | | }) |
| | | }, |
| | | |
| | | confirmDate(e) { |
| | | this.showSelectDate = false; |
| | |
| | | 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() { |
| | |
| | | submitInfo() { |
| | | this.$refs.form.validate().then(valid => { |
| | | this.checkImages(); |
| | | addWorkLog(this.info).then(res => { |
| | | uni.showToast({ |
| | | icon: 'success', |
| | | title: '提交成功', |
| | | success() { |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 1000) |
| | | } |
| | | }) |
| | | this.info.status = 2; |
| | | if (this.info.type == 2 && !this.info.personType) { |
| | | this.$showTips("请选择重点人群类型") |
| | | return |
| | | } |
| | | if (this.isEdit) { |
| | | this.updateWorkLogRequest() |
| | | } else { |
| | | this.addWorkLogRequest() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | addWorkLogRequest() { |
| | | addWorkLog(this.info).then(res => { |
| | | uni.showToast({ |
| | | icon: 'success', |
| | | title: '提交成功' |
| | | }) |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 300) |
| | | }) |
| | | }, |
| | | |
| | | updateWorkLogRequest() { |
| | | updateWorkLog(this.info).then(res => { |
| | | uni.showToast({ |
| | | icon: 'success', |
| | | title: '提交成功', |
| | | }) |
| | | setTimeout(() => { |
| | | this.reLoadPrePage() |
| | | }, 300) |
| | | }) |
| | | }, |
| | | |
| | | //刷新上一页数据后返回 |
| | | reLoadPrePage() { |
| | | let pages = getCurrentPages(); |
| | | let prePage = pages[pages.length - 2]; |
| | | prePage.$vm.resetParams(); |
| | | prePage.$vm.getList(); |
| | | uni.navigateBack(); |
| | | }, |
| | | |
| | | |
| | | navToRecord() { |
| | | uni.navigateTo({ |
| | | url: "/subPackage/workLog/list" |
| | | }) |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | 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; |
| | | } |
| | | |
| | | .submit-btn { |
| | | width: 690rpx; |
| | | height: 78rpx; |
| | | line-height: 78rpx; |
| | | background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%); |
| | | border-radius: 8rpx 8rpx 8rpx 8rpx; |
| | | font-size: 32rpx; |
| | | color: #fff; |
| | | margin-top: 50rpx; |
| | | } |
| | | |
| | | .list-btn { |
| | | width: 690rpx; |
| | | height: 78rpx; |
| | | line-height: 78rpx; |
| | | background: linear-gradient(163deg, #c7d7dc 0%, #c3cdd8 100%); |
| | | border-radius: 8rpx 8rpx 8rpx 8rpx; |
| | | font-size: 32rpx; |
| | | color: #fff; |
| | | margin-top: 50rpx; |
| | | } |
| | | </style> |