Asp.net Validate Image Check...

本文介绍了一个使用 ASP.NET 实现的验证图片系统,包括验证图片的生成和用户输入验证号码的匹配过程。该系统通过生成带有随机数字的图片用于用户验证,并在用户提交时检查输入是否正确。
部署运行你感兴趣的模型镜像

Asp.net Validate Image Check

-Draw Serial Number Validate Image. ( GenerateValidateImage.aspx.vb )

-Input Validate Number Match Show’s Serial Number ( CheckValidateImage.aspx.vb )

GenerateValidateImage.aspx.vb (-Draw Serial Number Validate Image Page)

Imports System.Web

Imports System.Web.Security

imports System.Web.UI

imports System.Web.UI.WebControls

imports System.Web.UI.WebControls.WebParts

imports System.Web.UI.HtmlControls

imports System.Drawing.Drawing2D

imports System.Drawing.Imaging

imports System.Drawing.Text

imports System.Drawing

Partial Class GenerateValidateImage

Inherits System.Web.UI.Page

Private ReadOnly Lstg_ImagePath As String = "Image/Validator.jpg"

Private Lstg_Validator As String = ""

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Not Request.Params("Validator") Is Nothing Then

Lstg_Validator = Request.Params("Validator").ToString()

End If

'--Create Bmp

Dim Lbit_MapImage As Bitmap = New System.Drawing.Bitmap(Server.MapPath(Lstg_ImagePath))

Dim Lgrp_GraphicImage As Graphics = Graphics.FromImage(Lbit_MapImage)

'--Set Pen Output Mode

Lgrp_GraphicImage.SmoothingMode = SmoothingMode.AntiAlias

'--Add Text String

Lgrp_GraphicImage.DrawString((Lstg_Validator), New Font("Arial", 12, FontStyle.Bold), SystemBrushes.WindowText, New Point(0, 0))

'--Set graphics Image Output Format

Response.ContentType = "image/jpeg"

Lbit_MapImage.Save(Response.OutputStream, ImageFormat.Jpeg)

'---Dispose Resource

Lgrp_GraphicImage.Dispose()

Lbit_MapImage.Dispose()

End Sub

End Class

CheckValidateImage.aspx.vb (Check Page,Input Validate Number Match Show’s Serial Number)

Partial Class CheckValidateImage

Inherits System.Web.UI.Page

Private Shared Lstg_Validator As String

Private ReadOnly Last_ValidatorImageUrl As String = "GenerateValidateImage.aspx?Validator="

Private Function GetGenerageValidateNo() As String

Dim Lrnd_Random = New Random()

Return (Lrnd_Random.Next(100000, 999999).ToString())

End Function

Protected Sub Button_Check_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button_Check.Click

If Page.IsValid Then

If Me.TextBox_Validate.Text <> CheckValidateImage.Lstg_Validator Then

'Response.Write("<script>alert('Input Validate Numer invalid !');</script>")

Me.Label_Message.Text = "Input Validate Numer invalid !"

Lstg_Validator = GetGenerageValidateNo()

Me.Image_Validate.ImageUrl = Last_ValidatorImageUrl + Lstg_Validator

Return

Else

Me.Label_Message.Text = "Input Validate Numer Success!"

End If

Else

Lstg_Validator = GetGenerageValidateNo()

Me.Image_Validate.ImageUrl = Last_ValidatorImageUrl + Lstg_Validator

Me.Label_Message.Text = "Input Validate Numer Error !"

End If

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Not IsPostBack Then

Lstg_Validator = GetGenerageValidateNo()

Me.Image_Validate.ImageUrl = Last_ValidatorImageUrl + Lstg_Validator

End If

End Sub

End Class

--Result--

您可能感兴趣的与本文相关的镜像

Qwen-Image

Qwen-Image

图片生成
Qwen

Qwen-Image是阿里云通义千问团队于2025年8月发布的亿参数图像生成基础模型,其最大亮点是强大的复杂文本渲染和精确图像编辑能力,能够生成包含多行、段落级中英文文本的高保真图像

