gaoluyang
16 小时以前 2a500686266b8fc6dae991c799800e37083a45c2
src/pages/cooperativeOffice/clientVisit/detail.vue
@@ -1,122 +1,108 @@
<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="90">
      <!-- 客户信息 -->
      <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="请输入客户名称"
          />
        </u-form-item>
        <u-form-item label="联系人" prop="contact" border-bottom>
          <u-input
            v-model="form.contact"
            placeholder="请输入联系人"
          />
        </u-form-item>
        <u-form-item label="联系电话" prop="contactPhone" border-bottom>
          <u-input
            v-model="form.contactPhone"
            placeholder="请输入联系电话"
          />
        </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="purposeVisit" required border-bottom>
          <u-input
            v-model="form.purposeVisit"
            placeholder="请输入拜访目的"
          />
        </u-form-item>
        <u-form-item label="拜访时间" prop="purposeDate" required border-bottom>
          <u-input
            v-model="form.purposeDate"
            placeholder="请选择拜访时间"
            @click="showTimePicker"
          />
          <template #right>
               <up-icon
                  name="arrow-right"
                  @click="showTimePicker"
               ></up-icon>
            </template>
        </u-form-item>
        <u-form-item label="拜访地点" prop="visitAddress" required border-bottom>
          <u-input
            v-model="form.visitAddress"
            placeholder="请输入拜访地点"
          >
            <template #suffix>
              <u-icon name="map" @click="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
        v-model="currentTime"
        type="datetime"
        @confirm="onTimeConfirm"
        @cancel="showTime = false"
        title="选择拜访时间"
      />
    </van-popup>
    <up-datetime-picker
               :show="showTime"
               v-model="currentTime"
               @confirm="onTimeConfirm"
               @cancel="showTime = false"
               mode="datetime"
            />
  </view>
</template>
<script setup>
// 替换 toast 方法
defineOptions({name: 'client-visit-detail'})
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()
@@ -141,11 +127,13 @@
const formRef = ref(null)
// 时间相关
const currentTime = ref(new Date())
const currentTime = ref(Date.now())
const showTime = ref(false)
// 返回上一页
const goBack = () => {
  // 返回时清除本地存储的ID
  uni.removeStorageSync('clientVisit')
  uni.navigateBack()
}
@@ -155,10 +143,11 @@
}
// 确认时间选择
const onTimeConfirm = ({ selectedValues }) => {
  form.value.purposeDate = selectedValues.join('-')
  currentTime.value = selectedValues.join('-')
  showTime.value = false
const onTimeConfirm = (e) => {
  console.log(e)
  form.value.purposeDate = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
   currentTime.value = e.value
   showTime.value = false;
}
// 获取当前位置
@@ -222,8 +211,6 @@
// 提交签到
const handleSignIn = async () => {
    console.log('form.value----', form.value);
  if (!form.value.customerName) {
    showToast('请输入客户名称')
    return
@@ -252,16 +239,14 @@
    Object.keys(source).forEach((k) => {
      submitData[k] = source[k]
    })
    console.log('提交数据:', submitData)
      console.log('submitData', submitData)
    const { code } = await clientVisitSignIn(submitData)
    console.log('code----', code);
    
    if (code === 200) {
      showToast('签到成功')
      setTimeout(() => {
        uni.navigateBack()
            goBack()
      }, 500)
    } else {
      loading.value = false
@@ -269,7 +254,6 @@
    }
  } catch (e) {
    loading.value = false
    showToast('签到失败,请检查网络连接')
    console.error('签到失败:', e)
  }
}
@@ -278,7 +262,7 @@
const initPageData = () => {
  // 设置默认拜访时间为当前时间
  form.value.purposeDate = dayjs().format('YYYY-MM-DD HH:mm:ss')
  currentTime.value = new Date()
  currentTime.value = Date.now()
  
  // 设置拜访人为当前登录用户的昵称
  form.value.visitingPeople = userStore.nickName || ''
@@ -290,6 +274,7 @@
</script>
<style scoped lang="scss">
@import '@/static/scss/form-common.scss';
.client-visit {
  min-height: 100vh;
  background: #f8f9fa;