Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共15 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:增强版Uploader时好时坏

1楼
qinqinwo1114 发表于:2025/2/4 14:12:00
按照教程做的增强版Uploader,但是上传多张图片的时候,有的时候上传成功,有的时候上传了5张图片,但是结果只有N张成功了(N小于5),这个N也是随机的,有的时候能够全部成功,有的时候只成功1张,源代码如下:

函数EditDetail代码如下:
Dim e As RequestEventArgs = args(0)
Dim wb As New weui
Dim Page As Integer '页码变量
Dim zt As String
Dim jgdate As String
Dim wxgdid As String
Dim type As Integer = 1
Dim oid As String


wb.AppendHTML("<link rel='stylesheet' href='./weui/exweui.css'/>", True)
wb.AppendHTML("<script src='./weui/exweui.js' ></script>", True)

If e.GetValues.ContainsKey("wxgdid") Then '如果地址中有page参数
    wxgdid = e.Values("wxgdid") '提取page参数
End If
Dim dr As DataRow = DataTables("维修工单明细表").SQLFind("[维修工单ID] = '" & wxgdid & "'")
Dim pr As DataRow = DataTables("维修任务明细表").SQLFind("[维修任务ID]='" & dr("维修任务ID") & "'")
If dr IsNot Nothing Then
    oid = dr("维修任务ID")
End If 


With wb.AddInputGroup("form1", "ipg1", "查看工单")'如果本身就有ID,就是编辑任务,如果没有就是新增任务
    With .AddInput("维修任务ID", "任务ID", "text")
        .Value = dr("维修任务ID")
        .Readonly = True
    End With
    With .AddInput("维修工单ID", "工单ID", "text")
        .Value = dr("维修工单ID")
        .Readonly = True
    End With
    With .AddInput("jgdate", "竣工日期", "text")
        .Value = pr("jgdate")
        .Placeholder = "自动匹配"
        .Readonly = True
    End With
    With .AddInput("联系人", "联系人", "text")
        .Value = pr("联系人")
        .Readonly = True
    End With
    With .AddInput("联系电话", "联系电话", "text")
        .Value = pr("联系电话")
        .Readonly = True
    End With
    With .AddInput("售后管家", "售后管家", "text")
        .Value = pr("shgj")
        .Readonly = True
    End With
    With .AddInput("管家电话", "管家电话", "text")
        .Value = pr("gjphone")
        .Readonly = True
    End With
    With .AddInput("项目地址", "项目地址", "text")
        .Value = pr("项目地址")
        .Readonly = True
    End With
    With .AddInput("品牌", "品牌", "text")
        .Value = dr("品牌")
        .Readonly = True
    End With
    With wb.AddInputGroup("form1", "ipg3", "任务描述*")
        With .AddTextArea("问题描述", 4)
            .Value = pr("问题描述")
            .Readonly = True
        End With
    End With
    With wb.AddInputGroup("form1", "ipg4", "工单描述*")
        With .AddTextArea("工单描述", 4)
            .Value = dr("问题详情")
            .Readonly = True
        End With
    End With
    
    
    '元素id统一用小写英文,和JS保持一致,否则容易报错
    If dr.IsNull("预约上门日期") Then
        
    Else 
        With .AddInput("yysmdate", "预约上门日期", "datetime-local")
            .Value = dr("预约上门日期")
        End With 
    End If
End With


If dr IsNot Nothing Then
    zt = dr("维修工单状态")
End If 