<template> <view class="wrap"> <u-form :model="model" :rules="rules" ref="uForm" label-width="160"> <!-- <u-form-item label="用热卡号" prop="RESCARDNUM"> <u-input type="text" v-model="model.RESCARDNUM" placeholder="请输入用热卡号" disabled></u-input> </u-form-item> --> <u-form-item label="住户地址" prop="HOMEADDRESS"> <u-input type="text" v-model="model.HOMEADDRESS" placeholder="请输入住户地址" disabled></u-input> </u-form-item> <!-- <u-form-item label="住户姓名" prop="RESNAME"> <u-input type="text" v-model="model.RESNAME" placeholder="请输入住户姓名" disabled></u-input> </u-form-item> --> <u-form-item label="稽查人员" prop="INSPECTOR"> <u-input type="text" v-model="model.INSPECTOR" placeholder="请输入稽查人员"></u-input> </u-form-item> <u-form-item label="稽查时间" prop="INSPECTORTIME"> <u-input type="text" v-model="model.INSPECTORTIME" placeholder="请输入稽查时间" disabled></u-input> </u-form-item> <u-form-item label="稽查模式" required> <uni-data-select v-model="DataSelectJC" :localdata="rangeJC" @change="selcetchangeJC"></uni-data-select> </u-form-item> <u-form-item label="整改时间" v-if="jcItem"> <view class="u-demo-area" @click="showChange"> <u-calendar v-model="showDate" ref="calendar" max-date="2050-01-01" @change="changeDate"></u-calendar> <view class="u-demo-result-line text-black"> {{model.RECTIFICATION||"请输入整改时间"}} </view> </view> </u-form-item> <u-form-item label="稽查结果" required v-if="jcItem"> <uni-data-select v-model="DataSelectClqkvalue" :localdata="range" @change="selcetchange"></uni-data-select> </u-form-item> <u-form-item label="稽查备注" prop="NOTES" v-if="jcItem"> <u-input type="textarea" v-model="model.NOTES" placeholder="请输入稽查备注信息"></u-input> </u-form-item> <u-form-item label="信誉等级" > <uni-data-select v-if="pfShow" v-model="DataSelectPfvalue" :localdata="Pfrange" @change="selcetPfchange"></uni-data-select> </u-form-item> <u-form-item label="上传图片" prop="photo" v-if="jcItem" required> <u-upload ref="uUpload" :action="uploadUrl" :auto-upload="autoUpload" :file-list="fileList" :max-count="maxCount" @on-list-change="onListChange"></u-upload> </u-form-item> <u-form-item label="上传视频" prop="video" v-if="jcItem"> <view class="video-upload-container"> <view class="video-preview" v-if="videoUrl"> <video :src="videoUrl" controls></video> <view class="video-delete-icon" @click="deleteVideo"> <u-icon name="close-circle" size="24" color="#ff4d4f"></u-icon> </view> </view> <view class="video-upload-btn" @click="chooseVideo" v-else> <u-icon name="plus" size="40"></u-icon> <text>点击拍摄/选择视频</text> </view> </view> </u-form-item> </u-form> <u-button type="warning" v-if="!isSaved" @click="submit">提交</u-button> <!-- <u-button type="warning" v-if="!isSaved" @click="SaveScore">提交</u-button> --> <u-button type="default" v-if="isSaved" @click="btnBack">返回</u-button> </view> </template> <script> export default { data() { return { // 表单对象属性 model: { RESCARDNUM: "", RESNAME: '', HOMEADDRESS: "", INSPECTOR: "", ISFAST: "", INSPECTORTIME: "", photo: '', NOTES: '', GNJID: '', RESIDENTID:'', USER_ID:'', }, // 表单验证规则 rules: {}, codeTips: '', // 上传参数 uploadUrl: this.$config.baseUrl + '/api/WebApi/UploadImage', //上传地址 'http://localhost:57047/api/WebApi/UploadImage', autoUpload: false, //自动上传 maxCount: 5, //最大文件个数 //上传控件 1 fileList: [], // 预置上传列表 [{url: 'http://...',error: false,progress: 100}], lists: [], // 组件内部的文件列表 //所有上传列表 uploadList: [], //上传列表 uploadPath: "/Upload/check/", //上传文件保存目录 keyId: "", //上传文件关联主键ID isSaved: false, //是否保存数据 DataSelectClqkvalue: '', range: [], showDate: false, DataSelectJC: '', rangeJC: [], hasFile: "", jcItem: true, userInfo: '', score: null, scoreLevel: '', DataSelectPfvalue: '', Pfrange: [], pfShow: false, videoUrl: '', // 存储视频临时路径 videoFile: null, // 存储视频文件对象 maxVideoCount: 1, // 最大视频数量 uploadingVideo: false, // 是否正在上传视频 imgname:[],//存储上传名称 }; }, onLoad(option) { console.log("稽查页面加载 option==", option); //console.log("option.resName==", option.resName); if (option.resName != "null") { this.model.RESNAME = option.resName ? option.resName : ''; } else { this.model.RESNAME = "暂无姓名"; } this.model.RESCARDNUM = option.resCardNum; this.model.HOMEADDRESS = option.homeAddress; this.model.RESIDENTID = option.resIdentid; // 获取登录信息 this.userInfo = this.$base.getStorage("userInfo"); //nsole.log('userInfo:', this.userInfo); this.model.INSPECTOR = this.userInfo.USER_NAME || ""; this.model.INSPECTORTIME = this.$common.getNowDate("yyyy-mm-dd hh:mm:ss"); // 获取主键ID this.getKeyId(); this.getGdlxData(); this.getJCData(); this.getPflxData(); }, onReady() { //console.log('变更申请 页面加载 完成'); // 表单绑定验证规则 this.$refs.uForm.setRules(this.rules); this.getGNJData(); }, methods: { // 选择视频 chooseVideo() { uni.chooseVideo({ count: this.maxVideoCount, sourceType: ['camera', 'album'], // 从相机或相册选择 maxDuration: 120, // 最长拍摄时间,默认60s camera: 'back', // 默认后置摄像头 success: (res) => { console.log('选择视频成功', res); this.videoUrl = res.tempFilePath; this.videoFile = { tempFilePath: res.tempFilePath, size: res.size, duration: res.duration, width: res.width, height: res.height }; }, fail: (err) => { console.error('选择视频失败', err); uni.showToast({ title: '选择视频失败', icon: 'none' }); } }); }, // 删除视频 deleteVideo() { this.videoUrl = ''; // 清空视频临时路径 this.videoFile = null; // 清空视频文件对象 // 如果 uploadList 或 lists 存储了视频记录,也需要移除 if (this.uploadList && this.uploadList.length > 0) { this.uploadList = this.uploadList.filter(item => item.type !== 7); // 假设 type=7 是视频类型 } if (this.lists && this.lists.length > 0) { this.lists = this.lists.filter(item => item.type !== 7); } }, selcetPfchange(e) { this.DataSelectPfvalue = e.toString(); if (this.DataSelectPfvalue === "10") { this.score = '10'; } else if (this.DataSelectPfvalue === "7") { this.score = '7'; } else if (this.DataSelectPfvalue === "4") { this.score = '4'; } else if (this.DataSelectPfvalue === "1") { this.score = '1'; } }, //查询评分等级数据 getPflxData() { //console.log("================执行事件getGdlxData() 方法=====================lxType="); var where = " and type_parent_id=647"; console.log("where==", where) this.$api.request({ url: '/GetQueryData', data: { jsonData: { tableName: "SYS_TYPE", where: where, fields: "TYPE_ID,TYPE_NAME", sortName: "SORT_INDEX", sortOrder: "asc" } }, success: (res) => { for (var i = 0; i < res.length; i++) { var item = { text: res[i].TYPE_NAME, value: res[i].TYPE_NAME, //label: res[i].TYPE_NAME, }; this.Pfrange.push(item); } this.pfShow = true; }, }); }, //日期改变事件 changeDate(e) { this.model.RECTIFICATION = e.result; }, //显示日历 showChange(index) { this.showDate = !this.showDate; }, //返回按钮 btnBack() { uni.navigateBack(); }, selcetchange(e) { const selectedOption = this.range.find(item => item.value === e.toString()); if (selectedOption) { this.model.CONTENT = selectedOption.value; // 保存显示文本(原逻辑) this.model.CONTENTTYPE = selectedOption.typeId; // 新增:保存 TYPE_ID } //console.log("this.model.CONTENT==", this.model.CONTENT) }, selcetchangeJC(e) { this.model.ISFAST = e.toString(); if (this.model.ISFAST == 641) { this.jcItem = false; } else { this.jcItem = true; } console.log("this.model.ISFAST==", this.model.ISFAST) }, // 表单提交方法 submit() { // 表单验证 // this.$refs.uForm.validate(valid => { // if (valid) { // console.log('验证通过'); // console.log('上传列表1 this.lists==', this.lists); // if (!this.lists.length) { // uni.showToast({ // title: "请上传图片", // icon: "none" // }); // return; // } // // 验证通过 保存数据 // this.upload(); // } else { // console.log('验证失败'); // } // }); //判断整改时间不能为空 // if (!this.model.RECTIFICATION) { // uni.showToast({ // title: "整改时间不能为空", // icon: "none" // }); // return; // } if (this.model.ISFAST == 641) { console.log("快速稽查,可以不填信息===="); this.saveChange(); } else { if (!this.model.CONTENT) { uni.showToast({ title: "稽查结果不能为空", icon: "none" }); return; } } // 检查是否上传了图片必填项) if (!this.lists || this.lists.length === 0) { uni.showToast({ title: "请上传至少一张图片", icon: "none", }); return; } this.upload(); }, //调用并执行父页面窗口中的事件方法 InvokeAndExecuteParentMethod() { //console.log("==============执行事件InvokeAndExecuteParentMethod()方法================"); const eventChannel = this.getOpenerEventChannel(); eventChannel.emit('openedEvent', { data: 'lin' }); this.$emit("close", ""); }, //上传方法 upload() { console.log("开始上传图片和视频..."); //上传文件列表 this.uploadList = this.lists; // 初始化上传计数器 this.uploadedImageCount = 0; if (this.uploadList) { this.totalImageCount = this.uploadList.length; console.log("总图片数量:", this.totalImageCount); } else { this.totalImageCount = 0; } // 重置上传状态 if (this.uploadList) { this.uploadList.forEach(item => { item.progress = 0; // 重置进度 }); } if (this.videoFile) { this.videoFile.progress = 0; // 重置视频进度 } // 先上传图片 if (this.uploadList && this.uploadList.length > 0) { console.log("有图片需要上传,数量:", this.uploadList.length); this.uploadList.forEach((item, index) => { //判断是否上传 if (item.progress === 0) { var path = item.url; var name = "app_jc_" + this.$common.getNowTimestamp() + "_" + this.$common .getRandomCode(); item.name = name; console.log(`开始上传图片 ${index+1}/${this.uploadList.length}, 文件名: ${name}`); uni.uploadFile({ url: this.uploadUrl, filePath: path, name: 'file', formData: { 'fileName': name, "filePath": this.uploadPath, }, success: (res) => { console.log(`图片 ${index+1} 上传成功 res.data==`, res); if (res.statusCode === 200) { item.progress = 100; this.uploadedImageCount++; console.log( `图片 ${index+1} 上传完成, 已上传完成的图片数量: ${this.uploadedImageCount}/${this.totalImageCount}` ); const name = JSON.parse(JSON.parse(res.data)); //console.log("所有图片123:", name); this.imgname.push(name); // 添加到数组 this.setProgress([]); // 更新进度状态 // 检查是否所有图片都已上传完成 if (this.uploadedImageCount === this.totalImageCount) { console.log("所有图片已上传完成"); console.log("所有图片名称:", this.imgname); // 打印所有图片名称 // const name = JSON.parse(JSON.parse(res.data)); // console.log("所有图片123:", name); // this.imgname.push(name); // 添加到数组 // console.log("所有图片456:", this.imgname.push(name)); // 开始上传视频 if (this.videoFile) { this.uploadVideoFile(); // 上传视频 } else { // 没有视频,直接保存数据 console.log("没有视频需要上传,直接保存数据"); this.saveFile(); } } else { console.log("仍有图片未上传完成"); } } else { uni.showToast({ title: "图片上传失败,状态码: " + res.statusCode, icon: "none" }); } }, fail: (res) => { console.log(`图片 ${index+1} 上传失败 res==`, res); uni.showToast({ title: "图片上传失败,请重试", icon: "none" }); // 即使图片上传失败,也增加计数,以便流程可以继续 this.uploadedImageCount++; if (this.uploadedImageCount === this.totalImageCount) { // 即使有图片上传失败,也继续流程 if (this.videoFile) { this.uploadVideoFile(); // 上传视频 } else { // 没有视频,直接保存数据 console.log("没有视频需要上传,直接保存数据"); this.saveFile(); } } } }); } else { console.log(`图片 ${index+1} 已经上传完成,跳过`); this.uploadedImageCount++; // 如果图片已经上传完成,也增加计数 } }); } else { // 如果没有图片,直接检查视频 console.log("没有图片需要上传"); if (this.videoFile) { this.uploadVideoFile(); // 直接上传视频 } else { // 既没有图片也没有视频,直接保存数据 console.log("既没有图片也没有视频,直接保存数据"); //this.saveFile(); this.saveChange(); } } }, // 上传视频文件 uploadVideoFile() { if (!this.videoFile || this.videoFile.progress === 100) { // 如果没有视频或视频已上传完成,直接保存文件 this.saveFile(); return; } console.log("开始上传视频..."); var name = "app_jc_video_" + this.$common.getNowTimestamp() + "_" + this.$common.getRandomCode(); this.videoFile.name = name; console.log("视频文件名 name====" + JSON.stringify(name)); console.log("视频上传路径 this.uploadUrl====" + this.uploadUrl); console.log("视频临时路径 this.videoFile.tempFilePath====" + this.videoFile.tempFilePath) uni.uploadFile({ url: this.uploadUrl, filePath: this.videoFile.tempFilePath, name: 'file', formData: { 'fileName': name, "filePath": this.uploadPath, }, success: (res) => { console.log("视频上传成功 res.data==", res); if (res.statusCode === 200) { this.videoFile.progress = 100; // 设置上传进度为100% this.setVideoProgress([]); // 更新视频进度状态 // 检查是否所有文件(图片和视频)都已上传完成 if (this.isAllUploaded()) { this.saveFile(); // 保存文件信息到数据库 } } else { uni.showToast({ title: "视频上传失败,状态码: " + res.statusCode, icon: "none" }); } }, fail: (res) => { console.log("视频上传失败 res==", res); uni.showToast({ title: "视频上传失败,请重试", icon: "none" }); } }); }, //设置文件上传进度 setProgress(data) { if (data && Array.isArray(data) && data[0]) { var name = data[0]; var ext = name.substr(name.lastIndexOf(".")); // 循环设置上传进度 for (var i = 0; i < this.uploadList.length; i++) { var fileName = this.uploadList[i].name; if (fileName && name.endsWith(ext)) { // 检查文件名是否匹配 this.uploadList[i].progress = 100; // 上传完成 console.log("文件上传完成:", fileName); } } } else { // 如果没有特定数据,确保所有图片的progress属性已初始化 if (this.uploadList && this.uploadList.length > 0) { for (let i = 0; i < this.uploadList.length; i++) { if (this.uploadList[i].progress === undefined) { this.uploadList[i].progress = 0; // 确保progress已初始化 } } } } }, //上传列表改变事件 1 onListChange(lists) { console.log('onListChange', lists); this.lists = lists; //循环添加属性 this.lists.forEach(item => { // item.tag = 1; item.tag = "稽查图片"; item.info = "稽查信息"; item.type = 7; // sys_type 表类型配置 // 确保每个item都有progress属性,初始值为0 if (item.progress === undefined) { item.progress = 0; } }); }, //设置视频上传进度 setVideoProgress(data) { if (data && Array.isArray(data) && data[0]) { var name = data[0]; var ext = name.substr(name.lastIndexOf(".")); this.videoFile.progress = 100; // 上传成功 console.log("视频上传完成:", name); } else { if (this.videoFile) {} } // 检查是否所有文件都已上传完成 if (this.isAllUploaded()) { this.saveFile(); // 保存文件信息到数据库 } }, // setProgress(data) { // if (data) { // var name = data[0]; // var ext = name.substr(name.lastIndexOf(".")); // //循环设置上传进度 // for (var i = 0; i < this.uploadList.length; i++) { // var fileName = this.uploadList[i].name + ext; // if (name == fileName) { // this.uploadList[i].name = name; // this.uploadList[i].ext = ext; // this.uploadList[i].progress = 100; //上传进度 // //console.log("设置上传进度 this.uploadList[i].progress==", this.uploadList[i].progress); // } // } // } // //判断是否全部上传成功 // if (this.isAllUploaded()) { // //保存数据 // //console.log("全部上传成功=="); // //保存文件 // this.saveFile(); // } // }, //判断是否全部上传成功 isAllUploaded() { var allSuccess = true; // 检查图片是否全部上传完成(允许部分失败) if (this.uploadList && this.uploadList.length > 0) { for (let i = 0; i < this.uploadList.length; i++) { // 只要有任何一个图片未开始上传(progress为0),就认为未全部完成 if (this.uploadList[i].progress === 0) { allSuccess = false; break; } } } else { console.log("没有图片需要上传"); } // 检查视频是否上传完成 if (this.videoFile) { if (this.videoFile.progress === 0) { allSuccess = false; // 视频未开始上传 } } else { console.log("没有视频需要上传"); } console.log("图片和视频上传状态: allSuccess=", allSuccess); return allSuccess; }, //保存文件 saveFile() { //循环保存文件 for (var i = 0; i < this.uploadList.length; i++) { this.imgname.forEach(name => { console.log("图片名称:", name); var data = this.uploadList[i]; //console.log('保存文件 data==', data); // 序列名称,使用object对象方式,解决回调时获取文件信息异常的问题 data.seqName = "SQ_SYS_FILE"; // 获取序列 this.getSeqId(data, (result) => { console.log("获取序列 result==", result); //循环保存文件 this.$api.request({ url: '/AddDetailData', data: { jsonData: { tableName: "SYS_FILE", keyName: "FILE_ID", keyValue: result.seqId, FILE_NAME: name[0], FILE_PATH: this.uploadPath, FILE_TYPE: result.type, // sys_type 表类型配置 //FILE_EXT: result.ext, // FILE_EXT: (() => { // const lastDotIndex = result.url.lastIndexOf("."); // if (lastDotIndex !== -1 && lastDotIndex < result.url // .length - 1) { // const ext = result.url.substring(lastDotIndex + 1); // // 这里可以添加对扩展名的合法性检查,例如检查是否在允许的扩展名列表中 // if (this.isValidExtension(ext)) { // return ext; // } // } // return ".jpg"; // 默认扩展名 // })(), FILE_SIZE: result.file.size, FILE_INFO: result.info, FILE_TAG: result.tag, KEY_ID: this.keyId || "", } }, success: (res) => { //console.log("保存文件信息 res==", res); console.log("保存图片信息 res.data==" + JSON.stringify(res)); if (res.iserror) { //console.log("保存文件信息 失败 res.message==" + res.message); uni.showToast({ title: "保存文件信息失败,请重试", icon: "none" }); } else { // 设置保存成功状态 //console.log("保存文件信息 成功 result.name==" + result.name); //上传成功,设置文件保存状态 this.setSaved(result.name); } }, }); }); }); } // 保存视频文件 if (this.videoFile && this.videoFile.progress === 100) { var videoData = { seqName: "SQ_SYS_FILE", name: this.videoFile.name, ext: this.videoFile.tempFilePath.substr(this.videoFile.tempFilePath.lastIndexOf(".")), type: 7, // 视频类型 file: { path: this.videoFile.tempFilePath, size: this.videoFile.size }, tag: "稽查视频", info: "稽查信息" }; this.getSeqId(videoData, (result) => { this.$api.request({ url: '/AddDetailData', data: { jsonData: { tableName: "SYS_FILE", keyName: "FILE_ID", keyValue: result.seqId, FILE_NAME: result.name, FILE_PATH: this.uploadPath, FILE_TYPE: videoData.type, FILE_EXT: videoData.ext, FILE_SIZE: videoData.file.size, FILE_INFO: videoData.info, FILE_TAG: videoData.tag, KEY_ID: this.keyId || "", } }, success: (res) => { console.log("保存视频信息 res.data==" + JSON.stringify(res)); if (res.iserror) { uni.showToast({ title: "保存视频文件信息失败,请重试", icon: "none" }); } else { this.setSavedVideo(result.name); } }, }); }); } }, // 假设的验证扩展名是否合法的函数 isValidExtension(extension) { const allowedExtensions = ["jpg", "png", "jpeg"]; // 允许的扩展名列表 return allowedExtensions.includes(extension.toLowerCase()); }, //上传成功,设置文件保存状态 setSaved(name) { //console.log("设置保存状态 name==" + name); //循环设置设置保存状态 for (var i = 0; i < this.uploadList.length; i++) { // console.log("设置保存状态 this.uploadList[i].name==" + this.uploadList[i].name); if (name == this.uploadList[i].name) { this.uploadList[i].saved = true; //console.log("设置保存状态 this.uploadList[i].saved==", this.uploadList[i].saved); } } //判断是否全部保存成功 if (this.isAllSaved()) { //保存数据 //console.log("全部保存成功=="); //保存稽查信息 this.saveChange(); } }, // 设置视频保存状态 setSavedVideo(name) { if (name == this.videoFile.name) { this.videoFile.saved = true; console.log("设置视频保存状态 this.videoFile.saved==", this.videoFile.saved); } // 判断是否全部保存成功(图片和视频) if (this.isAllSaved()) { // 保存稽查信息 this.saveChange(); } }, //判断是否全部保存成功 isAllSaved() { var allSuccess = false; if (this.uploadList) { allSuccess = true; //循环判断 for (var i = 0; i < this.uploadList.length; i++) { if (!this.uploadList[i].saved) { allSuccess = false; } } } console.log("是否全部保存成功==", allSuccess); return allSuccess; }, //获取序列 getSeqId(data, callback) { //判断参数是对象还是字符串 var seqName = data.seqName || data; //console.log("获取序列 seqName==", seqName); this.$api.request({ url: '/GetSeqId', data: { jsonData: { seqName: seqName, } }, success: (res) => { console.log("获取序列 res==", res); //返回数据处理,如果是object对象,则添加seqId后返回 if (data.seqName) { data.seqId = res; } else { data = res; } // 回调方法 if (callback) { callback(data); } }, }) }, // 获取主键ID getKeyId() { // 获取序列 this.getSeqId("SQ_HM_CHECK", (result) => { this.keyId = result; }); }, //保存稽查信息 saveChange() { this.hasFile = this.uploadList.length ? 1 : 0; //有没有附件;默认0为没有,1为有 //循环保存文件 this.$api.request({ url: '/AddDetailData', data: { jsonData: { tableName: "HM_CHECK", keyName: "CHECK_ID", keyValue: this.keyId, RESCARDNUM: this.model.RESCARDNUM, //用户卡号 RESNAME: this.model.RESNAME, //用户名称 HOMEADDRESS: this.model.HOMEADDRESS, //用户地址 INSPECTOR: this.model.INSPECTOR, //稽查人员 CONTENT: this.model.CONTENT, //稽查信息 INSPECTORTIME: this.model.INSPECTORTIME, //稽查时间 HAVE_OR_NOT: this.hasFile, //有没有附件;默认0为没有,1为有 NOTES: this.model.NOTES, //备注 RECTIFICATION: this.model.RECTIFICATION, //整改时间 GNJID: this.model.GNJID, //供暖季ID ISFAST: this.model.ISFAST, //是否快速稽查,640否,641是 RESIDENTID: this.model.RESIDENTID,//新增:用户信息表主键 CONTENTTYPE: this.model.CONTENTTYPE, // 新增:稽查结果类型ID USER_ID: this.userInfo.USER_ID,//当前登录人员ID } }, success: (res) => { //console.log("保存稽查信息 res==", res); // console.log("保存文件信息 res.data==" + JSON.stringify(res)); if (res.iserror) { //console.log("保存稽查信息 失败 res.message==" + res.message); // uni.showModal({ // content: "保存稽查信息失败,请重试", // }); } else { // 设置保存成功状态 //console.log("保存稽查信息 成功 res.data==" + res.data); this.isSaved = true; //在实时数据表和历史数据表中保存稽查实时信息 //如果实时数据表存在则更新,如果不存在则插入,历史数据表需要写入 this.getFormInfo(); this.SaveScore(); } }, }); }, ////信誉度评分 SaveScore() { this.$api.request({ url: '/AddDetailData', data: { jsonData: { tableName: "SCORE_LOG", keyName: "LOG_ID", keyValue: "", USER_ID: this.userInfo.USER_ID, //评分人 FRACTION: this.score, //分数 FRACTION_NAME: this.DataSelectPfvalue, //分数名称 WAY: "APP稽查", //途径 RESCARDNUM: this.model.RESCARDNUM, //卡号 GENERALID: this.keyId, //稽查主键ID USER_NAME: this.userInfo.USER_NAME, //评分人姓名 WEIGHT: 644 } }, success: (res) => { if (res.iserror) { console.log("保存信息失败"); } else { console.log("保存信息成功"); this.SetResidentScore(); } }, }); }, SetResidentScore() { this.$api.request({ url: '/SetResidentScore', data: { jsonData: { QProcName: "Proc_SetResidentScore", //存储过程名称 QResCardNum: this.RESCARDNUM, //用户卡号 //QFraction: this.score, //分数 Qtype: 2, //类别 } }, success: (res) => { //console.log("保存成功 res==", JSON.stringify(res)); if (res.iserror) { console.log("失败===") } else { console.log("成功===") } }, }); }, //查询该用户的稽查信息 getFormInfo() { //console.log("查询表单信息"); this.$api.request({ url: '/GetSingleData', data: { jsonData: { tableName: 'HM_CHECK_REALTIME', where: " and RESCARDNUM = " + this.model.RESCARDNUM, } }, success: (res) => { //console.log("查询表单信息 res==" + JSON.stringify(res)); if (res) { this.UpdateCheck_Real(); } else { this.AddCheck_Real(); } //数据保存成功后,调用父界面的方法刷新数据 this.InvokeAndExecuteParentMethod(); //数据保存成功后 返回到上一级界面 uni.navigateBack(); }, }); }, //保存实时稽查数据 AddCheck_Real() { //console.log("进入AddCheck_Real方法===="); //循环保存文件 this.$api.request({ url: '/AddDetailData', data: { jsonData: { tableName: "HM_CHECK_REALTIME", keyName: "CHECK_ID", keyValue: this.keyId, RESCARDNUM: this.model.RESCARDNUM, //用户卡号 RESNAME: this.model.RESNAME, //用户名称 HOMEADDRESS: this.model.HOMEADDRESS, //用户地址 INSPECTOR: this.model.INSPECTOR, //稽查人员 CONTENT: this.model.CONTENT, //稽查信息 INSPECTORTIME: this.model.INSPECTORTIME, //稽查时间 HAVE_OR_NOT: this.hasFile, //有没有附件;默认0为没有,1为有 NOTES: this.model.NOTES, //备注 RECTIFICATION: this.model.RECTIFICATION, //整改时间 GNJID: this.model.GNJID, //供暖季ID ISFAST: this.model.ISFAST, //是否快速稽查,640否,641是 RESIDENTID: this.model.RESIDENTID,//新增:用户信息表主键 CONTENTTYPE: this.model.CONTENTTYPE, // 新增:稽查结果类型ID USER_ID: this.userInfo.USER_ID,//当前登录人员ID } }, success: (res) => { //console.log("保存稽查信息 res==", res); if (res.iserror) { //console.log("保存稽查信息 失败 res.message==" + res.message); uni.showModal({ content: "保存稽查实时信息失败,请重试", }); } else { uni.showModal({ content: "保存稽查信息成功", success: (res) => { console.log("保存稽查信息成功"); // if (res.confirm) { // uni.navigateBack(); // } else { // uni.navigateBack(); // } // //数据保存成功后,调用父界面的方法刷新数据 // this.InvokeAndExecuteParentMethod(); // //数据保存成功后 返回到上一级界面 // uni.navigateBack(); } }); } }, }); }, //修改稽查实时数据 UpdateCheck_Real() { //console.log("进入UpdateCheck_Real方法===="); //循环保存文件 this.$api.request({ url: '/UpdateDetailData', data: { jsonData: { tableName: "HM_CHECK_REALTIME", keyName: "RESCARDNUM", keyValue: this.model.RESCARDNUM, RESCARDNUM: this.model.RESCARDNUM, //用户卡号 CONTENT: this.model.CONTENT, //稽查信息 HAVE_OR_NOT: this.hasFile, //有没有附件;默认0为没有,1为有 INSPECTOR: this.model.INSPECTOR, //稽查人员 INSPECTORTIME: this.model.INSPECTORTIME, //稽查时间 NOTES: this.model.NOTES, //备注 RECTIFICATION: this.model.RECTIFICATION, //整改时间 GNJID: this.model.GNJID, //供暖季ID ISFAST: this.model.ISFAST, //是否快速稽查,640否,641是 RESIDENTID: this.model.RESIDENTID,//新增:用户信息表主键 CONTENTTYPE: this.model.CONTENTTYPE, // 新增:稽查结果类型ID USER_ID: this.userInfo.USER_ID,//当前登录人员ID } }, success: (res) => { //console.log("保存稽查信息 res==", res); if (res.iserror) { //console.log("保存稽查信息 失败 res.message==" + res.message); uni.showModal({ content: "保存稽查实时信息失败,请重试", }); } else { uni.showModal({ content: "保存稽查信息成功", success: (res) => { // if (res.confirm) { // uni.navigateBack(); // } else { // uni.navigateBack(); // } } }); } }, }); }, //查询上传文件信息 getFileData() { console.log("查询上传文件信息"); this.$api.request({ url: '/GetQueryData', data: { jsonData: { tableName: "sys_file", where: "and file_type=7 and key_id=" + this.keyId, } }, success: (res) => { console.log("查询上传文件信息 res=", res) // console.log("查询上传文件信息 res=" + JSON.stringify(res)); //判断是否成功 if (res.length) { //设置文件列表 this.setFileData(res); } else { uni.showModal({ content: "查询数据异常" }); } } }); }, //查询供暖季ID getGNJData() { //console.log("查询供暖季信息"); this.$api.request({ url: '/GetQueryData', data: { jsonData: { tableName: "FEE_HEATINGSEASON_INFO", where: "and ISNOTCURRENTYEAR=851 ", } }, success: (res) => { //console.log("查询供暖季信息 res=" + JSON.stringify(res)); this.model.GNJID = res[0].GNJID; //console.log("this.model.GNJID=" + this.model.GNJID); } }); }, //设置文件列表 setFileData(data) { this.lists = []; if (data.length) { //循环处理文件列表 for (var i = 0; i < data.length; i++) { var path = this.$config.baseUrl + data[i].FILE_PATH + data[i].FILE_NAME; var item = { url: path, progress: 100, error: false, saved: true, file: { path: path, size: data[i].FILE_SIZE }, tag: data[i].FILE_TAG }; //根据类型设置列表 this.lists.push(item); } } this.fileList = this.lists; }, //查询稽查数据 getGdlxData() { var where = " and type_parent_id=508"; this.$api.request({ url: '/GetQueryData', data: { jsonData: { tableName: "SYS_TYPE", where: where, fields: "TYPE_ID,TYPE_NAME", sortName: "SORT_INDEX", sortOrder: "asc" } }, success: (res) => { for (var i = 0; i < res.length; i++) { var item = { text: res[i].TYPE_NAME, value: res[i].TYPE_NAME, typeId: res[i].TYPE_ID , //label: res[i].TYPE_NAME, }; this.range.push(item); } }, }); }, //查询是否快速稽查 getJCData() { var where = " and type_parent_id=639"; this.$api.request({ url: '/GetQueryData', data: { jsonData: { tableName: "SYS_TYPE", where: where, fields: "TYPE_ID,TYPE_NAME", sortName: "SORT_INDEX", sortOrder: "asc" } }, success: (res) => { for (var i = 0; i < res.length; i++) { var item = { text: res[i].TYPE_NAME, value: res[i].TYPE_ID, //label: res[i].TYPE_NAME, }; this.rangeJC.push(item); this.DataSelectJC = this.rangeJC[0]?.value || ''; } }, }); } } }; </script> <style scoped lang="scss"> .container { padding: 10px; } .score-input { display: flex; align-items: center; margin-bottom: 10rpx; } .score-input label { margin-right: 10px; } .score-input input { flex: 1; } .score-result { font-size: 15px; font-weight: bold; } .wrap { padding: 30rpx; } //============================视频相关样式 .video-upload-container { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; height: 200rpx; border: 1px dashed #dcdfe6; border-radius: 8rpx; padding: 20rpx; box-sizing: border-box; .video-preview { width: 95%; height: 95%; //position: relative; // 关键:让删除图标可以绝对定位 video { width: 95%; height: 95%; object-fit: cover; // 或者使用 contain,根据需求调整 } .video-delete-icon { position: absolute; // 绝对定位 top: 0rpx; // 距离顶部 10rpx right: 30rpx; // 距离右侧 10rpx z-index: 10; // 确保删除图标在最上层 } } .video-upload-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; height: 100%; color: #909399; text { margin-top: 10rpx; font-size: 24rpx; } } } /* 确保 u-form-item 不裁剪子元素 */ .u-form-item { overflow: visible; } /* 确保删除图标无额外 margin/padding */ .video-delete-icon { margin: 0; padding: 0; } //======================== /**/ .u-demo-wrap { background-color: #FFFFFF; padding: 40rpx 8rpx; margin-left: -14rpx; margin-right: -14rpx; } .u-add-wrap { flex-direction: column; color: $u-content-color; font-size: 28rpx; } ::v-deep .slot-btn { width: 329rpx; height: 140rpx; display: flex; justify-content: center; align-items: center; background: rgb(244, 245, 246); border-radius: 10rpx; } .slot-btn__hover { background-color: rgb(235, 236, 238); } .pre-box { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; } .pre-item { flex: 0 0 48.5%; border-radius: 10rpx; height: 140rpx; overflow: hidden; position: relative; margin-bottom: 20rpx; } .u-progress { position: absolute; bottom: 10rpx; left: 8rpx; right: 8rpx; z-index: 9; width: auto; } .pre-item-image { width: 100%; height: 140rpx; } .u-delete-icon { position: absolute; top: 10rpx; right: 10rpx; z-index: 10; background-color: $u-type-error; border-radius: 100rpx; width: 44rpx; height: 44rpx; display: flex; align-items: center; justify-content: center; } </style> 在以上代码中,上传了两张图片,在保存图片的时候会保存两张,但是在数据库中保存却保存了4张,什么地方出了问题
最新发布
11-27
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值