分享二维码

This commit is contained in:
wangyilin 2024-09-19 16:24:00 +08:00
parent 34b1054ccc
commit bd47d8b3f5
8 changed files with 134 additions and 9 deletions

View File

@ -1,2 +1,2 @@
TARO_APP_ID="wx8902ddbfddb820d1"
TARO_APP_ID="wx0acd1c4fcf94bdd3"
TARO_APP_BASE_API="http://172.10.10.93:8765"

View File

@ -24,6 +24,10 @@
<nut-form-item label="工作岗位" prop="workPost">
<nut-input v-model="formData.workPost" placeholder="请输入工作岗位" type="text"/>
</nut-form-item>
<nut-form-item label="手机号" prop="telephone">
<nut-input v-model="formData.telephone" placeholder="请输入手机号" type="text"/>
</nut-form-item>
<nut-form-item label="籍贯" prop="nativePlace">
<nut-input v-model="formData.nativePlace" placeholder="请输入籍贯" type="text"/>
</nut-form-item>
@ -67,6 +71,8 @@ const showPicker = ref(false)
const formData = ref<formDate>({} as any)
const formRef = ref(null)
const qrcodeId = ref()
const rules: FormRules = {
name: [
{required: true, message: "请输入姓名"},
@ -78,11 +84,33 @@ const rules: FormRules = {
regex: /^(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))((0[1-9])|([12][0-9])|(30|31))\d{3}(\d|X)$)/,
message: "身份证格式错误",
},
],
telephone:[
{required: true, message: "请输入手机号"},
]
};
useLoad((options) => {
qrcodeId.value = options
console.log(JSON.parse(options.item))
if(options.id === '2'){
formData.value = {
serviceProjectId: JSON.parse(options.item).serviceProjectId,
securityUnitId:JSON.parse(options.item).securityUnitId,
name: '',
workPost: '',
sex: 0,
nativePlace: '',
idCard: '',
dateOfBirth: null,
securityNumber: '',
remark: '',
homeAddress: '',
telephone:''
}
}else{
formData.value = JSON.parse(options.item)
}
})
const idCardBlur = (e: any) => {
@ -98,10 +126,17 @@ const idCardBlur = (e: any) => {
formData.value.dateOfBirth = new Date(parseInt(year), parseInt(month) - 1, parseInt(day))
}
const url = ref('')
const submit = () => {
formRef.value?.validate().then(async ({valid}) => {
if (valid) {
const resp = await api.post('/projectManageIndex/saveOrUpdateSecurityUser', formData.value)
if( qrcodeId.value.id === '1'){
url.value = '/projectManageIndex/saveOrUpdateSecurityUser'
}else{
url.value = '/miniProgramUser/qrCodeFormInputSecurityUser'
}
console.log(formData.value)
const resp = await api.post(`${ url.value}`, formData.value)
Taro.showToast({
title: resp.message,
icon: 'success',
@ -111,6 +146,7 @@ const submit = () => {
formData.value = {
snowFlakeId: undefined,
serviceProjectId: formData.value.serviceProjectId,
securityUnitId:formData.value.securityUnitId,
name: '',
workPost: '',
telephone: '',

View File

@ -45,6 +45,7 @@ const getMyServiceProject = async () => {
}
const projectClick = (items: ServiceProjectList, name: string) => {
console.log(items)
Taro.navigateTo({
url: `/subPages/pages/projectDetails/projectDetails?name=${name}&item=${JSON.stringify(items)}`,
})

View File

@ -66,6 +66,27 @@
display: flex;
flex-wrap: wrap;
}
.qrcodeVisibleUrl{
margin-bottom: 5px;
image {
width: 100%;
}
}
.warp{
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
.warpItem{
width: 90%;
height: 50%;
text-align: center;
.rect{
width: 100%;
height: 100%;
}
}
}
}

View File

@ -85,9 +85,8 @@
</view>
<view class="projectDetailsButton">
<nut-button style="width: 45%" type="info" @click="formAdd">项目人员录入</nut-button>
<nut-button style="width: 45%" type="info">二维码录入</nut-button>
<nut-button style="width: 45%" type="info" @click="generateMiniProgramQRCode">二维码录入</nut-button>
</view>
<view>
<nut-dialog
content="是否确认删除该用户?"
@ -107,6 +106,27 @@
</slot>
</nut-dialog>
</view>
<!-- 二维码-->
<view>
<nut-dialog no-cancel-btn content="二维码" v-model:visible="qrcodeVisible">
<slot>
<view class="qrcodeVisibleUrl" @click="showImage">
<image style="width: 100%" show-menu-by-longpress='1' :lazy-load="true" :src="qrCodeImage" mode="aspectFit" />
</view>
</slot>
</nut-dialog>
</view>
<nut-overlay v-model:visible="showOverlay">
<view class="warp">
<view class="warpItem">
<movable-area :scale-area="true">
<movable-view direction="all" style="width: 348px; height: 300px;" :scale="true" :scale-min="1" :scale-max="4" :scale-value="1" :x="2" :y="10">
<image class="rect" show-menu-by-longpress='1' :src="qrCodeImage" mode="widthFix" />
</movable-view>
</movable-area>
</view>
</view>
</nut-overlay>
</view>
</template>
<script setup lang="ts">
@ -116,7 +136,6 @@ import {ref} from "vue";
import api from "@/request/index";
import * as dayjs from 'dayjs'
const serviceProjectDetails = ref()
const nameValue = ref('')
const projectData = ref<Records[]>([])
@ -124,7 +143,8 @@ const content = ref<Records>({} as any)
//
const confirmVisible = ref(false);
const detailVisible = ref(false)
const qrcodeVisible = ref(false)
const showOverlay = ref(false)
useLoad(async (options: MyProjectList) => {
nameValue.value = options.name
@ -155,6 +175,7 @@ const projectDetailsTable = async () => {
const formAdd = () => {
const params = {
serviceProjectId: serviceProjectDetails.value.snowFlakeId,
securityUnitId:serviceProjectDetails.value.securityUnitId,
snowFlakeId: undefined,
name: '',
workPost: '',
@ -164,9 +185,10 @@ const formAdd = () => {
dateOfBirth: null,
securityNumber: '',
remark: '',
homeAddress: ''
homeAddress: '',
telephone:''
}
Taro.navigateTo({url: `/subPages/pages/form/form?item=${JSON.stringify(params)}`})
Taro.navigateTo({url: `/subPages/pages/form/form?item=${JSON.stringify(params)}&&id=${1}`})
}
const total = ref<any>(null)
const current = ref(1)
@ -220,7 +242,34 @@ const projectEdit = (item) => {
Taro.navigateTo({url: `/subPages/pages/form/form?item=${JSON.stringify(params)}`})
}
const qrCodeImage = ref('')
const generateMiniProgramQRCode = ()=>{
const params = {
securityUnitId:serviceProjectDetails.value.securityUnitId,
serviceProjectId:serviceProjectDetails.value.snowFlakeId
}
const value = JSON.stringify(params)
const paramsData = {
path:`/subPages/pages/form/form?item=${value}&id=${2}`,
width:200,
}
qrcodeVisible.value = true
Taro.request({
url: 'http://172.10.10.93:8765/projectManageIndex/shareForm_QR_Code',
method:'GET',
data:paramsData,
responseType: 'arraybuffer',
success(res) {
const base64 = Taro.arrayBufferToBase64(res.data);
qrCodeImage.value = 'data:image/jpeg;base64,' + base64
}
})
}
const showImage = ()=>{
showOverlay.value = true
qrcodeVisible.value = false
}
</script>

View File

@ -60,3 +60,19 @@ interface TreeNode<T> {
extData?: Record<string, any>,
children?: TreeNode<T>[]
}
interface TokenInfo<T = Record<string, any>> {
name: string;
value: string;
extData?: T
}
/**
*
*/
interface BaseEnum<T, E = Record<string, any>> {
value: T;
label: string;
extData: E;
}

View File

@ -1,5 +1,6 @@
interface formDate {
snowFlakeId?: string;
securityUnitId:string;
serviceProjectId: string;
name?: string;
workPost?: string;

View File

@ -12,6 +12,7 @@
remark?: string;
serviceProjectList: ServiceProjectList[];
snowFlakeId?: string;
securityUnitId:string;
street?: string;
streetName?:string;
}