Select Case zt
    Case "待接单"
        With wb.AddButtonGroup("form1", "btg1")
            .Add("接单", "接单", "submit").Value = zt'接单时间填写、状态改为待邀约
        End With 
    Case "待邀约"
        With wb.AddInputGroup("form1", "ipg2")
            .AddInput("smdate", "预约上门时间", "datetime-local")
        End With
        With wb.AddButtonGroup("form1", "btg2")
            .Add("确定", "确定", "submit", "").Value = zt
        End With 
    Case "待上门"
        With wb.AddInputGroup("form1", "ipg2")
            .AddInput("smdate", "实际上门时间", "datetime-local")
        End With
        With wb.AddButtonGroup("form1", "btg3")
            .Add("qddate", "确定", "submit", "").Value = zt
        End With 
    Case "维修中"
        With wb.AddInputGroup("form1", "ipg22", "编辑维修报告")
            With .AddSelect("一级类目", "一级类目", "|" & DataTables("维修类目表").GetComboListString("一级类目"))
                .Attribute = """
            End With
            With .AddSelect("二级类目", "二级类目", "")
                .Attribute = """
            End With
            With .AddSelect("三级类目", "三级类目", "")
                .Attribute = """
            End With
            With .AddSelect("四级类目", "四级类目", "")
                .Attribute = """
            End With
            .AddSelect("五级类目", "原因分析", "")
            .AddInput("人工费", "人工费", "number")
            With wb.AddInputGroup("form1", "ipg11", "人工费说明(超出定额必须说明原因并提供水印相机证据)")
                .AddTextArea("工费说明", 2)
            End With
            .AddInput("材料费", "材料费", "number")
            With wb.AddInputGroup("form1", "ipg12", "材料费说明(提供详细说明、收据、现场使用水印相机证据)")
                .AddTextArea("料费说明", 2)
            End With
            With wb.AddInputGroup("form1", "ipg42", "维修前照片")  
                With .AddUploader("up11", "", True) 'True表示允许一次上传多个文件
                    .AllowDelete = True '允许删除
                    .Incremental = True'允许重复选择照片,也就是允许选择多张照片
                End With
            End With
            With wb.AddInputGroup("form1", "ipg52", "维修后照片")
                With .AddUploader("up12", "", True) 'True表示允许一次上传多个文件
                    .AllowDelete = True
                    .Incremental = True
                End With
            End With
            With wb.AddButtonGroup("form1", "btg12")
                With .Add("editreport", "提交维修报告", "submit", "")
                    .Value = zt
                    .Attribute = "" '调用js函数上传
                End With
            End With
            wb.AddToast("", "tst1", "正在上传", 1)
            wb.AddToast("", "tst2", "上传成功", 0)
            wb.AddToast("", "tst3", "上传失败", 0).Icon = "warn"
        End With
    Case "待审核"
        'With .AddInput("smdate", "实际上门日期", "datetime-local")
         '   .Value = dr("实际上门日期")
        'End With 
        With wb.AddInputGroup("form1", "ipg22", "审核维修报告")
            Dim s1 As String = "|" & DataTables("维修类目表").GetComboListString("一级类目") & "|"
            s1 = s1.Replace("|" & dr("一级类目") & "|", "|[" & dr("一级类目") & "]|").TrimEnd("|")
            With .AddSelect("一级类目", "一级类目", s1)
                .Attribute = """
                .Enabled = False
            End With
            Dim s2 As String = "|" & DataTables("维修类目表").GetComboListString("二级类目") & "|"
            s2 = s2.Replace("|" & dr("二级类目") & "|", "|[" & dr("二级类目") & "]|").TrimEnd("|") 
            With .AddSelect("二级类目", "二级类目", s2)
                .Attribute = """
                .Enabled = False
            End With
            Dim s3 As String = "|" & DataTables("维修类目表").GetComboListString("三级类目") & "|"
            s3 = s3.Replace("|" & dr("三级类目") & "|", "|[" & dr("三级类目") & "]|").TrimEnd("|") 
            With .AddSelect("三级类目", "三级类目", s3)
                .Attribute = """
                .Enabled = False
            End With
            Dim s4 As String = "|" & DataTables("维修类目表").GetComboListString("四级类目") & "|"
            s4 = s4.Replace("|" & dr("四级类目") & "|", "|[" & dr("四级类目") & "]|").TrimEnd("|") 
            With .AddSelect("四级类目", "四级类目", s4)
                .Attribute = """
                .Enabled = False
            End With
            
            Dim s5 As String = "|" & DataTables("维修类目表").GetComboListString("五级类目") & "|"
            s5 = s5.Replace("|" & dr("五级类目") & "|", "|[" & dr("五级类目") & "]|").TrimEnd("|") 
            .AddSelect("五级类目", "原因分析", s5).Enabled = False
            With .AddInput("人工费", "人工费", "number")
                .Value = dr("人工费")
                .Readonly = True
            End With 
            
            With wb.AddInputGroup("form1", "ipg11", "人工费说明(超出定额必须说明原因并提供水印相机证据)")
                With .AddTextArea("工费说明", 2)
                    .Value = dr("人工费说明")
                    .Readonly = True
                End With 
            End With
            
            With .AddInput("材料费", "材料费", "number")
                .Value = dr("材料费")
                .Readonly = True
            End With 
            With wb.AddInputGroup("form1", "ipg12", "材料费说明(提供详细说明、收据、现场使用水印相机证据)")
                With .AddTextArea("料费说明", 2)
                    .Value = dr("材料费说明")
                    .Readonly = True
                End With 
            End With
            
            With wb.AddInputGroup("form1", "ipg42", "维修前照片")
                With .AddUploader("up11", "", True) 'True表示允许一次上传多个文件
                    .AllowAdd = False '关闭文件上传功能
                    If dr("维修前照片") <> "" Then
                        Dim images() As String = dr("维修前照片").Split(vbcrlf)
                        
                        For index As Integer = 0 To images.Length - 2
                            images(index) = images(index).Trim()
                            'MessageBox.Show(images(index))
                            .AddImage("./workimages/" & images(index))
                        Next
                        '.AddImage("./workimages/WXQ250202001-1_2.jpg")
                    End If 
                End With
            End With
            
            With wb.AddInputGroup("form1", "ipg52", "维修后照片")
                With .AddUploader("up12", "", True) 'True表示允许一次上传多个文件
                    .AllowDelete = True
                    .Incremental = True
                End With
            End With
            
            With wb.AddButtonGroup("form1", "btg12")
                With .Add("sh", "审核", "submit", "")
                    .Value = zt
                    '.Attribute = "" '调用js函数上传
                End With
                With .Add("bh", "驳回", "submit", "")
                    .Value = zt
                    '.Attribute = "" '调用js函数上传
                End With
            End With
        End With
