| | |
| | | <template> |
| | | <view class="client-visit"> |
| | | <!-- 使用通用页面头部组件 --> |
| | | <PageHeader title="客户拜访登记" @back="goBack" /> |
| | | <view class="client-visit-detail"> |
| | | <PageHeader title="客户拜访详情" @back="goBack" /> |
| | | |
| | | <!-- 签到表单 --> |
| | | <van-form @submit="handleSignIn" ref="formRef" label-width="110px" input-align="right" error-message-align="right"> |
| | | <u-form @submit="handleSignIn" ref="formRef" label-width="110" input-align="right" error-message-align="right"> |
| | | <!-- 客户信息 --> |
| | | <van-cell-group title="客户信息" inset> |
| | | <van-field |
| | | v-model="form.customerName" |
| | | label="客户名称" |
| | | placeholder="请输入客户名称" |
| | | required |
| | | name="customerName" |
| | | clearable |
| | | /> |
| | | <van-field |
| | | v-model="form.contact" |
| | | label="联系人" |
| | | placeholder="请输入联系人" |
| | | name="contact" |
| | | clearable |
| | | /> |
| | | <van-field |
| | | v-model="form.contactPhone" |
| | | label="联系电话" |
| | | placeholder="请输入联系电话" |
| | | name="contactPhone" |
| | | clearable |
| | | /> |
| | | </van-cell-group> |
| | | |
| | | <u-cell-group title="客户信息"> |
| | | <u-form-item label="客户名称" prop="customerName" required border-bottom> |
| | | <u-input |
| | | v-model="form.customerName" |
| | | placeholder="请输入客户名称" |
| | | readonly |
| | | /> |
| | | </u-form-item> |
| | | <u-form-item label="联系人" prop="contactPerson" border-bottom> |
| | | <u-input |
| | | v-model="form.contactPerson" |
| | | placeholder="请输入联系人" |
| | | readonly |
| | | /> |
| | | </u-form-item> |
| | | <u-form-item label="联系电话" prop="contactPhone" border-bottom> |
| | | <u-input |
| | | v-model="form.contactPhone" |
| | | placeholder="请输入联系电话" |
| | | readonly |
| | | /> |
| | | </u-form-item> |
| | | </u-cell-group> |
| | | |
| | | <!-- 拜访信息 --> |
| | | <van-cell-group title="拜访信息" inset> |
| | | <van-field |
| | | v-model="form.visitingPeople" |
| | | label="拜访人" |
| | | placeholder="拜访人" |
| | | name="visitingPeople" |
| | | readonly |
| | | clearable |
| | | /> |
| | | <van-field |
| | | v-model="form.purposeVisit" |
| | | label="拜访目的" |
| | | placeholder="请输入拜访目的" |
| | | name="purposeVisit" |
| | | required |
| | | clearable |
| | | /> |
| | | <van-field |
| | | v-model="form.purposeDate" |
| | | label="拜访时间" |
| | | placeholder="请选择拜访时间" |
| | | name="purposeDate" |
| | | required |
| | | readonly |
| | | @click="showTimePicker" |
| | | clearable |
| | | /> |
| | | <van-field |
| | | v-model="form.visitAddress" |
| | | label="当前位置" |
| | | placeholder="点击获取当前位置" |
| | | name="visitAddress" |
| | | :readonly="true" |
| | | :disabled="true" |
| | | type="textarea" |
| | | @click="getCurrentLocation" |
| | | clearable |
| | | > |
| | | <template #right-icon> |
| | | <van-icon name="location-o" @click.stop="getCurrentLocation" class="location-icon" /> |
| | | </template> |
| | | </van-field> |
| | | </van-cell-group> |
| | | |
| | | <u-cell-group title="拜访信息"> |
| | | <u-form-item label="拜访目的" prop="visitPurpose" required border-bottom> |
| | | <u-input |
| | | v-model="form.visitPurpose" |
| | | placeholder="请输入拜访目的" |
| | | /> |
| | | </u-form-item> |
| | | <u-form-item label="拜访时间" prop="visitTime" required border-bottom> |
| | | <u-input |
| | | v-model="form.visitTime" |
| | | placeholder="请选择拜访时间" |
| | | readonly |
| | | @click="showTimePicker" |
| | | /> |
| | | </u-form-item> |
| | | <u-form-item label="拜访地点" prop="visitLocation" required border-bottom> |
| | | <u-input |
| | | v-model="form.visitLocation" |
| | | placeholder="请输入拜访地点" |
| | | > |
| | | <template #suffix> |
| | | <u-icon name="map" @click.stop="getCurrentLocation" class="location-icon" /> |
| | | </template> |
| | | </u-input> |
| | | </u-form-item> |
| | | </u-cell-group> |
| | | |
| | | <!-- 备注信息 --> |
| | | <van-cell-group title="备注信息" inset> |
| | | <van-field |
| | | v-model="form.remark" |
| | | label="备注" |
| | | name="remark" |
| | | type="textarea" |
| | | placeholder="请输入备注信息" |
| | | rows="3" |
| | | autosize |
| | | clearable |
| | | /> |
| | | </van-cell-group> |
| | | |
| | | <u-cell-group title="备注信息"> |
| | | <u-form-item label="备注" prop="remark" border-bottom> |
| | | <u-textarea |
| | | v-model="form.remark" |
| | | placeholder="请输入备注信息" |
| | | :maxlength="200" |
| | | count |
| | | :autoHeight="true" |
| | | /> |
| | | </u-form-item> |
| | | </u-cell-group> |
| | | |
| | | <!-- 提交按钮 --> |
| | | <view class="footer-btns"> |
| | | <van-button class="cancel-btn" @click="goBack">取消</van-button> |
| | | <van-button class="sign-btn" native-type="submit" form-type="submit" :loading="loading">签到</van-button> |
| | | <u-button class="cancel-btn" @click="goBack">取消</u-button> |
| | | <u-button class="sign-btn" type="primary" @click="handleSignIn" :loading="loading">签到</u-button> |
| | | </view> |
| | | </van-form> |
| | | |
| | | </u-form> |
| | | |
| | | <!-- 时间选择器 --> |
| | | <van-popup v-model:show="showTime" position="bottom"> |
| | | <van-date-picker |
| | | <u-popup v-model="showTime" mode="bottom"> |
| | | <u-datetime-picker |
| | | v-model="currentTime" |
| | | type="datetime" |
| | | title="选择时间" |
| | | @confirm="onTimeConfirm" |
| | | @cancel="showTime = false" |
| | | title="选择拜访时间" |
| | | /> |
| | | </van-popup> |
| | | </u-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script setup> |
| | | // 替换 toast 方法 |
| | | const showToast = (message) => { |
| | | uni.showToast({ |
| | | title: message, |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | |
| | | import { ref, onMounted } from 'vue' |
| | | import { onShow } from '@dcloudio/uni-app' |
| | | import PageHeader from '@/components/PageHeader.vue' |
| | | import { clientVisitSignIn } from '@/api/cooperativeOffice/clientVisit' |
| | | import useUserStore from "@/store/modules/user" |
| | | import { showToast } from 'vant' |
| | | import dayjs from "dayjs" |
| | | |
| | | const userStore = useUserStore() |