|
|
|
@@ -0,0 +1,125 @@ |
|
|
|
<script setup lang="ts"> |
|
|
|
import "./index.scss"; |
|
|
|
import Taro from "@tarojs/taro"; |
|
|
|
import { Router } from 'tarojs-router-next' |
|
|
|
import StringUtil from "../../utils/StringUtil"; |
|
|
|
|
|
|
|
|
|
|
|
import { reactive, ref } from 'vue'; |
|
|
|
|
|
|
|
const props = defineProps(['data']) |
|
|
|
|
|
|
|
// const isSuggestionsShow = ref(false) |
|
|
|
|
|
|
|
const state = reactive({ |
|
|
|
isSuggestionsShow: false, |
|
|
|
name: props.data ? props.data.name : '', |
|
|
|
company: props.data ? props.data.company : '', |
|
|
|
avatar: props.data ? props.data.avatar : '', |
|
|
|
number: '', |
|
|
|
isFlexVisit: props.data ? props.data.isFlexVisit : true, |
|
|
|
date: '', |
|
|
|
isDateSelectorVisible: false |
|
|
|
}); |
|
|
|
|
|
|
|
const openSwitch = (param) => { |
|
|
|
state[`${param}`] = true; |
|
|
|
}; |
|
|
|
const closeSwitch = (param) => { |
|
|
|
state[`${param}`] = false; |
|
|
|
}; |
|
|
|
const setChooseValue = (param) => { |
|
|
|
state.date = param[3]; |
|
|
|
}; |
|
|
|
|
|
|
|
function setShowSuggestions(isShow: Boolean) { |
|
|
|
state.isSuggestionsShow = isShow |
|
|
|
} |
|
|
|
|
|
|
|
const updateFacePhoto = () => { |
|
|
|
Taro.chooseImage({ |
|
|
|
count: 1, // 默认9 |
|
|
|
sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有 |
|
|
|
success: function (res) { |
|
|
|
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片 |
|
|
|
state.avatar = res.tempFilePaths |
|
|
|
console.log(state.avatar) |
|
|
|
}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
<template> |
|
|
|
|
|
|
|
<nut-form> |
|
|
|
<nut-form-item> |
|
|
|
<view> |
|
|
|
<view class="d-flex justify-content-center"> |
|
|
|
<nut-avatar size="192" @click="updateFacePhoto" class="overflow-hidden"> |
|
|
|
<img v-if="state.avatar" :src="state.avatar" /> |
|
|
|
<view v-else class="d-flex align-items-center justify-content-center h-100 w-100"> |
|
|
|
<Text class="fas fa-user fa-6x"></Text> |
|
|
|
</view> |
|
|
|
</nut-avatar> |
|
|
|
</view> |
|
|
|
<view class="d-flex justify-content-center pt-3"> |
|
|
|
<view class="btn btn-secondary badge-pill" @tap="updateFacePhoto">{{state.avatar?'更换':'添加'}}面部识别照片</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</nut-form-item> |
|
|
|
<nut-form-item label="姓名"> |
|
|
|
<nut-input v-model="state.name" class="nut-input-text" /> |
|
|
|
</nut-form-item> |
|
|
|
<nut-form-item label="称呼"> |
|
|
|
<nut-input v-model="state.nickName" class="nut-input-text" @focus="setShowSuggestions(true)" @blur="setShowSuggestions(false)" /> |
|
|
|
</nut-form-item> |
|
|
|
<view class="suggestions" v-show="state.isSuggestionsShow"> |
|
|
|
<view>先生</view> |
|
|
|
<view>女士</view> |
|
|
|
<view>小姐</view> |
|
|
|
<view><Text className="fas fa-info-circle text-info"/> 您可以从列表中选择或直接填写</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<nut-form-item label="电话"> |
|
|
|
<nut-input v-model="state.phone" class="nut-input-text" /> |
|
|
|
</nut-form-item> |
|
|
|
<nut-form-item label="公司"> |
|
|
|
<nut-input v-model="state.company" class="nut-input-text" /> |
|
|
|
</nut-form-item> |
|
|
|
|
|
|
|
<nut-form-item label="VIP"> |
|
|
|
<view class="d-flex"> |
|
|
|
<view class="flex-grow-1"></view> |
|
|
|
<nut-switch v-model="state.isVIP" active-color="blue" /> |
|
|
|
</view> |
|
|
|
</nut-form-item> |
|
|
|
|
|
|
|
<nut-form-item label="可随时来访"> |
|
|
|
<view class="d-flex"> |
|
|
|
<view class="flex-grow-1"></view> |
|
|
|
<nut-switch v-model="state.isFlexVisit" active-color="blue" /> |
|
|
|
</view> |
|
|
|
</nut-form-item> |
|
|
|
|
|
|
|
<nut-form-item label="下次到访日期" v-show="!state.isFlexVisit"> |
|
|
|
<view class="d-flex calendar"> |
|
|
|
<view class="flex-grow-1"></view> |
|
|
|
<view class="text-dark" @tap="openSwitch('isDateSelectorVisible')"> |
|
|
|
{{state.date ? state.date : '请选择'}} |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</nut-form-item> |
|
|
|
|
|
|
|
</nut-form> |
|
|
|
|
|
|
|
<nut-calendar |
|
|
|
v-model:visible="state.isDateSelectorVisible" |
|
|
|
@close="closeSwitch('isDateSelectorVisible')" |
|
|
|
@choose="setChooseValue" |
|
|
|
:default-value="state.date" |
|
|
|
:is-auto-back-fill="true" |
|
|
|
> |
|
|
|
</nut-calendar> |
|
|
|
|
|
|
|
</template> |