End Select
wb.AddForm("", "form1", "savechange.htm?oid=" & oid & "&zt=" & zt & "&wxgdid=" & wxgdid & "&type=" & type)

wb.AppendHTML("<script src='./lib/ajaxform.js'></script>") '引入脚本文件
wb.AppendHTML("<script src='./lib/order.js'></script>") '引入脚本文件
e.WriteString(wb.Build) '生成网页




HttpRequest中 savechange.htm 代码如下:

Case "savechange.htm"
        Dim oid As String
        Dim zt As String
        Dim wxgdid As String
        Dim smdate As Date
        Dim dr As DataRow
        Dim drd As DataRow
        Dim type As String

        If e.Values.ContainsKey("oid") Then
            oid = e.Values("oid")
            dr = DataTables("维修任务明细表").SQLFind("[维修任务ID] = '" & oid & "'")
        End If
        If e.Values.ContainsKey("zt") Then
            zt = e.Values("zt")
        End If
        If e.Values.ContainsKey("smdate") Then
            smdate = e.Values("smdate")
        End If
        If e.Values.ContainsKey("wxgdid") Then
            wxgdid = e.Values("wxgdid")
            drd = DataTables("维修工单明细表").SQLFind("[维修工单ID]='" & wxgdid & "'")
        End If
        If e.Values.ContainsKey("type") Then
            type = e.Values("type")
        End If
        
        Select Case zt
            Case "待接单"
                If type = 0 Then'任务
                    If dr IsNot Nothing Then
                        dr("维修任务接单日期") = Date.Now
                        dr("维修任务状态") = "待邀约"
                        dr.Save
                    End If
                    Else'工单
                    If drd IsNot Nothing Then
                        drd("维修工单接单日期") = Date.Now
                        drd("维修工单状态") = "待邀约"
                        drd.Save
                    End If
                End If 
            Case "待邀约"
                If type = 0 Then
                    If dr IsNot Nothing Then
                        dr("维修任务预约上门日期") = smdate
                        dr("维修任务状态") = "待拆单"
                        dr.Save
                    End If
                Else
                    If drd IsNot Nothing Then
                        drd("预约上门日期") = smdate
                        drd("维修工单状态") = "待上门"
                        drd.Save
                    End If
                End If
            Case "待上门"
                If type = 0 Then
                    If dr IsNot Nothing Then
                        dr("维修任务实际上门日期") = smdate
                        dr("维修任务状态") = "维修中"
                        dr.Save
                    End If
                Else
                    If drd IsNot Nothing Then
                        drd("实际上门日期") = smdate
                        drd("维修工单状态") = "维修中"
                        drd.Save
                    End If
                End If 
            Case "维修中"
                If type = 0 Then'任务
                    If dr IsNot Nothing Then
                        dr("维修任务完成日期") = Date.Now
                        dr("维修任务状态") = "已完成"
                        dr.Save
                    End If
                Else'工单
                    If drd IsNot Nothing Then
                        drd("提交维修报告日期") = Date.Now
                        drd("维修工单状态") = "待审核"
                        drd("一级类目") = e.Values("一级类目")
                        drd("二级类目") = e.Values("二级类目")
                        drd("三级类目") = e.Values("三级类目")
                        drd("四级类目") = e.Values("四级类目")
                        drd("五级类目") = e.Values("五级类目")
                        drd("人工费") = e.Values("人工费")
                        drd("材料费") = e.Values("材料费")
                        drd("人工费说明") = e.Values("工费说明")
                        drd("材料费说明") = e.Values("料费说明")
                        drd.Save
                    End If
                End If 
        End Select
        
        
        If type = 0 Then'0表示任务,1表示工单
            Functions.Execute("ListGroup", e)
        Else'工单
            Dim imgname() As String = drd("维修前照片").Split(vbcrlf)
            Dim n As Integer = imgname.Length
            'MessageBox.Show("维修前照片内容长度为:" & n)
            For Each key As String In e.Files.Keys
                'MessageBox.Show("上传的元素ID为:" & key)
                If key = "up11" Then
                    For Each fln As String In e.Files(key)
                        fln = fln.Trim()
                        'MessageBox.Show("图片名称为:" & fln)'fln是每个图片的名字
                        Dim mz() As String = fln.Split(".") 'mz()是后缀文件格式
                        e.SaveFile(key, fln, "d:\web\workimages\" & "WXQ" & drd("维修工单ID") & "_" & n & "." & mz(1))
                        drd("维修前照片") = drd("维修前照片") & "WXQ" & drd("维修工单ID") & "_" & n & "." & mz(1) & vbcrlf
                        n = n + 1
                    Next
                End If
                If key = "up12" Then
                    For Each fln As String In e.Files(key)
                        Dim mz() As String = fln.Split(".")
                        e.SaveFile(key, fln, "d:\web\workimages\" & "WXH" & drd("维修工单ID") & "_" & n & "." & mz(1))
                        drd("维修后照片") = drd("维修后照片") & "WXH" & drd("维修工单ID") & "_" & n & "." & mz(1) & vbcrlf
                        n = n + 1
                    Next
                End If
            Next
            drd.Save
            Functions.Execute("ListDetail", e) 
        End If 
    Case "editdetail.htm"
        Functions.Execute("EditDetail",e)


请教红蓝狐,代码问题出现在哪里,有的时候是好的,有的时候是不好的。。。。。实际上传M张图片,成功了N张,(N≤M);

2楼
qinqinwo1114 发表于:2025/2/4 14:19:00
如图,实际上传了5张,结果图片名字只保留了3个,但是实际上服务器只接收到了2张图片
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20250204141811.png
图片点击可在新窗口打开查看
3楼
qinqinwo1114 发表于:2025/2/4 14:21:00
D:/web/lib/ajaxform.js 代码如下

function submitForm(){
    show("tst1",2000);
    var result = submitAjaxForm('form1','afterSubmit');
}

function afterSubmit(result){
    hide("tst1");
    if (result=='OK') {
        show("tst2");
        location="upload.htm";
    }
    else{
        show("tst3",2000);
    }
}
4楼
有点蓝 发表于:2025/2/5 9:18:00
使用了Incremental就必须只能使用js上传:http://www.foxtable.com/mobilehelp/topics/0106.htm,并且按钮里不能使用submit参数,只能使用button参数:http://www.foxtable.com/mobilehelp/topics/0057.htm


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

5楼
qinqinwo1114 发表于:2025/2/7 20:43:00
感谢,我测试测试
6楼
qinqinwo1114 发表于:2025/2/7 22:08:00
测试了一下还是不成功,我把原代码上传,麻烦版主帮我看看,这个问题困扰了我一周了。。。。根据附件上的源代码,上传图片还是时好时坏,并且返回界面就一个OK界面;图片点击可在新窗口打开查看
7楼
qinqinwo1114 发表于:2025/2/8 7:43:00
麻烦蓝版给指导一下
8楼
有点蓝 发表于:2025/2/8 9:02:00
请上传实例测试
9楼
qinqinwo1114 发表于:2025/2/8 9:49:00
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:源代码.txt

10楼
qinqinwo1114 发表于:2025/2/8 9:49:00
不好意思,我以为上传好了呢。。。。你看能否下载
共15 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .07520 s, 3 queries.