备货单 审核功能
This commit is contained in:
@@ -111,6 +111,48 @@
|
||||
<ElFormItem label="邮箱" prop="email">
|
||||
<ElInput v-model="form.email" :disabled="!isEdit" />
|
||||
</ElFormItem>
|
||||
<ElFormItem label="签名" prop="signature" class="right-input">
|
||||
<template v-if="form.sign_img">
|
||||
<img :src="sign_img_url" class="signature-img" />
|
||||
<el-button
|
||||
v-if="isEdit"
|
||||
style="margin-left: 12px"
|
||||
@click="showReSignQR = !showReSignQR"
|
||||
>
|
||||
重新签名
|
||||
</el-button>
|
||||
<div
|
||||
v-if="isEdit && showReSignQR"
|
||||
class="signature-qrcode"
|
||||
style="margin-top: 20px; margin-left: 20px"
|
||||
>
|
||||
<qrcode-vue
|
||||
:value="qrcodeUrl"
|
||||
:size="120"
|
||||
level="L"
|
||||
render-as="svg"
|
||||
:include-margin="false"
|
||||
background="#ffffff"
|
||||
foreground="#111111"
|
||||
/>
|
||||
<div class="qrcode-tip">手机扫码重新签名</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="signature-qrcode">
|
||||
<qrcode-vue
|
||||
:value="qrcodeUrl"
|
||||
:size="120"
|
||||
level="L"
|
||||
render-as="svg"
|
||||
:include-margin="false"
|
||||
background="#ffffff"
|
||||
foreground="#111111"
|
||||
/>
|
||||
<div class="qrcode-tip">手机扫码进行签名</div>
|
||||
</div>
|
||||
</template>
|
||||
</ElFormItem>
|
||||
</ElRow>
|
||||
<ElRow>
|
||||
<ElFormItem
|
||||
@@ -210,6 +252,8 @@
|
||||
import { ElForm, FormInstance } from 'element-plus'
|
||||
import imageUrl from '@/assets/img/crm/upimg.png'
|
||||
import { CrmService } from '@/api/crmApi'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import QrcodeVue from 'qrcode.vue'
|
||||
import { useUploadHeaders } from '@/composables/useUploadHeaders'
|
||||
const { uploadHeaders } = useUploadHeaders()
|
||||
let actionImageUplode = `${import.meta.env.VITE_API_URL}/ticket/upload`
|
||||
@@ -221,110 +265,132 @@
|
||||
const imageUrls = ref(imageUrl)
|
||||
const imageUrlavatar = ref('')
|
||||
const socialize_pic_full = ref('')
|
||||
const sign_img_url = ref('')
|
||||
const countryOptions = ref<any>()
|
||||
const form = ref<CustomerInfo>({})
|
||||
//获取公司 getCompanyList
|
||||
const companyList = ref<any>()
|
||||
// const companyList = ref<any>()
|
||||
//国家
|
||||
const getarea = async () => {
|
||||
try {
|
||||
// 这里调用获取品牌列表的接口
|
||||
const res = await CrmService.getCountry()
|
||||
countryOptions.value = res||[]
|
||||
} catch (error) { countryOptions.value = [] }
|
||||
countryOptions.value = res || []
|
||||
} catch {
|
||||
countryOptions.value = []
|
||||
}
|
||||
}
|
||||
const userInfo = ref<CustomerInfo>({})
|
||||
const getuserInfo = async () => {
|
||||
const data = await CrmService.userget()
|
||||
userInfo.value = data
|
||||
form.value = data
|
||||
imageUrlavatar.value = data.avatar_full
|
||||
socialize_pic_full.value = data.socialize_pic_full
|
||||
|
||||
const getuserInfo = async () => {
|
||||
const data = await CrmService.userget()
|
||||
userInfo.value = data
|
||||
form.value = data
|
||||
imageUrlavatar.value = data.avatar_full
|
||||
socialize_pic_full.value = data.socialize_pic_full
|
||||
sign_img_url.value = data.sign_img_url
|
||||
}
|
||||
|
||||
const isEdit = ref(false)
|
||||
const showReSignQR = ref(false)
|
||||
const isEditPwd = ref(false)
|
||||
const pwdForm = reactive({
|
||||
password: '',
|
||||
password_new: '',
|
||||
confirmPassword: ''
|
||||
})
|
||||
|
||||
const ruleFormRef = ref<FormInstance>()
|
||||
|
||||
// const rules = reactive<FormRules>({
|
||||
// realName: [
|
||||
// { required: true, message: '请输入昵称', trigger: 'blur' },
|
||||
// { min: 2, max: 50, message: '长度在 2 到 30 个字符', trigger: 'blur' }
|
||||
// ],
|
||||
// nikeName: [
|
||||
// { required: true, message: '请输入昵称', trigger: 'blur' },
|
||||
// { min: 2, max: 50, message: '长度在 2 到 30 个字符', trigger: 'blur' }
|
||||
// ],
|
||||
// email: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
|
||||
// mobile: [{ required: true, message: '请输入手机号码', trigger: 'blur' }],
|
||||
// address: [{ required: true, message: '请输入地址', trigger: 'blur' }],
|
||||
// sex: [{ type: 'array', required: true, message: '请选择性别', trigger: 'blur' }]
|
||||
// })
|
||||
|
||||
const options = [
|
||||
{
|
||||
value: '',
|
||||
label: '未知'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '男'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '女'
|
||||
}
|
||||
|
||||
const isEdit = ref(false)
|
||||
const isEditPwd = ref(false)
|
||||
const pwdForm = reactive({
|
||||
password: '',
|
||||
password_new: '',
|
||||
confirmPassword: ''
|
||||
})
|
||||
]
|
||||
onMounted(async () => {
|
||||
await getarea()
|
||||
await getuserInfo()
|
||||
})
|
||||
const edit = async () => {
|
||||
if (isEdit.value) {
|
||||
const payload: any = { ...(form.value as any) }
|
||||
delete payload.sign_img_url
|
||||
const res = await CrmService.crmuseredit(payload)
|
||||
ElMessage.success(res?.message || '操作成功')
|
||||
getuserInfo()
|
||||
}
|
||||
isEdit.value = !isEdit.value
|
||||
if (!isEdit.value) {
|
||||
showReSignQR.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const ruleFormRef = ref<FormInstance>()
|
||||
|
||||
// const rules = reactive<FormRules>({
|
||||
// realName: [
|
||||
// { required: true, message: '请输入昵称', trigger: 'blur' },
|
||||
// { min: 2, max: 50, message: '长度在 2 到 30 个字符', trigger: 'blur' }
|
||||
// ],
|
||||
// nikeName: [
|
||||
// { required: true, message: '请输入昵称', trigger: 'blur' },
|
||||
// { min: 2, max: 50, message: '长度在 2 到 30 个字符', trigger: 'blur' }
|
||||
// ],
|
||||
// email: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
|
||||
// mobile: [{ required: true, message: '请输入手机号码', trigger: 'blur' }],
|
||||
// address: [{ required: true, message: '请输入地址', trigger: 'blur' }],
|
||||
// sex: [{ type: 'array', required: true, message: '请选择性别', trigger: 'blur' }]
|
||||
// })
|
||||
|
||||
const options = [
|
||||
{
|
||||
value: '',
|
||||
label: '未知'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '男'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '女'
|
||||
const editPwd = async () => {
|
||||
if (isEditPwd.value) {
|
||||
// 判断新密码和确认密码是否一致
|
||||
if (pwdForm.password_new !== pwdForm.confirmPassword) {
|
||||
ElMessage.error('新密码和确认密码不一致')
|
||||
return
|
||||
}
|
||||
]
|
||||
onMounted(async () => {
|
||||
await getarea()
|
||||
await getuserInfo()
|
||||
})
|
||||
const edit = async() => {
|
||||
if(isEdit.value){
|
||||
const res = await CrmService.crmuseredit(form.value)
|
||||
ElMessage.success(res?.message || '操作成功')
|
||||
getuserInfo()
|
||||
}
|
||||
isEdit.value = !isEdit.value
|
||||
|
||||
const res = await CrmService.savePassword(pwdForm)
|
||||
ElMessage.success(res?.message || '操作成功')
|
||||
}
|
||||
isEditPwd.value = !isEditPwd.value
|
||||
}
|
||||
//头像上传
|
||||
function handleUploadavatar(response: any) {
|
||||
// 假设返回图片地址字段为 response.url 或 response.data.url
|
||||
imageUrlavatar.value = response.url || (response.data && response.data.file_url) || ''
|
||||
// 如需同步到 form.picture
|
||||
form.value.avatar = response.url || (response.data && response.data.file_name) || ''
|
||||
}
|
||||
//二维码上传
|
||||
function handleUploadavatarqrcode(response: any) {
|
||||
// 假设返回图片地址字段为 response.url 或 response.data.url
|
||||
socialize_pic_full.value = response.url || (response.data && response.data.file_url) || ''
|
||||
imageUrls.value = response.url || (response.data && response.data.file_url) || ''
|
||||
|
||||
const editPwd = async() => {
|
||||
if(isEditPwd.value){
|
||||
// 判断新密码和确认密码是否一致
|
||||
if (pwdForm.password_new !== pwdForm.confirmPassword) {
|
||||
ElMessage.error('新密码和确认密码不一致')
|
||||
return
|
||||
}
|
||||
const res = await CrmService.savePassword(pwdForm)
|
||||
ElMessage.success(res?.message || '操作成功')
|
||||
}
|
||||
isEditPwd.value = !isEditPwd.value
|
||||
}
|
||||
//头像上传
|
||||
function handleUploadavatar(response: any) {
|
||||
// 假设返回图片地址字段为 response.url 或 response.data.url
|
||||
imageUrlavatar.value = response.url || (response.data && response.data.file_url) || ''
|
||||
// 如需同步到 form.picture
|
||||
form.value.avatar = response.url || (response.data && response.data.file_name) || ''
|
||||
}
|
||||
//二维码上传
|
||||
function handleUploadavatarqrcode(response: any) {
|
||||
// 假设返回图片地址字段为 response.url 或 response.data.url
|
||||
socialize_pic_full.value = response.url || (response.data && response.data.file_url) || ''
|
||||
imageUrls.value = response.url || (response.data && response.data.file_url) || ''
|
||||
|
||||
// 如需同步到 form.picture
|
||||
form.value.socialize_pic = response.url || (response.data && response.data.file_name) || ''
|
||||
}
|
||||
|
||||
// 如需同步到 form.picture
|
||||
form.value.socialize_pic = response.url || (response.data && response.data.file_name) || ''
|
||||
}
|
||||
|
||||
const qrcodeUrl = computed(() => {
|
||||
const userStore = useUserStore() as any
|
||||
const userId = (form.value as any)?.id || (userInfo.value as any)?.id || ''
|
||||
const base = location.origin
|
||||
const params = new URLSearchParams({ userId: String(userId) })
|
||||
if (userStore?.accessToken) params.append('accessToken', userStore.accessToken)
|
||||
if (userStore?.language) params.append('lang', userStore.language)
|
||||
if (userStore?.companyabbr) params.append('companyabbr', userStore.companyabbr)
|
||||
if (userStore?.companyid) params.append('companyid', userStore.companyid)
|
||||
if (userStore?.loginType) params.append('loginType', userStore.loginType)
|
||||
if (userStore?.systemsabbr) params.append('systemsabbr', userStore.systemsabbr)
|
||||
if (userStore?.systemsid) params.append('systemsid', userStore.systemsid)
|
||||
return `${base}/auth/signature/mobile?${params.toString()}`
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@@ -340,7 +406,7 @@
|
||||
</style>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
:deep(.qrcode-radio-group .el-form-item__content){
|
||||
:deep(.qrcode-radio-group .el-form-item__content) {
|
||||
height: 40px;
|
||||
}
|
||||
.avatar {
|
||||
@@ -349,7 +415,7 @@
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
}
|
||||
.qrcode-img{
|
||||
.qrcode-img {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
@@ -384,7 +450,7 @@
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
// background: var(--art-main-bg-color);
|
||||
background: linear-gradient(180deg, #E9F0FF 0%, #FFFFFF 67.9%);
|
||||
background: linear-gradient(180deg, #e9f0ff 0%, #ffffff 67.9%);
|
||||
|
||||
border-radius: $box-radius;
|
||||
.avatar {
|
||||
@@ -542,4 +608,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.signature-img {
|
||||
width: 160px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user