llj
2026-04-15 949339678f055c16317551484aca053ade73702a
Merge branch 'Dev' of http://101.37.171.70:10101/r/~jhz/STUWMS into Dev
1个文件已删除
9个文件已添加
54个文件已修改
7622 ■■■■■ 已修改文件
.hbuilderx/launch.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/ProjectSettings.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/STUWMS/config/applicationhost.config 1015 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/STUWMS/v16/.suo 补丁 | 查看 | 原始文档 | blame | 历史
.vs/VSWorkspaceState.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/slnx.sqlite 补丁 | 查看 | 原始文档 | blame | 历史
App.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/ZLGL/ProcExchBillPopup.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
locale/zh-Hans.json 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/EmployeeRecords/EmployeeRecordsBill.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/Kf_MoveStockBill_CusBar/Kf_MoveStockBill_CusBar_APP.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/MJGL/SBMJReport/Sb_EquipMaintainTaskReport.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/MJGL/SBMJReport/Sc_MouldMaintainTaskReport.vue 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/MJGL/SB_EquipICMOTechParamBill/SB_EquipICMOTechParamBillEdit.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/MJGL/Sb_EquipDotCheckBill/Sb_EquipDotCheckBill.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/MJGL/Sb_EquipMaintainBill/Sb_EquipMaintainBill.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/MJGL/mujubaoyangjiludan/Sc_MouldMaintainBill.vue 1730 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/MJGL/mujudianjianjiludan/Sc_MouldDotCheckBill.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/MJGL/mujulingliaochukudan/MouldProdOutBill.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/AanDengHujiao/OA_ErrMsgBackCheckBill/OA_ErrMsgBackCheckBill.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/AanDengHujiao/OA_ErrMsgBackHandleBill/OA_ErrMsgBackHandleBill.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QCNoPassProdRequestBillMain/QCNoPassProdRequestBillMain.vue 1368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QCNoPassProdRequestBillMain/QCNoPassProdRequestBillMainList.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QuYangHuangYang/QC_TakeSampleCheckBill/QC_TakeSampleCheckBill.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QuYangHuangYang/QC_TakeSampleCheckBill/QC_TakeSampleCheckBillList.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QualityReport/SB_EquipRunningStatusReport.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QualityReport/Sb_EquipDotCheckBillReport.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QualityReport/Sb_EquipMaintainBillReport.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QualityReport/Sc_MouldMaintainBillMainReport.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QualityReport/Sc_MouldRepairWorkBillReport.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/QualityReportStep/QualityReportStepBill.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/lailiaojianyan/POStockInCheckBill.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast2.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/mojianjianyan/ProcessCheckBill.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/shengchanrukujiaoyan/QC_LastPieceCheckBill_v2.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/shoujianjianyan/firstCheckBill.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/xunjianjianyan/PatrolProcCheckBill.vue 311 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/baogong/DayPlanBillList.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/baogong/OA_ErrMsgBackBill.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/caigouruku/POStockInBill.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/gongxuOut/Cj_StationOutBill.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/gongxuOut/Cj_StationOutBillList.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/gongxuOut/Cj_StationOutBill_Standard.vue 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/login.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/tab1.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/tab2.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/tab4.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/qitachukujiaoyan/qitachukujiaoyan.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/shengchanlingliao/PPickingCheckBill.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/shengchanrukushengdan/Kf_ProductInBill.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tiaomachaima/tiaomachaimaCopy_HK.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tiaomamingxi/tiaomamingxi.vue 509 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/weiwaigxIn/Cj_StationEntrustInBill.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/weiwaigxOut/Cj_StationEntrustOutBill.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/weiwaigxOut/Cj_StationEntrustOutBillList.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/weiwaigxOut/firstCheck.vue 1127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/xiaoshoutuihuo/ICStockBillMain.vue 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/zhijiediaobo/MoveStockBill.vue 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/RequestQueue.js 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.hbuilderx/launch.json
@@ -18,7 +18,7 @@
        },
        {
            "openVueDevtools" : true,
            "playground" : "custom",
            "playground" : "standard",
            "type" : "uni-app:app-ios"
        },
        {
.vs/ProjectSettings.json
New file
@@ -0,0 +1,3 @@
{
  "CurrentProjectSetting": null
}
.vs/STUWMS/config/applicationhost.config
New file
@@ -0,0 +1,1015 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
    IIS configuration sections.
    For schema documentation, see
    %IIS_BIN%\config\schema\IIS_schema.xml.
    Please make a backup of this file before making any changes to it.
    NOTE: The following environment variables are available to be used
          within this file and are understood by the IIS Express.
          %IIS_USER_HOME% - The IIS Express home directory for the user
          %IIS_SITES_HOME% - The default home directory for sites
          %IIS_BIN% - The location of the IIS Express binaries
          %SYSTEMDRIVE% - The drive letter of %IIS_BIN%
-->
<configuration>
    <!--
        The <configSections> section controls the registration of sections.
        Section is the basic unit of deployment, locking, searching and
        containment for configuration settings.
        Every section belongs to one section group.
        A section group is a container of logically-related sections.
        Sections cannot be nested.
        Section groups may be nested.
        <section
            name=""  [Required, Collection Key] [XML name of the section]
            allowDefinition="Everywhere" [MachineOnly|MachineToApplication|AppHostOnly|Everywhere] [Level where it can be set]
            overrideModeDefault="Allow"  [Allow|Deny] [Default delegation mode]
            allowLocation="true"  [true|false] [Allowed in location tags]
        />
        The recommended way to unlock sections is by using a location tag:
        <location path="Default Web Site" overrideMode="Allow">
            <system.webServer>
                <asp />
            </system.webServer>
        </location>
    -->
    <configSections>
        <sectionGroup name="system.applicationHost">
            <section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="configHistory" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="serviceAutoStartProviders" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
        </sectionGroup>
        <sectionGroup name="system.webServer">
            <section name="asp" overrideModeDefault="Deny" />
            <section name="caching" overrideModeDefault="Allow" />
            <section name="cgi" overrideModeDefault="Deny" />
            <section name="defaultDocument" overrideModeDefault="Allow" />
            <section name="directoryBrowse" overrideModeDefault="Allow" />
            <section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="globalModules" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="handlers" overrideModeDefault="Deny" />
            <section name="httpCompression" overrideModeDefault="Allow" allowDefinition="Everywhere" />
            <section name="httpErrors" overrideModeDefault="Allow" />
            <section name="httpLogging" overrideModeDefault="Deny" />
            <section name="httpProtocol" overrideModeDefault="Allow" />
            <section name="httpRedirect" overrideModeDefault="Allow" />
            <section name="httpTracing" overrideModeDefault="Deny" />
            <section name="isapiFilters" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
            <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
            <section name="applicationInitialization" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
            <section name="odbcLogging" overrideModeDefault="Deny" />
            <sectionGroup name="security">
                <section name="access" overrideModeDefault="Deny" />
                <section name="applicationDependencies" overrideModeDefault="Deny" />
                <sectionGroup name="authentication">
                    <section name="anonymousAuthentication" overrideModeDefault="Deny" />
                    <section name="basicAuthentication" overrideModeDefault="Deny" />
                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="digestAuthentication" overrideModeDefault="Deny" />
                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="windowsAuthentication" overrideModeDefault="Deny" />
                </sectionGroup>
                <section name="authorization" overrideModeDefault="Allow" />
                <section name="ipSecurity" overrideModeDefault="Deny" />
                <section name="dynamicIpSecurity" overrideModeDefault="Deny" />
                <section name="isapiCgiRestriction" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
                <section name="requestFiltering" overrideModeDefault="Allow" />
            </sectionGroup>
            <section name="serverRuntime" overrideModeDefault="Deny" />
            <section name="serverSideInclude" overrideModeDefault="Deny" />
            <section name="staticContent" overrideModeDefault="Allow" />
            <sectionGroup name="tracing">
                <section name="traceFailedRequests" overrideModeDefault="Allow" />
                <section name="traceProviderDefinitions" overrideModeDefault="Deny" />
            </sectionGroup>
            <section name="urlCompression" overrideModeDefault="Allow" />
            <section name="validation" overrideModeDefault="Allow" />
            <sectionGroup name="webdav">
                <section name="globalSettings" overrideModeDefault="Deny" />
                <section name="authoring" overrideModeDefault="Deny" />
                <section name="authoringRules" overrideModeDefault="Deny" />
            </sectionGroup>
            <sectionGroup name="rewrite">
                <section name="allowedServerVariables" overrideModeDefault="Deny" />
                <section name="rules" overrideModeDefault="Allow" />
                <section name="outboundRules" overrideModeDefault="Allow" />
                <section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
                <section name="providers" overrideModeDefault="Allow" />
                <section name="rewriteMaps" overrideModeDefault="Allow" />
            </sectionGroup>
            <section name="webSocket" overrideModeDefault="Deny" />
        <section name="aspNetCore" overrideModeDefault="Allow" /></sectionGroup>
    </configSections>
    <configProtectedData>
        <providers>
            <add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
            <add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAA/HKxkz6alrlAPez0IUgujj/6k3WxCDriHp6jvpv3yEZmo7h6SMzGLxo4mTrIQVHSkB7tmElHKfUFTzE2BWF7nFWHY6Z6qmGBauFzwJMwESjril7Gjz69RBFH259HQ6aRDq9Xfx7U7H4HtdmnKNqGjgl/hwPQBGeIlWiDh+sYv3vKB0QU971tjX6H2B+9armlnC8UOuA6JYMDMI/VLLL16sng0fWAy5JYe0YVABVjiAWDW264RZW9Tr1Oax4qHZKg+SdjULxeOc2YmpX+d0yeITo1HkPF1hN1gHpIPIUDo05ilHUNfR3OkjVCIQK4cFKCq1s8NH+y+13MxUC4Fn1AlQ==" />
            <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAALmU8lTC+v2qtfQiiiquvvLpUQqKLEXs+jSKoWCM/uPhyB++k4dwug19mGidNK5FYiWK2KYE1yhjVJcbp12E98Q0R2nT7eBiCMY2JairxQ591rqABK7keGaIjwH7PwGzSpILl3RJ4YFvJ/7ZXEJxeDZIjW8ZxWVXx+/VyHs9U3WguLEkgMUX3jrxJi8LouxaIVPJAv/YQ1ZCWs8zImitxX/C/7o7yaIxznfsN5nGQzQfpUDPeby99aw2zPVTtZI2LaWIBON8guABvZ6JtJVDWmfdK6sodbnwdZkr6/Z2rfvamT1dC1SpQrGG7ulR/f9/GXvCaW10ZVKxekBF/CYlNMg==" />
        </providers>
    </configProtectedData>
    <system.applicationHost>
        <applicationPools>
            <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
            <applicationPoolDefaults managedRuntimeVersion="v4.0">
                <processModel loadUserProfile="true" setProfileEnvironment="false" />
            </applicationPoolDefaults>
        </applicationPools>
        <!--
          The <listenerAdapters> section defines the protocols with which the
          Windows Process Activation Service (WAS) binds.
        -->
        <listenerAdapters>
            <add name="http" />
        </listenerAdapters>
        <sites>
            <site name="WebSite1" id="1" serverAutoStart="true">
                <application path="/">
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                </bindings>
            </site>
            <siteDefaults>
                <!-- To enable logging, please change the below attribute "enabled" to "true" -->
                <logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false" />
                <traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
            </siteDefaults>
            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
            <virtualDirectoryDefaults allowSubDirConfig="true" />
        </sites>
        <webLimits />
    </system.applicationHost>
    <system.webServer>
        <serverRuntime />
        <asp scriptErrorSentToBrowser="true">
            <cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" />
            <limits />
        </asp>
        <caching enabled="true" enableKernelCache="true">
        </caching>
        <cgi />
        <defaultDocument enabled="true">
            <files>
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.htm" />
                <add value="index.html" />
                <add value="iisstart.htm" />
                <add value="default.aspx" />
            </files>
        </defaultDocument>
        <directoryBrowse enabled="false" />
        <fastCgi />
        <!--
          The <globalModules> section defines all native-code modules.
          To enable a module, specify it in the <modules> section.
        -->
        <globalModules>
            <add name="HttpLoggingModule" image="%IIS_BIN%\loghttp.dll" />
            <add name="UriCacheModule" image="%IIS_BIN%\cachuri.dll" />
            <add name="TokenCacheModule" image="%IIS_BIN%\cachtokn.dll" />
            <add name="DynamicCompressionModule" image="%IIS_BIN%\compdyn.dll" />
            <add name="StaticCompressionModule" image="%IIS_BIN%\compstat.dll" />
            <add name="DefaultDocumentModule" image="%IIS_BIN%\defdoc.dll" />
            <add name="DirectoryListingModule" image="%IIS_BIN%\dirlist.dll" />
            <add name="ProtocolSupportModule" image="%IIS_BIN%\protsup.dll" />
            <add name="HttpRedirectionModule" image="%IIS_BIN%\redirect.dll" />
            <add name="ServerSideIncludeModule" image="%IIS_BIN%\iis_ssi.dll" />
            <add name="StaticFileModule" image="%IIS_BIN%\static.dll" />
            <add name="AnonymousAuthenticationModule" image="%IIS_BIN%\authanon.dll" />
            <add name="CertificateMappingAuthenticationModule" image="%IIS_BIN%\authcert.dll" />
            <add name="UrlAuthorizationModule" image="%IIS_BIN%\urlauthz.dll" />
            <add name="BasicAuthenticationModule" image="%IIS_BIN%\authbas.dll" />
            <add name="WindowsAuthenticationModule" image="%IIS_BIN%\authsspi.dll" />
            <add name="IISCertificateMappingAuthenticationModule" image="%IIS_BIN%\authmap.dll" />
            <add name="IpRestrictionModule" image="%IIS_BIN%\iprestr.dll" />
            <add name="DynamicIpRestrictionModule" image="%IIS_BIN%\diprestr.dll" />
            <add name="RequestFilteringModule" image="%IIS_BIN%\modrqflt.dll" />
            <add name="CustomLoggingModule" image="%IIS_BIN%\logcust.dll" />
            <add name="CustomErrorModule" image="%IIS_BIN%\custerr.dll" />
            <add name="FailedRequestsTracingModule" image="%IIS_BIN%\iisfreb.dll" />
            <add name="RequestMonitorModule" image="%IIS_BIN%\iisreqs.dll" />
            <add name="IsapiModule" image="%IIS_BIN%\isapi.dll" />
            <add name="IsapiFilterModule" image="%IIS_BIN%\filter.dll" />
            <add name="CgiModule" image="%IIS_BIN%\cgi.dll" />
            <add name="FastCgiModule" image="%IIS_BIN%\iisfcgi.dll" />
<!--            <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" /> -->
            <add name="RewriteModule" image="%IIS_BIN%\rewrite.dll" />
            <add name="ConfigurationValidationModule" image="%IIS_BIN%\validcfg.dll" />
            <add name="WebSocketModule" image="%IIS_BIN%\iiswsock.dll" />
            <add name="WebMatrixSupportModule" image="%IIS_BIN%\webmatrixsup.dll" />
            <add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" />
            <add name="ManagedEngine64" image="%windir%\Microsoft.NET\Framework64\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness64" />
            <add name="ManagedEngineV4.0_32bit" image="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
            <add name="ManagedEngineV4.0_64bit" image="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />
            <add name="ApplicationInitializationModule" image="%IIS_BIN%\warmup.dll" />
            <add name="AspNetCoreModule" image="%IIS_BIN%\aspnetcore.dll" />
            <add name="AspNetCoreModuleV2" image="%IIS_BIN%\Asp.Net Core Module\V2\aspnetcorev2.dll" />
        </globalModules>
        <httpCompression directory="%TEMP%">
            <scheme name="gzip" dll="%IIS_BIN%\gzip.dll" />
            <dynamicTypes>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="message/*" enabled="true" />
                <add mimeType="application/x-javascript" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
                <add mimeType="*/*" enabled="false" />
            </dynamicTypes>
            <staticTypes>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="message/*" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
                <add mimeType="application/atom+xml" enabled="true" />
                <add mimeType="application/xaml+xml" enabled="true" />
                <add mimeType="image/svg+xml" enabled="true" />
                <add mimeType="*/*" enabled="false" />
            </staticTypes>
        </httpCompression>
        <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
            <error statusCode="401" prefixLanguageFilePath="%IIS_BIN%\custerr" path="401.htm" />
            <error statusCode="403" prefixLanguageFilePath="%IIS_BIN%\custerr" path="403.htm" />
            <error statusCode="404" prefixLanguageFilePath="%IIS_BIN%\custerr" path="404.htm" />
            <error statusCode="405" prefixLanguageFilePath="%IIS_BIN%\custerr" path="405.htm" />
            <error statusCode="406" prefixLanguageFilePath="%IIS_BIN%\custerr" path="406.htm" />
            <error statusCode="412" prefixLanguageFilePath="%IIS_BIN%\custerr" path="412.htm" />
            <error statusCode="500" prefixLanguageFilePath="%IIS_BIN%\custerr" path="500.htm" />
            <error statusCode="501" prefixLanguageFilePath="%IIS_BIN%\custerr" path="501.htm" />
            <error statusCode="502" prefixLanguageFilePath="%IIS_BIN%\custerr" path="502.htm" />
        </httpErrors>
        <httpLogging dontLog="false" />
        <httpProtocol>
            <customHeaders>
                <clear />
                <add name="X-Powered-By" value="ASP.NET" />
            </customHeaders>
            <redirectHeaders>
                <clear />
            </redirectHeaders>
        </httpProtocol>
        <httpRedirect enabled="false" />
        <httpTracing />
        <isapiFilters>
            <filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" />
            <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />
            <filter name="ASP.Net_2.0_for_v1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />
            <filter name="ASP.Net_4.0_32bit" path="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv4.0" />
            <filter name="ASP.Net_4.0_64bit" path="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv4.0" />
        </isapiFilters>
        <odbcLogging />
        <security>
            <access sslFlags="None" />
            <applicationDependencies>
                <application name="Active Server Pages" groupId="ASP" />
            </applicationDependencies>
            <authentication>
                <anonymousAuthentication enabled="true" userName="" />
                <basicAuthentication enabled="false" />
                <clientCertificateMappingAuthentication enabled="false" />
                <digestAuthentication enabled="false" />
                <iisClientCertificateMappingAuthentication enabled="false">
                </iisClientCertificateMappingAuthentication>
                <windowsAuthentication enabled="false">
                    <providers>
                        <add value="Negotiate" />
                        <add value="NTLM" />
                    </providers>
                </windowsAuthentication>
            </authentication>
            <authorization>
                <add accessType="Allow" users="*" />
            </authorization>
            <ipSecurity allowUnlisted="true" />
            <isapiCgiRestriction notListedIsapisAllowed="true" notListedCgisAllowed="true">
                <add path="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
                <add path="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
                <add path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
                <add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
            </isapiCgiRestriction>
            <requestFiltering>
                <fileExtensions allowUnlisted="true" applyToWebDAV="true">
                    <add fileExtension=".asa" allowed="false" />
                    <add fileExtension=".asax" allowed="false" />
                    <add fileExtension=".ascx" allowed="false" />
                    <add fileExtension=".master" allowed="false" />
                    <add fileExtension=".skin" allowed="false" />
                    <add fileExtension=".browser" allowed="false" />
                    <add fileExtension=".sitemap" allowed="false" />
                    <add fileExtension=".config" allowed="false" />
                    <add fileExtension=".cs" allowed="false" />
                    <add fileExtension=".csproj" allowed="false" />
                    <add fileExtension=".vb" allowed="false" />
                    <add fileExtension=".vbproj" allowed="false" />
                    <add fileExtension=".webinfo" allowed="false" />
                    <add fileExtension=".licx" allowed="false" />
                    <add fileExtension=".resx" allowed="false" />
                    <add fileExtension=".resources" allowed="false" />
                    <add fileExtension=".mdb" allowed="false" />
                    <add fileExtension=".vjsproj" allowed="false" />
                    <add fileExtension=".java" allowed="false" />
                    <add fileExtension=".jsl" allowed="false" />
                    <add fileExtension=".ldb" allowed="false" />
                    <add fileExtension=".dsdgm" allowed="false" />
                    <add fileExtension=".ssdgm" allowed="false" />
                    <add fileExtension=".lsad" allowed="false" />
                    <add fileExtension=".ssmap" allowed="false" />
                    <add fileExtension=".cd" allowed="false" />
                    <add fileExtension=".dsprototype" allowed="false" />
                    <add fileExtension=".lsaprototype" allowed="false" />
                    <add fileExtension=".sdm" allowed="false" />
                    <add fileExtension=".sdmDocument" allowed="false" />
                    <add fileExtension=".mdf" allowed="false" />
                    <add fileExtension=".ldf" allowed="false" />
                    <add fileExtension=".ad" allowed="false" />
                    <add fileExtension=".dd" allowed="false" />
                    <add fileExtension=".ldd" allowed="false" />
                    <add fileExtension=".sd" allowed="false" />
                    <add fileExtension=".adprototype" allowed="false" />
                    <add fileExtension=".lddprototype" allowed="false" />
                    <add fileExtension=".exclude" allowed="false" />
                    <add fileExtension=".refresh" allowed="false" />
                    <add fileExtension=".compiled" allowed="false" />
                    <add fileExtension=".msgx" allowed="false" />
                    <add fileExtension=".vsdisco" allowed="false" />
                    <add fileExtension=".rules" allowed="false" />
                </fileExtensions>
                <verbs allowUnlisted="true" applyToWebDAV="true" />
                <hiddenSegments applyToWebDAV="true">
                    <add segment="web.config" />
                    <add segment="bin" />
                    <add segment="App_code" />
                    <add segment="App_GlobalResources" />
                    <add segment="App_LocalResources" />
                    <add segment="App_WebReferences" />
                    <add segment="App_Data" />
                    <add segment="App_Browsers" />
                </hiddenSegments>
            </requestFiltering>
        </security>
        <serverSideInclude ssiExecDisable="false" />
        <staticContent lockAttributes="isDocFooterFileName">
            <mimeMap fileExtension=".323" mimeType="text/h323" />
            <mimeMap fileExtension=".3g2" mimeType="video/3gpp2" />
            <mimeMap fileExtension=".3gp2" mimeType="video/3gpp2" />
            <mimeMap fileExtension=".3gp" mimeType="video/3gpp" />
            <mimeMap fileExtension=".3gpp" mimeType="video/3gpp" />
            <mimeMap fileExtension=".aac" mimeType="audio/aac" />
            <mimeMap fileExtension=".aaf" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".aca" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".accdb" mimeType="application/msaccess" />
            <mimeMap fileExtension=".accde" mimeType="application/msaccess" />
            <mimeMap fileExtension=".accdt" mimeType="application/msaccess" />
            <mimeMap fileExtension=".acx" mimeType="application/internet-property-stream" />
            <mimeMap fileExtension=".adt" mimeType="audio/vnd.dlna.adts" />
            <mimeMap fileExtension=".adts" mimeType="audio/vnd.dlna.adts" />
            <mimeMap fileExtension=".afm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ai" mimeType="application/postscript" />
            <mimeMap fileExtension=".aif" mimeType="audio/x-aiff" />
            <mimeMap fileExtension=".aifc" mimeType="audio/aiff" />
            <mimeMap fileExtension=".aiff" mimeType="audio/aiff" />
            <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" />
            <mimeMap fileExtension=".application" mimeType="application/x-ms-application" />
            <mimeMap fileExtension=".art" mimeType="image/x-jg" />
            <mimeMap fileExtension=".asd" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".asf" mimeType="video/x-ms-asf" />
            <mimeMap fileExtension=".asi" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".asm" mimeType="text/plain" />
            <mimeMap fileExtension=".asr" mimeType="video/x-ms-asf" />
            <mimeMap fileExtension=".asx" mimeType="video/x-ms-asf" />
            <mimeMap fileExtension=".atom" mimeType="application/atom+xml" />
            <mimeMap fileExtension=".au" mimeType="audio/basic" />
            <mimeMap fileExtension=".avi" mimeType="video/avi" />
            <mimeMap fileExtension=".axs" mimeType="application/olescript" />
            <mimeMap fileExtension=".bas" mimeType="text/plain" />
            <mimeMap fileExtension=".bcpio" mimeType="application/x-bcpio" />
            <mimeMap fileExtension=".bin" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".bmp" mimeType="image/bmp" />
            <mimeMap fileExtension=".c" mimeType="text/plain" />
            <mimeMap fileExtension=".cab" mimeType="application/vnd.ms-cab-compressed" />
            <mimeMap fileExtension=".calx" mimeType="application/vnd.ms-office.calx" />
            <mimeMap fileExtension=".cat" mimeType="application/vnd.ms-pki.seccat" />
            <mimeMap fileExtension=".cdf" mimeType="application/x-cdf" />
            <mimeMap fileExtension=".chm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".class" mimeType="application/x-java-applet" />
            <mimeMap fileExtension=".clp" mimeType="application/x-msclip" />
            <mimeMap fileExtension=".cmx" mimeType="image/x-cmx" />
            <mimeMap fileExtension=".cnf" mimeType="text/plain" />
            <mimeMap fileExtension=".cod" mimeType="image/cis-cod" />
            <mimeMap fileExtension=".cpio" mimeType="application/x-cpio" />
            <mimeMap fileExtension=".cpp" mimeType="text/plain" />
            <mimeMap fileExtension=".crd" mimeType="application/x-mscardfile" />
            <mimeMap fileExtension=".crl" mimeType="application/pkix-crl" />
            <mimeMap fileExtension=".crt" mimeType="application/x-x509-ca-cert" />
            <mimeMap fileExtension=".csh" mimeType="application/x-csh" />
            <mimeMap fileExtension=".css" mimeType="text/css" />
            <mimeMap fileExtension=".csv" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".cur" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".dcr" mimeType="application/x-director" />
            <mimeMap fileExtension=".deploy" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".der" mimeType="application/x-x509-ca-cert" />
            <mimeMap fileExtension=".dib" mimeType="image/bmp" />
            <mimeMap fileExtension=".dir" mimeType="application/x-director" />
            <mimeMap fileExtension=".disco" mimeType="text/xml" />
            <mimeMap fileExtension=".dll" mimeType="application/x-msdownload" />
            <mimeMap fileExtension=".dll.config" mimeType="text/xml" />
            <mimeMap fileExtension=".dlm" mimeType="text/dlm" />
            <mimeMap fileExtension=".doc" mimeType="application/msword" />
            <mimeMap fileExtension=".docm" mimeType="application/vnd.ms-word.document.macroEnabled.12" />
            <mimeMap fileExtension=".docx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
            <mimeMap fileExtension=".dot" mimeType="application/msword" />
            <mimeMap fileExtension=".dotm" mimeType="application/vnd.ms-word.template.macroEnabled.12" />
            <mimeMap fileExtension=".dotx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.template" />
            <mimeMap fileExtension=".dsp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".dtd" mimeType="text/xml" />
            <mimeMap fileExtension=".dvi" mimeType="application/x-dvi" />
            <mimeMap fileExtension=".dvr-ms" mimeType="video/x-ms-dvr" />
            <mimeMap fileExtension=".dwf" mimeType="drawing/x-dwf" />
            <mimeMap fileExtension=".dwp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".dxr" mimeType="application/x-director" />
            <mimeMap fileExtension=".eml" mimeType="message/rfc822" />
            <mimeMap fileExtension=".emz" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
            <mimeMap fileExtension=".eps" mimeType="application/postscript" />
            <mimeMap fileExtension=".esd" mimeType="application/vnd.ms-cab-compressed" />
            <mimeMap fileExtension=".etx" mimeType="text/x-setext" />
            <mimeMap fileExtension=".evy" mimeType="application/envoy" />
            <mimeMap fileExtension=".exe" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".exe.config" mimeType="text/xml" />
            <mimeMap fileExtension=".fdf" mimeType="application/vnd.fdf" />
            <mimeMap fileExtension=".fif" mimeType="application/fractals" />
            <mimeMap fileExtension=".fla" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".flr" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".flv" mimeType="video/x-flv" />
            <mimeMap fileExtension=".gif" mimeType="image/gif" />
            <mimeMap fileExtension=".glb" mimeType="model/gltf-binary" />
            <mimeMap fileExtension=".gtar" mimeType="application/x-gtar" />
            <mimeMap fileExtension=".gz" mimeType="application/x-gzip" />
            <mimeMap fileExtension=".h" mimeType="text/plain" />
            <mimeMap fileExtension=".hdf" mimeType="application/x-hdf" />
            <mimeMap fileExtension=".hdml" mimeType="text/x-hdml" />
            <mimeMap fileExtension=".hhc" mimeType="application/x-oleobject" />
            <mimeMap fileExtension=".hhk" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".hhp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".hlp" mimeType="application/winhlp" />
            <mimeMap fileExtension=".hqx" mimeType="application/mac-binhex40" />
            <mimeMap fileExtension=".hta" mimeType="application/hta" />
            <mimeMap fileExtension=".htc" mimeType="text/x-component" />
            <mimeMap fileExtension=".htm" mimeType="text/html" />
            <mimeMap fileExtension=".html" mimeType="text/html" />
            <mimeMap fileExtension=".htt" mimeType="text/webviewhtml" />
            <mimeMap fileExtension=".hxt" mimeType="text/html" />
            <mimeMap fileExtension=".ico" mimeType="image/x-icon" />
            <mimeMap fileExtension=".ics" mimeType="text/calendar" />
            <mimeMap fileExtension=".ief" mimeType="image/ief" />
            <mimeMap fileExtension=".iii" mimeType="application/x-iphone" />
            <mimeMap fileExtension=".inf" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ins" mimeType="application/x-internet-signup" />
            <mimeMap fileExtension=".isp" mimeType="application/x-internet-signup" />
            <mimeMap fileExtension=".IVF" mimeType="video/x-ivf" />
            <mimeMap fileExtension=".jar" mimeType="application/java-archive" />
            <mimeMap fileExtension=".java" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".jck" mimeType="application/liquidmotion" />
            <mimeMap fileExtension=".jcz" mimeType="application/liquidmotion" />
            <mimeMap fileExtension=".jfif" mimeType="image/pjpeg" />
            <mimeMap fileExtension=".jpb" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".jpe" mimeType="image/jpeg" />
            <mimeMap fileExtension=".jpeg" mimeType="image/jpeg" />
            <mimeMap fileExtension=".jpg" mimeType="image/jpeg" />
            <mimeMap fileExtension=".js" mimeType="application/javascript" />
            <mimeMap fileExtension=".json" mimeType="application/json" />
            <mimeMap fileExtension=".jsonld" mimeType="application/ld+json" />
            <mimeMap fileExtension=".jsx" mimeType="text/jscript" />
            <mimeMap fileExtension=".latex" mimeType="application/x-latex" />
            <mimeMap fileExtension=".less" mimeType="text/css" />
            <mimeMap fileExtension=".lit" mimeType="application/x-ms-reader" />
            <mimeMap fileExtension=".lpk" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".lsf" mimeType="video/x-la-asf" />
            <mimeMap fileExtension=".lsx" mimeType="video/x-la-asf" />
            <mimeMap fileExtension=".lzh" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".m13" mimeType="application/x-msmediaview" />
            <mimeMap fileExtension=".m14" mimeType="application/x-msmediaview" />
            <mimeMap fileExtension=".m1v" mimeType="video/mpeg" />
            <mimeMap fileExtension=".m2ts" mimeType="video/vnd.dlna.mpeg-tts" />
            <mimeMap fileExtension=".m3u" mimeType="audio/x-mpegurl" />
            <mimeMap fileExtension=".m4a" mimeType="audio/mp4" />
            <mimeMap fileExtension=".m4v" mimeType="video/mp4" />
            <mimeMap fileExtension=".man" mimeType="application/x-troff-man" />
            <mimeMap fileExtension=".manifest" mimeType="application/x-ms-manifest" />
            <mimeMap fileExtension=".map" mimeType="text/plain" />
            <mimeMap fileExtension=".mdb" mimeType="application/x-msaccess" />
            <mimeMap fileExtension=".mdp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".me" mimeType="application/x-troff-me" />
            <mimeMap fileExtension=".mht" mimeType="message/rfc822" />
            <mimeMap fileExtension=".mhtml" mimeType="message/rfc822" />
            <mimeMap fileExtension=".mid" mimeType="audio/mid" />
            <mimeMap fileExtension=".midi" mimeType="audio/mid" />
            <mimeMap fileExtension=".mix" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".mmf" mimeType="application/x-smaf" />
            <mimeMap fileExtension=".mno" mimeType="text/xml" />
            <mimeMap fileExtension=".mny" mimeType="application/x-msmoney" />
            <mimeMap fileExtension=".mov" mimeType="video/quicktime" />
            <mimeMap fileExtension=".movie" mimeType="video/x-sgi-movie" />
            <mimeMap fileExtension=".mp2" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mp3" mimeType="audio/mpeg" />
            <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
            <mimeMap fileExtension=".mp4v" mimeType="video/mp4" />
            <mimeMap fileExtension=".mpa" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mpe" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mpeg" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mpg" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mpp" mimeType="application/vnd.ms-project" />
            <mimeMap fileExtension=".mpv2" mimeType="video/mpeg" />
            <mimeMap fileExtension=".ms" mimeType="application/x-troff-ms" />
            <mimeMap fileExtension=".msi" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".mso" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".mvb" mimeType="application/x-msmediaview" />
            <mimeMap fileExtension=".mvc" mimeType="application/x-miva-compiled" />
            <mimeMap fileExtension=".nc" mimeType="application/x-netcdf" />
            <mimeMap fileExtension=".nsc" mimeType="video/x-ms-asf" />
            <mimeMap fileExtension=".nws" mimeType="message/rfc822" />
            <mimeMap fileExtension=".ocx" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".oda" mimeType="application/oda" />
            <mimeMap fileExtension=".odc" mimeType="text/x-ms-odc" />
            <mimeMap fileExtension=".ods" mimeType="application/oleobject" />
            <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
            <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
            <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
            <mimeMap fileExtension=".one" mimeType="application/onenote" />
            <mimeMap fileExtension=".onea" mimeType="application/onenote" />
            <mimeMap fileExtension=".onetoc" mimeType="application/onenote" />
            <mimeMap fileExtension=".onetoc2" mimeType="application/onenote" />
            <mimeMap fileExtension=".onetmp" mimeType="application/onenote" />
            <mimeMap fileExtension=".onepkg" mimeType="application/onenote" />
            <mimeMap fileExtension=".osdx" mimeType="application/opensearchdescription+xml" />
            <mimeMap fileExtension=".otf" mimeType="font/otf" />
            <mimeMap fileExtension=".p10" mimeType="application/pkcs10" />
            <mimeMap fileExtension=".p12" mimeType="application/x-pkcs12" />
            <mimeMap fileExtension=".p7b" mimeType="application/x-pkcs7-certificates" />
            <mimeMap fileExtension=".p7c" mimeType="application/pkcs7-mime" />
            <mimeMap fileExtension=".p7m" mimeType="application/pkcs7-mime" />
            <mimeMap fileExtension=".p7r" mimeType="application/x-pkcs7-certreqresp" />
            <mimeMap fileExtension=".p7s" mimeType="application/pkcs7-signature" />
            <mimeMap fileExtension=".pbm" mimeType="image/x-portable-bitmap" />
            <mimeMap fileExtension=".pcx" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pcz" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pdf" mimeType="application/pdf" />
            <mimeMap fileExtension=".pfb" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pfm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pfx" mimeType="application/x-pkcs12" />
            <mimeMap fileExtension=".pgm" mimeType="image/x-portable-graymap" />
            <mimeMap fileExtension=".pko" mimeType="application/vnd.ms-pki.pko" />
            <mimeMap fileExtension=".pma" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".pmc" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".pml" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".pmr" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".pmw" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".png" mimeType="image/png" />
            <mimeMap fileExtension=".pnm" mimeType="image/x-portable-anymap" />
            <mimeMap fileExtension=".pnz" mimeType="image/png" />
            <mimeMap fileExtension=".pot" mimeType="application/vnd.ms-powerpoint" />
            <mimeMap fileExtension=".potm" mimeType="application/vnd.ms-powerpoint.template.macroEnabled.12" />
            <mimeMap fileExtension=".potx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.template" />
            <mimeMap fileExtension=".ppam" mimeType="application/vnd.ms-powerpoint.addin.macroEnabled.12" />
            <mimeMap fileExtension=".ppm" mimeType="image/x-portable-pixmap" />
            <mimeMap fileExtension=".pps" mimeType="application/vnd.ms-powerpoint" />
            <mimeMap fileExtension=".ppsm" mimeType="application/vnd.ms-powerpoint.slideshow.macroEnabled.12" />
            <mimeMap fileExtension=".ppsx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slideshow" />
            <mimeMap fileExtension=".ppt" mimeType="application/vnd.ms-powerpoint" />
            <mimeMap fileExtension=".pptm" mimeType="application/vnd.ms-powerpoint.presentation.macroEnabled.12" />
            <mimeMap fileExtension=".pptx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
            <mimeMap fileExtension=".prf" mimeType="application/pics-rules" />
            <mimeMap fileExtension=".prm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".prx" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ps" mimeType="application/postscript" />
            <mimeMap fileExtension=".psd" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".psm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".psp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pub" mimeType="application/x-mspublisher" />
            <mimeMap fileExtension=".qt" mimeType="video/quicktime" />
            <mimeMap fileExtension=".qtl" mimeType="application/x-quicktimeplayer" />
            <mimeMap fileExtension=".qxd" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ra" mimeType="audio/x-pn-realaudio" />
            <mimeMap fileExtension=".ram" mimeType="audio/x-pn-realaudio" />
            <mimeMap fileExtension=".rar" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ras" mimeType="image/x-cmu-raster" />
            <mimeMap fileExtension=".rf" mimeType="image/vnd.rn-realflash" />
            <mimeMap fileExtension=".rgb" mimeType="image/x-rgb" />
            <mimeMap fileExtension=".rm" mimeType="application/vnd.rn-realmedia" />
            <mimeMap fileExtension=".rmi" mimeType="audio/mid" />
            <mimeMap fileExtension=".roff" mimeType="application/x-troff" />
            <mimeMap fileExtension=".rpm" mimeType="audio/x-pn-realaudio-plugin" />
            <mimeMap fileExtension=".rtf" mimeType="application/rtf" />
            <mimeMap fileExtension=".rtx" mimeType="text/richtext" />
            <mimeMap fileExtension=".scd" mimeType="application/x-msschedule" />
            <mimeMap fileExtension=".sct" mimeType="text/scriptlet" />
            <mimeMap fileExtension=".sea" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".setpay" mimeType="application/set-payment-initiation" />
            <mimeMap fileExtension=".setreg" mimeType="application/set-registration-initiation" />
            <mimeMap fileExtension=".sgml" mimeType="text/sgml" />
            <mimeMap fileExtension=".sh" mimeType="application/x-sh" />
            <mimeMap fileExtension=".shar" mimeType="application/x-shar" />
            <mimeMap fileExtension=".sit" mimeType="application/x-stuffit" />
            <mimeMap fileExtension=".sldm" mimeType="application/vnd.ms-powerpoint.slide.macroEnabled.12" />
            <mimeMap fileExtension=".sldx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slide" />
            <mimeMap fileExtension=".smd" mimeType="audio/x-smd" />
            <mimeMap fileExtension=".smi" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".smx" mimeType="audio/x-smd" />
            <mimeMap fileExtension=".smz" mimeType="audio/x-smd" />
            <mimeMap fileExtension=".snd" mimeType="audio/basic" />
            <mimeMap fileExtension=".snp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".spc" mimeType="application/x-pkcs7-certificates" />
            <mimeMap fileExtension=".spl" mimeType="application/futuresplash" />
            <mimeMap fileExtension=".spx" mimeType="audio/ogg" />
            <mimeMap fileExtension=".src" mimeType="application/x-wais-source" />
            <mimeMap fileExtension=".ssm" mimeType="application/streamingmedia" />
            <mimeMap fileExtension=".sst" mimeType="application/vnd.ms-pki.certstore" />
            <mimeMap fileExtension=".stl" mimeType="application/vnd.ms-pki.stl" />
            <mimeMap fileExtension=".sv4cpio" mimeType="application/x-sv4cpio" />
            <mimeMap fileExtension=".sv4crc" mimeType="application/x-sv4crc" />
            <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
            <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" />
            <mimeMap fileExtension=".swf" mimeType="application/x-shockwave-flash" />
            <mimeMap fileExtension=".t" mimeType="application/x-troff" />
            <mimeMap fileExtension=".tar" mimeType="application/x-tar" />
            <mimeMap fileExtension=".tcl" mimeType="application/x-tcl" />
            <mimeMap fileExtension=".tex" mimeType="application/x-tex" />
            <mimeMap fileExtension=".texi" mimeType="application/x-texinfo" />
            <mimeMap fileExtension=".texinfo" mimeType="application/x-texinfo" />
            <mimeMap fileExtension=".tgz" mimeType="application/x-compressed" />
            <mimeMap fileExtension=".thmx" mimeType="application/vnd.ms-officetheme" />
            <mimeMap fileExtension=".thn" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".tif" mimeType="image/tiff" />
            <mimeMap fileExtension=".tiff" mimeType="image/tiff" />
            <mimeMap fileExtension=".toc" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".tr" mimeType="application/x-troff" />
            <mimeMap fileExtension=".trm" mimeType="application/x-msterminal" />
            <mimeMap fileExtension=".ts" mimeType="video/vnd.dlna.mpeg-tts" />
            <mimeMap fileExtension=".tsv" mimeType="text/tab-separated-values" />
            <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".tts" mimeType="video/vnd.dlna.mpeg-tts" />
            <mimeMap fileExtension=".txt" mimeType="text/plain" />
            <mimeMap fileExtension=".u32" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".uls" mimeType="text/iuls" />
            <mimeMap fileExtension=".ustar" mimeType="application/x-ustar" />
            <mimeMap fileExtension=".vbs" mimeType="text/vbscript" />
            <mimeMap fileExtension=".vcf" mimeType="text/x-vcard" />
            <mimeMap fileExtension=".vcs" mimeType="text/plain" />
            <mimeMap fileExtension=".vdx" mimeType="application/vnd.ms-visio.viewer" />
            <mimeMap fileExtension=".vml" mimeType="text/xml" />
            <mimeMap fileExtension=".vsd" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vss" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vst" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vsto" mimeType="application/x-ms-vsto" />
            <mimeMap fileExtension=".vsw" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vsx" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vtx" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".wasm" mimeType="application/wasm" />
            <mimeMap fileExtension=".wav" mimeType="audio/wav" />
            <mimeMap fileExtension=".wax" mimeType="audio/x-ms-wax" />
            <mimeMap fileExtension=".wbmp" mimeType="image/vnd.wap.wbmp" />
            <mimeMap fileExtension=".wcm" mimeType="application/vnd.ms-works" />
            <mimeMap fileExtension=".wdb" mimeType="application/vnd.ms-works" />
            <mimeMap fileExtension=".webm" mimeType="video/webm" />
            <mimeMap fileExtension=".wks" mimeType="application/vnd.ms-works" />
            <mimeMap fileExtension=".wm" mimeType="video/x-ms-wm" />
            <mimeMap fileExtension=".wma" mimeType="audio/x-ms-wma" />
            <mimeMap fileExtension=".wmd" mimeType="application/x-ms-wmd" />
            <mimeMap fileExtension=".wmf" mimeType="application/x-msmetafile" />
            <mimeMap fileExtension=".wml" mimeType="text/vnd.wap.wml" />
            <mimeMap fileExtension=".wmlc" mimeType="application/vnd.wap.wmlc" />
            <mimeMap fileExtension=".wmls" mimeType="text/vnd.wap.wmlscript" />
            <mimeMap fileExtension=".wmlsc" mimeType="application/vnd.wap.wmlscriptc" />
            <mimeMap fileExtension=".wmp" mimeType="video/x-ms-wmp" />
            <mimeMap fileExtension=".wmv" mimeType="video/x-ms-wmv" />
            <mimeMap fileExtension=".wmx" mimeType="video/x-ms-wmx" />
            <mimeMap fileExtension=".wmz" mimeType="application/x-ms-wmz" />
            <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
            <mimeMap fileExtension=".wps" mimeType="application/vnd.ms-works" />
            <mimeMap fileExtension=".wri" mimeType="application/x-mswrite" />
            <mimeMap fileExtension=".wrl" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".wrz" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".wsdl" mimeType="text/xml" />
            <mimeMap fileExtension=".wtv" mimeType="video/x-ms-wtv" />
            <mimeMap fileExtension=".wvx" mimeType="video/x-ms-wvx" />
            <mimeMap fileExtension=".x" mimeType="application/directx" />
            <mimeMap fileExtension=".xaf" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" />
            <mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" />
            <mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" />
            <mimeMap fileExtension=".xbm" mimeType="image/x-xbitmap" />
            <mimeMap fileExtension=".xdr" mimeType="text/plain" />
            <mimeMap fileExtension=".xht" mimeType="application/xhtml+xml" />
            <mimeMap fileExtension=".xhtml" mimeType="application/xhtml+xml" />
            <mimeMap fileExtension=".xla" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xlam" mimeType="application/vnd.ms-excel.addin.macroEnabled.12" />
            <mimeMap fileExtension=".xlc" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xlm" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xls" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xlsb" mimeType="application/vnd.ms-excel.sheet.binary.macroEnabled.12" />
            <mimeMap fileExtension=".xlsm" mimeType="application/vnd.ms-excel.sheet.macroEnabled.12" />
            <mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
            <mimeMap fileExtension=".xlt" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xltm" mimeType="application/vnd.ms-excel.template.macroEnabled.12" />
            <mimeMap fileExtension=".xltx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.template" />
            <mimeMap fileExtension=".xlw" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xml" mimeType="text/xml" />
            <mimeMap fileExtension=".xof" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".xpm" mimeType="image/x-xpixmap" />
            <mimeMap fileExtension=".xps" mimeType="application/vnd.ms-xpsdocument" />
            <mimeMap fileExtension=".xsd" mimeType="text/xml" />
            <mimeMap fileExtension=".xsf" mimeType="text/xml" />
            <mimeMap fileExtension=".xsl" mimeType="text/xml" />
            <mimeMap fileExtension=".xslt" mimeType="text/xml" />
            <mimeMap fileExtension=".xsn" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".xtp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".xwd" mimeType="image/x-xwindowdump" />
            <mimeMap fileExtension=".z" mimeType="application/x-compress" />
            <mimeMap fileExtension=".zip" mimeType="application/x-zip-compressed" />
        </staticContent>
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="ASP" verbosity="Verbose" />
                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                        <add provider="ISAPI Extension" verbosity="Verbose" />
                        <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions statusCodes="200-999" />
                </add>
            </traceFailedRequests>
             <traceProviderDefinitions>
                <add name="WWW Server" guid="{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}">
                    <areas>
                        <clear />
                        <add name="Authentication" value="2" />
                        <add name="Security" value="4" />
                        <add name="Filter" value="8" />
                        <add name="StaticFile" value="16" />
                        <add name="CGI" value="32" />
                        <add name="Compression" value="64" />
                        <add name="Cache" value="128" />
                        <add name="RequestNotifications" value="256" />
                        <add name="Module" value="512" />
                        <add name="Rewrite" value="1024" />
                        <add name="FastCGI" value="4096" />
                        <add name="WebSocket" value="16384" />
                        <add name="ANCM" value="65536" />
                    </areas>
                </add>
                <add name="ASP" guid="{06b94d9a-b15e-456e-a4ef-37c984a2cb4b}">
                    <areas>
                        <clear />
                    </areas>
                </add>
                <add name="ISAPI Extension" guid="{a1c2040e-8840-4c31-ba11-9871031a19ea}">
                    <areas>
                        <clear />
                    </areas>
                </add>
                <add name="ASPNET" guid="{AFF081FE-0247-4275-9C4E-021F3DC1DA35}">
                    <areas>
                        <add name="Infrastructure" value="1" />
                        <add name="Module" value="2" />
                        <add name="Page" value="4" />
                        <add name="AppServices" value="8" />
                    </areas>
                </add>
            </traceProviderDefinitions>
        </tracing>
        <urlCompression />
        <validation />
        <webdav>
            <globalSettings>
                <propertyStores>
                    <add name="webdav_simple_prop" image="%IIS_BIN%\webdav_simple_prop.dll" image32="%IIS_BIN%\webdav_simple_prop.dll" />
                </propertyStores>
                <lockStores>
                    <add name="webdav_simple_lock" image="%IIS_BIN%\webdav_simple_lock.dll" image32="%IIS_BIN%\webdav_simple_lock.dll" />
                </lockStores>
            </globalSettings>
            <authoring>
                <locks enabled="true" lockStore="webdav_simple_lock" />
            </authoring>
            <authoringRules />
        </webdav>
        <webSocket />
        <applicationInitialization />
    </system.webServer>
    <location path="" overrideMode="Allow">
        <system.webServer>
            <modules>
                <add name="IsapiFilterModule" lockItem="true" />
                <add name="BasicAuthenticationModule" lockItem="true" />
                <add name="IsapiModule" lockItem="true" />
                <add name="HttpLoggingModule" lockItem="true" />
                <add name="DynamicCompressionModule" lockItem="true" />
                <add name="StaticCompressionModule" lockItem="true" />
                <add name="DefaultDocumentModule" lockItem="true" />
                <add name="DirectoryListingModule" lockItem="true" />
                <add name="ProtocolSupportModule" lockItem="true" />
                <add name="HttpRedirectionModule" lockItem="true" />
                <add name="ServerSideIncludeModule" lockItem="true" />
                <add name="StaticFileModule" lockItem="true" />
                <add name="AnonymousAuthenticationModule" lockItem="true" />
                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
                <add name="UrlAuthorizationModule" lockItem="true" />
                <add name="WindowsAuthenticationModule" lockItem="true" />
                <add name="IISCertificateMappingAuthenticationModule" lockItem="true" />
                <add name="WebMatrixSupportModule" lockItem="true" />
                <add name="IpRestrictionModule" lockItem="true" />
                <add name="DynamicIpRestrictionModule" lockItem="true" />
                <add name="RequestFilteringModule" lockItem="true" />
                <add name="CustomLoggingModule" lockItem="true" />
                <add name="CustomErrorModule" lockItem="true" />
                <add name="FailedRequestsTracingModule" lockItem="true" />
                <add name="CgiModule" lockItem="true" />
                <add name="FastCgiModule" lockItem="true" />
<!--                <add name="WebDAVModule" /> -->
                <add name="RewriteModule" />
                <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" preCondition="managedHandler" />
                <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="managedHandler" />
                <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="managedHandler" />
                <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
                <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
                <add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />
                <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" />
                <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" preCondition="managedHandler" />
                <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" preCondition="managedHandler" />
                <add name="Profile" type="System.Web.Profile.ProfileModule" preCondition="managedHandler" />
                <add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" preCondition="managedHandler" />
                <add name="ApplicationInitializationModule" lockItem="true" />
                <add name="WebSocketModule" lockItem="true" />
                <add name="ServiceModel-4.0" type="System.ServiceModel.Activation.ServiceHttpModule,System.ServiceModel.Activation,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
                <add name="ConfigurationValidationModule" lockItem="true" />
                <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="managedHandler,runtimeVersionv4.0" />
                <add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
                <add name="AspNetCoreModule" lockItem="true" />
                <add name="AspNetCoreModuleV2" lockItem="true" />
            </modules>
            <handlers accessPolicy="Read, Script">
<!--                <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> -->
                <add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
                <add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
                <add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
                <add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
                <add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
                <add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
                <add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
                <add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
                <add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="ScriptResourceIntegrated-4.0" path="*ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
                <add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
                <add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
                <add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="AXD-ISAPI-2.0-64" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="WebServiceHandlerFactory-ISAPI-2.0-64" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
                <add name="SSINC-stm" path="*.stm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
                <add name="SSINC-shtm" path="*.shtm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
                <add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
                <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
                <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
                <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
                <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
            </handlers>
        </system.webServer>
    </location>
</configuration>
.vs/STUWMS/v16/.suo
Binary files differ
.vs/VSWorkspaceState.json
New file
@@ -0,0 +1,9 @@
{
  "ExpandedNodes": [
    "",
    "\\pages",
    "\\pages\\tiaomachaima"
  ],
  "SelectedNode": "\\pages\\tiaomachaima\\tiaomachaimaCopy_HK.vue",
  "PreviewInSolutionExplorer": false
}
.vs/slnx.sqlite
Binary files differ
App.vue
@@ -8,6 +8,7 @@
        getUserInfo
    } from "./utils/auth";
    import getuiUtils from "./utils/getuiUtils";
    import { overrideUniRequest, cancelAllRequest } from './utils/RequestQueue'
    export default {
        onLaunch: function() {
            console.log('App Launch')
@@ -69,6 +70,12 @@
                }
            }, false);
            // #endif
            overrideUniRequest()
            // 路由跳转时取消所有请求
            this.setupRouteInterceptor()
        },
        onShow: function() {
            console.log('App Show')
@@ -98,6 +105,23 @@
                        }
                    });
                }, 300)
            },
            setupRouteInterceptor() {
                const methods = [
                    'navigateTo',
                    'redirectTo',
                    'navigateBack',
                    'switchTab',
                    'reLaunch'
                ]
                methods.forEach((m) => {
                    uni.addInterceptor(m, {
                        invoke() {
                            cancelAllRequest()
                        }
                    })
                })
            }
        }
    }
components/ZLGL/ProcExchBillPopup.vue
@@ -206,7 +206,7 @@
                    sWhere += ` and  CONVERT(varchar(100),日期, 23) between '${this.HBeginDate}' and '${this.HEndDate}'`
                }
                if (this.HPrdOrderBillNo) {
                    sWhere += ` and 生产订单号 like'%${this.HPrdOrderBillNo}%`
                    sWhere += ` and 生产订单号 like'%${this.HPrdOrderBillNo}%'`
                }
                if (this.HWorkShop != '全部车间') {
                    let workshopValue = this.HWorkShopValues.find(e => e.HName = this.HStatus )
locale/zh-Hans.json
@@ -33,7 +33,11 @@
        "HSourceBillType0": "收料通知单@1103",
        "HSourceBillType1": "采购订单@1101",
        "HSourceBillType2": "手工录入@-1"
    },
    "Kf_SellOutBackBill_PDA": {
        "HSourceBillType0": "退货通知单@1403",
        "HSourceBillType1": "销售订单@1401",
        "HSourceBillType2": "手工录入@-1"
    },
    "Gy": {
        "HBarCode": "条码",
@@ -64,6 +68,8 @@
        "HSecManagerName_Placeholder": "请选择验收员",
        "HDeptName": "部门",
        "HDeptName_Placeholder": "请选择部门",
        "HCusName": "客户",
        "HCusName_Placeholder": "请选择客户",
        "HSupName": "供应商",
        "HSupName_Placeholder": "请选择供应商",
        "HStockOrgName": "组织",
@@ -87,6 +93,65 @@
        "EquipNumber_Search": "设备编码",
        "EquipName_Search": "设备名称",
        "HDept_Search": "部门"
    },
    "Kf_ProductInBill_PDA": {
        "BarCode": "条码",
        "Qty": "数量",
        "BillNo": "单据号",
        "BillID": "单据ID",
        "Keeper": "保管",
        "SecManager": "验收",
        "Dept": "部门",
        "StockOrg": "组织",
        "Material": "物料",
        "MaterModel": "规格",
        "BatchNo": "批次",
        "Unit": "单位",
        "Capacity": "容量",
        "btnSubmit": "提交",
        "btnAdd": "新增",
        "selectSource": "选择源单",
        "tableInfo": "表头信息",
        "materInfo": "物料信息",
        "barInfo": "条码信息",
        "removeShelvesInfo": "下架信息",
        "btnExit": "退出",
        "title": "生产入库单",
        "select option": [
            "3710@生产任务单",
            "3711@生产汇报单",
            "3714@工序汇报单"
        ],
        "placeholder_BarCode": "请扫描(或输入)条码",
        "placeholder_Qty": "请输入数量",
        "placeholder_Warehouse": "请输入(或扫描)仓库",
        "placeholder_StockPlace": "请输入(或扫描)仓位",
        "placeholder_SourceBillNo": "请输入源单单号",
        "table_SourceBillNo": "源单单号",
        "table_SourceBillQty": "源单数量",
        "table_BarQty": "数量",
        "table_BarNum": "条码个数",
        "table_MaterModel": "规格型号",
        "table_Aux": "辅助属性",
        "Warehouse": "仓库",
        "StockPlace": "仓位",
        "SourceBillType": "源单类型",
        "SourceBillNo": "源单单号",
        "Date": "日期",
        "Maker": "制单人",
        "bt_HMaterNumber": "物料代码",
        "bt_HMaterName": "物料名称",
        "bt_HModel": "规格型号",
        "bt_ForFilteringSchemes": "是否启用",
        "btnReSearch": "重置",
        "set_AddNew": "新增",
        "get_use": "启用",
        "get_createBarCode": "生成条码",
        "set_DeleteBill": "删除",
        "set_HideColumn": "列设置",
        "get_Refresh": "刷新",
        "btn_MaterPackQtyExcel": "Excel导入",
        "get_Exit": "退出"
    }
}
main.js
@@ -43,7 +43,7 @@
        if (res.data && res.data.token) {
            uni.setStorageSync('Token', res.data.token)
        }
        // 401 自动跳登录
        if (res.statusCode === 401) {
@@ -51,7 +51,7 @@
            uni.showModal({
                title: '温馨提示',
                content: res.data.Message,
                showCancel:false,
                showCancel: false,
                success: () => {
                    uni.reLaunch({
                        url: '/pages/index/login'
@@ -59,12 +59,12 @@
                }
            })
        }
         // 403 返回上一个页面
        // 403 返回上一个页面
        if (res.statusCode === 403) {
            uni.showModal({
                title: '温馨提示',
                content: res.data.Message,
                showCancel:false,
                showCancel: false,
                success: () => {
                    uni.navigateBack()
                }
manifest.json
@@ -2,8 +2,9 @@
    "name" : "智云LMES",
    "appid" : "__UNI__B002F49",
    "description" : "",
    "versionName" : "3.002",
    "versionCode" : 302,
    "versionName" : "3.018",
    "versionCode" : 318,
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
package.json
@@ -22,4 +22,4 @@
    "uqrcodejs": "^4.0.7",
    "vue-i18n": "^9.1.9"
  }
}
}
pages.json
@@ -142,13 +142,6 @@
                "navigationBarTitleText": "设备维修记录单",
                "enablePullDownRefresh": true
            }
        },
        {
            "path": "pages/weiwaigxOut/firstCheck",
            "style": {
                "navigationBarTitleText": "首件检验单",
                "enablePullDownRefresh": true
            }
        }, {
            "path": "pages/gongxuIn/Cj_StationInBill",
            "style": {
@@ -1749,6 +1742,12 @@
                "navigationBarTitleText": "销售出库单(验证)"
            }
        },
        {
            "path": "pages/tiaomamingxi/tiaomamingxi",
            "style": {
                "navigationBarTitleText": "条码明细"
            }
        },
        {
            "path": "pages/CustomerComplaintsBill/CustomerComplaintsBillList",
            "style": {
pages/EmployeeRecords/EmployeeRecordsBill.vue
@@ -327,6 +327,7 @@
            this.getHGroupList()
            this.getHShiftsList()
            this.getHProcList()
            this.getHShiftCurrent()
            //先获取角色列表,然后获取用户绑定的角色
            this.getRoleList().then(() => {
                this.getUserBoundRoles();
@@ -719,6 +720,41 @@
                    }
                }
            },
            async getHShiftCurrent() {
                // 根据当前用户绑定的工作中心和部门获取到班次信息(没有则不获取)
                let HDeptID = getUserInfo()["HDeptID"]
                let HCenterID = getUserInfo()["HWorkCenterID"]
                console.log(HDeptID, HCenterID)
                if(!HDeptID || !HCenterID) {
                    return
                }
                try{
                   let res = await CommonUtils.doRequest2Async({
                       url: "/Gy_ShiftsController/Get_HWorkShift",
                       data: {
                           HDeptID,
                           HCenterID
                       }
                   })
                    let {count, data,Message} = res.data
                    if(count == 1) {
                        this.hform.HShiftsID = data[0]["HInterID"]
                        this.hform.HShiftsName = data[0]["班次"]
                    }else {
                        CommonUtils.showTips({
                            title: "温馨提示",
                            message: `获取班次信息失败: ${Message}`
                        })
                    }
                }catch(err) {
                    CommonUtils.showTips({
                        title: "温馨提示",
                        message: `获取班次信息失败: ${err.message}`
                    })
                }
            },
            // 获取用户已绑定的角色
            async getUserBoundRoles() {
                try {
pages/Kf_MoveStockBill_CusBar/Kf_MoveStockBill_CusBar_APP.vue
@@ -219,8 +219,9 @@
            <view class="form" :style="{
                height: containerHeight + 'px',
                overflow: 'auto'
            }">
                <view class="list" v-for="(item,index) in HMaterList" :key="index">
            }">
                <!-- 物料列表 - 使用排序后的数据 -->
                <view class="list" v-for="(item,index) in paginatedMaterList" :key="index">
                    <uni-card :title="item.物料名称" :extra="item.物料代码" style="margin: 10px;" @tap="delMater(item)">
                        <view class="card-detail">
                            <view class="detail">
@@ -241,15 +242,21 @@
                            <view class="detail" v-if="item.辅助属性">
                                <text>辅助属性:</text>{{item.辅助属性}}
                            </view>
                            <!-- 兴达客户 功能 -->
                            <view class="detail" v-if="materMeta[0].HWHName && /兴达/.test(hform.HStockOrgName
                            )">
                            <view class="detail" v-if="materMeta[0].HWHName && /兴达/.test(hform.HStockOrgName)">
                                <text>仓库:</text>{{materMeta[0].HWHName}}
                            </view>
                        </view>
                    </uni-card>
                </view>
                <view class="over" v-if="HMaterList.length == 0">暂无数据</view>
                <view style="padding: 10px; background: #f5f5f5; display: flex; justify-content: space-between; align-items: center;">
                    <text>共 {{ sortedMaterList.length }} 条</text>
                    <view>
                        <button size="mini" @click="prevPage" :disabled="currentPage === 1" style="margin-right: 10px;">上一页</button>
                        <text>{{ currentPage }}/{{ totalPages }}</text>
                        <button size="mini" @click="nextPage" :disabled="currentPage === totalPages" style="margin-left: 10px;">下一页</button>
                    </view>
                </view>
                <view class="over" v-if="sortedMaterList.length == 0">暂无数据</view>
            </view>
        </template>
@@ -400,6 +407,10 @@
        },
        data() {
            return {
                currentPage: 1,
                pageSize: 10,
                sortedMaterList: [],  // 排序后的物料列表
                paginatedMaterList: [] ,// 当前页显示的物料
                tabs: 0,
                hcpFocus: false,
                barCodeFocus: false,
@@ -565,6 +576,39 @@
                      this.barCodeFocus = true;
                  }, 100);
              },
               // 排序物料(有数量的排在前面)
                sortMaterList(list) {
                    if (!list || list.length === 0) return []
                    return [...list].sort((a, b) => {
                        // 数量大于0的排在前面
                        if (a.数量 > 0 && b.数量 <= 0) return -1
                        if (a.数量 <= 0 && b.数量 > 0) return 1
                        return b.数量 - a.数量  // 都有数量或都没有,按数量降序
                    })
                },
            // 更新当前页数据
            updatePageData() {
                const start = (this.currentPage - 1) * this.pageSize
                const end = start + this.pageSize
                this.paginatedMaterList = this.sortedMaterList.slice(start, end)
            },
            // 上一页
            prevPage() {
                if (this.currentPage > 1) {
                    this.currentPage--
                    this.updatePageData()
                }
            },
            // 下一页
            nextPage() {
                if (this.currentPage < Math.ceil(this.sortedMaterList.length / this.pageSize)) {
                    this.currentPage++
                    this.updatePageData()
                }
            },
            async set_InitBillSubType(){
                try{
                    let res = await CommonUtils.doRequest2Async({
@@ -816,6 +860,8 @@
                    }
                });
            },
            // 器具删除
            async delMould(item) {
                uni.showModal({
@@ -1772,6 +1818,9 @@
                                this.FIFOlist = data.FIFOlist
                            }
                        }
                        this.sortedMaterList = this.sortMaterList(this.HMaterList)
                        this.currentPage = 1
                        this.updatePageData()
                        // 根据是否是箱条码配置仓位信息
                        if (sBarCodePrefix == 'PAK') {
pages/MJGL/SBMJReport/Sb_EquipMaintainTaskReport.vue
@@ -91,6 +91,12 @@
                        <view class="detail" v-if="item.计划结束时间点">
                            <text>计划结束时间点:</text>{{item.计划结束时间点.substr(0,10)}}
                        </view>
                        <view class="detail" v-if="false">
                          <text>保养计划单主ID:</text>{{item.HPlanHInterID}}
                        </view>
                        <view class="detail" v-if="false">
                          <text>保养计划单子ID:</text>{{item.HPlanHEntryID}}
                        </view>
                    </view>
                    <view class="card-detail" v-if="showDetail == item.hmainid">
                        <view class="detail" v-if="item.制单人">
@@ -202,6 +208,17 @@
                            total: 0,
                        }
                    },
                    {
                        label: '逾期待保养',
                        type: 3,
                        count: 0,
                        listData: [], // 添加这个
                        pageMeta: { // 添加这个
                            curPage: 1,
                            size: 50,
                            total: 0,
                        }
                    },
                    {
                        label: '近日全部任务',
                        type: 2,
@@ -270,7 +287,7 @@
        },
        methods: {
            pushBill(currTab, item) {
                let Query = `?operationType=4&HBarCode=${item['设备代码']}`
                let Query = `?operationType=4&HBarCode=${item['设备代码']}&HPlanHInterID=${item['HPlanHInterID']}&HPlanHEntryID=${item['HPlanHEntryID']}`
                if(currTab == 0) {
                    uni.navigateTo({
                        url: '/pages/MJGL/Sb_EquipMaintainBill/Sb_EquipMaintainBill' + Query
@@ -388,10 +405,17 @@
                        if (data && data.h_p_Sb_EquipMaintainTaskReport_APP2) {
                            // 更新待验收页签
                            this.tabs[2].listData = data.h_p_Sb_EquipMaintainTaskReport_APP2
                            this.tabs[2].pageMeta.total = data.h_p_Sb_EquipMaintainTaskReport_APP2.length
                            this.tabs[2].count = data.h_p_Sb_EquipMaintainTaskReport_APP2.length
                            this.tabs[3].listData = data.h_p_Sb_EquipMaintainTaskReport_APP2
                            this.tabs[3].pageMeta.total = data.h_p_Sb_EquipMaintainTaskReport_APP2.length
                            this.tabs[3].count = data.h_p_Sb_EquipMaintainTaskReport_APP2.length
                        }
                        if (data && data.h_p_Sb_EquipMaintainTaskReport_APP3) {
                            // 更新待验收页签
                            this.tabs[2].listData = data.h_p_Sb_EquipMaintainTaskReport_APP3
                            this.tabs[2].pageMeta.total = data.h_p_Sb_EquipMaintainTaskReport_APP3.length
                            this.tabs[2].count = data.h_p_Sb_EquipMaintainTaskReport_APP3.length
                        }
                        
                        uni.stopPullDownRefresh()
pages/MJGL/SBMJReport/Sc_MouldMaintainTaskReport.vue
@@ -88,6 +88,12 @@
                        <view class="detail" v-if="item.计划结束时间点">
                            <text>计划结束时间点:</text>{{item.计划结束时间点.substr(0,10)}}
                        </view>
                        <view class="detail" v-if="false">
                          <text>保养计划单主ID:</text>{{item.HPlanHInterID}}
                        </view>
                        <view class="detail" v-if="false">
                          <text>保养计划单子ID:</text>{{item.HPlanHEntryID}}
                        </view>
                    </view>
                    <view class="card-detail" v-if="showDetail == item.hmainid">
                        <view class="detail" v-if="item.制单人">
@@ -142,7 +148,7 @@
                    </view>
                    <view class="op" v-if="operations == item.hmainid">
                        <button class="op1" v-if="activeTab == 0" size="mini" plain
                        <button class="op1" v-if="activeTab == 0 || 3" size="mini" plain
                            @tap.stop="pushBill(0,item)">下推保养单</button>
                        <button class="op5" size="mini" plain @tap.stop="operations = -1">取消操作</button>
                    </view>
@@ -193,6 +199,18 @@
                    {
                        label: '近日已保养',
                        type: 1,
                        count: 0,
                        listData: [], // 添加这个
                        showData: [],
                        pageMeta: { // 添加这个
                            curPage: 1,
                            size: 20,
                            total: 0,
                        }
                    },
                    {
                        label: '逾期未保养',
                        type: 3,
                        count: 0,
                        listData: [], // 添加这个
                        showData: [],
@@ -271,7 +289,7 @@
        },
        methods: {
            pushBill(currTab, item) {
                let Query = `?operationType=4&HBarCode=${item['器具编号']}`
                let Query = `?operationType=4&HBarCode=${item['器具编号']}&HPlanHInterID=${item['HPlanHInterID']}&HPlanHEntryID=${item['HPlanHEntryID']}`
                if (currTab == 0) {
                    uni.navigateTo({
                        url: '/pages/MJGL/mujubaoyangjiludan/Sc_MouldMaintainBill' + Query
@@ -400,13 +418,24 @@
                        if (data && data.h_p_Sc_MouldMaintainTaskReport_APP2) {
                            // 更新待验收页签
                            this.tabs[2].listData = data.h_p_Sc_MouldMaintainTaskReport_APP2
                            this.tabs[3].listData = data.h_p_Sc_MouldMaintainTaskReport_APP2
                            this.tabs[3].showData = data.h_p_Sc_MouldMaintainTaskReport_APP.slice(
                                (this.tabs[3].pageMeta.curPage-1)*this.tabs[3].pageMeta.size,
                                (this.tabs[3].pageMeta.curPage)*this.tabs[3].pageMeta.size
                            )
                            this.tabs[3].pageMeta.total = data.h_p_Sc_MouldMaintainTaskReport_APP2.length
                            this.tabs[3].count = data.h_p_Sc_MouldMaintainTaskReport_APP2.length
                        }
                        if (data && data.h_p_Sc_MouldMaintainTaskReport_APP3) {
                            // 更新待验收页签
                            this.tabs[2].listData = data.h_p_Sc_MouldMaintainTaskReport_APP3
                            this.tabs[2].showData = data.h_p_Sc_MouldMaintainTaskReport_APP.slice(
                                (this.tabs[2].pageMeta.curPage-1)*this.tabs[2].pageMeta.size,
                                (this.tabs[2].pageMeta.curPage)*this.tabs[2].pageMeta.size
                            )
                            this.tabs[2].pageMeta.total = data.h_p_Sc_MouldMaintainTaskReport_APP2.length
                            this.tabs[2].count = data.h_p_Sc_MouldMaintainTaskReport_APP2.length
                            this.tabs[2].pageMeta.total = data.h_p_Sc_MouldMaintainTaskReport_APP3.length
                            this.tabs[2].count = data.h_p_Sc_MouldMaintainTaskReport_APP3.length
                        }
pages/MJGL/SB_EquipICMOTechParamBill/SB_EquipICMOTechParamBillEdit.vue
@@ -14,56 +14,56 @@
            }">
                <view class="form-item">
                    <view class="title">源单类型:</view>
                    <zxz-uni-data-select class="right" :localdata="[{value: '3772', key: '工序流转卡'}]" dataKey="key"
                    <zxz-uni-data-select class="righton" disabled :localdata="[{value: '3772', key: '工序流转卡'}]" dataKey="key"
                        dataValue="value" v-model="hform.HMainSourceBillType">
                    </zxz-uni-data-select>
                </view>
                <view class="form-item">
                    <view class="title">源单单号:</view>
                    <view class="right">
                        <input type="text" v-model="hform.HMainSourceBillNo" />
                    <view class="righton">
                        <input type="text" disabled v-model="hform.HMainSourceBillNo" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">流转卡号:</view>
                    <view class="right">
                        <input type="text" v-model="hform.HProcExchBillNo" />
                    <view class="righton">
                        <input type="text" disabled  v-model="hform.HProcExchBillNo" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">生产订单号:</view>
                    <view class="right">
                        <input v-model="hform.HICMOBillNo" />
                    <view class="righton">
                        <input disabled  v-model="hform.HICMOBillNo" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">工序号:</view>
                    <view class="right">
                        <input v-model="hform.HProcNo" />
                    <view class="righton">
                        <input disabled  v-model="hform.HProcNo" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">物料代码:</view>
                    <view class="right">
                        <input v-model="hform.HMaterNumber" />
                    <view class="righton">
                        <input disabled  v-model="hform.HMaterNumber" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">物料名称:</view>
                    <view class="right">
                        <input v-model="hform.HMaterName" />
                    <view class="righton">
                        <input  disabled v-model="hform.HMaterName" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">规格型号:</view>
                    <view class="right">
                        <input v-model="hform.HMaterModel" />
                    <view class="righton">
                        <input  disabled v-model="hform.HMaterModel" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">工序:</view>
                    <view class="right">
                        <input v-model="hform.HProcName" />
                    <view class="righton">
                        <input disabled  v-model="hform.HProcName" />
                    </view>
                </view>
                <view class="form-item">
@@ -86,8 +86,8 @@
                </view>
                <view class="form-item">
                    <view class="title">生产资源:</view>
                    <view class="right">
                        <input v-model="hform.HSourceName" />
                    <view class="righton">
                        <input disabled  v-model="hform.HSourceName" />
                    </view>
                </view>
                <view class="form-item">
@@ -1040,8 +1040,15 @@
                                "HMax": item["上限值"],
                                "HMin": item["下限值"],
                                "HRemark": item["采集来源"],
                                "HResult": (item["数采值"] <= item["上限值"] && item["数采值"] >= item["下限值"]) ?
                                    "OK" : "NG",
                                HResult: (() => {
                                         const val = Number(item["数采值"])
                                         const min = Number(item["下限值"])
                                         const max = Number(item["上限值"])
                                         if (isNaN(val) || isNaN(min) || isNaN(max)) {
                                           return ""
                                         }
                                         return val >= min && val <= max ? "OK" : "NG"
                                       })(),
                                "HIsRequired": item["HIsRequired"]
                            }
                        })
pages/MJGL/Sb_EquipDotCheckBill/Sb_EquipDotCheckBill.vue
@@ -114,7 +114,7 @@
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">设备名称:</view>
                    <view class="title required">设备名称:</view>
                    <view class="righton">
                        <input v-model="hform.HBarName" disabled />
                    </view>
@@ -734,6 +734,22 @@
                }
            },
            async submit() {
                if(!this.hform.HBillNo) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: '单据提交失败: 单据号不存在'
                    })
                    return
                }
                if(!this.hform.HEquipID) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: '单据提交失败: 设备不能为空'
                    })
                    return
                }
                try {
                    let oMain = JSON.stringify(this.hform);
                    let sSubStr = JSON.stringify(this.HCheckFileList);
pages/MJGL/Sb_EquipMaintainBill/Sb_EquipMaintainBill.vue
@@ -85,7 +85,7 @@
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">设备名称:</view>
                    <view class="title required">设备名称:</view>
                    <view class="righton">
                        <input v-model="hform.HBarName" disabled />
                    </view>
@@ -440,6 +440,13 @@
                        state: false
                    }
                }
                if (!this.hform.HBillNo) {
                    return {
                        Message: "单据号为空 不允许提交!",
                        state: false
                    }
                }
                return {
                    Message: "",
@@ -615,7 +622,7 @@
                        this.hform.HQty = 1
                        // 获取检验规程
                        this.GetItemByEquipFile()
                        await this.GetItemByEquipFile()
                    } else {
                        CommonUtils.showTips({
                            title: "温馨提示",
@@ -787,7 +794,7 @@
                }
            }
        },
        onLoad(e) {
        async onLoad(e) {
            console.log('e: ', e);
            if (!e.operationType) {
                this.operationType = 1
@@ -806,8 +813,20 @@
            } else if (this.operationType == 4) {
                // 下推
                let HBarCode = e.HBarCode
                let HPlanHInterID = e.HPlanHInterID
                let HPlanHEntryID = e.HPlanHEntryID
                this.getMaxNum()
                this.GetMessageByBarCode(HBarCode)
                //this.GetMessageByBarCode(HBarCode)
                if (HBarCode) {
                    await this.GetMessageByBarCode(HBarCode)
                    if(uni.getStorageSync('Organization')=='宁波市华舟包装有限公司'){
                        //保养计划的ID根据保养任务下推的实际id进行赋值
                        this.hform.HEquipMaintainPlanInterID = (HPlanHInterID == null ? this.hform.HEquipMaintainPlanInterID : HPlanHInterID) =="" ? this.hform.HEquipMaintainPlanInterID : HPlanHInterID
                        this.hform.HEquipMaintainPlanEntryID = (HPlanHEntryID == null ? this.hform.HEquipMaintainPlanEntryID : HPlanHEntryID) =="" ? this.hform.HEquipMaintainPlanEntryID : HPlanHEntryID
                        this.hform.HMainSourceInterID = (HPlanHInterID == null ? this.hform.HMainSourceInterID : HPlanHInterID) =="" ? this.hform.HMainSourceInterID : HPlanHInterID
                        this.hform.HMainSourceEntryID = (HPlanHEntryID == null ? this.hform.HMainSourceEntryID : HPlanHEntryID) =="" ? this.hform.HMainSourceEntryID : HPlanHEntryID
                    }
                }
            }
            this.getHDeptList()
pages/MJGL/mujubaoyangjiludan/Sc_MouldMaintainBill.vue
@@ -1,889 +1,911 @@
<template>
    <view>
        <view class="tabs" id="tabs">
            <view :class="tabs == 0 ? 'on':''" @tap="tabs = 0">基本信息</view>
            <view :class="tabs == 1 ? 'on':''" @tap="tabs = 1">明细信息</view>
            <view :class="tabs == 2 ? 'on':''" @tap="tabs = 2">其他信息</view>
            <view :class="tabs == 3 ? 'on':''" @tap="tabs = 3">附件信息</view>
        </view>
        <!-- 基本信息 -->
        <template v-if="tabs == 0">
            <view class="form" :style="{height: containerHeight + 'px',overflow: 'auto' }">
                <view class="form-item">
                    <view class="title">模具条码:</view>
                    <view class="right">
                        <input v-model="hform.HBarCode" @confirm="GetMessageByBarCode(hform.HBarCode)"
                            placeholder="请输入(或扫描)模具条码" />
                    </view>
                    <view class="icon-wrapper" @click="toScanCode">
                        <uni-icons type="scan" size="20" ></uni-icons>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">保养开始:</view>
                    <view class="right">
                        <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HBeginDate">
                            <input :value="hform.HBeginDate" />
                        </uni-datetime-picker>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">保养结束:</view>
                    <view class="right">
                        <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HEndDate">
                            <input :value="hform.HEndDate" />
                        </uni-datetime-picker>
                    </view>
                </view>
                <view class="form-item" v-if="false">
                    <view class="title">数量:</view>
                    <view class="right">
                        <input type="number" v-model="hform.HQty" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">最终结论:</view>
                    <view class="right none-border">
                        <radio-group @change="radioChange" class="radio_Container">
                            <label>
                                <view>
                                    <radio value="OK" :checked="hform.HLastResult == 'OK'" />
                                    <text>OK</text>
                                </view>
                            </label>
                            </label>
                            <view>
                                <radio value="NG" :checked="hform.HLastResult == 'NG'" />
                                <text>NG</text>
                            </view>
                            </label>
                        </radio-group>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">单据号:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HBillNo" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">单据日期:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HDate" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">备注:</view>
                    <view class="right">
                        <input v-model="hform.HRemark" placeholder="请输入备注" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">模具名称:</view>
                    <view class="righton">
                        <input v-model="hform.HBarName" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">模具规格:</view>
                    <view class="righton">
                        <input v-model="hform.HBarSpec" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">模具型号:</view>
                    <view class="righton">
                        <input v-model="hform.HBarModel" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">保养计划:</view>
                    <view class="righton">
                        <input v-model="hform.HPlanNo" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">保养级别:</view>
                    <zxz-uni-data-select class="right" :localdata="HMaintainLevList" dataKey="保养级别名称"
                        dataValue="HItemID" v-model="hform.HMaintainLevID">
                    </zxz-uni-data-select>
                </view>
            </view>
        </template>
        <!-- 明细信息 -->
        <template v-if="tabs == 1">
            <view class="form">
                <view class="form-item">
                    <view class="left">
                        模具保养规程
                    </view>
                    <view class="right">
                        <input type="text" :value="hform.HMouldMaintainRuleInterNo" />
                    </view>
                    <view class="icon-wrapper" @click="toCheckFile">
                        <uni-icons type="search" size="20" ></uni-icons>
                    </view>
                </view>
            </view>
            <view class="list" v-for="(item,index) in HCheckFileList" :key="index">
                <uni-card style="margin: 10px;">
                    <view class="card-detail">
                        <view class="detail">
                            <text>序号:</text>{{index+1}}
                        </view>
                        <view class="detail">
                            <text>结果:</text>
                            <checkbox-group style="display: inline-block;"
                                @change="checkBoxChangeHandler(index, $event)">
                                <checkbox value="enabled" :checked="item.HMaintainResult" />
                            </checkbox-group>
                        </view>
                        <view class="detail" v-if="false">
                            <text>保养项目ID:</text>{{item.HMaintainItemID}}
                        </view>
                        <view class="detail">
                            <text>保养项目:</text>{{item.HMaintainItem}}
                        </view>
                        <view class="detail">
                            <text>保养部位:</text>{{item.HMaintainPart}}
                        </view>
                        <view class="detail">
                            <text>具体要求:</text>{{item.HClaim}}
                        </view>
                        <view class="detail" v-if="false">
                            <text>负责人ID:</text>{{item.HManagerID}}
                        </view>
                        <view class="detail">
                            <text>负责人名称:</text>{{item.HManagerName}}
                        </view>
                        <view class="detail">
                            <text>备注:</text>{{item.HRemark}}
                        </view>
                        <view class="detail" v-if="false">
                            <text>源单ID:</text>{{item.HSourceInterID}}
                        </view>
                        <view class="detail" v-if="false">
                            <text>源单子ID:</text>{{item.HSourceEntryID}}
                        </view>
                        <view class="detail" v-if="false">
                            <text>源单号:</text>{{item.HSourceBillNo}}
                        </view>
    <view>
        <view class="tabs" id="tabs">
            <view :class="tabs == 0 ? 'on':''" @tap="tabs = 0">基本信息</view>
            <view :class="tabs == 1 ? 'on':''" @tap="tabs = 1">明细信息</view>
            <view :class="tabs == 2 ? 'on':''" @tap="tabs = 2">其他信息</view>
            <view :class="tabs == 3 ? 'on':''" @tap="tabs = 3">附件信息</view>
        </view>
        <!-- 基本信息 -->
        <template v-if="tabs == 0">
            <view class="form" :style="{height: containerHeight + 'px',overflow: 'auto' }">
                <view class="form-item">
                    <view class="title">模具条码:</view>
                    <view class="right">
                        <input v-model="hform.HBarCode" @confirm="GetMessageByBarCode(hform.HBarCode)"
                            placeholder="请输入(或扫描)模具条码" />
                    </view>
                    <view class="icon-wrapper" @click="toScanCode">
                        <uni-icons type="scan" size="20"></uni-icons>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">保养开始:</view>
                    <view class="right">
                        <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HBeginDate">
                            <input :value="hform.HBeginDate" />
                        </uni-datetime-picker>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">保养结束:</view>
                    <view class="right">
                        <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HEndDate">
                            <input :value="hform.HEndDate" />
                        </uni-datetime-picker>
                    </view>
                </view>
                <view class="form-item" v-if="false">
                    <view class="title">数量:</view>
                    <view class="right">
                        <input type="number" v-model="hform.HQty" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">最终结论:</view>
                    <view class="right none-border">
                        <radio-group @change="radioChange" class="radio_Container">
                            <label>
                                <view>
                                    <radio value="OK" :checked="hform.HLastResult == 'OK'" />
                                    <text>OK</text>
                                </view>
                            </label>
                            </label>
                            <view>
                                <radio value="NG" :checked="hform.HLastResult == 'NG'" />
                                <text>NG</text>
                            </view>
                            </label>
                        </radio-group>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">单据号:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HBillNo" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">单据日期:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HDate" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">备注:</view>
                    <view class="right">
                        <input v-model="hform.HRemark" placeholder="请输入备注" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title required">模具名称:</view>
                    <view class="righton">
                        <input v-model="hform.HBarName" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">模具规格:</view>
                    <view class="righton">
                        <input v-model="hform.HBarSpec" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">模具型号:</view>
                    <view class="righton">
                        <input v-model="hform.HBarModel" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">保养计划:</view>
                    <view class="righton">
                        <input v-model="hform.HPlanNo" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">保养级别:</view>
                    <zxz-uni-data-select class="right" :localdata="HMaintainLevList" dataKey="保养级别名称"
                        dataValue="HItemID" v-model="hform.HMaintainLevID">
                    </zxz-uni-data-select>
                </view>
            </view>
        </template>
        <!-- 明细信息 -->
        <template v-if="tabs == 1">
            <view class="form">
                <view class="form-item">
                    <view class="left">
                        模具保养规程
                    </view>
                    <view class="right">
                        <input type="text" :value="hform.HMouldMaintainRuleInterNo" />
                    </view>
                    <view class="icon-wrapper" @click="toCheckFile">
                        <uni-icons type="search" size="20"></uni-icons>
                    </view>
                </view>
            </view>
            <view class="list" v-for="(item,index) in HCheckFileList" :key="index">
                <uni-card style="margin: 10px;">
                    <view class="card-detail">
                        <view class="detail">
                            <text>序号:</text>{{index+1}}
                        </view>
                        <view class="detail">
                            <text>结果:</text>
                            <checkbox-group style="display: inline-block;"
                                @change="checkBoxChangeHandler(index, $event)">
                                <checkbox value="enabled" :checked="item.HMaintainResult" />
                            </checkbox-group>
                        </view>
                        <view class="detail" v-if="false">
                            <text>保养项目ID:</text>{{item.HMaintainItemID}}
                        </view>
                        <view class="detail">
                            <text>保养项目:</text>{{item.HMaintainItem}}
                        </view>
                        <view class="detail">
                            <text>保养部位:</text>{{item.HMaintainPart}}
                        </view>
                        <view class="detail">
                            <text>具体要求:</text>{{item.HClaim}}
                        </view>
                        <view class="detail" v-if="false">
                            <text>负责人ID:</text>{{item.HManagerID}}
                        </view>
                        <view class="detail">
                            <text>负责人名称:</text>{{item.HManagerName}}
                        </view>
                        <view class="detail">
                            <text>备注:</text>{{item.HRemark}}
                        </view>
                        <view class="detail" v-if="false">
                            <text>源单ID:</text>{{item.HSourceInterID}}
                        </view>
                        <view class="detail" v-if="false">
                            <text>源单子ID:</text>{{item.HSourceEntryID}}
                        </view>
                        <view class="detail" v-if="false">
                            <text>源单号:</text>{{item.HSourceBillNo}}
                        </view>
                    </view>
                </uni-card>
            </view>
            <view class="over" v-if="HCheckFileList.length == 0">暂无数据</view>
            <view style="height: 120rpx;"></view>
        </template>
        <!-- 其他信息 -->
        <template v-if="tabs == 2">
            <view class="form" :style="{height: containerHeight + 'px', overflow: 'auto'}">
                <view class="form-item">
                    <view class="title">创建人:</view>
                    <view class="righton">
                        <input v-model="hform.HMaker" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">创建日期:</view>
                    <view class="righton">
                        <input v-model="hform.HMakeDate" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">修改人:</view>
                    <view class="righton">
                        <input v-model="hform.HUpDater" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">修改日期:</view>
                    <view class="righton">
                        <input v-model="hform.HUpDateDate" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">审核人:</view>
                    <view class="righton">
                        <input v-model="hform.HChecker" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">审核时间:</view>
                    <view class="righton">
                        <input v-model="hform.HCheckDate" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">作废人:</view>
                    <view class="righton">
                        <input v-model="hform.HDeleteMan" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">作废日期:</view>
                    <view class="righton">
                        <input v-model="hform.HDeleteDate" />
                    </view>
                </view>
            </view>
                    </view>
                </uni-card>
            </view>
            <view class="over" v-if="HCheckFileList.length == 0">暂无数据</view>
            <view style="height: 120rpx;"></view>
        </template>
        <!-- 其他信息 -->
        <template v-if="tabs == 2">
            <view class="form" :style="{height: containerHeight + 'px', overflow: 'auto'}">
                <view class="form-item">
                    <view class="title">创建人:</view>
                    <view class="righton">
                        <input v-model="hform.HMaker" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">创建日期:</view>
                    <view class="righton">
                        <input v-model="hform.HMakeDate" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">修改人:</view>
                    <view class="righton">
                        <input v-model="hform.HUpDater" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">修改日期:</view>
                    <view class="righton">
                        <input v-model="hform.HUpDateDate" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">审核人:</view>
                    <view class="righton">
                        <input v-model="hform.HChecker" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">审核时间:</view>
                    <view class="righton">
                        <input v-model="hform.HCheckDate" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">作废人:</view>
                    <view class="righton">
                        <input v-model="hform.HDeleteMan" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">作废日期:</view>
                    <view class="righton">
                        <input v-model="hform.HDeleteDate" />
                    </view>
                </view>
            </view>
        </template>
        <!-- 附件信息 -->
        <template v-if="tabs == 3">
            <view class="card-item-wrapper">
                <view class="attachment-btns">
                    <button type="primary" size="mini" @tap="fileUpload">选择文件</button>
                    <view style="flex: 1;"></view>
                </view>
                <view v-for="(item, index) in attachmentInfo" :key="index">
                    <uni-card :title="item['fileName']" :thumbnail="item.filePath">
                        <view class="card-detail">
                            <view class="detail">
                                <text>大小:</text>{{item["size"]}}
                            </view>
                            <view class="detail">
                                <text>状态:</text>{{item["status"]}}
                            </view>
                            <view class="detail operation" v-if="item['status']!='上传成功'">
                                <text>操作:</text>
                                <button class="btn-a" size="mini" @tap.stop="uploadFile(index)">上传</button>
                                <button class="btn-b" size="mini" @tap.stop="delFile(index)">删除</button>
                            </view>
                        </view>
                    </uni-card>
                </view>
            </view>
        </template>
        <!-- 操作按钮 -->
        <view class="buttons" id="buttons">
            <button class="btn-a" size="mini" @tap="submit">提交</button>
            <view style="flex: 1;"></view>
            <button class="btn-a" size="mini" @tap="addNew">新增</button>
            <button class="btn-c" size="mini" @tap="goBack">退出</button>
        </view>
        <xe-upload ref="XeUpload" :options="uploadOptions" @callback="handleUploadCallback"></xe-upload>
    </view>
        </template>
        <!-- 附件信息 -->
        <template v-if="tabs == 3">
            <view class="card-item-wrapper">
                <view class="attachment-btns">
                    <button type="primary" size="mini" @tap="fileUpload">选择文件</button>
                    <view style="flex: 1;"></view>
                </view>
                <view v-for="(item, index) in attachmentInfo" :key="index">
                    <uni-card :title="item['fileName']" :thumbnail="item.filePath">
                        <view class="card-detail">
                            <view class="detail">
                                <text>大小:</text>{{item["size"]}}
                            </view>
                            <view class="detail">
                                <text>状态:</text>{{item["status"]}}
                            </view>
                            <view class="detail operation" v-if="item['status']!='上传成功'">
                                <text>操作:</text>
                                <button class="btn-a" size="mini" @tap.stop="uploadFile(index)">上传</button>
                                <button class="btn-b" size="mini" @tap.stop="delFile(index)">删除</button>
                            </view>
                        </view>
                    </uni-card>
                </view>
            </view>
        </template>
        <!-- 操作按钮 -->
        <view class="buttons" id="buttons">
            <button class="btn-a" size="mini" @tap="submit">提交</button>
            <view style="flex: 1;"></view>
            <button class="btn-a" size="mini" @tap="addNew">新增</button>
            <button class="btn-c" size="mini" @tap="goBack">退出</button>
        </view>
        <xe-upload ref="XeUpload" :options="uploadOptions" @callback="handleUploadCallback"></xe-upload>
    </view>
</template>
<script>
    import dayjs from "dayjs";
    import {
        CommonUtils
    } from "@/utils/common";
    import {
        MpaasScan
    } from "@/utils/mpaasScan.js"
    import {
        getUserInfo
    } from "../../../utils/auth";
    import {
        TrackOpTypes
    } from "vue";
    export default {
        name: 'Sc_MouldMaintainBill',
        data() {
            return {
                tabs: 0,
                HMainSourceBillType: "",
                btnTop: 0,
                tabsBottom: 0,
                HModName: "Sc_MouldMaintainBill",
                HBillType: '3819',
                operationType: 1,
                uploadOptions: {},
    import dayjs from "dayjs";
    import {
        CommonUtils
    } from "@/utils/common";
    import {
        MpaasScan
    } from "@/utils/mpaasScan.js"
    import {
        getUserInfo
    } from "../../../utils/auth";
    import {
        TrackOpTypes
    } from "vue";
    export default {
        name: 'Sc_MouldMaintainBill',
        data() {
            return {
                tabs: 0,
                HMainSourceBillType: "",
                btnTop: 0,
                tabsBottom: 0,
                HModName: "Sc_MouldMaintainBill",
                HBillType: '3819',
                operationType: 1,
                uploadOptions: {},
                HMaintainLevList: [],
                HCheckFileList: [],
                attachmentInfo: [],
                HMaintainLevList: [],
                HCheckFileList: [],
                attachmentInfo: [],
                hform: {
                    HBarCode: "",
                    HBeginDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HEndDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HQty: 1,
                    HBillNo: "",
                    HInterID: 0,
                    HDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HMaintainLevName: "",
                    HMaintainLevID: 0,
                    HRemark: "",
                    HBarName: "",
                    HMouldID: 0,
                    HBarSpec: "",
                    HBarModel: "",
                    HPlanNo: "",
                    HPlanInterID: 0,
                    HMouldMaintainRuleInterID: 0,
                    HMouldMaintainRuleInterNo: "",
                    HRequestComDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HRecentMainModule: 0,
                    HCumulativeModule: 0,
                    HProductionModule: 0,
                    HExplanation: "",
                    HInnerBillNo: "",
                    HMainSourceInterID: 0,
                    HMainSourceEntryID: 0,
                    HMainSourceBillNo: "",
                    HMaker: getUserInfo()['Czymc'],
                    HMakeDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HUpDater: "",
                    HUpDateDate: "",
                    HChecker: "",
                    HCheckDate: "",
                    HDeleteMan: "",
                    HDeleteDate: "",
                    lngBillKey: 0,
                    lngBillSubKey: 0,
                    HLastResult: "OK"
                }
            };
        },
        computed: {
            containerHeight: {
                get() {
                    return this.btnTop - this.tabsBottom - 5
                }
            }
        },
        methods: {
            addNew() {
                uni.redirectTo({
                    url: "./Sc_MouldMaintainBill?operationType=1"
                })
            },
            goBack() {
                uni.navigateBack()
            },
            checkBoxChangeHandler(index, e) {
                let cr = e.detail.value
                if (cr.length == 0) {
                    this.HCheckFileList[index]["HMaintainResult"] = false
                } else {
                    this.HCheckFileList[index]["HMaintainResult"] = true
                }
            },
            uploadFile(index) {
                console.log('filePath: ', this.attachmentInfo[index].filePath);
                // 通过临时路径读取文件
                uni.uploadFile({
                    url: CommonUtils.getServerUrl() + "/Sc_MouldMaintainBill/UploadFile",
                    filePath: this.attachmentInfo[index].filePath,
                    name: 'file',
                    formData: {
                        HBillNo: this.hform.HBillNo,
                        HRemark: "",
                        HUserName: getUserInfo()["Czymc"]
                    },
                    success: (uploadRes) => {
                        CommonUtils.showTips({
                            message: "上传成功"
                        })
                        this.attachmentInfo[index].status = "上传成功"
                    },
                    fail: (err) => {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `上传失败: ${err}`
                        })
                    }
                })
            },
            delFile(index) {
                console.log('attachmentInfo: ', this.attachmentInfo[index]);
                uni.showModal({
                    title: '提示',
                    content: '确认要删除 " ' + this.attachmentInfo[index].fileName + ' " 删除后将不可恢复!',
                    success: (res) => {
                        if (res.confirm) {
                            this.attachmentInfo.splice(index, 1)
                        }
                    },
                })
                hform: {
                    HBarCode: "",
                    HBeginDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HEndDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HQty: 1,
                    HBillNo: "",
                    HInterID: 0,
                    HDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HMaintainLevName: "",
                    HMaintainLevID: 0,
                    HRemark: "",
                    HBarName: "",
                    HMouldID: 0,
                    HBarSpec: "",
                    HBarModel: "",
                    HPlanNo: "",
                    HPlanInterID: 0,
                    HMouldMaintainRuleInterID: 0,
                    HMouldMaintainRuleInterNo: "",
                    HRequestComDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HRecentMainModule: 0,
                    HCumulativeModule: 0,
                    HProductionModule: 0,
                    HExplanation: "",
                    HInnerBillNo: "",
                    HMainSourceInterID: 0,
                    HMainSourceEntryID: 0,
                    HMainSourceBillNo: "",
                    HMaker: getUserInfo()['Czymc'],
                    HMakeDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HUpDater: "",
                    HUpDateDate: "",
                    HChecker: "",
                    HCheckDate: "",
                    HDeleteMan: "",
                    HDeleteDate: "",
                    lngBillKey: 0,
                    lngBillSubKey: 0,
                    HLastResult: "OK"
                }
            };
        },
        computed: {
            containerHeight: {
                get() {
                    return this.btnTop - this.tabsBottom - 5
                }
            }
        },
        methods: {
            addNew() {
                uni.redirectTo({
                    url: "./Sc_MouldMaintainBill?operationType=1"
                })
            },
            goBack() {
                uni.navigateBack()
            },
            checkBoxChangeHandler(index, e) {
                let cr = e.detail.value
                if (cr.length == 0) {
                    this.HCheckFileList[index]["HMaintainResult"] = false
                } else {
                    this.HCheckFileList[index]["HMaintainResult"] = true
                }
            },
            uploadFile(index) {
                console.log('filePath: ', this.attachmentInfo[index].filePath);
                // 通过临时路径读取文件
                uni.uploadFile({
                    url: CommonUtils.getServerUrl() + "/Sc_MouldMaintainBill/UploadFile",
                    filePath: this.attachmentInfo[index].filePath,
                    name: 'file',
                    formData: {
                        HBillNo: this.hform.HBillNo,
                        HRemark: "",
                        HUserName: getUserInfo()["Czymc"]
                    },
                    success: (uploadRes) => {
                        CommonUtils.showTips({
                            message: "上传成功"
                        })
                        this.attachmentInfo[index].status = "上传成功"
                    },
                    fail: (err) => {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `上传失败: ${err}`
                        })
                    }
                })
            },
            delFile(index) {
                console.log('attachmentInfo: ', this.attachmentInfo[index]);
                uni.showModal({
                    title: '提示',
                    content: '确认要删除 " ' + this.attachmentInfo[index].fileName + ' " 删除后将不可恢复!',
                    success: (res) => {
                        if (res.confirm) {
                            this.attachmentInfo.splice(index, 1)
                        }
                    },
                })
            },
            handleUploadCallback(res) { // 文件上传回调
                console.log('file: ', res);
                let fileInfo = res.data[0]
                this.attachmentInfo.push({
                    fileName: fileInfo.name,
                    size: fileInfo.size,
                    status: '等待上传',
                    filePath: fileInfo.tempFilePath
                })
            },
            // 上传文件
            fileUpload() {
                this.$refs.XeUpload.upload('file', {});
            },
            //获取保养级别数据
            async getHMaintainLevList() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Gy_BadReason/Gy_MaintainLevList',
                        data: {
                            sWhere: " and HUSEORGID = " + uni.getStorageSync('OrganizationID'),
                            user: uni.getStorageSync('HUserName')
                        }
                    })
            },
            handleUploadCallback(res) { // 文件上传回调
                console.log('file: ', res);
                let fileInfo = res.data[0]
                this.attachmentInfo.push({
                    fileName: fileInfo.name,
                    size: fileInfo.size,
                    status: '等待上传',
                    filePath: fileInfo.tempFilePath
                })
            },
            // 上传文件
            fileUpload() {
                this.$refs.XeUpload.upload('file', {});
            },
            //获取保养级别数据
            async getHMaintainLevList() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Gy_BadReason/Gy_MaintainLevList',
                        data: {
                            sWhere: " and HUSEORGID = " + uni.getStorageSync('OrganizationID'),
                            user: uni.getStorageSync('HUserName')
                        }
                    })
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    if (count == 1) {
                        this.HMaintainLevList = data
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: Message
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: err
                    })
                }
            },
            toScanCode() {
                MpaasScan.scanCode(cb => {
                    this.hform.HBarCode = cb
                    this.GetMessageByBarCode(cb)
                })
            },
            async GetMessageByBarCode(HBarCode) {
                try {
                    let res = await CommonUtils.doRequest2Sync({
                        url: "/QJ_PDA_MouldDotCheckBill/txtHBarCode_KeyDown",
                        data: {
                            HBarCode: HBarCode,
                            user: uni.getStorageSync('HUserName')
                        },
                    })
                    if (!res) {
                        return
                    }
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    if (count == 1) {
                        this.HMaintainLevList = data
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: Message
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: err
                    })
                }
            },
            toScanCode() {
                MpaasScan.scanCode(cb => {
                    this.hform.HBarCode = cb
                    this.GetMessageByBarCode(cb)
                })
            },
            async GetMessageByBarCode(HBarCode) {
                try {
                    let res = await CommonUtils.doRequest2Sync({
                        url: "/QJ_PDA_MouldDotCheckBill/txtHBarCode_KeyDown",
                        data: {
                            HBarCode: HBarCode,
                            user: uni.getStorageSync('HUserName')
                        },
                    })
                    if (!res) {
                        return
                    }
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    console.log('data: ', data);
                    this.hform.HMouldID = data[0].HInterID
                    this.hform.HBarName = data[0].HName
                    this.hform.HBarSpec = data[0].HModel
                    this.hform.HBarModel = data[0].HModel2
                    this.hform.HQty = 1
                    // 获取检验规程
                    this.GetItemByMouldFile()
                } catch (err) {
                    console.log('data: ', data);
                    this.hform.HMouldID = data[0].HInterID
                    this.hform.HBarName = data[0].HName
                    this.hform.HBarSpec = data[0].HModel
                    this.hform.HBarModel = data[0].HModel2
                    this.hform.HQty = 1
                    // 获取保养规程
                    await  this.GetItemByMouldFile()
                } catch (err) {
                }
            },
            async GetItemByMouldFile() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: "/Web/GetItemByMouldFile",
                        data: {
                            "MouldProjectID": this.hform.HMouldID,
                            "Type": "BY",
                            "HDate": this.hform.HBeginDate
                        }
                    })
                }
            },
            async GetItemByMouldFile() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: "/Web/GetItemByMouldFile",
                        data: {
                            "MouldProjectID": this.hform.HMouldID,
                            "Type": "BY",
                            "HDate": this.hform.HBeginDate
                        }
                    })
                    let {
                        data,
                        Message,
                        count
                    } = res.data
                    if (count == 1) {
                        this.hform.HMouldMaintainRuleInterID = data[0].HMouldMaintainRuleID
                        this.hform.HMouldMaintainRuleInterNo = data[0].器具保养规程
                        this.hform.HPlanNo = data[0].单据号
                        this.hform.HMouldMaintainPlanInterID = (data[0].hmainid == null ? 0 : data[0].hmainid) ==
                            "" ?
                            0 : data[0].hmainid
                        this.hform.HMouldMaintainPlanEntryID = (data[0].HEntryID == null ? 0 : data[0].HEntryID) ==
                            "" ? 0 : data[0].HEntryID
                    let {
                        data,
                        Message,
                        count
                    } = res.data
                    if (count == 1) {
                        this.hform.HMouldMaintainRuleInterID = data[0].HMouldMaintainRuleID
                        this.hform.HMouldMaintainRuleInterNo = data[0].器具保养规程
                        this.hform.HPlanNo = data[0].单据号
                        this.hform.HMouldMaintainPlanInterID = (data[0].hmainid == null ? 0 : data[0].hmainid) ==
                            "" ?
                            0 : data[0].hmainid
                        this.hform.HMouldMaintainPlanEntryID = (data[0].HEntryID == null ? 0 : data[0].HEntryID) ==
                            "" ? 0 : data[0].HEntryID
                        this.HCheckFileList = Array.from(data).map(item => {
                            return {
                               // "HMaintainResult": item.默认结论 == 1 ? true : false,
                                "HMaintainItemID": item.保养项目ID,
                                "HMaintainItem": item.保养项目名称,
                                "HMaintainPart": item.保养部位, // 修改字段名
                                "HClaim": item.具体要求,
                                "HManagerID": item.负责人ID,
                                "HManagerName": item.负责人名称,
                                "HSourceInterID": item.hmainid == null ? 0 : item.hmainid, // 需确认是否正确
                                "HSourceEntryID": item.HEntryID == null ? 0 : item.HEntryID, // 需确认是否正确
                                "HSourceBillNo": item.单据号, // 需确认是否正确
                                "HMaintainResult": item.默认保养结果 == 'OK' ? true : false
                            }
                        })
                        this.HCheckFileList = Array.from(data).map(item => {
                            return {
                                // "HMaintainResult": item.默认结论 == 1 ? true : false,
                                "HMaintainItemID": item.保养项目ID,
                                "HMaintainItem": item.保养项目名称,
                                "HMaintainPart": item.保养部位, // 修改字段名
                                "HClaim": item.具体要求,
                                "HManagerID": item.负责人ID,
                                "HManagerName": item.负责人名称,
                                "HSourceInterID": item.hmainid == null ? 0 : item.hmainid, // 需确认是否正确
                                "HSourceEntryID": item.HEntryID == null ? 0 : item.HEntryID, // 需确认是否正确
                                "HSourceBillNo": item.单据号, // 需确认是否正确
                                "HMaintainResult": item.默认保养结果 == 'OK' ? true : false
                            }
                        })
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `获取保养规程错误: ${Message}`
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `获取保养规程错误: ${err}`
                    })
                }
            },
            toCheckFile() {
                // 判断是否已扫描模具
                if (!this.hform.HMouldID || this.hform.HMouldID == 0) {
                    uni.showToast({
                        title: '请先扫描模具二维码带出模具信息',
                        icon: 'none'
                    });
                    return;
                }
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `获取保养规程错误: ${Message}`
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `获取保养规程错误: ${err}`
                    })
                }
            },
            toCheckFile() {
                // 判断是否已扫描模具
                if (!this.hform.HMouldID || this.hform.HMouldID == 0) {
                    uni.showToast({
                        title: '请先扫描模具二维码带出模具信息',
                        icon: 'none'
                    });
                    return;
                }
                // 打开保养规程选择页面
                uni.navigateTo({
                    url: '/pages/MJGL/mujubaoyangjiludan/Sc_MouldMaintainRuleBillList?mouldId=' + this.hform
                        .HMouldID,
                    success: (res) => {
                        // 通过事件通道监听返回的数据
                        res.eventChannel.on('selectedPlanData', (data) => {
                            console.log('接收到选择的数据:', data);
                            // 赋值字段
                            this.hform.HMouldMaintainRuleInterNo = data.单据号;
                            this.hform.HMouldMaintainRuleInterID = data.hmainid;
                            this.hform.HPlanNo = data.保养计划号 == null ? "" : data.保养计划号;
                            this.hform.HPlanInterID = data.保养计划id == null ? 0 : data.保养计划id,
                                this.hform.HMouldMaintainPlanInterID = data.保养计划id == null ? 0 :
                                data.保养计划id;
                            this.hform.HMouldMaintainPlanEntryID = data.保养计划子id == null ? 0 : data
                                .保养计划子id;
                            this.hform.HMainSourceBillNo = data.保养计划号 == null ? "" : data.保养计划号;
                            this.hform.HMaintainLevName = data.保养级别;
                            this.hform.HMaintainLevID = data.HMaintainLevID;
                // 打开保养规程选择页面
                uni.navigateTo({
                    url: '/pages/MJGL/mujubaoyangjiludan/Sc_MouldMaintainRuleBillList?mouldId=' + this.hform
                        .HMouldID,
                    success: (res) => {
                        // 通过事件通道监听返回的数据
                        res.eventChannel.on('selectedPlanData', (data) => {
                            console.log('接收到选择的数据:', data);
                            // 赋值字段
                            this.hform.HMouldMaintainRuleInterNo = data.单据号;
                            this.hform.HMouldMaintainRuleInterID = data.hmainid;
                            this.hform.HPlanNo = data.保养计划号 == null ? "" : data.保养计划号;
                            this.hform.HPlanInterID = data.保养计划id == null ? 0 : data.保养计划id,
                                this.hform.HMouldMaintainPlanInterID = data.保养计划id == null ? 0 :
                                data.保养计划id;
                            this.hform.HMouldMaintainPlanEntryID = data.保养计划子id == null ? 0 : data
                                .保养计划子id;
                            this.hform.HMainSourceBillNo = data.保养计划号 == null ? "" : data.保养计划号;
                            this.hform.HMaintainLevName = data.保养级别;
                            this.hform.HMaintainLevID = data.HMaintainLevID;
                            // 调用获取保养项目的方法
                            this.get_MaintainItem2();
                        });
                            // 调用获取保养项目的方法
                            this.get_MaintainItem2();
                        });
                        res.eventChannel.on('closePage', () => {
                            console.log('关闭选择页面');
                        });
                    }
                });
            },
                        res.eventChannel.on('closePage', () => {
                            console.log('关闭选择页面');
                        });
                    }
                });
            },
            // 获取保养规则项目
            async get_MaintainItem2() {
                try {
                    // 验证是否已选择保养规程
                    if (!this.hform.HMouldMaintainRuleInterID || this.hform.HMouldMaintainRuleInterID == 0) {
                        uni.showToast({
                            title: '请先选择保养规程',
                            icon: 'none'
                        });
                        return;
                    }
            // 获取保养规则项目
            async get_MaintainItem2() {
                try {
                    // 验证是否已选择保养规程
                    if (!this.hform.HMouldMaintainRuleInterID || this.hform.HMouldMaintainRuleInterID == 0) {
                        uni.showToast({
                            title: '请先选择保养规程',
                            icon: 'none'
                        });
                        return;
                    }
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Web/GetMaintainItemByMaintainRuleID/Mould',
                        data: {
                            "HMouldMaintainRuleInterID": this.hform.HMouldMaintainRuleInterID
                        }
                    });
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Web/GetMaintainItemByMaintainRuleID/Mould',
                        data: {
                            "HMouldMaintainRuleInterID": this.hform.HMouldMaintainRuleInterID
                        }
                    });
                    let {
                        data,
                        count,
                        Message
                    } = res.data;
                    let {
                        data,
                        count,
                        Message
                    } = res.data;
                    if (count == 1) {
                        if (data && data.length > 0) {
                            this.HCheckFileList = Array.from(data).map(item => {
                                return {
                                    "HMaintainItemID": item.HMaintainItemID || 0,
                                    "HMaintainItem": item.保养项目 || "",
                                    "HMaintainPart": item.保养部位 || "",
                                    "HClaim": item.具体要求 || "",
                                    "HManagerID": item.负责人ID || 0,
                                    "HManagerCode": item.负责人代码 || "",
                                    "HManagerName": item.负责人名称 || "",
                                    "HMaintainResult": item.默认保养结果 == 'OK' ? true : false,
                                    "HRemark": item.表体备注 || "",
                                };
                            });
                        } else {
                            this.HCheckFileList = [];
                            uni.showToast({
                                title: '该保养规程暂无保养项目记录',
                                icon: 'none'
                            });
                        }
                    } else {
                        this.HCheckFileList = [];
                        uni.showToast({
                            title: Message || '获取保养项目失败',
                            icon: 'none'
                        });
                    }
                } catch (err) {
                    this.HCheckFileList = [];
                    uni.showToast({
                        title: `获取保养项目失败: ${err}`,
                        icon: 'none'
                    });
                }
            },
            radioChange(e) {
                console.log('radioChange:', e.detail.value);
                this.hform.HLastResult = e.detail.value;
            },
            getEditData(hmainid) {
                // 主表数据
                uni.request({
                    url: CommonUtils.getServerUrl() +
                        '/Sc_MouldMaintainBill/Sc_MouldMaintainBillListCheckDetai',
                    data: {
                        HID: hmainid
                    },
                    success: (res) => {
                        console.log('编辑接口返回数据:', res.data);
                        if (res.data.code == 1) {
                            var data = res.data.data.h_v_Sc_MouldMaintain[0];
                            this.hform = {
                                HInterID: hmainid,
                                HBillNo: data.单据号,
                                HDate: data.日期.substr(0, 10),
                                HMouldID: data.HMouldID || 0,
                                HBarCode: data.模具条码 || "",
                                HBarName: data.产品模具 || "",
                                HBarSpec: data.模具规格 || "",
                                HBarModel: data.模具型号 || "",
                                HPlanNo: data.保养计划编号 || "",
                                HPlanInterID: data.保养计划内码 || 0,
                                HBeginDate: data.保养开始日期 ? data.保养开始日期.substr(0, 10) : dayjs(new Date())
                                    .format("YYYY-MM-DD HH:mm:ss"),
                                HEndDate: data.保养结束日期 ? data.保养结束日期.substr(0, 10) : dayjs(new Date())
                                    .format("YYYY-MM-DD HH:mm:ss"),
                                HLastResult: data.最终结论 === '合格' ? 'OK' : (data.最终结论 === '不合格' ? 'NG' :
                                    'OK'),
                                HMouldMaintainRuleInterID: data.HMouldMaintainRuleInterID || 0,
                                HMouldMaintainRuleInterNo: data.器具保养规程 || "",
                                HRemark: data.备注 || "",
                                HMaintainLevID: data.HMaintainLevID || 0,
                                HMaintainLevName: data.保养级别名称 || "",
                                HQty: data.数量 || 1,
                                HMaker: data.制单人 || getUserInfo()['Czymc'],
                                HMakeDate: data.制单日期 ? data.制单日期.substr(0, 10) : dayjs(new Date())
                                    .format(
                                        "YYYY-MM-DD"),
                                HUpDater: data.修改人 || "",
                                HUpDateDate: data.修改日期 ? data.修改日期.substr(0, 10) : "",
                                HChecker: data.审核人 || "",
                                HCheckDate: data.审核日期 ? data.审核日期.substr(0, 10) : "",
                                HDeleteMan: data.作废人 || "",
                                HDeleteDate: data.作废日期 ? data.作废日期.substr(0, 10) : "",
                                lngBillKey: 0,
                                lngBillSubKey: 0,
                                HInnerBillNo: data.内部单据号 || "",
                                HExplanation: data.摘要 || "",
                                HRequestComDate: data.要求完成日期 ? data.要求完成日期.substr(0, 10) : "",
                                HRecentMainModule: data.最近保养模数 || 0,
                                HCumulativeModule: data.累计模数 || 0,
                                HProductionModule: data.本次生产模数 || 0
                            };
                    if (count == 1) {
                        if (data && data.length > 0) {
                            this.HCheckFileList = Array.from(data).map(item => {
                                return {
                                    "HMaintainItemID": item.HMaintainItemID || 0,
                                    "HMaintainItem": item.保养项目 || "",
                                    "HMaintainPart": item.保养部位 || "",
                                    "HClaim": item.具体要求 || "",
                                    "HManagerID": item.负责人ID || 0,
                                    "HManagerCode": item.负责人代码 || "",
                                    "HManagerName": item.负责人名称 || "",
                                    "HMaintainResult": item.默认保养结果 == 'OK' ? true : false,
                                    "HRemark": item.表体备注 || "",
                                };
                            });
                        } else {
                            this.HCheckFileList = [];
                            uni.showToast({
                                title: '该保养规程暂无保养项目记录',
                                icon: 'none'
                            });
                        }
                    } else {
                        this.HCheckFileList = [];
                        uni.showToast({
                            title: Message || '获取保养项目失败',
                            icon: 'none'
                        });
                    }
                } catch (err) {
                    this.HCheckFileList = [];
                    uni.showToast({
                        title: `获取保养项目失败: ${err}`,
                        icon: 'none'
                    });
                }
            },
            radioChange(e) {
                console.log('radioChange:', e.detail.value);
                this.hform.HLastResult = e.detail.value;
            },
            getEditData(hmainid) {
                // 主表数据
                uni.request({
                    url: CommonUtils.getServerUrl() +
                        '/Sc_MouldMaintainBill/Sc_MouldMaintainBillListCheckDetai',
                    data: {
                        HID: hmainid
                    },
                    success: (res) => {
                        console.log('编辑接口返回数据:', res.data);
                        if (res.data.code == 1) {
                            var data = res.data.data.h_v_Sc_MouldMaintain[0];
                            this.hform = {
                                HInterID: hmainid,
                                HBillNo: data.单据号,
                                HDate: data.日期.substr(0, 10),
                                HMouldID: data.HMouldID || 0,
                                HBarCode: data.模具条码 || "",
                                HBarName: data.产品模具 || "",
                                HBarSpec: data.模具规格 || "",
                                HBarModel: data.模具型号 || "",
                                HPlanNo: data.保养计划编号 || "",
                                HPlanInterID: data.保养计划内码 || 0,
                                HBeginDate: data.保养开始日期 ? data.保养开始日期.substr(0, 10) : dayjs(new Date())
                                    .format("YYYY-MM-DD HH:mm:ss"),
                                HEndDate: data.保养结束日期 ? data.保养结束日期.substr(0, 10) : dayjs(new Date())
                                    .format("YYYY-MM-DD HH:mm:ss"),
                                HLastResult: data.最终结论 === '合格' ? 'OK' : (data.最终结论 === '不合格' ? 'NG' :
                                    'OK'),
                                HMouldMaintainRuleInterID: data.HMouldMaintainRuleInterID || 0,
                                HMouldMaintainRuleInterNo: data.器具保养规程 || "",
                                HRemark: data.备注 || "",
                                HMaintainLevID: data.HMaintainLevID || 0,
                                HMaintainLevName: data.保养级别名称 || "",
                                HQty: data.数量 || 1,
                                HMaker: data.制单人 || getUserInfo()['Czymc'],
                                HMakeDate: data.制单日期 ? data.制单日期.substr(0, 10) : dayjs(new Date())
                                    .format(
                                        "YYYY-MM-DD"),
                                HUpDater: data.修改人 || "",
                                HUpDateDate: data.修改日期 ? data.修改日期.substr(0, 10) : "",
                                HChecker: data.审核人 || "",
                                HCheckDate: data.审核日期 ? data.审核日期.substr(0, 10) : "",
                                HDeleteMan: data.作废人 || "",
                                HDeleteDate: data.作废日期 ? data.作废日期.substr(0, 10) : "",
                                lngBillKey: 0,
                                lngBillSubKey: 0,
                                HInnerBillNo: data.内部单据号 || "",
                                HExplanation: data.摘要 || "",
                                HRequestComDate: data.要求完成日期 ? data.要求完成日期.substr(0, 10) : "",
                                HRecentMainModule: data.最近保养模数 || 0,
                                HCumulativeModule: data.累计模数 || 0,
                                HProductionModule: data.本次生产模数 || 0
                            };
                            // 获取部门列表并设置保养级别
                            if (data.HMaintainLevID) {
                                this.$nextTick(() => {
                                    this.hform.HMaintainLevID = data.HMaintainLevID;
                                });
                            }
                        } else {
                            uni.showToast({
                                title: res.data.Message || '获取数据失败',
                                icon: 'none'
                            })
                        }
                    },
                    fail: (res) => {
                        console.log('主表请求失败:', res);
                        uni.showToast({
                            title: '接口请求失败',
                            icon: 'none'
                        })
                    },
                    complete: () => {
                        // 获取子表数据
                        this.getSubEditData(hmainid);
                    }
                });
            },
                            // 获取部门列表并设置保养级别
                            if (data.HMaintainLevID) {
                                this.$nextTick(() => {
                                    this.hform.HMaintainLevID = data.HMaintainLevID;
                                });
                            }
                        } else {
                            uni.showToast({
                                title: res.data.Message || '获取数据失败',
                                icon: 'none'
                            })
                        }
                    },
                    fail: (res) => {
                        console.log('主表请求失败:', res);
                        uni.showToast({
                            title: '接口请求失败',
                            icon: 'none'
                        })
                    },
                    complete: () => {
                        // 获取子表数据
                        this.getSubEditData(hmainid);
                    }
                });
            },
            // 获取子表数据
            getSubEditData(hmainid) {
                uni.request({
                    url: CommonUtils.getServerUrl() +
                        '/Sc_MouldMaintainBill/Sc_MouldMaintainBillListProjectDetaiNew',
                    data: {
                        "HInterID": hmainid
                    },
                    success: (res) => {
                        console.log('子表数据:', res.data);
                        if (res.data.count == 1) {
                            this.HCheckFileList = res.data.list[0].map(item => {
                                const isChecked = item.HMaintainResult === '合格' ? true : false;
                                return {
                                    "HMaintainItemID": item.HMaintainItemID || 0,
                                    "HMaintainItem": item.HMaintainItem || "",
                                    "HMaintainPart": item.HMaintainPart || "",
                                    "HClaim": item.HClaim || "",
                                    "HManagerID": item.HManagerID || 0,
                                    "HManagerName": item.HManagerName || "",
                                    "HMaintainResult": isChecked,
                                    "HRemark": item.HManagerName || ""
                                };
                            });
                        } else {
                            console.log('子表数据为空或获取失败:', res.data.Message);
                            this.HCheckFileList = [];
                        }
                    },
                    fail: (res) => {
                        console.log('子表请求失败:', res);
                        this.HCheckFileList = [];
                    }
                });
            },
            async getMaxNum() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: "/Web/GetMAXNum",
                        data: {
                            "HBillType": this.HBillType
                        }
                    })
            // 获取子表数据
            getSubEditData(hmainid) {
                uni.request({
                    url: CommonUtils.getServerUrl() +
                        '/Sc_MouldMaintainBill/Sc_MouldMaintainBillListProjectDetaiNew',
                    data: {
                        "HInterID": hmainid
                    },
                    success: (res) => {
                        console.log('子表数据:', res.data);
                        if (res.data.count == 1) {
                            this.HCheckFileList = res.data.list[0].map(item => {
                                const isChecked = item.HMaintainResult === '合格' ? true : false;
                                return {
                                    "HMaintainItemID": item.HMaintainItemID || 0,
                                    "HMaintainItem": item.HMaintainItem || "",
                                    "HMaintainPart": item.HMaintainPart || "",
                                    "HClaim": item.HClaim || "",
                                    "HManagerID": item.HManagerID || 0,
                                    "HManagerName": item.HManagerName || "",
                                    "HMaintainResult": isChecked,
                                    "HRemark": item.HManagerName || ""
                                };
                            });
                        } else {
                            console.log('子表数据为空或获取失败:', res.data.Message);
                            this.HCheckFileList = [];
                        }
                    },
                    fail: (res) => {
                        console.log('子表请求失败:', res);
                        this.HCheckFileList = [];
                    }
                });
            },
            async getMaxNum() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: "/Web/GetMAXNum",
                        data: {
                            "HBillType": this.HBillType
                        }
                    })
                    let {
                        count,
                        data,
                        Message
                    } = res.data
                    console.log('data: ', data);
                    this.hform.HInterID = 0
                    this.hform.HBillNo = data[0]["HBillNo"]
                } catch (err) {
                    CommonUtils.showTips({
                        title: "温馨提示",
                        message: "获取单据信息异常: " + err
                    })
                }
            },
            async submit() {
                try {
                    let oMain = JSON.stringify(this.hform);
                    let sSubStr = JSON.stringify(this.HCheckFileList);
                    let sMainSub = oMain + ';' + sSubStr + ';' + uni.getStorageSync('HUserName');
                    let res = await CommonUtils.doRequest2Sync({
                        url: "/Sc_MouldMaintainBill/SaveGetMouldMaintainBillListAPP",
                        data: {
                            "msg": sMainSub
                        },
                        method: "POST"
                    })
                    let {
                        count,
                        data,
                        Message
                    } = res.data
                    console.log('data: ', data);
                    this.hform.HInterID = 0
                    this.hform.HBillNo = data[0]["HBillNo"]
                } catch (err) {
                    CommonUtils.showTips({
                        title: "温馨提示",
                        message: "获取单据信息异常: " + err
                    })
                }
            },
            async submit() {
                if (!this.hform.HBillNo) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: '单据提交失败: 单据号不存在'
                    })
                    return
                }
                    if (!res) {
                        return
                    }
                if (!this.hform.HMouldID) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: '单据提交失败: 模具不能为空'
                    })
                    return
                }
                    let {
                        count,
                        Message
                    } = res.data
                    if (count == 1) {
                        uni.showModal({
                            title: '提示',
                            content: res.data.Message + '。是否继续新增?(点击取消返回上级页面)',
                            success: (res) => {
                                if (res.confirm) {
                                    console.log('用户点击确定');
                                    uni.redirectTo({
                                        url: '/pages/MJGL/mujubaoyangjiludan/Sc_MouldMaintainBill?operationType=1'
                                    })
                                } else if (res.cancel) {
                                    console.log('用户点击取消');
                                    setTimeout(() => {
                                        uni.navigateBack();
                                    }, 50)
                                }
                            }
                        });
                    } else {
                        CommonUtils.showTips({
                            title: "温馨提示",
                            message: "提交单据失败: " + Message
                        })
                    }
                try {
                    let oMain = JSON.stringify(this.hform);
                    let sSubStr = JSON.stringify(this.HCheckFileList);
                    let sMainSub = oMain + ';' + sSubStr + ';' + uni.getStorageSync('HUserName');
                    let res = await CommonUtils.doRequest2Sync({
                        url: "/Sc_MouldMaintainBill/SaveGetMouldMaintainBillListAPP",
                        data: {
                            "msg": sMainSub
                        },
                        method: "POST"
                    })
                    if (!res) {
                        return
                    }
                    let {
                        count,
                        Message
                    } = res.data
                    if (count == 1) {
                        uni.showModal({
                            title: '提示',
                            content: res.data.Message + '。是否继续新增?(点击取消返回上级页面)',
                            success: (res) => {
                                if (res.confirm) {
                                    console.log('用户点击确定');
                                    uni.redirectTo({
                                        url: '/pages/MJGL/mujubaoyangjiludan/Sc_MouldMaintainBill?operationType=1'
                                    })
                                } else if (res.cancel) {
                                    console.log('用户点击取消');
                                    setTimeout(() => {
                                        uni.navigateBack();
                                    }, 50)
                                }
                            }
                        });
                    } else {
                        CommonUtils.showTips({
                            title: "温馨提示",
                            message: "提交单据失败: " + Message
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: "温馨提示",
                        message: "提交单据失败: " + err
                    })
                }
            }
        },
        onLoad(e) {
            console.log('e: ', e);
            this.getHMaintainLevList()
            if (!e.operationType) {
                this.operationType = 1
            } else {
                this.operationType = e.operationType
            }
                } catch (err) {
                    CommonUtils.showTips({
                        title: "温馨提示",
                        message: "提交单据失败: " + err
                    })
                }
            }
        },
        async onLoad(e) {
            console.log('e: ', e);
            this.getHMaintainLevList()
            if (!e.operationType) {
                this.operationType = 1
            } else {
                this.operationType = e.operationType
            }
            if (this.operationType == 1) {
                // 新增
                this.getMaxNum()
            } else if (this.operationType == 2) {
                // 复制
            } else if (this.operationType == 3) {
                // 编辑
                this.getEditData(e.hmainid)
            } else if (this.operationType == 4) {
                // 浏览
                // 下推
                let HBarCode = e.HBarCode
                this.getMaxNum()
                if (HBarCode) {
                    this.GetMessageByBarCode(HBarCode)
                }
            if (this.operationType == 1) {
                // 新增
                this.getMaxNum()
            } else if (this.operationType == 2) {
                // 复制
            } else if (this.operationType == 3) {
                // 编辑
                this.getEditData(e.hmainid)
            } else if (this.operationType == 4) {
                // 浏览
                // 下推
                let HBarCode = e.HBarCode
                let HPlanHInterID = e.HPlanHInterID
                let HPlanHEntryID = e.HPlanHEntryID
                this.getMaxNum()
                if (HBarCode) {
                    await this.GetMessageByBarCode(HBarCode)
                    if (uni.getStorageSync('Organization') == '宁波市华舟包装有限公司') {
                        this.hform.HMouldMaintainPlanInterID = (HPlanHInterID == null ? this.hform.HMouldMaintainPlanInterID : HPlanHInterID) == "" ? this.hform.HMouldMaintainPlanInterID : HPlanHInterID
                        this.hform.HMouldMaintainPlanEntryID = (HPlanHEntryID == null ? this.hform.HMouldMaintainPlanEntryID : HPlanHEntryID) == "" ? this.hform.HMouldMaintainPlanEntryID : HPlanHEntryID
                    }
                }
            }
        },
        onReady() {
            const query = uni.createSelectorQuery().in(this)
            query.select("#buttons")
                .boundingClientRect()
                .select("#tabs")
                .boundingClientRect()
                .exec(res => {
                    this.btnTop = Math.floor(res[0].top)
                    this.tabsBottom = Math.ceil(res[1].bottom)
                })
        }
    }
            }
        },
        onReady() {
            const query = uni.createSelectorQuery().in(this)
            query.select("#buttons")
                .boundingClientRect()
                .select("#tabs")
                .boundingClientRect()
                .exec(res => {
                    this.btnTop = Math.floor(res[0].top)
                    this.tabsBottom = Math.ceil(res[1].bottom)
                })
        }
    }
</script>
<style lang="scss">
    @import "@/pages/MJGL/style/MJBillStyle.scss"
    @import "@/pages/MJGL/style/MJBillStyle.scss"
</style>
pages/MJGL/mujudianjianjiludan/Sc_MouldDotCheckBill.vue
@@ -109,7 +109,7 @@
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">模具名称:</view>
                    <view class="title required">模具名称:</view>
                    <view class="righton">
                        <input v-model="hform.HBarName" disabled />
                    </view>
@@ -368,7 +368,9 @@
                    HDeleteDate: "",
                    lngBillKey: 0,
                    lngBillSubKey: 0,
                    HLastResult: "OK"
                    HLastResult: "OK",
                    HExplanation: "",
                    HInnerBillNo: "",
                }
            };
        },
@@ -567,7 +569,7 @@
                    if (count == 1) {
                        this.hform.HMouldDotCheckRuleNo = data[0].HBillNo
                        this.hform.HMouldDotCheckRuleID = data[0].HInterID
                        this.hform.HPlanNo = data[0].单据号
                        this.hform.HPlanNo = data[0].单据号 || ""
                        this.hform.HPlanInterID = (data[0].hmainid == null ? 0 : data[0].hmainid) == "" ? 0 : data[0]
                            .hmainid
                        this.hform.HPlanEntryID = (data[0].HEntryID == null ? 0 : data[0].HEntryID) == "" ? 0 : data[0]
@@ -581,13 +583,19 @@
                                "HClaim": item.具体要求,
                                "HManagerID": item.负责人ID,
                                "HManagerName": item.负责人名称,
                                "HCloseMan": "",
                                "HCloseType": 0,
                                "HRemark": "",
                                "HSourceInterID": item.hmainid == null ? 0 : item.hmainid,
                                "HSourceEntryID": item.HEntryID == null ? 0 : item.HEntryID,
                                "HSourceBillNo": item.单据号,
                                "HSourceBillNo": item.单据号 || '',
                                "HSourceBillType": item.源单类型 || '',
                                "HDotCheckItemClassID": item.HDotCheckItemClassID || 0,
                                "HDotCheckItemClassName": item.点检项目分类名称 || "",
                                "HDotCheckItemMethodID": item.点检方法id || 0,
                                "HDotCheckItemMethodName": item.点检方法 || "",
                                "HRelationQty": 0,
                                "HRelationMoney": 0,
                                // "HDotCheckResult": item.默认结论 == 1 ? true : false
                                "HDotCheckResult": item.默认点检结果 == 'OK' ? true : false
                            }
@@ -870,6 +878,22 @@
                }
            },
            async submit() {
                if(!this.hform.HBillNo) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: '单据提交失败: 单据号不存在'
                    })
                    return
                }
                if(!this.hform.HMouldID) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: '单据提交失败: 模具不能为空'
                    })
                    return
                }
                try {
                    let oMain = JSON.stringify(this.hform);
                    let sSubStr = JSON.stringify(this.HCheckFileList);
pages/MJGL/mujulingliaochukudan/MouldProdOutBill.vue
@@ -264,6 +264,12 @@
                    HMouldName_B: '',
                    HMouldID_B: '',
                    HMouldCount_B: '',
                    HExplanation: "",
                    HRemark: "",
                    HInnerBillNo: "",
                    HMainSourceBillNo: "",
                }
            }
        },
pages/ZLGL/AanDengHujiao/OA_ErrMsgBackCheckBill/OA_ErrMsgBackCheckBill.vue
@@ -277,7 +277,7 @@
                    HCheckEmpID: getUserInfo().HEmpID,
                    HCopyMan: '', //抄送人
                    HCheckResult: 'completed',
                    HCheckResult: '完成',
                    HLevel: 'normal',
                    HBillTypeName: '',
                    HPlanBillNo: '',
pages/ZLGL/AanDengHujiao/OA_ErrMsgBackHandleBill/OA_ErrMsgBackHandleBill.vue
@@ -287,7 +287,7 @@
                    HBadReasonID: '0',
                    HBadReasonName: '',
                    HHandleResult: 'completed',
                    HHandleResult: '处理完成',
                    HLevel: 'normal',
                    HBillTypeName: '',
                    HPlanBillNo: '',
pages/ZLGL/QCNoPassProdRequestBillMain/QCNoPassProdRequestBillMain.vue
New file
@@ -0,0 +1,1368 @@
<template>
    <view>
        <!-- 主表区域 -->
        <view class="bill-main-area">
            <!-- 主表页签 -->
            <view class="bill-main-tabs">
                <view :class="mainTabSelected == 1 ? 'selected' : ''" @tap="mainTabSelected = 1">基本信息</view>
                <view :class="mainTabSelected == 2 ? 'selected' : ''" @tap="mainTabSelected = 2">其他信息</view>
                <view :class="mainTabSelected == 3 ? 'selected' : ''" @tap="mainTabSelected = 3">制单信息</view>
            </view>
            <!-- 主表内容 -->
            <view class="bill-main-contents">
                <!-- 基本信息 -->
                <view class="bill-main-content" v-if="mainTabSelected == 1">
                    <view class="form-item">
                        <view class="left">单据号</view>
                        <view class="right disabled">
                            <input type="text" :value="hform.HBillNo" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">日期</view>
                        <view class="right">
                            <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HDate">
                                <view>{{ hform.HDate }}</view>
                            </uni-datetime-picker>
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">发生日期</view>
                        <view class="right">
                            <uni-datetime-picker type="datetime" :clear-icon="false" v-model="hform.HHappendDate">
                                <view>{{ hform.HHappendDate }}</view>
                            </uni-datetime-picker>
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">生产订单</view>
                        <view class="right">
                            <input type="text" v-model="hform.HICMOBillNos" />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">产品编码</view>
                        <view class="right">
                            <input type="text" v-model="hform.HMaterNumbers" />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">产品名称</view>
                        <view class="right">
                            <input type="text" v-model="hform.HMaterNames"/>
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">规格型号</view>
                        <view class="right">
                            <input type="text" v-model="hform.HMaterModels"/>
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">计量单位</view>
                        <view class="right">
                            <input type="text" v-model="hform.HUnitNames"/>
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">产品类型</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HMaterTypes" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">不良数量</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HUnRightQtys" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">车间</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HDeptNames" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">发生工序</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HProcNames" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">不良现象</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HBadPhenomenaNames" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">不良品SN码</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HBarCodes" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">销售订单</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HSeOrderBillNos" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">问题现象简述</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HReasonNotes" disabled />
                        </view>
                    </view>
                    <!-- 紧急程度 - 显示文本 -->
                    <view class="form-item">
                        <view class="left">紧急程度</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HLevs" disabled />
                        </view>
                    </view>
                    <!-- 是否停线 - 显示文本 -->
                    <view class="form-item">
                        <view class="left">是否停线</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HIsStops" disabled />
                        </view>
                    </view>
                    <!-- 是否批量问题 - 显示文本 -->
                    <view class="form-item">
                        <view class="left">是否批量问题</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HIsBatchUnRights" disabled />
                        </view>
                    </view>
                    <!-- 处理部门 -->
                    <view class="form-item">
                        <view class="left">处理部门</view>
                        <view class="right">
                            <uni-combox :candidates="DeptNameList" placeholder="请选择处理部门" v-model="hform.HDisposeDeptName"
                                @input="HDisposeDeptChange"></uni-combox>
                        </view>
                    </view>
                    <!-- 发起人 -->
                    <view class="form-item">
                        <view class="left">发起人</view>
                        <view class="right">
                            <uni-combox :candidates="GyEmpNameList" placeholder="请选择发起人"
                                v-model="hform.HSendMan" @input="HSendManChange"></uni-combox>
                        </view>
                    </view>
                    <!-- 接收人 -->
                    <view class="form-item">
                        <view class="left">接收人</view>
                        <view class="right">
                            <uni-combox :candidates="GyEmpNameList" placeholder="请选择接收人"
                                v-model="hform.HReceiveMan" @input="HReceiveManChange"></uni-combox>
                        </view>
                    </view>
                    <!-- 抄送人 - 改为下拉框 -->
                    <view class="form-item">
                        <view class="left">抄送人</view>
                        <view class="right">
                            <uni-combox :candidates="GyEmpNameList" placeholder="请选择抄送人"
                                v-model="hform.HCopyMan" @input="HCopyManChange"></uni-combox>
                        </view>
                    </view>
                    <!-- 源单类型 - 修复版 -->
                    <view class="form-item">
                        <view class="left">源单类型</view>
                        <view class="right" v-show="showHMainSourceBillType">
                            <picker :range="arrayHMainSourceBillType" @change="HMainSourceBillTypeChange" mode="selector">
                                <view class="picker-value">{{ HMainSourceBillTypeDisplay || '请选择源单类型' }}</view>
                            </picker>
                        </view>
                        <view class="right disabled" v-show="!showHMainSourceBillType">
                            <view class="picker-value">{{ HMainSourceBillTypeDisplay }}</view>
                        </view>
                    </view>
                    <!-- 源单单号 -->
                    <view class="form-item">
                        <view class="left">源单号</view>
                        <view class="right">
                            <input type="text" v-model="hform.HMainSourceBillNo" placeholder="请输入或扫描源单号"
                                @confirm="GetMessageByHSourceBillNo" />
                        </view>
                        <view class="icon-wrapper" @click="openSourceBillSelector">
                            <uni-icons type="search" size="20"></uni-icons>
                        </view>
                        <view class="icon-wrapper" @click="scanSourceBill">
                            <uni-icons type="scan" size="20"></uni-icons>
                        </view>
                    </view>
                    <!-- 处理工序 -->
                    <view class="form-item">
                        <view class="left">处理工序</view>
                        <view class="right disabled">
                            <input type="text" disabled v-model="hform.HDisposeProcName" />
                        </view>
                        <view class="icon-wrapper-big">
                            <uni-icons type="search" size="20" :class="!hasSourceBill?'enable-icon-button':'disable-icon-button'"
                                :disabled="hasSourceBill"
                                @click="showSelectorModule(8)"></uni-icons>
                        </view>
                    </view>
                    <!-- 不良类型 -->
                    <view class="form-item">
                        <view class="left">不良类型</view>
                        <view class="right disabled">
                            <input type="text" disabled v-model="hform.HBadTypeName" />
                        </view>
                        <view class="icon-wrapper-big">
                            <uni-icons type="search" size="20" :class="!hasSourceBill?'enable-icon-button':'disable-icon-button'"
                                :disabled="hasSourceBill"
                                @click="showSelectorModule(7)"></uni-icons>
                        </view>
                    </view>
                    <!-- 不良原因 -->
                    <view class="form-item">
                        <view class="left">不良原因</view>
                        <view class="right disabled">
                            <input type="text" disabled v-model="hform.HBadReasonName" />
                        </view>
                        <view class="icon-wrapper-big">
                            <uni-icons type="search" size="20" :class="!hasSourceBill?'enable-icon-button':'disable-icon-button'"
                                :disabled="hasSourceBill"
                                @click="showSelectorModule(2)"></uni-icons>
                        </view>
                    </view>
                    <!-- 处理结论详情 -->
                    <view class="form-item">
                        <view class="left">处理结论详情</view>
                        <view class="right">
                            <input type="text" v-model="hform.HDisposeNote" />
                        </view>
                    </view>
                    <!-- 纠正及预防措施 -->
                    <view class="form-item">
                        <view class="left">纠正及预防措施</view>
                        <view class="right">
                            <input type="text" v-model="hform.HNote" />
                        </view>
                    </view>
                    <!-- 处理结论 -->
                    <view class="form-item">
                        <view class="left">处理结论</view>
                        <view class="right select-border">
                            <uni-data-select
                                v-model="hform.HCheckerResult"
                                :localdata="conclusionList"
                                :clear="false"
                                placeholder="请选择处理结论"
                                :disabled="hasSourceBill"
                                class="no-border-select"
                            ></uni-data-select>
                        </view>
                    </view>
                </view>
                <view class="bill-main-content" v-if="mainTabSelected == 2">
                    <view class="form-item">
                        <view class="left">工序流转卡</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HProcExchBillNos" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">产品编码</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HMaterNumbers" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">产品名称</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HMaterNames" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">规格型号</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HMaterModels" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">计量单位</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HUnitNames" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">产品类型</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HMaterTypes" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">不良数量</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HUnRightQtys" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">车间</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HDeptNames" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">发生工序</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HProcNames" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">不良现象</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HBadPhenomenaNames" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">不良品SN码</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HBarCodes" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">销售订单</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HSeOrderBillNos" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">问题现象简述</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HReasonNotes" disabled />
                        </view>
                    </view>
                    <!-- 紧急程度 - 显示文本 -->
                    <view class="form-item">
                        <view class="left">紧急程度</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HLevs" disabled />
                        </view>
                    </view>
                    <!-- 是否停线 - 显示文本 -->
                    <view class="form-item">
                        <view class="left">是否停线</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HIsStops" disabled />
                        </view>
                    </view>
                    <!-- 是否批量问题 - 显示文本 -->
                    <view class="form-item">
                        <view class="left">是否批量问题</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HIsBatchUnRights" disabled />
                        </view>
                    </view>
                    <!-- 原有的备注和组织字段 -->
                    <view class="form-item">
                        <view class="left">备注</view>
                        <view class="right">
                            <input type="text" v-model="hform.HRemark" />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">组织</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.Organization" disabled />
                        </view>
                    </view>
                </view>
                <!-- 制单信息 -->
                <view class="bill-main-content" v-if="mainTabSelected == 3">
                    <view class="form-item">
                        <view class="left">制单人</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HMaker" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">制单日期</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HMakeDate" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">修改人</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HUpDater" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">修改日期</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HUpDateDate" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">审核人</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HChecker" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">审核日期</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HCheckDate" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">关闭人</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HCloseMan" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">关闭日期</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HCloseDate" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">作废人</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HDeleteMan" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">作废日期</view>
                        <view class="right disabled">
                            <input type="text" v-model="hform.HDeleteDate" disabled />
                        </view>
                    </view>
                </view>
            </view>
        </view>
        <view style="height: 120rpx"></view>
        <!-- 底部按钮 -->
        <view class="bottom-btn">
            <button class="btn-a" size="mini" @tap="submit">保存</button>
            <view style="flex: 1"></view>
            <button class="btn-a" size="mini" @tap="addNew">新增</button>
            <button class="btn-c" size="mini" @tap="goBack">退出</button>
        </view>
        <!-- 弹窗组件 -->
        <GyBadReasonPopup ref="GyBadReasonPopup" @update="CheckItemComplete" :bindKey="currentChechItemIDCache">
        </GyBadReasonPopup>
        <ProcessPopupVue ref="processPopup" @update="HProcComplete" :bindKey="0"></ProcessPopupVue>
        <GyBadTypePopupVue ref="GyBadTypePopupVue" @update="HQCSchemeComplete" :bindKey="0"></GyBadTypePopupVue>
        <BillListPopupVue ref="billList" :HBillType="hform.HBillType" :HSourceBillType="hform.HMainSourceBillType"
            :HStockOrgID="hform.HStockOrgID" @BillSelectComplete="handleSourceBill"></BillListPopupVue>
    </view>
</template>
<script>
    import dayjs from "dayjs";
    import {
        CommonUtils
    } from "../../../utils/common";
    import GyBadReasonPopup from "../../../components/ZLGL/GyBadReasonPopup.vue";
    import ProcessPopupVue from "../../../components/ZLGL/ProcessPopup.vue";
    import GyBadTypePopupVue from "../../../components/ZLGL/GyBadTypePopup.vue";
    import BillListPopupVue from "@/components/BillListPopup/BillListPopup.vue";
    import {
        getUserInfo
    } from "../../../utils/auth";
    export default {
        components: {
            GyBadReasonPopup,
            ProcessPopupVue,
            GyBadTypePopupVue,
            BillListPopupVue,
        },
        data() {
            return {
                operationType: 1,
                mainTabSelected: 1,
                hasSourceBill: false,
                enablePopupModule: "",
                PopupModuleNameList: [
                    "", "", "GyBadReasonPopup", "", "", "", "", "GyBadTypePopupVue", "ProcessPopupVue"
                ],
                conclusionList: [
                    { value: '处理完成', text: '处理完成' },
                    { value: '无法处理', text: '无法处理' },
                    { value: '处理失败', text: '处理失败' }
                ],
                emergencyList: [
                    { value: '普通', text: '普通' },
                    { value: '紧急', text: '紧急' }
                ],
                yesNoList: [
                    { value: '否', text: '否' },
                    { value: '是', text: '是' }
                ],
                currentChechItemIDCache: -1,
                GyEmpList: [],
                GyEmpNameList: [],
                DeptNameList: [],
                DeptList: [],
                HMainSourceBillTypeDisplay: "", // 用于显示的源单类型
                arrayHMainSourceBillType: ["不良品评审申请单", "工序出站汇报单"],
                arrayHMainSourceBillTypeID: ["7512", "3791"],
                showHMainSourceBillType: true,
                hform: {
                    // 单据信息
                    HInterID: "0",
                    HEntryID: "0",
                    HBillNo: "",
                    HDate: dayjs(new Date()).format("YYYY-MM-DD"),
                    HHappendDate:dayjs(new Date()).format("YYYY-MM-DD HH:MM"),
                    HBillType: '7514',
                    // 申请信息
                    HBillNos: "",
                    HDates: "",
                    HHappendDates: "",
                    // 生产订单
                    HICMOBillNos: "",
                    HICMOInterIDs: "0",
                    HICMOEntryIDs: "0",
                    // 产品信息
                    HMaterNumbers: "",
                    HMaterNames: "",
                    HMaterModels: "",
                    HMaterIDs: "0",
                    HUnitNames: "",
                    HUnitIDs: "0",
                    HMaterTypes: "",
                    // 工序流转卡
                    HProcExchBillNos: "",
                    HProcExchInterIDs: "0",
                    HProcExchEntryIDs: "0",
                    // 不良信息
                    HUnRightQtys: "",
                    HLevs: "普通",
                    HIsStops: "否",
                    HIsBatchUnRights: "否",
                    HBarCodes: "",
                    HBadPhenomenaNames: "",
                    HBadPhenomenaIDs: "0",
                    HReasonNotes: "",
                    // 部门工序
                    HDeptNames: "",
                    HDeptIDs: "0",
                    HProcNames: "",
                    HProcIDs: "0",
                    // 销售订单
                    HSeOrderBillNos: "",
                    // 源单信息
                    HMainSourceBillType: "",
                    HMainSourceBillNo: "",
                    HMainSourceInterID: "0",
                    HMainSourceEntryID: "0",
                    HSendMan: "",
                    HCopyMan: "",
                    HDisposeDeptName: "",
                    HDisposeDeptID: "0",
                    HDisposeProcName: "",
                    HDisposeProcID: "0",
                    HDisposeEmpName: "",
                    HSendManID: "0",
                    HReceiveManID: "0",
                    HDisposeEmpID: "0",
                    HCheckerResult: "处理完成",
                    HDisposeNote: "",
                    // 不良原因类型
                    HBadTypeName: "",
                    HBadTypeID: "0",
                    HBadReasonName: "",
                    HBadReasonID: "0",
                    // 备注
                    HNote: "",
                    HRemark: "",
                    // 组织信息
                    Organization: getUserInfo()["Organization"] || "",
                    HStockOrgID: uni.getStorageSync('OrganizationID') || "0",
                    // 制单信息
                    HMaker: getUserInfo()["Czymc"] || "",
                    HMakeDate: dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss"),
                    HUpDater: "",
                    HUpDateDate: "",
                    HChecker: "",
                    HCheckDate: "",
                    HCloseMan: "",
                    HCloseDate: "",
                    HDeleteMan: "",
                    HDeleteDate: "",
                },
            };
        },
        methods: {
            // 显示选择器弹窗
            async showSelectorModule(index) {
                if (this.hasSourceBill) {
                    uni.showToast({ title: '已有源单,不能修改', icon: 'none' });
                    return;
                }
                this.currentChechItemIDCache = 0;
                this.enablePopupModule = this.PopupModuleNameList[index];
                await this.$nextTick();
                let popupRef = null;
                if (index === 2) popupRef = this.$refs.GyBadReasonPopup;
                else if (index === 7) popupRef = this.$refs.GyBadTypePopupVue;
                else if (index === 8) popupRef = this.$refs.processPopup;
                if (popupRef) {
                    popupRef.showPopup();
                }
            },
            // 初始化职员数据的方法(仿照 InitHEmp)
            async InitGyEmp() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: "/Gy_Employee/list",
                        data: {
                            sWhere: ` and 组织名称 = '${uni.getStorageSync("Organization")}' and 禁用标记 = ''`,
                            user: getUserInfo()["Czymc"],
                            Organization: uni.getStorageSync("Organization"),
                        },
                    });
                    let { data, Message, count } = res.data;
                    if (count == 1) {
                        this.GyEmpList = data;
                        this.GyEmpNameList = Array.from(data).map((e) => e["职员名称"]);
                    } else {
                        CommonUtils.showTips({
                            title: "温馨提示",
                            message: `初始化职员失败: ${Message}`,
                        });
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: "温馨提示",
                        message: `初始化职员失败: ${err}`,
                    });
                }
            },
            // 不良原因选择完成
            // 新增:扫码获取源单号
            scanSourceBill() {
                // 调用微信扫码功能
                uni.scanCode({
                    scanType: ['barCode', 'qrCode'],
                    success: (res) => {
                        // 将扫码结果赋值给源单号
                        this.hform.HMainSourceBillNo = res.result;
                        // 自动触发查询
                        this.GetMessageByHSourceBillNo();
                    },
                    fail: (err) => {
                        console.error('扫码失败:', err);
                        uni.showToast({
                            title: '扫码失败',
                            icon: 'none'
                        });
                    }
                });
            },
            CheckItemComplete(e) {
                if (e && e.retVal) {
                    let data = Object.values(e.retVal)[0];
                    this.hform.HBadReasonID = String(data.HItemID || 0);
                    this.hform.HBadReasonName = data.不良原因名称 || "";
                }
                this.$refs.GyBadReasonPopup?.exit();
                this.enablePopupModule = "";
            },
            // 不良类型选择完成
            HQCSchemeComplete(e) {
                if (e && e.retVal) {
                    let data = Object.values(e.retVal)[0];
                    this.hform.HBadTypeID = String(data.HItemID || 0);
                    this.hform.HBadTypeName = data.不良类型名称 || "";
                }
                this.$refs.GyBadTypePopupVue?.exit();
                this.enablePopupModule = "";
            },
            // 工序选择完成
            HProcComplete(e) {
                if (e && e.retVal) {
                    let data = Object.values(e.retVal)[0];
                    this.hform.HDisposeProcID = String(data.HItemID || 0);
                    this.hform.HDisposeProcName = data.工序名称 || "";
                }
                this.$refs.processPopup?.exit();
                this.enablePopupModule = "";
            },
            // 初始化部门
            async InitDept() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/PublicPageMethod/DeptList',
                        data: { sWhere: 'where 1=1' }
                    });
                    if (res.data.count == 1) {
                        this.DeptList = res.data.data;
                        this.DeptNameList = res.data.data.map(e => e['HName']);
                    }
                } catch (err) {
                    console.error('初始化部门错误:', err);
                }
            },
            // 初始化职员
            async InitHEmp() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: "/Gy_Employee/list",
                        data: {
                            sWhere: ` and 组织名称 = '${uni.getStorageSync("Organization")}' and 禁用标记 = ''`,
                        },
                    });
                    if (res.data.count == 1) {
                        this.GyEmpList = res.data.data;
                        this.GyEmpNameList = res.data.data.map(e => e["职员名称"]);
                    }
                } catch (err) {
                    console.error('初始化职员失败:', err);
                }
            },
            // 打开源单选择器
            openSourceBillSelector() {
                if (!this.hform.HMainSourceBillType) {
                    uni.showToast({ title: '请先选择源单类型', icon: 'none' });
                    return;
                }
                this.$refs.billList.showPopup();
            },
            // 接收源单
            handleSourceBill(e) {
                this.hform.HMainSourceBillNo = e.HBillNo;
                this.GetMessageByHSourceBillNo();
                this.$refs.billList?.exit();
            },
            // 获取源单数据
            async GetMessageByHSourceBillNo() {
                 if (!this.hform.HMainSourceBillType) {
                        uni.showToast({ title: '请选择源单类型', icon: 'none' });
                        return;
                    }
                    if (!this.hform.HMainSourceBillNo ) {
                           uni.showToast({ title: '请输入或者扫码源单号', icon: 'none' });
                           return;
                       }
                try {
                    let res;
                    let user = getUserInfo()["Czymc"] || "";
                    let Organization = uni.getStorageSync('OrganizationID') || "";
                    // 根据源单类型调用不同的接口
                    if (this.hform.HMainSourceBillType === "7512") {
                        res = await CommonUtils.doRequest2Async({
                            url: "/Sc_ProcessMangement/Get_QC_NoPassProdRequestBillList",
                            type: "GET",
                            data: {
                                "sWhere": ` and 单据号 = '${this.hform.HMainSourceBillNo}'`,
                                "user": user
                            }
                        });
                    } else if (this.hform.HMainSourceBillType === "3791") {
                        res = await CommonUtils.doRequest2Async({
                            url: "/Cj_StationOutBill/get_Display_byPage",
                            type: "GET",
                            data: {
                                "sWhere": `and 单据号 = ''${this.hform.HMainSourceBillNo}''`,
                                "user": user,
                                "Organization": Organization,
                                "page": 1,
                                "size": 1,
                                "HBillSubType": "3791"
                            }
                        });
                    }
                    uni.hideLoading();
                    // 获取第一条数据
                    let data = null;
                    if (res.data) {
                        if (Array.isArray(res.data) && res.data.length > 0) {
                            data = res.data[0];
                        } else if (res.data.data && res.data.data.length > 0) {
                            data = res.data.data[0];
                        } else if (res.data.rows && res.data.rows.length > 0) {
                            data = res.data.rows[0];
                        } else if (res.data.list && res.data.list.length > 0) {
                            data = res.data.list[0];
                        }
                    }
                    if (data) {
                        // 根据源单类型处理数据
                        if (this.hform.HMainSourceBillType === "7512") {
                            // 处理不良品评审申请单数据(第一组数据)
                            this.hform.HBillNos = data.单据号 || "";
                            this.hform.HDates = data.日期 ? data.日期.split('T')[0] : "";
                            this.hform.HHappendDates = data.发生时间 ? data.发生时间.replace('T', ' ') : "";
                            this.hform.HICMOBillNos = data.任务单号 || "";
                            this.hform.HProcExchBillNos = data.工序流转卡号 || "";
                            this.hform.HMaterNumbers = data.产品代码 || "";
                            this.hform.HMaterNames = data.产品名称 || "";
                            this.hform.HMaterModels = data.规格型号 || "";
                            this.hform.HUnitNames = data.计量单位名称 || "";
                            this.hform.HMaterTypes = data.产品类型 === "1" ? "产成品" : data.产品类型 || "";
                            this.hform.HUnRightQtys = data.不良数量 || "0";
                            this.hform.HDeptNames = data.车间名称 || "";
                            this.hform.HProcNames = data.工序 || "";
                            this.hform.HBadPhenomenaNames = data.不良现象 || "";
                            this.hform.HBarCodes = data.不良品SN码 || "";
                            this.hform.HSeOrderBillNos = data.销售订单 || "";
                            this.hform.HReasonNotes = data.问题现象简述 || "";
                            this.hform.HLevs = data.紧急程度 || "普通";
                            this.hform.HIsStops = data.是否停线 || "否";
                            this.hform.HIsBatchUnRights = data.是否批量问题 || "否";
                            // 源单ID信息
                            this.hform.HMainSourceInterID = data.hmainid || "0";
                            this.hform.HMainSourceEntryID = data.任务单子内码 || "0";
                        } else if (this.hform.HMainSourceBillType === "3791") {
                            // 处理工序出站汇报单数据(第二组数据)
                            this.hform.HBillNos = data.单据号 || "";
                            this.hform.HDates = data.日期 ? data.日期.split('T')[0] : "";
                            this.hform.HHappendDates = data.出站时间 ? data.出站时间.replace('T', ' ') : "";
                            this.hform.HICMOBillNos = data.任务单 || "";
                            this.hform.HProcExchBillNos = data.工序流转卡号 || "";
                            this.hform.HMaterNumbers = data.产品代码 || "";
                            this.hform.HMaterNames = data.产品名称 || "";
                            this.hform.HMaterModels = data.规格型号 || "";
                            this.hform.HUnitNames = data.计量单位 || "";
                            this.hform.HMaterTypes = data.产品类型 || "";
                            // 不良数量 - 第二组数据中可能是不良数量字段
                            this.hform.HUnRightQtys = data.不良数量 || data.报废数量 || "0";
                            this.hform.HDeptNames = data.车间 || data.部门 || "";
                            this.hform.HProcNames = data.当前工序 || "";
                            // 不良现象 - 第二组数据可能没有这个字段
                            this.hform.HBadPhenomenaNames = data.不良现象 || "";
                            // 其他字段
                            this.hform.HBarCodes = data.批次号 || data.不良品SN码 || "";
                            this.hform.HSeOrderBillNos = data.销售订单 || "";
                            this.hform.HReasonNotes = data.问题现象简述 || "";
                            this.hform.HLevs = data.紧急程度 || "普通";
                            this.hform.HIsStops = data.是否停线 || "否";
                            this.hform.HIsBatchUnRights = data.是否批量问题 || "否";
                            // 源单ID信息
                            this.hform.HMainSourceInterID = data.hmainid || data.HProcExchInterID || "0";
                            this.hform.HMainSourceEntryID = data.HProcExchEntryID || "1";
                        }
                        // 设置源单类型显示
                        let index = this.arrayHMainSourceBillTypeID.findIndex(id => id == this.hform.HMainSourceBillType);
                        if (index != -1) {
                            this.HMainSourceBillTypeDisplay = this.arrayHMainSourceBillType[index];
                        }
                        this.hasSourceBill = false;
                        uni.showToast({ title: '加载成功', icon: 'success' });
                        // 强制更新视图
                        this.$forceUpdate();
                    } else {
                        uni.showToast({ title: '未找到源单', icon: 'none' });
                    }
                } catch (err) {
                    uni.hideLoading();
                    console.error('获取失败:', err);
                    // 显示更详细的错误信息
                    if (err.response && err.response.data) {
                        console.error('错误详情:', err.response.data);
                        uni.showToast({ title: err.response.data.Message || '获取失败', icon: 'none' });
                    } else {
                        uni.showToast({ title: '获取失败', icon: 'none' });
                    }
                }
            },
            // 处理部门选择
            HDisposeDeptChange(val) {
                let index = this.DeptNameList.findIndex(e => e == val);
                if (index == -1) {
                    this.hform.HDisposeDeptName = '';
                    this.hform.HDisposeDeptID = '0';
                    return;
                }
                this.hform.HDisposeDeptName = this.DeptList[index]['HName'];
                this.hform.HDisposeDeptID = String(this.DeptList[index]['HItemID']);
            },
            // 发起人选择
            HSendManChange(val) {
                let index = this.GyEmpList.findIndex(e => e["职员名称"] == val);
                if (index == -1) {
                    this.hform.HSendMan = "";
                    return;
                }
                this.hform.HSendMan = this.GyEmpList[index]["职员名称"];
            },
            // 接收人选择
            HReceiveManChange(val) {
                let index = this.GyEmpList.findIndex(e => e["职员名称"] == val);
                if (index == -1) {
                    this.hform.HReceiveMan = "";
                    return;
                }
                this.hform.HReceiveMan = this.GyEmpList[index]["职员名称"];
            },
            // 抄送人选择 -
            HCopyManChange(val) {
                let index = this.GyEmpList.findIndex(e => e["职员名称"] == val);
                if (index == -1) {
                    this.hform.HCopyMan = "";
                    return;
                }
                this.hform.HCopyMan = this.GyEmpList[index]["职员名称"];
            },
            // 源单类型选择
            HMainSourceBillTypeChange(e) {
                let index = e.detail.value;
                this.HMainSourceBillTypeDisplay = this.arrayHMainSourceBillType[index];
                this.hform.HMainSourceBillType = this.arrayHMainSourceBillTypeID[index];
            },
            // 获取单据号
            async getMaxBillNo() {
                try {
                    let res = await CommonUtils.doRequest2Sync({
                        url: "/Web/GetMAXNum",
                        data: { HBillType: "7512" },
                    });
                    if (res?.data?.count == 1) {
                        this.hform.HInterID = res.data.data[0].HInterID;
                        this.hform.HBillNo = res.data.data[0].HBillNo;
                    }
                } catch (err) {
                    console.error('获取单据号异常:', err);
                }
            },
            // 验证
            checkSubmitValidate() {
                if (!this.hform.HBillNo) {
                    uni.showToast({ title: '单据号不能为空', icon: 'none' });
                    return false;
                }
                if (!this.hform.HSendMan) {
                    uni.showToast({ title: '发起人不能为空', icon: 'none' });
                    return false;
                }
                if (!this.hform.HReceiveMan) {
                    uni.showToast({ title: '接收人不能为空', icon: 'none' });
                    return false;
                }
                return true;
            },
        async getEditData(HInterID) {
            if (!HInterID || HInterID === "0") return;
            uni.showLoading({ title: '加载中...' });
            try {
                let res = await CommonUtils.doRequest2Async({
                    url: "/Sc_ProcessMangement/Edit_QC_NoPassProdDisposeBill",
                    type: "GET",
                    data: { "HID": HInterID }
                });
                if (res.data && res.data.data && res.data.data.length > 0) {
                    let data = res.data.data[0];
                    this.hform = {
                        ...this.hform,  // 保留原有的默认值
                        HInterID: data.hmainid || "0",
                        HEntryID: data.HEntryID || "0",
                        HBillNo: data.单据号 || "",
                        HDate: data.日期 ? data.日期.split('T')[0] : dayjs().format("YYYY-MM-DD"),
                        HBillType: data.HBillType || '7513',
                        HBillNos: data.源单号 || "",  // 这是源单号
                        HDates: data.日期 ? data.日期.split('T')[0] : "",  // 源单日期
                        HHappendDates: data.发生时间 ? data.发生时间.replace('T', ' ') : "",
                        HICMOBillNos: data.生产订单|| "",
                        HICMOInterIDs: data.HICMOInterIDs || "0",
                        HICMOEntryIDs: data.HICMOEntryIDs || "0",
                        HMaterNumbers: data.产品代码 || "",
                        HMaterNames: data.产品名称 || "",
                        HMaterModels: data.规格型号 || "",
                        HMaterIDs: data.HMaterID || "0",
                        HUnitNames: data.计量单位名称 || "",
                        HUnitIDs: data.HUnitID || "0",
                        HMaterTypes: data.产品类型 === "1" ? "产品类型" : data.产品类型 || "",
                        HProcExchBillNos: data.工序流转卡号 || "",
                        HProcExchInterIDs: data.HProcExchInterIDs || "0",
                        HProcExchEntryIDs: data.HProcExchEntryIDs || "0",
                        HDisposeEmpName:data.处理人 ,
                        HUnRightQtys: data.不良数量 || "0",
                        HLevs: data.紧急程度 || "普通",
                        HIsStops: data.是否停线 || "否",
                        HIsBatchUnRights: data.是否批量问题 || "否",
                        HBarCodes: data.不良品SN码 || "",
                        HBadPhenomenaNames: data.不良现象 || "",
                        HBadPhenomenaIDs: data.HBadPhenomenaID || "0",
                        HReasonNotes: data.问题现象简述 || "",
                        HNote:data.纠正及预防措施,
                        HDeptNames: data.车间名称 || "",
                        HDeptIDs: data.HDeptID || "0",
                        HProcNames: data.工序 || "",
                        HProcIDs: data.HProcID || "0",
                        HSeOrderBillNos: data.销售订单 || "",
                        HMainSourceBillType: data.源单类型 || "",
                        HMainSourceBillNo: data.源单号 || "",
                        HMainSourceInterID: data.源单ID || data.hmainid || "0",
                        HMainSourceEntryID: data.源单子ID || data.任务单子内码 || "0",
                        HSendMan: data.发送人 || "",
                        HReceiveMan: data.接收人 || "",
                        HCopyMan: data.抄送 || "",
                        HDisposeDeptName: data.处理部门 || "",
                        HDisposeDeptID: data.HDisposeDeptID || "0",
                        HDisposeProcID:data.HDisposeProcID || "0",
                        HDisposeProcName: data.处理工序 || "",
                        HDisposeEmpID: data.HDisposeEmpID || "0",
                        HCheckerResult: data.处理结论 || "",
                        HDisposeNote: data.处理结论详情 || "",
                        HBadTypeName: data.不良类型 || "",
                        HBadTypeID: data.HBadTypeID || "0",
                        HBadReasonName: data.不良原因 || "",
                        HBadReasonID: data.HBadReasonID || "0",
                        HRemark: data.表头备注 || "",
                        Organization: data.Organization || getUserInfo()["Organization"] || "",
                        HStockOrgID: data.HStockOrgID || uni.getStorageSync('OrganizationID') || "0",
                        HMaker: data.制单人 || "",
                        HMakeDate: data.制单日期 ? data.制单日期.replace('T', ' ') : "",
                        HUpDater: data.修改人 || "",
                        HUpDateDate: data.修改日期 ? data.修改日期.replace('T', ' ') : "",
                        HChecker: data.审核人 || "",
                        HCheckDate: data.审核日期 ? data.审核日期.replace('T', ' ') : "",
                        HCloseMan: data.关闭人 || "",
                        HCloseDate: data.关闭日期 ? data.关闭日期.replace('T', ' ') : "",
                        HDeleteMan: data.作废人 || "",
                        HDeleteDate: data.作废日期 ? data.作废日期.replace('T', ' ') : "",
                    };
                    if (data.源单类型) {
                        let index = this.arrayHMainSourceBillTypeID.findIndex(id => id == data.源单类型);
                        if (index != -1) {
                            this.HMainSourceBillTypeDisplay = this.arrayHMainSourceBillType[index];
                        }
                    }
                    this.hasSourceBill = false;
                    this.$forceUpdate();
                    console.log('赋值后的hform:', this.hform);
                }
            } catch (err) {
                console.error('获取数据失败:', err);
                uni.showToast({ title: '获取数据失败', icon: 'none' });
            } finally {
                uni.hideLoading();
            }
        },
        // 保存
        async submit() {
            if (!this.checkSubmitValidate()) return;
            let operation = this.operationType == 1 ? "Add" : "Update";
            // 编辑时设置修改人和修改时间
            if (this.operationType == 3) {
                this.hform.HUpDater = getUserInfo()["Czymc"];
                this.hform.HUpDateDate = dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss");
            }
            try {
                let sMainStr = JSON.stringify(this.hform);
                let sMainSub = sMainStr + ';' + operation + ';' + getUserInfo()["Czymc"];
                let res = await CommonUtils.doRequest2Sync({
                    url: "/Sc_ProcessMangement/SaveQC_NoPassProdDisposeBill",
                    data: { "msg": sMainSub },
                    method: "POST",
                });
                if (res?.data?.count == 1) {
                    uni.showModal({
                        title: '提示',
                        content: '保存成功,是否继续新增?',
                        success: (r) => {
                            if (r.confirm) {
                                uni.redirectTo({
                                    url: "/pages/ZLGL/QCNoPassProdDisposeBillMainList/QCNoPassProdDisposeBillMain?operationType=1",
                                });
                            } else {
                                uni.navigateBack();
                            }
                        }
                    });
                } else {
                    uni.showToast({ title: res?.data?.Message || '保存失败', icon: 'none' });
                }
            } catch (err) {
                console.error('保存失败:', err);
                uni.showToast({ title: '保存失败', icon: 'none' });
            }
        },
            // 新增
            addNew() {
                uni.redirectTo({
                     url: "/pages/ZLGL/QCNoPassProdDisposeBillMainList/QCNoPassProdDisposeBillMain?operationType=1",
                });
            },
            // 返回
            goBack() {
                uni.navigateBack();
            },
        },
        async onLoad(e) {
            this.operationType = parseInt(e.operationType) || 1;
            this.hform.HInterID = e.HInterID  || "0";
            const organization = uni.getStorageSync('Organization');
            this.hform.Organization = organization || '';
            await this.InitGyEmp();
            await this.InitDept();
           if (this.operationType == 1) {
                await this.getMaxBillNo();
                this.hform.HSendMan = getUserInfo()["Czymc"] || "";
            } else if (this.operationType == 3) {
                await this.getEditData(e.HInterID);
            }
        }
    };
</script>
<style lang="scss" scoped>
    /* 样式保持不变 */
    input { width: inherit; font-size: 26rpx; }
    .uni-input { padding: 0; }
    .bill-main-tabs {
        box-sizing: border-box;
        width: 730rpx;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        gap: 20rpx;
        border-bottom: 1px solid #ddd;
        padding: 20rpx 10rpx;
        view {
            width: auto;
            font-size: 26rpx;
            color: #555;
            text-align: center;
            padding: 16rpx 0;
        }
        .selected {
            color: #3a78ff;
            font-weight: bold;
            border-bottom: 3px solid #3a78ff;
        }
    }
    .bill-main-content {
        box-sizing: border-box;
        padding: 0 30rpx;
        display: flex;
        flex-direction: column;
        .form-item {
            width: 100%;
            display: flex;
            align-items: center;
            font-size: 26rpx;
            padding: 6rpx 0;
            .left { width: 208rpx; }
            .right {
                padding: 8rpx 20rpx;
                font-size: 26rpx;
                flex: 1;
                border-radius: 22rpx;
                border: 1px solid #acacac;
                .uni-combox { padding: 0; height: auto; }
                .uni-combox::v-deep input { height: inherit; font-size: 26rpx; }
                input {
                    width: 100%;
                    border: none;
                    outline: none;
                    background: transparent;
                }
            }
            .disabled { border: 1px solid #e4e4e4; background-color: #f5f5f5; }
        }
    }
    .bottom-btn {
        box-sizing: border-box;
        width: 100%;
        height: 120rpx;
        position: fixed;
        bottom: 0;
        left: 0;
        background-color: #fff;
        box-shadow: 0 2rpx 10rpx 2rpx rgba(0,0,0,0.4);
        padding: 30rpx 40rpx;
        display: flex;
        flex-direction: row;
        gap: 10rpx;
        button {
            border-radius: 50rpx;
            width: 180rpx;
            height: 66rpx;
            line-height: 66rpx;
            font-size: 28rpx;
        }
        .btn-a { background-color: #3a78ff; color: #fff; }
        .btn-c { background-color: #acacac; color: #fff; }
    }
    .select-border {
        border: 1px solid #acacac !important;
        border-radius: 22rpx !important;
    }
    .no-border-select ::v-deep .uni-select {
        border: none !important;
    }
    .icon-wrapper, .icon-wrapper-big {
        background-color: #3a78ff;
        border-radius: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        flex-shrink: 0;
        margin-left: 20rpx;
        .uni-icons { color: #fff !important; }
    }
    .icon-wrapper { width: 40rpx; height: 40rpx; }
    .icon-wrapper-big { width: 50rpx; height: 50rpx; }
    .enable-icon-button { background-color: #3a78ff; }
    .disable-icon-button { background-color: lightgray; pointer-events: none; }
</style>
pages/ZLGL/QCNoPassProdRequestBillMain/QCNoPassProdRequestBillMainList.vue
New file
@@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>
pages/ZLGL/QuYangHuangYang/QC_TakeSampleCheckBill/QC_TakeSampleCheckBill.vue
@@ -69,7 +69,7 @@
                </view>
            </view>
            <view class="form-item">
                <view class="title">{{ $t("QC_TakeSampleCheckBill.HSourceName") == "QC_TakeSampleCheckBill.HSourceName" ? "生产资源:" : $t("QC_TakeSampleCheckBill.HSourceName") }}</view>
                <view class="title required">{{ $t("QC_TakeSampleCheckBill.HSourceName") == "QC_TakeSampleCheckBill.HSourceName" ? "生产资源:" : $t("QC_TakeSampleCheckBill.HSourceName") }}</view>
                <view class="right">
                    <uni-combox :candidates="HSourceNameArray" name="HSourceName" id="HSourceName" :placeholder="$t('QC_TakeSampleCheckBill.HSourceName_Placeholder') == 'QC_TakeSampleCheckBill.HSourceName_Placeholder' ? '请选择生产资料' : $t('QC_TakeSampleCheckBill.HSourceName_Placeholder')" v-model="hform.HSourceName" @input="HSourceNameChangeHandler"></uni-combox>
                </view>
@@ -191,7 +191,7 @@
                    HProcID: 0,
                    HQty: '',
                    HSampleDamageQty: 0,
                    TestType: 'first',
                    TestType: '首检',
                    HBadNote: '',
                    HDeptName: getUserInfo().HDeptName,
                    HDeptID: getUserInfo().HDeptID,
@@ -615,11 +615,11 @@
                        if (code == 1) {
                            this.HBarCode = ''
                            let data1 = data.h_v_Sc_ProcessExchangeBillList
                            this.hform = Object.assign(this.hform, {
                            Object.assign(this.hform, {
                                "HMaterID": data1[0].HMaterID, //产品ID
                                "HMaterCode": data1[0].产品代码, //产品代码
                                "HMaterName": data1[0].产品, //产品名称
                                "HMaterSpec": data1[0].规格型号, //产品规格
                                "HMaterSpec": data1[0].规格型号.replace(/["]/g, "'"), //产品规格
                                "HUnitID": data1[0].HUnitID, //计量单位id
                                "HUnitName": data1[0].单位, //计量单位
                                "HMainSourceBillNo": data1[0].单据号, //源单单号
@@ -633,8 +633,9 @@
                                "HICMOBillNo": data1[0].任务单号, //生产订单
                                "HDeptID": data1[0].HWorkShopID, //车间ID
                                "HDeptName": data1[0].生产车间, //车间
                                "HSampleDamageQty": data1[0]["HSampleDamageQty"] || 0
                            })
                            if (data1 && data1.length === 1) {
                                // 获取工序ID
                                let procId = data1[0].HProcID
@@ -664,19 +665,22 @@
                })
            },
            submit() {
                console.log('this.hform: ',this.hform);
                if (this.hform.HProcID == 0) {
                    return uni.showToast({
                        icon: 'none',
                        title: this.$t('QC_TakeSampleCheckBill.noProcess') == 'QC_TakeSampleCheckBill.noProcess' ? '工序没有选择' : this.$t('QC_TakeSampleCheckBill.noProcess')
                    })
                }
                if (this.hform.HQty == '') {
                if (this.hform.HQty === '') {
                    return uni.showToast({
                        icon: 'none',
                        title: this.$t('QC_TakeSampleCheckBill.sampleQtyEmpty') == 'QC_TakeSampleCheckBill.sampleQtyEmpty' ? '取样数量不能为空' : this.$t('QC_TakeSampleCheckBill.sampleQtyEmpty')
                    })
                }
                if (this.hform.HSampleDamageQty == '') {
                console.log('this.hform.HSampleDamageQty: ',this.hform.HSampleDamageQty);
                console.log('this.hform.HSampleDamageQty: ',this.hform.HSampleDamageQty == '');
                if (this.hform.HSampleDamageQty === "") {
                    return uni.showToast({
                        icon: 'none',
                        title: this.$t('QC_TakeSampleCheckBill.damageQtyEmpty') == 'QC_TakeSampleCheckBill.damageQtyEmpty' ? '破坏性实验数量不能为空' : this.$t('QC_TakeSampleCheckBill.damageQtyEmpty')
pages/ZLGL/QuYangHuangYang/QC_TakeSampleCheckBill/QC_TakeSampleCheckBillList.vue
@@ -173,7 +173,7 @@
                    </view>
                    <view class="op" v-if="operations == index">
                        <button class="op3" size="mini" plain @tap.stop="Xt_FistCheck(item)">下推首件单</button>
                        <button class="op3" size="mini" plain @tap.stop="doAudit(item)">{{ item.单据状态 == '已审核'? "反审核": "审核" }}</button>
                        <button class="op4" size="mini" plain @tap.stop="del(item)">删除</button>
                        <button class="op5" size="mini" plain @tap.stop="operations = -1">取消操作</button>
                    </view>
@@ -267,10 +267,45 @@
        },
        methods: {
            async doAudit(item) {
                let type = 0
                if(item["单据状态"] == "已审核"){
                    type = 1
                }else {
                    type = 0
                }
                try{
                    let res = await CommonUtils.doRequest2Async({
                        url: "/QC_TakeSampleCheckBill/AuditQC_TakeSampleCheckBillMain",
                        data: {
                            "HInterID": item.hmainid,
                            "IsAudit": type,
                            "CurUserName": getUserInfo()["Czymc"]
                        }
                    })
                    console.log('res: ',res);
                    let {data, count , Message} = res.data
                    if(count == 1) {
                        this.onSearchClickHandler()
                    }
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: Message
                    })
                }catch(err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: err
                    })
                }
            },
            // 新增取样单
            onAddClickHandler() {
                uni.navigateTo({
                    url: "/pages/quyangdan/TakeSampleCheckBill?operationType=0"
                    url: "/pages/ZLGL/QuYangHuangYang/QC_TakeSampleCheckBill/QC_TakeSampleCheckBill?operationType=0"
                })
            },
            Xt_FistCheck(item){
pages/ZLGL/QualityReport/SB_EquipRunningStatusReport.vue
@@ -32,13 +32,13 @@
            <view class="form-item">
                <view class="title">{{$t("Gy.EquipNumber_Search")}}:</view>
                <view class="right">
                    <input type="text" :value="condition.HNumber" />
                    <input type="text" v-model="condition.HNumber" />
                </view>
            </view>
            <view class="form-item">
                <view class="title">{{$t("Gy.EquipName_Search")}}:</view>
                <view class="right">
                    <input type="text" :value="condition.HName" />
                    <input type="text" v-model="condition.HName" />
                </view>
            </view>
            <view class="search-buttons">
@@ -46,11 +46,10 @@
                <button class="btn-a" size="mini" type="default" @tap="clear">重置</button>
            </view>
        </view>
        <!-- 显示列表 -->
        <view class="list" v-for="(item,index) in displayData" :key="index">
            <uni-card :title="item.设备名称" style="margin: 10px;"
                >
            <uni-card :title="item.设备名称" style="margin: 10px;">
                <view class="card-detail">
                    <template v-for="(HBillField, index) in CommonUtils.emptyValueFilter(item,fieldData).slice(0,10)">
                        <view class="detail" v-if="HBillField.ColmType == 'DateTime'">
@@ -72,10 +71,10 @@
                                <text>{{ HBillField.ColmCols }}:</text>{{ item[HBillField.ColmCols] }}
                            </view>
                        </template>
                    </view>
                </view>
                <view class="more" v-if="showDetail == index && operations != index">
                    <view class="part" style="border-right: 1px solid #eee;">
                        <uni-icons type="top" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>收起
@@ -106,7 +105,7 @@
            <view class="over" v-if="!readCompelete">正在获取数据...</view>
            <view class="over" v-if="readCompelete">没有更多数据...</view>
        </template>
        <ba-tree-picker ref="treePicker" :multiple='false' @select-change="selectChange" title="选择部门"
            :localdata="reportTreeList" valueKey="id" textKey="title" childrenKey="children" />
    </view>
@@ -131,19 +130,19 @@
                CommonUtils,
                showDetail: -1,
                operations: -1,
                reportTreeList: [],
                selectedList: [],
                displayData: [],
                fieldData: [],
                readCompelete: false,
                page: 1,
                size: 20,
                HDateMiddle: dayjs(new Date()).format("YYYY-MM-DD"),
                condition: {
                    HDeptID: 0,
                    HDeptName: "",
@@ -157,10 +156,18 @@
        methods: {
            search() {
                this.page = 1
                this.displayData = []
                this.getReport()
            },
            clear() {
                this.page = 1
                this.displayData = []
                this.condition.HDeptID = 0
                this.condition.HDeptName = ""
                this.condition.HBeginDate = dayjs(new Date()).format("YYYY-MM-DD")
                this.condition.HEndDate = dayjs(new Date()).format("YYYY-MM-DD")
                this.condition.HNumber = ""
                this.condition.HName = ""
            },
            showPicker() {
                this.$refs.treePicker._show();
@@ -174,9 +181,9 @@
                try {
                    let sWhere = ""
                    sWhere += this.combineSWhereStr(sWhere)
                    let res = await CommonUtils.doRequest2Async({
                        url: "/SB_EquipRunningStatus/Report",
                        url: "/SB_EquipRunningStatus/ReportPage",
                        data: {
                            sWhere,
                            user: getUserInfo()["Czymc"],
@@ -184,23 +191,28 @@
                            size: this.size
                        }
                    })
                    let {data, count, Message, list} = res.data
                    if(count == 1) {
                        if(data.length == 0) {
                    let {
                        data,
                        count,
                        Message,
                        list
                    } = res.data
                    if (count == 1) {
                        if (data.length == 0) {
                            // 数据已经读完
                            this.page--
                            this.readCompelete = true
                            return
                        }
                        this.displayData.push(...data)
                        this.fieldData = CommonUtils.fieldListFilterRole({
                            FieldList: list,
                            ExcludeKeys: ["设备名称"]
                        }).data || []
                    }else {
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `获取报表信息失败: ${Message}`
@@ -250,24 +262,25 @@
                if (this.condition.HBeginDate && this.condition.HEndDate) {
                    sWhere +=
                        ` and CONVERT(varchar(100),所属日期, 23) >= '${this.condition.HBeginDate}' and CONVERT(varchar(100),所属日期, 23) <= '${this.condition.HEndDate}'`
                        ` and CONVERT(varchar(100),所属日期, 23) >= '${this.condition.HBeginDate}' and CONVERT(varchar(100),所属日期, 23) <= '${this.condition.HEndDate}' `
                }
                if (this.condition.HNumber) {
                    sWhere += ` and 设备编码 like '%${this.condition.HNumber}'%`
                    sWhere += ` and 设备编码 like '%${this.condition.HNumber}%' `
                }
                if (this.condition.HName) {
                    sWhere += ` and 设备名称 like '%${this.condition.HName}'%`
                    sWhere += ` and 设备名称 like '%${this.condition.HName}%' `
                }
                return sWhere
            }
        },
        onLoad() {
            this.GetReportTreeList()
            this.GetReportTreeList();
            this.getReport();
        },
        onReachBottom(){
        onReachBottom() {
            this.page++
            this.getReport()
        }
pages/ZLGL/QualityReport/Sb_EquipDotCheckBillReport.vue
@@ -448,7 +448,12 @@
                        trigger: 'item'
                    },
                    legend: {
                        top: 'bottom'
                        top: 'bottom',
                        itemWidth: 12, // 图例图标宽度(可选,让布局更紧凑)
                        itemHeight: 12, // 图例图标高度(可选)
                        textStyle: {
                            fontSize: 11 // 字体大小(可选,避免太占空间)
                        }
                    },
                    series: [{
                        name: '点检次数',
pages/ZLGL/QualityReport/Sb_EquipMaintainBillReport.vue
@@ -448,7 +448,12 @@
                        trigger: 'item'
                    },
                    legend: {
                        top: 'bottom'
                        top: 'bottom',
                        itemWidth: 12, // 图例图标宽度(可选,让布局更紧凑)
                        itemHeight: 12, // 图例图标高度(可选)
                        textStyle: {
                            fontSize: 11 // 字体大小(可选,避免太占空间)
                        }
                    },
                    series: [{
                        name: '保养次数',
pages/ZLGL/QualityReport/Sc_MouldMaintainBillMainReport.vue
@@ -108,7 +108,7 @@
                condition: {
                    year: dayjs(new Date()).format("YYYY"),
                    month: dayjs(new Date()).format("M"),
                    dimension: '器具'
                    dimension: '保养项目'
                }
            };
        },
@@ -448,7 +448,12 @@
                        trigger: 'item'
                    },
                    legend: {
                        top: 'bottom'
                        top: 'bottom',
                        itemWidth: 12, // 图例图标宽度(可选,让布局更紧凑)
                        itemHeight: 12, // 图例图标高度(可选)
                        textStyle: {
                            fontSize: 11 // 字体大小(可选,避免太占空间)
                        }
                    },
                    series: [{
                        name: '保养次数',
pages/ZLGL/QualityReport/Sc_MouldRepairWorkBillReport.vue
@@ -108,7 +108,7 @@
                condition: {
                    year: dayjs(new Date()).format("YYYY"),
                    month: dayjs(new Date()).format("M"),
                    dimension: '器具'
                    dimension: '责任人'
                }
            };
        },
@@ -448,7 +448,12 @@
                        trigger: 'item'
                    },
                    legend: {
                        top: 'bottom'
                        top: 'bottom',
                        itemWidth: 12, // 图例图标宽度(可选,让布局更紧凑)
                        itemHeight: 12, // 图例图标高度(可选)
                        textStyle: {
                            fontSize: 11 // 字体大小(可选,避免太占空间)
                        }
                    },
                    series: [{
                        name: '维修项目比例',
pages/ZLGL/QualityReportStep/QualityReportStepBill.vue
@@ -93,7 +93,12 @@
                            <input type="number" v-model="hform.HCheckQty" :disabled="hasCheckQty" />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">不良数量</view>
                        <view class="right">
                            {{ totalNum }}
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">检验员</view>
                        <view class="right-select">
@@ -293,6 +298,11 @@
            BillListPopupVue,
        },
        computed: {
            // 计算 num 合计
            totalNum() {
              if (!this.HBadReasonList || this.HBadReasonList.length === 0) return 0;
              return this.HBadReasonList.reduce((sum, item) => sum + (item.num || 0), 0);
            }
        },
        data() {
            return {
@@ -1062,7 +1072,7 @@
            
        },
        async onLoad(e) {
            this.setAuto();
            //this.setAuto();
            this.operationType = e.operationType || 1;
            this.hform.HInterID = e.linterid || 0;
            if (this.operationType == 1) {
pages/ZLGL/lailiaojianyan/POStockInCheckBill.vue
@@ -2281,7 +2281,7 @@
            },
        },
        async onLoad(e) {
            this.setAuto();
            //this.setAuto();
            this.operationType = e.operationType || 1;
            this.hform.HInterID = e.linterid || 0;
            console.log(this.hform.HFirstCheckEmp)
pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast.vue
@@ -41,7 +41,8 @@
            </view>
            <view class="card-item-wrapper">
                <view v-for="(item, index) in materialManifest" :key="index">
                    <uni-card :title="item.HSourceBillNo" @tap="toDetail(item, index)">
                    <uni-card :title="item.HSourceBillNo" :extra="item.客户订单号 ? '订单号:' + item.客户订单号 : ''"
                     @tap="toDetail(item, index)">
                        <view class="card-detail">
                            <view class="detail">
                                <text>物料代码:</text>{{item.HMaterNumber}}
@@ -207,7 +208,7 @@
                    <view class="title">质检员:</view>
                    <view class="right">
                        <uni-combox :candidates="HKeeperNameList" placeholder="请选择质检员"
                            v-model="detailManifestItem.HKeeperName" @input="HKeeperNameChange"></uni-combox>
                            v-model="sourceBillInfo.HKeeperName" @input="HKeeperNameChange"></uni-combox>
                    </view>
                </view>
                <view class="form-item">
@@ -319,7 +320,9 @@
                sourceBillInfo: {
                    HSourceBillNo: '',
                    HBillNo: '',
                    HInterID: ''
                    HInterID: '',
                    HKeeperID: getUserInfo()["HEmpID"],
                    HKeeperName: getUserInfo()["HEmpName"]
                },
                // 物料清单
                materialManifest: [],
@@ -328,6 +331,7 @@
                detailManifestItem: {
                    "HMaterNumber": "",
                    "HMaterID": "",
                    "F_WPVT_Text_tzk": "",
                    "HMaterName": "",
                    "HMaterModel": "",
                    "HUnitName": "",
@@ -472,11 +476,9 @@
                })
            },
            HKeeperNameChange(e) {
                console.log(this.HKeeperList)
                let keeperItem = this.HKeeperList.find(elem => elem.HName == e)
                console.log(keeperItem)
                this.detailManifestItem.HKeeperID = keeperItem.HItemID
                this.detailManifestItem.HKeeperName = keeperItem.HName
                this.sourceBillInfo.HKeeperID = keeperItem.HItemID
                this.sourceBillInfo.HKeeperName = keeperItem.HName
            },
@@ -547,6 +549,7 @@
                        HSPID: data[0].HSPID,
                        HSupID: data[0].HSupID,
                        HMaterID: data[0].HMaterID,
                        F_WPVT_Text_tzk: data[0].F_WPVT_Text_tzk,
                        HSourceBillType: data[0].HSourceBillType,
                        HSLInterID: data[0].HSLInterID,
                        HSLEntryID: data[0].HSLEntryID,
@@ -587,6 +590,13 @@
                        count
                    } = res.data
                    if (count == 1) {
                        if (data[0].HCheckDate == null){
                            CommonUtils.showTips({
                                title: '温馨提示',
                                message: `该单据未审核`
                            })
                            return
                        }
                        this.materialManifest = data
                        this.tabs = 1
                    } else {
@@ -640,8 +650,9 @@
                            "HWHID": this.detailManifestItem.HWHID || 0,
                            "HSPID": this.detailManifestItem.HSPID || 0,
                            "HSupID": this.detailManifestItem.HSupID || 0,
                            "HKeeperID": this.detailManifestItem.HKeeperID || 0,
                            "HKeeperID": this.sourceBillInfo.HKeeperID || 0,
                            "HMaterID": this.detailManifestItem.HMaterID,
                            "F_WPVT_Text_tzk": this.detailManifestItem.F_WPVT_Text_tzk,
                            "HSourceBillType": this.detailManifestItem.HSourceBillType,
                            "HSLInterID": this.detailManifestItem.HSLInterID,
                            "HSLEntryID": this.detailManifestItem.HSLEntryID,
@@ -659,7 +670,8 @@
                    } = res.data
                    if (count == 1) {
                        CommonUtils.showTips({
                            message: `上传成功`
                            title: '提示',
                            message: '上传成功'
                        })
                        this.attachmentInfo = []
                        // 刷新单据号,防止单据号重复
pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast2.vue
@@ -50,7 +50,8 @@
            </view>
            <view class="card-item-wrapper">
                <view v-for="(item, index) in materialManifest" :key="index">
                    <uni-card :class="item.selected?'card-selected':''" :title="item.HSourceBillNo"
                    <uni-card :class="item.selected?'card-selected':''" :title="item.HSourceBillNo"
                    :extra="item.客户订单号 ? '订单号:' + item.客户订单号 : ''"
                        @tap="selectMater(item, index)">
                        <view class="card-detail">
                            <view class="detail">
@@ -244,6 +245,7 @@
                detailManifest: [],
                detailManifestItem: {
                    "HMaterNumber": "",
                    "F_WPVT_Text_tzk": "",
                    "HMaterID": "",
                    "HMaterName": "",
                    "HMaterModel": "",
@@ -475,6 +477,7 @@
                        HSPID: data[0].HSPID,
                        HSupID: data[0].HSupID,
                        HMaterID: data[0].HMaterID,
                        F_WPVT_Text_tzk: data[0].F_WPVT_Text_tzk,
                        HSourceBillType: data[0].HSourceBillType,
                        HSLInterID: data[0].HSLInterID,
                        HSLEntryID: data[0].HSLEntryID,
@@ -515,6 +518,13 @@
                        count
                    } = res.data
                    if (count == 1) {
                        if (data[0].HCheckDate == null){
                            CommonUtils.showTips({
                                title: '温馨提示',
                                message: `该单据未审核`
                            })
                            return
                        }
                        this.sourceBillInfo.HSourceInterID = data[0].HSourceInterID
                        this.sourceBillInfo.HSourceBillType = '1103'
                        this.materialManifest = data
pages/ZLGL/mojianjianyan/ProcessCheckBill.vue
@@ -2022,6 +2022,7 @@
                    });
                    return false;
                }
                this.hform.HCheckQty = this.hform.HCheckQty || 0
                if (this.hform.HCheckQty == 0) {
                    CommonUtils.showTips({
                        message: "检验数量不得为0!",
@@ -2035,7 +2036,7 @@
                    for (let key in this.checkItems) {
                        if (this.checkItems.hasOwnProperty(key)) {
                            let element = this.checkItems[key];
                            if(element.HResult == 0){
                            if(element.HResult == 2){
                                count ++
                            }
                            
pages/ZLGL/shengchanrukujiaoyan/QC_LastPieceCheckBill_v2.vue
@@ -2333,7 +2333,7 @@
            },
        },
        async onLoad(e) {
            this.setAuto();
            //this.setAuto();
            this.operationType = e.operationType || 1;
            this.hform.HInterID = e.linterid || 0;
            if (this.operationType == 1) {
pages/ZLGL/shoujianjianyan/firstCheckBill.vue
@@ -1986,10 +1986,11 @@
                // 判断 最后结果为不合格的情况下,检验项目中是否有不合格项
                if(this.hform.HLastResult == 0 || this.hform.HLastResult == false){
                    let count = 0
                    console.log('this.checkItems: ',this.checkItems);
                    for (let key in this.checkItems) {
                        if (this.checkItems.hasOwnProperty(key)) {
                            let element = this.checkItems[key];
                            if(element.HResult == 0){
                            if(element.HResult == 2){
                                count ++
                            }
                            
pages/ZLGL/xunjianjianyan/PatrolProcCheckBill.vue
@@ -35,8 +35,13 @@
                        </view>
                        <view class="icon-wrapper-big">
                            <uni-icons class="right-icon" type="scan"
                                style="background-color: #3a78ff;padding: 6rpx; color: #fff;border-radius: 100%;"
                                size="20" @click="toScanCode"></uni-icons>
                                :class="!hasSourceBill?'enable-icon-button':'disable-icon-button'"
                                :disabled="hasSourceBill" size="20" @click="toScanCode"></uni-icons>
                        </view>
                        <view class="icon-wrapper-big">
                            <uni-icons class="right-icon" type="search"
                                :class="!hasSourceBill?'enable-icon-button':'disable-icon-button'"
                                :disabled="hasSourceBill" size="20" @click="toBillSelector"></uni-icons>
                        </view>
                    </view>
@@ -462,6 +467,8 @@
                <view class="item" v-for="(item,index) in popList" :key="index" @tap="toAbnm(item)">{{item}}</view>
            </view>
        </uni-popup>
        <BillListPopupVue ref="billList" :HBillType="hform.HBillType" :HSourceBillType="hform.HSourceBillType"
            :HStockOrgID="hform.HStockOrgID" @BillSelectComplete="HandleBillSelectComplete"></BillListPopupVue>
    </view>
</template>
@@ -479,6 +486,7 @@
    import ProcExchBillPopupVue from "../../../components/ZLGL/ProcExchBillPopup.vue";
    import ProcessPopupVue from "../../../components/ZLGL/ProcessPopup.vue";
    import CheckProjectPopupVue from "../../../components/ZLGL/CheckProjectPopup.vue";
    import BillListPopupVue from "../../../components/BillListPopup/BillListPopup.vue";
    import {
        getUserInfo
    } from "../../../utils/auth";
@@ -496,6 +504,7 @@
            ProcExchBillPopupVue,
            ProcessPopupVue,
            CheckProjectPopupVue,
            BillListPopupVue,
        },
        computed: {
            judgeConclusion: {
@@ -583,6 +592,7 @@
                ],
                // 主表属性
                hform: {
                    HBillType: '7520',
                    HSourceBillType: "3790",
                    HSourceBillNo: "",
                    HBillNo: "",
@@ -636,6 +646,7 @@
                    HMainSourceInterID: "0",
                    HMainSourceEntryID: "1",
                    HMainSourceBillNo: "",
                    HStockOrgID: uni.getStorageSync('OrganizationID'),
                },
                // 检验项目和抽样检验 值
                checkItems: {},
@@ -661,6 +672,29 @@
            HSourceBillTypeNameChange(e) {
                this.HSourceBillType = this.HSourceBillTypeNameList[e.detail.value];
                this.hform.HSourceBillType = this.HSourceBillTypeValueList[e.detail.value];
                const pages = getCurrentPages()
                // 获取页面栈中的最后一个元素,也就是当前显示的页面
                const currentPage = pages[pages.length - 1]
                // 选择源单类型后 缓存当前页面选择
                uni.setStorageSync(`${currentPage.route.split("/").pop()}_HSourceBillTypeCache`, {
                    HSourceBillTypeName: this.HSourceBillType,
                    HSourceBillType: this.hform.HSourceBillType
                })
            },
            // 读取缓存
            loadCache() {
                const pages = getCurrentPages()
                // 获取页面栈中的最后一个元素,也就是当前显示的页面
                const currentPage = pages[pages.length - 1]
                let HBillTypeCache = uni.getStorageSync(`${currentPage.route.split("/").pop()}_HSourceBillTypeCache`)
                if (HBillTypeCache) {
                    this.HSourceBillType = HBillTypeCache.HSourceBillTypeName
                    this.hform.HSourceBillType = HBillTypeCache.HSourceBillType
                    this.hform.HMainSourceBillType = HBillTypeCache.HSourceBillType
                }
            },
            toBillSelector() {
                this.$refs['billList'].showPopup()
            },
            toScanCode() {
                MpaasScan.scanCode((res) => {
@@ -671,58 +705,228 @@
            },
            async getSourceBillInfo(HBarCode) {
                console.log('HBarCode: ', HBarCode);
                // 根据单据类型,调用不同的下推函数
                if (this.hform.HSourceBillType == 3790) {
                    // 工序进站接收单列表首检
                    await this.LoadingInformation_StationInBill(HBarCode);
                    if (
                        (uni.getStorageSync("OrganizationID") == "7667152" &&
                            uni.getStorageSync("Organization") == "CMR Technology Mexico S.A. de C.V.") ||
                        (uni.getStorageSync("OrganizationID") == "100199" &&
                            uni.getStorageSync("Organization") == "杭州斯莫尔磁性材料有限公司")
                    ) {
                        await this.GetCheckItemID(); // 客户为斯莫尔,进入按照质检方案表头上的物料绑定带出默认方案
                let res = await CommonUtils.doRequest2Async({
                    url: "/WEBSController/get_CheckBillBarCode_Json_CheckItem",
                    data: {
                        HBillType: this.hform.HBillType,
                        HSourceBillType: this.hform.HSourceBillType,
                        HBarCode: HBarCode,
                        HInterID: 0,
                        HEntryID: 0,
                        Mode: 1, //扫码模式
                        user: getUserInfo()["Czymc"]
                    }
                    return;
                })
                console.log(res)
                let {
                    data,
                    Message,
                    count
                } = res.data
                if (count == 1) {
                    if (this.hform.HSourceBillType == "3772") {
                        // 工序流转卡
                        this.hform.HMaterID = data[0]['HMaterID']
                        this.hform.HMaterName = data[0]['产品名称']
                        this.hform.HMaterNumber = data[0]['产品代码']
                        this.hform.HMainSourceBillNo = data[0]['单据号']
                        this.hform.HSourceBillNo = data[0]['单据号']
                        this.hform.HMainSourceInterID = data[0].HInterID
                        this.hform.HMainSourceEntryID = data[0].HEntryID
                        this.hform.HQCSchemeName = data[0].检验方案名称
                        this.hform.HQCSchemeID = data[0].检验方案ID
                        this.hform.HSourceBillQty = data[0].HSourceBillQty
                        this.hasSourceBill = true
                        this.hform.HICMOBillNo = data[0].任务单号
                        this.hform.HICMOInterID = data[0].HICMOInterID
                        this.hform.HICMOEntryID = data[0].HICMOEntryID
                        this.hform.HICMOQty = data[0].生产数量
                        this.hform.HProcExchBillNo = data[0].单据号
                        this.hform.HProcExchInterID = data[0].HInterID
                        this.hform.HProcExchEntryID = data[0].HEntryID
                        this.hform.HProcExchQty = data[0].流转卡数量
                        this.hform.HSourceName = data[0].生产资源
                        this.hform.HSourceID = data[0].HSourceID
                        this.hform.HProcID = data[0].HProcID
                        this.hform.HProcName = data[0].当前工序
                    } else if (this.hform.HSourceBillType == "3790") {
                        // 工序进站接收单
                        this.hform.HMaterID = data[0]['HMaterID']
                        this.hform.HMaterName = data[0]['产品名称']
                        this.hform.HMaterNumber = data[0]['产品代码']
                        this.hform.HMainSourceBillNo = data[0].单据号
                        this.hform.HSourceBillNo = data[0].单据号
                        this.hform.HMainSourceInterID = data[0].HInterID
                        this.hform.HMainSourceEntryID = data[0].HEntryID
                        this.hform.HQCSchemeName = data[0].检验方案名称
                        this.hform.HQCSchemeID = data[0].检验方案ID
                        this.hform.HSourceBillQty = data[0].检验数量
                        this.hform.HICMOBillNo = data[0].任务单号
                        this.hform.HICMOInterID = data[0].HICMOInterID
                        this.hform.HICMOEntryID = data[0].HICMOEntryID
                        this.hform.HICMOQty = data[0].生产数量
                        this.hform.HCheckQty = data[0].进站数量
                        this.hform.HProcExchBillNo = data[0].HProcExchBillNo
                        this.hform.HProcExchInterID = data[0].HProcExchInterID
                        this.hform.HProcExchEntryID = data[0].HProcExchEntryID
                        this.hform.HProcExchQty = data[0].流转卡数量
                        this.hform.HSourceName = data[0].生产资源
                        this.hform.HSourceID = data[0].HSourceID
                        this.hform.HProcID = data[0].HProcID
                        this.hform.HProcName = data[0].当前工序
                        this.hform.HTakeSampleCheckBillNo = data[0].单据号
                        this.hform.HTakeSampleCheckBillID = data[0].HInterID
                    } else {
                        // 其他类型(3793工序委外接收单、3710生产订单)
                        this.hform.HMaterID = data[0]['HMaterID']
                        this.hform.HMaterName = data[0]['产品名称']
                        this.hform.HMaterNumber = data[0]['产品代码']
                        this.hform.HMainSourceBillNo = data[0]['单据号']
                        this.hform.HSourceBillNo = data[0]['单据号']
                        this.hform.HMainSourceInterID = data[0].HInterID
                        this.hform.HMainSourceEntryID = data[0].HEntryID
                        this.hform.HQCSchemeName = data[0].检验方案名称
                        this.hform.HQCSchemeID = data[0].检验方案ID
                        this.hform.HSourceBillQty = data[0].HSourceBillQty
                        this.hasSourceBill = true
                        this.hform.HICMOBillNo = data[0].任务单号
                        this.hform.HICMOInterID = data[0].HICMOInterID
                        this.hform.HICMOEntryID = data[0].HICMOEntryID
                        this.hform.HICMOQty = data[0].生产数量
                        this.hform.HProcExchBillNo = data[0].单据号
                        this.hform.HProcExchInterID = data[0].HInterID
                        this.hform.HProcExchEntryID = data[0].HEntryID
                        this.hform.HProcExchQty = data[0].流转卡数量
                        this.hform.HSourceName = data[0].生产资源
                        this.hform.HSourceID = data[0].HSourceID
                        this.hform.HProcID = data[0].HProcID
                        this.hform.HProcName = data[0].当前工序
                    }
                    this.get_CheckItem();
                } else {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: Message
                    })
                }
                if (this.hform.HSourceBillType == 3793) {
                    // 工序委外接收单列表首检
                    await this.LoadingInformation_StationEntrustOutBill(HBarCode);
                    if (
                        (uni.getStorageSync("OrganizationID") == "7667152" &&
                            uni.getStorageSync("Organization") == "CMR Technology Mexico S.A. de C.V.") ||
                        (uni.getStorageSync("OrganizationID") == "100199" &&
                            uni.getStorageSync("Organization") == "杭州斯莫尔磁性材料有限公司")
                    ) {
                        await this.GetCheckItemID(); // 客户为斯莫尔,进入按照质检方案表头上的物料绑定带出默认方案
            },
            async HandleBillSelectComplete(e) {
                console.log('e: ', e);
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: "/WEBSController/get_CheckBillBarCode_Json_CheckItem",
                        data: {
                            HBillType: this.hform.HBillType,
                            HSourceBillType: this.hform.HSourceBillType,
                            HBarCode: "",
                            HInterID: e?.HInterID,
                            HEntryID: e?.HEntryID,
                            Mode: 2, //选单模式
                            user: getUserInfo()["Czymc"]
                        }
                    })
                    let {
                        data,
                        Message,
                        count
                    } = res.data
                    if (count == 1) {
                        if (this.hform.HSourceBillType == "3772") {
                            // 工序流转卡
                            this.hform.HMaterID = data[0]['HMaterID']
                            this.hform.HMaterName = data[0]['产品名称']
                            this.hform.HMaterNumber = data[0]['产品代码']
                            this.hform.HMainSourceBillNo = data[0]['单据号']
                            this.hform.HSourceBillNo = data[0]['单据号']
                            this.hform.HMainSourceInterID = data[0].HInterID
                            this.hform.HMainSourceEntryID = data[0].HEntryID
                            this.hform.HQCSchemeName = data[0].检验方案名称
                            this.hform.HQCSchemeID = data[0].检验方案ID
                            this.hform.HSourceBillQty = data[0].HSourceBillQty
                            this.hform.HICMOBillNo = data[0].任务单号
                            this.hform.HICMOInterID = data[0].HICMOInterID
                            this.hform.HICMOEntryID = data[0].HICMOEntryID
                            this.hform.HICMOQty = data[0].生产数量
                            this.hform.HProcExchBillNo = data[0].单据号
                            this.hform.HProcExchInterID = data[0].HInterID
                            this.hform.HProcExchEntryID = data[0].HEntryID
                            this.hform.HProcExchQty = data[0].流转卡数量
                            this.hform.HSourceName = data[0].生产资源
                            this.hform.HSourceID = data[0].HSourceID
                            this.hform.HProcID = data[0].HProcID
                            this.hform.HProcName = data[0].当前工序
                        } else if (this.hform.HSourceBillType == "3790") {
                            // 工序进站接收单
                            this.hform.HMaterID = data[0]['HMaterID']
                            this.hform.HMaterName = data[0]['产品名称']
                            this.hform.HMaterNumber = data[0]['产品代码']
                            this.hform.HMainSourceBillNo = data[0].单据号
                            this.hform.HSourceBillNo = data[0].单据号
                            this.hform.HMainSourceInterID = data[0].HInterID
                            this.hform.HMainSourceEntryID = data[0].HEntryID
                            this.hform.HQCSchemeName = data[0].检验方案名称
                            this.hform.HQCSchemeID = data[0].检验方案ID
                            this.hform.HSourceBillQty = data[0].检验数量
                            this.hform.HICMOBillNo = data[0].任务单号
                            this.hform.HICMOInterID = data[0].HICMOInterID
                            this.hform.HICMOEntryID = data[0].HICMOEntryID
                            this.hform.HICMOQty = data[0].生产数量
                            this.hform.HCheckQty = data[0].进站数量
                            this.hform.HProcExchBillNo = data[0].HProcExchBillNo
                            this.hform.HProcExchInterID = data[0].HProcExchInterID
                            this.hform.HProcExchEntryID = data[0].HProcExchEntryID
                            this.hform.HProcExchQty = data[0].流转卡数量
                            this.hform.HSourceName = data[0].生产资源
                            this.hform.HSourceID = data[0].HSourceID
                            this.hform.HProcID = data[0].HProcID
                            this.hform.HProcName = data[0].当前工序
                            this.hform.HTakeSampleCheckBillNo = data[0].单据号
                            this.hform.HTakeSampleCheckBillID = data[0].HInterID
                        } else {
                            // 其他类型(3793工序委外接收单、3710生产订单)
                            this.hform.HMaterID = data[0]['HMaterID']
                            this.hform.HMaterName = data[0]['产品名称']
                            this.hform.HMaterNumber = data[0]['产品代码']
                            this.hform.HMainSourceBillNo = data[0]['单据号']
                            this.hform.HSourceBillNo = data[0]['单据号']
                            this.hform.HMainSourceInterID = data[0].HInterID
                            this.hform.HMainSourceEntryID = data[0].HEntryID
                            this.hform.HQCSchemeName = data[0].检验方案名称
                            this.hform.HQCSchemeID = data[0].检验方案ID
                            this.hform.HSourceBillQty = data[0].HSourceBillQty
                            this.hform.HICMOBillNo = data[0].任务单号
                            this.hform.HICMOInterID = data[0].HICMOInterID
                            this.hform.HICMOEntryID = data[0].HICMOEntryID
                            this.hform.HICMOQty = data[0].生产数量
                            this.hform.HProcExchBillNo = data[0].单据号
                            this.hform.HProcExchInterID = data[0].HInterID
                            this.hform.HProcExchEntryID = data[0].HEntryID
                            this.hform.HProcExchQty = data[0].流转卡数量
                            this.hform.HSourceName = data[0].生产资源
                            this.hform.HSourceID = data[0].HSourceID
                            this.hform.HProcID = data[0].HProcID
                            this.hform.HProcName = data[0].当前工序
                        }
                        console.log('获取源单:', data)
                        this.get_CheckItem();
                        this.hasSourceBill = true;
                        this.$refs['billList'].exit();
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: Message
                        })
                    }
                    return;
                }
                if (this.hform.HSourceBillType == 3710) {
                    // 生产订单列表首检
                    await this.LoadingInformation_ICMO(HBarCode);
                    if (
                        (uni.getStorageSync("OrganizationID") == "7667152" &&
                            uni.getStorageSync("Organization") == "CMR Technology Mexico S.A. de C.V.") ||
                        (uni.getStorageSync("OrganizationID") == "100199" &&
                            uni.getStorageSync("Organization") == "杭州斯莫尔磁性材料有限公司")
                    ) {
                        await this.GetCheckItemID(); // 客户为斯莫尔,进入按照质检方案表头上的物料绑定带出默认方案
                    }
                    return;
                }
                if (this.hform.HSourceBillType == 3772) {
                    // 工序流转卡列表首检
                    await this.LoadingInformation_ProcExchange(HBarCode);
                    if (
                        (uni.getStorageSync("OrganizationID") == "7667152" &&
                            uni.getStorageSync("Organization") == "CMR Technology Mexico S.A. de C.V.") ||
                        (uni.getStorageSync("OrganizationID") == "100199" &&
                            uni.getStorageSync("Organization") == "杭州斯莫尔磁性材料有限公司")
                    ) {
                        await this.GetCheckItemID(); // 客户为斯莫尔,进入按照质检方案表头上的物料绑定带出默认方案
                    }
                    return;
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `获取源单信息错误: ${err}`
                    })
                }
            },
            async GetCheckItemID() {
@@ -1690,7 +1894,7 @@
                    for (let key in this.checkItems) {
                        if (this.checkItems.hasOwnProperty(key)) {
                            let element = this.checkItems[key];
                            if(element.HResult == 0){
                            if(element.HResult == 2){
                                count ++
                            }
                            
@@ -2187,7 +2391,8 @@
            await this.InitHSource();
            await this.InitHWorkShift();
            await this.InitHEmp();
            await this.getErrMsgBackType()
            await this.getErrMsgBackType();
            await this.loadCache();
        },
    };
</script>
pages/baogong/DayPlanBillList.vue
@@ -7,8 +7,8 @@
                    <view class="detail" v-if="currentOrder[0].HSourceName" style="width: 100%;">
                        <text>当前设备:</text>{{currentOrder[0].HSourceName}}
                    </view>
                    <view class="detail" v-if="currentOrder[0].首检次数?currentOrder[0].首检次数:0" style="width: 100%;">
                        <text>首检次数:</text>{{currentOrder[0].首检次数}}
                    <view class="detail" >
                        <text>首检次数:</text>{{currentOrder[0].首检次数?currentOrder[0].首检次数:0}}
                    </view>
                    <view class="detail">
                        <text>巡检次数:</text>{{currentOrder[0].巡检次数?currentOrder[0].巡检次数:0}}
pages/baogong/OA_ErrMsgBackBill.vue
@@ -902,8 +902,8 @@
                        this.hform.HSourceID = data[0].HSourceID //生产资源id
                        this.hform.HSourceName = data[0].生产资源名称 //生产资源
                        this.hform.HProcExchBillNo = data[0].工序流转卡号 //源单单号
                        this.hform.HProcExchEntryID = data[0].HProcExchInterID //源单主内码
                        this.hform.HProcExchInterID = data[0].HProcExchEntryID //源单子内码
                        this.hform.HProcExchEntryID = data[0].HProcExchEntryID //源单主内码
                        this.hform.HProcExchInterID = data[0].HProcExchInterID //源单子内码
                        this.hform.HICMOBillNo = data[0].生产订单号
                        this.hform.HICMOInterID = data[0].HICMOInterID
                        this.hform.HICMOEntryID = data[0].HICMOEntryID
@@ -1001,6 +1001,12 @@
                            this.hform.HQty = res.data.data[0].计划数量 //计划数量
                            this.hform.HSourceID = res.data.data[0].HSourceID //生产资源id
                            this.hform.HSourceName = res.data.data[0].生产资源 //生产资源
                            this.hform.HProcExchBillNo = data[0].流转卡号 //源单单号
                            this.hform.HProcExchInterID = data[0].流转卡主内码 //源单主内码
                            this.hform.HProcExchEntryID = data[0].流转卡子内码 //源单子内码
                            this.hform.HICMOBillNo = data[0].HICMOBillNo
                            this.hform.HICMOInterID = data[0].HICMOInterID
                            this.hform.HICMOEntryID = data[0].HICMOEntryID
                        } else {
                            uni.showToast({
                                title: res.data.Message,
pages/caigouruku/POStockInBill.vue
@@ -177,9 +177,9 @@
            <view v-if="tabs == 2">
                <view class="list" v-for="(item,index) in Materlist" :key="index">
                    <uni-card :title="item.物料名称" style="margin: 10px;" @tap="delMater(item, $event)">
                    <uni-card :title="item.物料名称" style="margcmdSearchin: 10px;" @tap="delMater(item,$event)">
                        <!-- 物料代码作为可点击链接 -->
                        <view class="card-header" @tap.stop="gotoInventoryQuery(item.物料代码)">
                        <view class="card-header" @tap.stop="gotoInventoryQuery(item.物料代码,$event)">
                            <text class="link-text">{{$t(`${HModName}.物料代码`)}}:{{item.物料代码}}</text>
                        </view>
@@ -1603,10 +1603,11 @@
            delMater(item) {
                if (event && event.target.classList && event.target.classList.contains('link-text')) {
                    return; // 如果是链接点击,不执行删除
                }
                uni.navigateTo({
                        url:'../tiaomamingxi/tiaomamingxi?HInterID=' + this.hform.HInterID + '&HMaterID=' + item.HMaterID + '&HBillType=' + this.hform.HBillType
                    })
                }else{
                    uni.navigateTo({
                            url:'../tiaomamingxi/tiaomamingxi?HInterID=' + this.hform.HInterID + '&HMaterID=' + item.HMaterID + '&HBillType=' + this.hform.HBillType
                        })
                }
                // uni.showModal({
                //     title: '提示',
pages/gongxuOut/Cj_StationOutBill.vue
@@ -663,9 +663,9 @@
                }
                
            }
            this.getHMaterList()
            this.getHProcList()
            this.getHSupList()
            //this.getHMaterList()
            //this.getHProcList()
            //this.getHSupList()
            this.getHSourceList()
            this.getHGroupList()
            this.getHEmpList()
@@ -991,12 +991,7 @@
                                this.arrayHSourceName[i] = res.data.data.Gy_Source[i].生产资源
                            }
                            this.$forceUpdate();
                        } else {
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
                            })
                        }
                        }
                    },
                    fail: (res) => {
                        console.log(res);
@@ -1057,12 +1052,7 @@
                                this.arrayHGroupName[i] = res.data.data[i].班组
                            }
                            this.$forceUpdate();
                        } else {
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
                            })
                        }
                        }
                    },
                    fail: (res) => {
                        console.log(res);
@@ -1097,11 +1087,6 @@
                                this.arrayHEmpName[i] = res.data.data[i].HName
                            }
                            this.$forceUpdate();
                        } else {
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
                            })
                        }
                    },
                    fail: (res) => {
pages/gongxuOut/Cj_StationOutBillList.vue
@@ -255,7 +255,7 @@
                arrayComparator:['=','>=','>','<=','<','<>','包含','左包含','右包含','不包含'],
                hform:{
                    HStatus:'未审核',
                    HBeginDate: new Date().toISOString().split('T')[0],
                    HBeginDate: new Date(Date.now() - 10 * 24 * 3600 * 1000).toISOString().split('T')[0],
                    HEndDate:'',
                    HWorkBillNo:'',
                    HBillNo:'',
pages/gongxuOut/Cj_StationOutBill_Standard.vue
@@ -484,6 +484,7 @@
            </view> -->
            <view class="bottom-btn">
                <button v-if="hform.HIsTimeFlag==0" class="btn-a" size="mini" @tap="beginWork()">开工</button>
                <button v-if="btnType == 0 && !isEdit" class="btn-a" size="mini" @tap="submit">提交</button>
                <button v-if="btnType != 0 && !isEdit" class="btn-a" size="mini" @tap="ifEdit">修改</button>
                <button v-if="btnType != 0 && isEdit" class="btn-a" size="mini" @tap="submit">提交</button>
@@ -706,12 +707,7 @@
            }) {
                console.log(detail.value[0])
                this.hform.HIsTimeFlag = detail.value[0] || 0
                if(detail.value[0]){
                    this.getNewHRelBeginDate()
                    this.hform.HRelEndTime = getDateTime.dateTimeStr('y-m-d h:i');
                }else{
                    this.hform.HWorkTimes = 0;
                }
            },
            //通过登录用户获取默认值
            getDefValByUser() {
@@ -1210,6 +1206,10 @@
                            }else{
                                //设置主序列
                                this.setMainHSEQ();
                                //设置默认工序号
                                if(this.hform.HProcNo!=""&&this.hform.HProcNo!=null){
                                    this.getHProcNoData2(this.hform.HBarCode,this.hform.HProcNo,this.hform.HSEQNumber)
                                }
                            }
                        } else {
                            uni.showToast({
@@ -1334,9 +1334,9 @@
                if(CommonUtils.isEmpty(this.hform.HQty) == true){
                    return {pass: false, message: '提交失败: 报废数量为空'}
                }
                if(this.hform.HIsTimeFlag == 1 && CommonUtils.isEmpty(this.hform.HWorkTimes, true, true)) {
                    return {pass: false, message: '提交失败: 开启计时,但工时为0或空'}
                }
                // if(this.hform.HIsTimeFlag == 1 && CommonUtils.isEmpty(this.hform.HWorkTimes, true, true)) {
                //     return {pass: false, message: '提交失败: 开启计时,但工时为0或空'}
                // }
                return {pass: true, message: ''}
            },
            //编辑
@@ -1479,7 +1479,10 @@
                                } else if (barNo1 == 'GXLX' && data.工序号) {
                                    this.hform.HProcNo = data.工序号
                                }
                            }
                                //视图获取当前最新的工序号
                            }else if(data.工序汇报当前工序号!=null && data.工序汇报当前工序号!=""){
                                this.hform.HProcNo = data.工序汇报当前工序号
                            }
                            this.hform.HICMOInterID = data.hicmointerid
                            this.hform.HICMOBillNo = data.任务单号
                            this.hform.HMaterID = data.HMaterID
@@ -1501,7 +1504,8 @@
                            this.hform.HCenterID = data.HCenterID
                            this.hform.NoOutboundHqty = (data.流转卡数量 - data.出站报废关联数量 - data.出站关联数量)
                            this.hform.HStyleNumber = data['款号']
                            //设置序列
                            this.hform.HNotReportQty = data['未报工数量']
                            //设置序列
                            this.getHSEQList(e);
                            
                        } else {
@@ -1588,10 +1592,7 @@
                            this.hform.HNotReportQty = data['未报工数量']
                            this.hform.HProcNumber = data['工序代码']
                            this.hform.HIsTimeFlag = data['是否计时'] ? 1 : 0
                            if(data['是否计时']){
                                this.hform.HRelEndTime = getDateTime.dateTimeStr('y-m-d h:i');
                                this.getNewHRelBeginDate();
                            }
                            this.hform.HSEQName = data.序列名称
                           // this.hform.HStyleNumber = data['款号']
                            // this.hform.HQty = data.合格数量
@@ -1618,59 +1619,59 @@
                });
            },
            //获取最新的报工日期
            getNewHRelBeginDate(){
                uni.request({
                    url: this.serverUrl + '/Cj_StationOutBill/get_Display',
                    data:{
                        sWhere: ` and HEmpID = N'${this.hform.HEmpID}'`,
                        user: uni.getStorageSync('HUserName'),
                        HBillSubType:'',
                    },
                    success: (res) => {
                        if(res.data.count == 1){
                            //获取列表数据
                            const listData = res.data.data
                            // 获取当前日期(去掉时间部分)
                            const today = new Date();
                            today.setHours(0, 0, 0, 0);
                            if(listData.length==0){
                                this.hform.HRelBeginTime = getDateTime.dateTimeSetHoureStr(7, 40, 0, 0,'y-m-d h:i');
                                this.hform.HWorkTimes=getDateTime.calculateHoursDiff(this.hform.HRelBeginTime,this.hform.HRelEndTime);
                            }else{
                                // 从对象数组中提取所有日期字段并找到最大值
                                const maxDate = listData.reduce((max, obj) => {
                                    const date = new Date(obj.出站时间);
                                    return date > max ? date : max;
                                }, new Date(0)); // 初始值为最小日期
                                // 比较最大日期和今天的日期部分(不比较时间)
                                const maxDateDateOnly = new Date(maxDate);
                                maxDateDateOnly.setHours(0, 0, 0, 0);
                                  // 比较最大日期和今天
                                if (maxDateDateOnly.getTime() !== today.getTime()) {
                                    // 如果不是今天,返回当前日期
                                    this.hform.HRelBeginTime = getDateTime.dateTimeSetHoureStr(7, 40, 0, 0,'y-m-d h:i');
                                    this.hform.HWorkTimes=getDateTime.calculateHoursDiff(this.hform.HRelBeginTime,this.hform.HRelEndTime);
                                }else{
                                    this.hform.HRelBeginTime = getDateTime.formatDate(maxDate);
                                    this.hform.HWorkTimes=getDateTime.calculateHoursDiff(this.hform.HRelBeginTime,this.hform.HRelEndTime);
                                }
                            }
                        }else{
                            uni.showToast({
                                title:res.data.Message,
                                icon:'none'
                            })
                        }
                    },
                    fail: (res) => {
                        console.log(res);
                        uni.showToast({
                            title:'接口请求失败',
                            icon:'none'
                        })
                    },
                });
            },
            // getNewHRelBeginDate(){
            //     uni.request({
            //         url: this.serverUrl + '/Cj_StationOutBill/get_Display',
            //         data:{
            //             sWhere: ` and HEmpID = N'${this.hform.HEmpID}'`,
            //             user: uni.getStorageSync('HUserName'),
            //             HBillSubType:'',
            //         },
            //         success: (res) => {
            //             if(res.data.count == 1){
            //                 //获取列表数据
            //                 const listData = res.data.data
            //                 // 获取当前日期(去掉时间部分)
            //                 const today = new Date();
            //                 today.setHours(0, 0, 0, 0);
            //                 if(listData.length==0){
            //                     this.hform.HRelBeginTime = getDateTime.dateTimeSetHoureStr(7, 40, 0, 0,'y-m-d h:i');
            //                     this.hform.HWorkTimes=getDateTime.calculateHoursDiff(this.hform.HRelBeginTime,this.hform.HRelEndTime);
            //                 }else{
            //                     // 从对象数组中提取所有日期字段并找到最大值
            //                     const maxDate = listData.reduce((max, obj) => {
            //                         const date = new Date(obj.出站时间);
            //                         return date > max ? date : max;
            //                     }, new Date(0)); // 初始值为最小日期
            //                     // 比较最大日期和今天的日期部分(不比较时间)
            //                     const maxDateDateOnly = new Date(maxDate);
            //                     maxDateDateOnly.setHours(0, 0, 0, 0);
            //                       // 比较最大日期和今天
            //                     if (maxDateDateOnly.getTime() !== today.getTime()) {
            //                         // 如果不是今天,返回当前日期
            //                         this.hform.HRelBeginTime = getDateTime.dateTimeSetHoureStr(7, 40, 0, 0,'y-m-d h:i');
            //                         this.hform.HWorkTimes=getDateTime.calculateHoursDiff(this.hform.HRelBeginTime,this.hform.HRelEndTime);
            //                     }else{
            //                         this.hform.HRelBeginTime = getDateTime.formatDate(maxDate);
            //                         this.hform.HWorkTimes=getDateTime.calculateHoursDiff(this.hform.HRelBeginTime,this.hform.HRelEndTime);
            //                     }
            //                 }
            //             }else{
            //                 uni.showToast({
            //                     title:res.data.Message,
            //                     icon:'none'
            //                 })
            //             }
            //         },
            //         fail: (res) => {
            //             console.log(res);
            //             uni.showToast({
            //                 title:'接口请求失败',
            //                 icon:'none'
            //             })
            //         },
            //     });
            // },
            //新增
            getNewData() {
                
@@ -1933,6 +1934,44 @@
                    }
                });
            },
            //开工按钮
            beginWork(){
                if(this.hform.lngBillKey==''||this.hform.lngBillKey==0||this.hform.lngBillSubKey==''||this.hform.lngBillSubKey==0){
                    CommonUtils.showTips({
                        title: "开工失败",
                        message: `开工失败请扫描流转卡并选择工序`,
                    });
                    return ;
                }
                uni.request({
                    url: this.serverUrl + '/Cj_StationOutBill/startTranslating',
                    method: 'GET',
                    data: {
                        HProcExchInterID: this.hform.lngBillKey,
                        HProcExchEntryID:this.hform.lngBillSubKey,
                        HOrgID:this.hform.HPRDOrgID,
                        HProcNo:this.hform.HProcNo,
                        user:uni.getStorageSync('HUserName')
                    },
                    success: (res) => {
                        uni.hideLoading();
                        if (res.data.count == 1) {
                            uni.showToast({ title: '开工成功', icon: 'none' });
                        } else {
                            CommonUtils.showTips({
                                title: "开工失败",
                                message: `${res.data.Message}`,
                            });
                        }
                    },
                    fail: () => {
                        uni.hideLoading();
                        uni.showToast({ title: '接口请求失败', icon: 'none' });
                    },
                });
            }
        }
    }
</script>
pages/index/login.vue
@@ -111,10 +111,10 @@
                    "杭州凯贝奈特外网": 'http://erp.hzcabinet.cn:9090/API/',
                    "翁涛涛本地测试": 'http://localhost:81/API/',
                    "陈镐哲本地测试": 'http://192.168.0.174:81/API/',
                    "陈镐哲本地测试2": 'http://192.168.88.82:81/API/',
                    "陈镐哲本地测试2": 'http://192.168.88.45:81/API/',
                    "张瑞广本地测试": 'http://localhost:8082/API/',
                    "余思杰本地测试": 'http://localhost:8082/LuBaoAPI/',
                    "杨权鑫本地测试": 'http://172.20.10.2:8082/API/',
                    "杨权鑫本地测试": 'http://192.168.0.180:8082/API/',
                    "王仪本地测试": 'http://192.168.0.74:8080/API/',
                    // 小卫内外网
                    "苏州卫智科技-外网": 'http://221.224.60.42:8082/API_WW/',
@@ -170,7 +170,7 @@
        },
        methods: {
            async ApplyLanguagePack(lang, forceUpdate = false) {
                // // 读取语言包并加载
                // 读取语言包并加载
                // let {
                //     data,
                //     getRemoteFile
pages/index/tab1.vue
@@ -9,7 +9,7 @@
            <view v-if="!canEdit" :hidden="item.hidden||!item.id" class="box" v-for="(item,index) in itemData"
                :key="index" @tap="toUrl(item)">
                <template v-if="item.corner">
                    <uni-badge :text="item.cornerCount" type="error" :max-num="99" size="normal" absolute="rightTop"
                    <uni-badge style="z-index: 997;" :text="item.cornerCount" type="error" :max-num="99" size="normal" absolute="rightTop"
                        :offset="[7, 7]">
                        <image :src="item.img" mode=""></image>
                    </uni-badge>
pages/index/tab2.vue
@@ -9,7 +9,7 @@
            <view v-if="!canEdit" :hidden="item.hidden||!item.id" class="box" v-for="(item,index) in itemData"
                :key="index" @tap="toUrl(item)">
                <template v-if="item.corner">
                    <uni-badge :text="bindingData[item.cornerCount]" type="error" :max-num="99" size="normal" absolute
                    <uni-badge style="z-index: 997;" :text="bindingData[item.cornerCount]" type="error" :max-num="99" size="normal" absolute
                        :offset="[7, 7]">
                        <image :src="item.img" mode=""></image>
                    </uni-badge>
@@ -205,7 +205,7 @@
                    {
                        "img": "../../static/icon/icon18.png",
                        "text": "其他出库校验暂存列表",
                        "url": "/pages/qitachuku/qitachuku",
                        "url": "/pages/qitachukujiaoyan/qitachukujiaoyan",
                        "id": 21,
                        "hidden": false
                    },
@@ -630,6 +630,13 @@
                        "id": 55,
                        "hidden": false
                    },
                    {
                        "img": "../../static/icon/icon15.png",
                        "text": "不良品评审申请单列表",
                        "url": "/pages/ZLGL/QCNoPassProdRequestBillMain/QCNoPassProdRequestBillMainList",
                        "id": 55,
                        "hidden": false
                    },
                ]
            }
        },
pages/index/tab4.vue
@@ -9,7 +9,7 @@
            <view v-if="!canEdit" :hidden="item.hidden||!item.id" class="box" v-for="(item,index) in itemData"
                :key="index" @tap="toUrl(item)">
                <template v-if="item.corner">
                    <uni-badge :text="item.cornerCount" type="error" :max-num="99" size="normal" absolute="rightTop"
                    <uni-badge style="z-index: 997;" :text="item.cornerCount" type="error" :max-num="99" size="normal" absolute="rightTop"
                        :offset="[7, 7]">
                        <image :src="item.img" mode=""></image>
                    </uni-badge>
@@ -212,6 +212,13 @@
                        "id": 55,
                        "hidden": false
                    },
                    {
                        "img": "../../static/icon/icon15.png",
                        "text": "不良品评审申请单",
                        "url": "/pages/ZLGL/QCNoPassProdRequestBillMain/QCNoPassProdRequestBillMain",
                        "id": 55,
                        "hidden": false
                    },
                    {
                        "img": "../../static/icon/icon15.png",
                        "text": "投料防错",
pages/qitachukujiaoyan/qitachukujiaoyan.vue
@@ -256,7 +256,7 @@
            },
            add(){
                uni.navigateTo({
                    url:'./detail?OperationType=1'
                    url:'./qitachukudanjiaoyan?OperationType=1'
                })
            },
            //编辑
pages/shengchanlingliao/PPickingCheckBill.vue
@@ -93,7 +93,7 @@
                </label>
            </view>
            <view v-if="tabs == 2">
                <view class="list" v-for="(item,index) in Materlist" :key="index" @tap.stop="delMater(item)">
                <view class="list" v-for="(item,index) in Materlist" :key="index" @tap="delMater(item)" @click="delMater(item)">
                    <uni-card :title="item.物料名称" :extra="'数量:'+item.数量" style="margin: 10px;">
                        <view class="card-detail">
                            <view class="detail">
pages/shengchanrukushengdan/Kf_ProductInBill.vue
@@ -773,15 +773,28 @@
                    } = res.data
                    if (count == 1) {
                        console.log('data: ', data);
                        if(data.length == 0) {
                            // 当数据库里面没有存储自定义的源单类型时,使用页面内定义的
                            return;
                        }
                        this.arrayHMainSourceBillType = []
                        this.arrayHMainSourceBillValue = []
                        Array.from(data).forEach(e => {
                            //this.arrayHMainSourceBillType.push(e['HSourceBillTypeName'])
                            for(var j = 0; j < this.$t("Kf_ProductInBill_PDA.select option").length; j++){
                                let HSourceBillType_FY = this.$t("Kf_ProductInBill_PDA.select option[" + j + "]").split("@");
                                if(e['HSourceBillType'] == HSourceBillType_FY[0]){
                                    this.arrayHMainSourceBillType.push(HSourceBillType_FY[1])
                            //判断翻译模块字段内容是否存在
                            if(this.$t("Kf_ProductInBill_PDA.select option").length > 0 ){
                                //循环翻译下拉框字段内容
                                for(var j = 0; j < this.$t("Kf_ProductInBill_PDA.select option").length; j++){
                                    //这里是源单类型动态加载,获取翻译字段内容中的源单ID进行翻译匹配
                                    let HSourceBillType_FY = this.$t("Kf_ProductInBill_PDA.select option[" + j + "]").split("@");
                                    //动态加载的源单类型ID与翻译文件中设置的源单类型ID一致
                                    if(e['HSourceBillType'] == HSourceBillType_FY[0]){
                                        //对源单类型文本进行翻译赋值
                                        this.arrayHMainSourceBillType.push(HSourceBillType_FY[1])
                                    }
                                }
                            }
                            else{
                                this.arrayHMainSourceBillType.push(e['HSourceBillTypeName'])
                            }
                            this.arrayHMainSourceBillValue.push(e['HSourceBillType'])
                        })
@@ -792,6 +805,8 @@
                        this.HMainSourceBillType = this.arrayHMainSourceBillType[0]
                        this.hform.HMainSourceBillType = this.arrayHMainSourceBillValue[0]
                    } else {
                        // 保底方案,使用页面内定义的源单类型
                        CommonUtils.showTips({
                            title: "温馨提示",
                            message: Message
pages/tiaomachaima/tiaomachaimaCopy_HK.vue
@@ -33,6 +33,8 @@
                    :disabled="cantGenerate">生成</button>
                <button type="default" :class="cantPrint ? 'btn-disabled' : 'btn-c'" @click="PrintHBarCode"
                    :disabled="cantPrint">打印</button>
                <button type="default" :class="cantPrint_HK ? 'btn-disabled' : 'btn-c'" @click="PrintHBarCode_HK"
                    :disabled="cantPrint_HK">海康打印</button>
                <button type="primary" @click="printerLabel2">测试打印2</button>
            </view>
        </view>
@@ -435,6 +437,34 @@
                printer.printGoToNextMark();
                console.log('测试打印QR结束');
            },
            printerLabel_HK() {
                //设置打印内容
                var HPrintData = "SIZE 58 mm,40 mm" + '\r\n';//设置标签纸张大小;
                HPrintData += "CLS" + '\r\n';//清除图像缓存区
                //TEXT X, Y, “font”, rotation, x-multiplication, y-multiplication, [alignment,]
                //X:文本X坐标; Y:文本Y坐标; font:字体名称; rotation:文字旋转角度(0:不旋转,90:90 度,180:180 度,270:270 度); x-multiplication:水平方向放大; y-multiplication:垂直方向放大; alignment:指定文本对齐方式(0:默认(居左),1:居左,2:居中,3:居右); content:需要打印的文本内容。
                HPrintData += 'TEXT 50, 50, "4",0,1,1,1' + '供应商名称:' + this.barCodeInfo['供应商'] + '\r\n';
                HPrintData += 'TEXT 50, 50, "4",0,1,1,1' + '物料代码:' + this.barCodeInfo['物料代码'] + '\r\n';
                HPrintData += 'TEXT 50, 50, "4",0,1,1,1' + '物料简称:' + this.barCodeInfo['物料简称'] + '\r\n';
                HPrintData += 'TEXT 50, 50, "4",0,1,1,1' + '数量:' + this.barCodeInfo['剩余数量'] + '\r\n';
                HPrintData += 'TEXT 50, 50, "4",0,1,1,1' + '工号:' + this.barCodeInfo['工号'] + '\r\n';
                HPrintData += 'TEXT 50, 50, "4",0,1,1,1' + '生产日期:' + this.barCodeInfo['生产日期'] + '\r\n';
                HPrintData += 'TEXT 50, 50, "4",0,1,1,1' + '流水号:' + this.barCodeInfo['流水号'] + '\r\n';
                HPrintData += 'TEXT 50, 50, "4",0,1,1,1' + '打印日期:' + formatDate + '\r\n';
                HPrintData += this.barCodeInfo['条码编号'];
                printer.sendCommand_HK(HPrintData);
            },
            // 发送打印命令
            sendCommand_HK(commandData) {
                if (this.ws.readyState === WebSocket.OPEN) {
                    // this.ws.send(JSON.stringify(commandData));
                    this.ws.send(commandData);
                } else {
                    console.error('WebSocket 未连接');
                }
            },
            doRequest(url, data, resFunction, errFunction, method) {
                uni.showLoading({
                    title: '加载中...'
@@ -675,6 +705,34 @@
                    CommonUtils.playSound(0);
                }
            },
            //海康打印按钮
            async PrintHBarCode() {
                // 防止重复点击
                if (this.isPrinting) {
                    uni.showToast({
                        title: '打印中,请稍候...',
                        icon: 'none'
                    });
                    return;
                }
                this.isPrinting = true;
                try {
                    this.printerLabel_HK(); //打印
                } catch (error) {
                    console.error('打印失败:', error);
                    this.isPrinting = false;
                    uni.showToast({
                        title: error.message || '打印失败',
                        icon: 'error',
                        duration: 2000
                    });
                    CommonUtils.playSound(0);
                }
            },
            toScanCode() {
                var mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module")
                mpaasScanModule.mpaasScan({
pages/tiaomamingxi/tiaomamingxi.vue
New file
@@ -0,0 +1,509 @@
<template>
    <view class="page" id="pageContent">
<!--        <view class="search-condition-zone">
            <view class="form-item">
                <view class="left">
                    条码:
                </view>
                <view class="right general">
                    <input type="text" v-model="hform.HBarCode" />
                </view>
            </view>
            <view class="form-item">
                <view class="left">
                    数量:
                </view>
                <view class="right general">
                    <input type="text" v-model="hform.iQty" />
                </view>
            </view>
        </view> -->
<!--        <view class="button-zone">
            <button type="default" class="btn-a" size="mini" @tap="cmdChange">调整</button>
            <button type="default" class="btn-c" size="mini" @tap="exit">退出</button>
        </view> -->
        <view class="info-list-zone" id="scroll-content" :style="{height: scrollContentHeight + 'px'}">
            <view class="list" v-for="(item, index) in Materlist" :key="index">
                <uni-card :title="item.HBarCode" style="margin: 10px;" @tap="delMater(item)">
                    <view class="card-detail">
                        <view class="detail">
                            <text>{{ $t("Kf_ProductInBill_PDA.table_SourceBillNo") == "Kf_ProductInBill_PDA.table_SourceBillNo" ? "批次" : $t("Kf_ProductInBill_PDA.table_SourceBillNo") }}:</text>{{ item.HBatchNo }}
                        </view>
                        <view class="detail">
                            <text>{{ $t("Kf_ProductInBill_PDA.table_SourceBillNo") == "Kf_ProductInBill_PDA.table_SourceBillNo" ? "数量" : $t("Kf_ProductInBill_PDA.table_SourceBillNo") }}:</text>{{ item.HQty }}
                        </view>
                    </view>
                </uni-card>
            </view>
        </view>
        <view class="pagination-zone" id="pagination-zone">
            <uni-pagination show-icon :page-size="paginationMeta.pageSize" :total="paginationMeta.total"
                :current="paginationMeta.current" @change="onPaginationChangeHandler"></uni-pagination>
        </view>
    </view>
</template>
<script>
    import {
        CommonUtils
    } from '../../utils/common'
    import {
        getUserInfo
    } from '../../utils/auth'
    export default {
        data() {
            return {
                navHeight: 0,
                HWHNameList: [],
                arrayHWHName: [],
                HStockPlaceNameList: [],
                arrayHStockPlaceName: [],
                Materlist: [],
                HMaterID: 0,
                HBillType: 0,
                HInterID: 0,
                HIsStockMgr: false,
                scrollTop: 0,
                HInterID_check: 0,
                HBillType_check: '',
                sBatchNo_check: '',
                sBarCode_check: '',
                sSCWhID_check: 0,
                sSCSPID_check: 0,
                sAuxPropID_check: 0,
                sMTONo_check: '',
                HMaterID_check: 0,
                sWhID_check: 0,
                sSPID_check: 0,
                HSourceInterID_check: 0,
                HSourceEntryID_check: 0,
                EndQty_check: 0,
                HInterID_check_check: 0,
                hform: {
                    HBarCode: '',
                    HWHName: '',
                    HWHID: 0,
                    HStockPlaceName: '',
                    HStockPlaceID: 0,
                    iQty: 0,
                },
                paginationMeta: {
                    current: 1,
                    total: 0,
                    pageSize: 30,
                },
                pageMeta: {
                    scrollContentTop: 0,
                    bottomBtnTop: 0,
                },
                listData: [],
                listDataShow: [],
            }
        },
        computed: {
            scrollContentHeight: {
                get() {
                    return this.pageMeta.bottomBtnTop - this.pageMeta.scrollContentTop
                }
            }
        },
        methods: {
            exit() {
                uni.navigateBack()
            },
            onArrayHWHNameChangeHandler(e) {
                let index = this.HWHNameList.findIndex(p => p.HName == e)
                if (index != -1) {
                    this.hform.HWHID = this.HWHNameList[index].HItemID
                    this.HIsStockMgr = this.HWHNameList[index].HIsStockMgr
                }
            },
            getWHInfo() {
                CommonUtils.doRequest(
                    "/Web/GetWarehouseList_Json_New", {
                        Warehouse: "",
                        HOrgID: uni.getStorageSync('OrganizationID')
                    },
                    (res) => {
                        let res1 = res.data
                        let {
                            data,
                            count
                        } = res1
                        if (count == 1) {
                            this.HWHNameList = data
                            for (var i = 0; i < data.length; i++) {
                                this.arrayHWHName[i] = data[i]["HName"]
                            }
                        } else {
                            uni.showToast({
                                title: '仓库数据请求失败',
                                icon: 'none'
                            })
                        }
                    },
                )
            },
            delMater(item){
                console.log(this.HBillType, this.HInterID, item.HBarCode);
                uni.showModal({
                    title: '提示',
                    content: '确认要删除 "' + item.HBarCode + '" 吗?删除后将不可恢复!',
                    success: (res) => {
                        if (res.confirm) {
                            try {
                                CommonUtils.doRequest2({
                                    url: '/WEBSController/set_DelPonderationBillMain_Temp_BarCode_Json',
                                    data: {
                                        HInterID: this.HInterID,
                                        HBillType: this.HBillType,
                                        HBarCode: item.HBarCode
                                    },
                                    resFunction: () => {
                                        console.log("删除成功,开始刷新")
                                        uni.$emit('refreshList')
                                        this.GetMater();
                                        uni.showToast({
                                            title: '删除成功',
                                            icon: 'success'
                                        })
                                    }
                                });
                            } catch (e) {
                                console.log("删除异常", e);
                            }
                        } else if (res.cancel) {
                            console.log('用户取消删除');
                        }
                    }
                });
            },
            GetMater(){
                CommonUtils.doRequest2({
                    url: '/Kf_BarCodeEditDlg/Kf_BarCodeEditDlg_Json',
                    data: {
                        swhere:  ' and HInterID= ' + this.HInterID + ' and HMaterID= '+ this.HMaterID + ''
                    },
                    resFunction: (res) => {
                        let {
                            data,
                            count,
                            Message
                        } = res.data
                        if (count > 0) {
                            this.Materlist = data
                        } else {
                            uni.showToast({
                                icon: 'none',
                                title: Message
                            })
                        }
                    }
                });
            },
            onArrayHStockPlaceNameChangeHandler() {
                let index = this.HStockPlaceNameList.findIndex(p => p.HName == e)
                if (index != -1) {
                    this.hform.HStockPlaceID = this.HStockPlaceNameList[index].HItemID
                }
            },
            getStockPlaceInfo() {
                CommonUtils.doRequest(
                    "/WEBSController/GetStockPlaceList_Json", {
                        StockPlace: '',
                        HWhID: this.hform.HWHID,
                        HStockOrgID: uni.getStorageSync('OrganizationID')
                    },
                    (res) => {
                        let res1 = res.data
                        console.log(res1)
                        let {
                            data,
                            count
                        } = res1
                        if (count == 1) {
                            this.HStockPlaceNameList = data
                            for (var i = 0; i < data.length; i++) {
                                this.arrayHStockPlaceName[i] = data[i]["HWhName"]
                            }
                        } else {
                            uni.showToast({
                                title: '仓位数据请求失败'+res.Message,
                                icon: 'none'
                            })
                        }
                    },
                )
            },
            cmdChange() {
                CommonUtils.doRequest2({
                    url: '/Kf_BarCodeEditDlg/Kf_BarCodeEditDlg_Json',
                    data: {
                        swhere:  ' and HInterID= ' + this.HInterID + ' and HMaterID= '+ this.HMaterID + " and HBarCode= '" + this.hform.HBarCode + "'"
                    },
                    resFunction: (res) => {
                        let {
                            data,
                            count,
                            Message
                        } = res.data
                        if (count > 0) {
                            console.log(data)
                            uni.showModal({
                                title: '提示',
                                content: '确认要修改 "' + data[0].HBarCode + '" 吗?',
                                success: (res) => {
                                    if (res.confirm) {
                                        try {
                                            CommonUtils.doRequest2({
                                                url: '/Kf_BarCodeEditDlg/GetCheckQtyByBarCodeBill',
                                                data: {
                                                    HInterID: data[0].HInterID,
                                                    HBillType: data[0].HBillType,
                                                    sBatchNo: data[0].HBatchNo,
                                                    sBarCode: data[0].HBarCode,
                                                    sSCSPID: data[0].HOutStockPlaceID,
                                                    sSCWhID: data[0].HSCWHID,
                                                    sAuxPropID: data[0].HAuxPropID,
                                                    sMTONo: data[0].HMTONo,
                                                    iQty: this.hform.iQty,
                                                    HMaterID: data[0].HMaterID,
                                                    sWhID: data[0].HWhID,
                                                    sSPID: data[0].HStockPlaceID,
                                                    HSourceInterID: data[0].HSourceInterID,
                                                    HSourceEntryID: data[0].HSourceEntryID,
                                                    EndQty: this.hform.iQty - data[0].HQty,
                                                    sQty: data[0].HQty
                                                },
                                                resFunction: () => {
                                                    console.log("修改成功,开始刷新")
                                                    uni.$emit('refreshList')
                                                    this.GetMater();
                                                    uni.showToast({
                                                        title: '修改成功',
                                                        icon: 'success'
                                                    })
                                                    try {
                                                        CommonUtils.doRequest2({
                                                            url: '/Kf_BarCodeEditDlg/GetCheckQtyByBarCodeBill',
                                                            data: {
                                                                HInterID: data[0].HInterID,
                                                                HBillType: data[0].HBillType,
                                                                sBatchNo: data[0].HBatchNo,
                                                                sBarCode: data[0].HBarCode,
                                                                sSCSPID: data[0].HOutStockPlaceID,
                                                                sSCWhID: data[0].HSCWHID,
                                                                sAuxPropID: data[0].HAuxPropID,
                                                                sMTONo: data[0].HMTONo,
                                                                iQty: this.hform.iQty,
                                                                HMaterID: data[0].HMaterID,
                                                                sWhID: data[0].HWhID,
                                                                sSPID: data[0].HStockPlaceID,
                                                                HSourceInterID: data[0].HSourceInterID,
                                                                HSourceEntryID: data[0].HSourceEntryID,
                                                                EndQty: this.hform.iQty - data[0].HQty,
                                                                sQty: data[0].HQty
                                                            },
                                                            resFunction: () => {
                                                                console.log("修改成功,开始刷新")
                                                                uni.$emit('refreshList')
                                                                this.GetMater();
                                                                uni.showToast({
                                                                    title: '修改成功',
                                                                    icon: 'success'
                                                                })
                                                            }
                                                        });
                                                    } catch (e) {
                                                        console.log("修改异常", e);
                                                    }
                                                }
                                            });
                                        } catch (e) {
                                            console.log("修改异常", e);
                                        }
                                    } else if (res.cancel) {
                                        console.log('用户取消修改');
                                    }
                                }
                            });
                        } else {
                            uni.showToast({
                                icon: 'none',
                                title: Message
                            })
                        }
                    }
                });
            },
            async onPaginationChangeHandler({current}) {
                this.listDataShow =this.listData.slice((current - 1) * this.paginationMeta.pageSize,current * this.paginationMeta.pageSize)
            }
        },
        async onLoad(options) {
            this.hform.HBarCode = options.HMaterNumber || '';
            this.getWHInfo()
            this.getStockPlaceInfo()
            this.HMaterID = options.HMaterID
            this.HBillType = options.HBillType
            this.HInterID = options.HInterID
            console.log("赋值后:", this.HInterID, this.HMaterID, this.HBillType);
            await this.$nextTick();
            this.GetMater()
            // this.$nextTick(() => {
            //     this.cmdSearch()
            // })
        },
        onReady() {
            let query = uni.createSelectorQuery().in(this)
            query.select("#scroll-content").boundingClientRect((data) => {
                this.pageMeta.scrollContentTop = data.top
                console.log("this.pageMeta.scrollContentTop: ", this.pageMeta.scrollContentTop)
            }).exec()
            query.select("#pagination-zone").boundingClientRect((data) => {
                this.pageMeta.bottomBtnTop = data.top
                console.log('this.pageMeta.bottomBtnTop: ',this.pageMeta.bottomBtnTop);
            }).exec()
        },
    }
</script>
<style lang="scss" scoped>
    .page {
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        gap: 10rpx;
        padding: 20rpx 0;
        position: relative;
        .button-zone {
            height: auto;
            box-sizing: border-box;
            padding-top: 20rpx;
            display: flex;
            flex-direction: row;
            justify-content: space-between;
            flex-wrap: wrap;
            button {
                border-radius: 50rpx;
                width: 180rpx;
                height: 66rpx;
                line-height: 66rpx;
                font-size: 28rpx;
            }
            .btn-a {
                background-color: #3a78ff;
                color: #fff;
            }
            .btn-c {
                background-color: #ff5722;
                color: #fff;
            }
        }
        .search-condition-zone {
            height: auto;
            box-sizing: border-box;
            padding: 0 60rpx;
            display: flex;
            flex-direction: column;
            gap: 20rpx;
            .form-item {
                display: flex;
                flex-direction: row;
                gap: 20rpx;
                align-items: center;
                font-size: 28rpx;
                .left {
                    width: 4rem;
                }
                .right {
                    flex: 1;
                    padding: 8rpx 16rpx;
                    .search {
                        width: 28rpx;
                        height: 28rpx;
                    }
                    input {
                        font-size: 28rpx;
                    }
                    .uni-combox {
                        padding: 0;
                        margin: 0;
                        ::v-deep .uni-combox__input {
                            font-size: 28rpx;
                            height: auto;
                        }
                    }
                }
                .general {
                    border-radius: 22rpx;
                    border: 1px solid #acacac;
                }
                .disabled {
                    border-radius: 22rpx;
                    border: 1px solid #e4e4e4;
                    background-color: #e4e4e4;
                }
            }
        }
        .info-list-zone {
            overflow-y: auto;
            .card-item {
                .card-detail {
                    width: 100%;
                    display: flex;
                    flex-wrap: wrap;
                    justify-content: space-between;
                    line-height: 120%;
                    .detail {
                        // width: 50%;
                        font-size: 26rpx;
                        margin-bottom: 12rpx;
                        color: #555;
                        margin-right: 20rpx;
                        text {
                            color: #999;
                            font-size: 26rpx;
                        }
                    }
                }
            }
        }
        .pagination-zone {
            position: fixed;
            bottom: 0;
            box-sizing: border-box;
            background-color: #fff;
            box-shadow: 0 2rpx 10rpx 2rpx rgba(0, 0, 0, 0.4);
            padding: 30rpx 40rpx 40rpx 40rpx;
            display: flex;
            flex-direction: column;
            gap: 20rpx;
            justify-content: space-between;
            width: 100%;
        }
    }
</style>
pages/weiwaigxIn/Cj_StationEntrustInBill.vue
@@ -18,7 +18,7 @@
            <view class="form-item">
                <view class="title"><text>*</text>流水号:</view>
                <view class="right" style="width: 380rpx;">
                    <input v-model="hform.HProcNo" placeholder="请输入(或扫描)流水号" @blur="getHProcNoData2(hform.HBarCode,hform.HProcNo,hform.HSEQNumber)"/>
                    <input v-model="hform.HProcNo" placeholder="请输入(或扫描)流水号" @confirm="getHProcNoData2(hform.HBarCode,hform.HProcNo,hform.HSEQNumber)"/>
                </view>
                <view class="icon-wrapper" >
                    <uni-icons type="search" size="20" @click="showBillList"></uni-icons>
@@ -427,7 +427,7 @@
                this.getNewData()
            }
            // this.getHMaterList()
            this.getHProcList()
            //this.getHProcList()
            this.getHSupList()
            this.getHEmpList()
            
@@ -650,11 +650,6 @@
                                this.arrayHSupName[i] = res.data.data[i].HName
                            }
                            this.$forceUpdate();
                        }else{
                            uni.showToast({
                                title:res.data.Message,
                                icon:'none'
                            })
                        }
                    },
                    fail: (res) => {
@@ -724,6 +719,7 @@
                                this.arrayHSEQName[i] = res.data.data[i].HSEQName
                            }
                            this.$forceUpdate();
                            console.log(this.hform.HProcNo)
                            //没有序列号默认主序列
                            if(e==1){
                                //设置主序列
@@ -734,6 +730,10 @@
                            }else{
                                //设置主序列
                                this.setMainHSEQ();
                                //设置默认工序号
                                if(this.hform.HProcNo!=""&&this.hform.HProcNo!=null){
                                    this.getHProcNoData2(this.hform.HBarCode,this.hform.HProcNo,this.hform.HSEQNumber)
                                }
                            }
                        } else {
                            uni.showToast({
@@ -880,6 +880,9 @@
                        console.log(2,res.data);
                        if(res.data.code == 1){
                            var data = res.data.data[0]
                            if(data.委外发出当前工序号!=null && data.委外发出当前工序号!=""){
                                this.hform.HProcNo = data.委外发出当前工序号
                            }
                            this.hform.HICMOBillNo= data.任务单号
                            this.hform.HProcExchBillNo= data.单据号
                            this.hform.HICMOInterID= data.hicmointerid
pages/weiwaigxOut/Cj_StationEntrustOutBill.vue
@@ -783,12 +783,7 @@
                                this.arrayHSupName[i] = res.data.data[i].HName
                            }
                            this.$forceUpdate();
                        } else {
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
                            })
                        }
                        }
                    },
                    fail: (res) => {
                        console.log(res);
@@ -823,12 +818,7 @@
                                this.arrayHEmpName[i] = res.data.data[i].HName
                            }
                            this.$forceUpdate();
                        } else {
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
                            })
                        }
                        }
                    },
                    fail: (res) => {
                        console.log(res);
@@ -907,6 +897,10 @@
                            }else{
                                //设置主序列
                                this.setMainHSEQ();
                                //设置默认工序号
                                if(this.hform.HProcNo!=""&&this.hform.HProcNo!=null){
                                    this.getHProcNoData2(this.hform.HBarCode,this.hform.HProcNo,this.hform.HSEQNumber)
                                }
                            }
                            this.$forceUpdate();
                        } else {
@@ -1057,6 +1051,9 @@
                        console.log(2, res.data);
                        if (res.data.code == 1) {
                            var data = res.data.data[0]
                            if(data.委外接收当前工序号!=null && data.委外接收当前工序号!=""){
                                this.hform.HProcNo = data.委外接收当前工序号
                            }
                            this.hform.HICMOBillNo = data.任务单号
                            this.hform.HICMOInterID = data.hicmointerid
                            this.hform.HMaterID = data.HMaterID
pages/weiwaigxOut/Cj_StationEntrustOutBillList.vue
@@ -261,7 +261,7 @@
                arrayStatus:['全部','未审核','已审核','已关闭'],
                hform:{
                    HStatus:'未审核',
                    HBeginDate:new Date().toISOString().split('T')[0],
                    HBeginDate:'',
                    HEndDate:'',
                    HICMOBillNo:'',
                    HBillNo:'',
pages/weiwaigxOut/firstCheck.vue
File was deleted
pages/xiaoshoutuihuo/ICStockBillMain.vue
@@ -2,9 +2,9 @@
    <view>
        <view class="form">
            <view class="form-item">
                <view class="title">条码:</view>
                <view class="title">{{$t("Gy.HBarCode")}}:</view>
                <view class="right" style="width: 380rpx;">
                    <input :focus="BarCodeFocus" v-model="hform.HBarCode" placeholder="请扫描(或输入)条码"
                    <input :focus="BarCodeFocus" v-model="hform.HBarCode" :placeholder="$t('Gy.HBarCode_Placeholder')"
                        @confirm="getCode(hform.HBarCode)" />
                </view>
                <uni-icons type="scan"
@@ -12,81 +12,84 @@
                    size="20" @click="toScanCode"></uni-icons>
            </view>
            <view class="form-item">
                <view class="title">数量:</view>
                <view class="title">{{$t("Gy.HQty")}}:</view>
                <view class="right">
                    <input v-model="hform.HQty" placeholder="请输入数量" />
                    <input v-model="hform.HQty" :placeholder="$t('Gy.HQty_Placeholder')" />
                </view>
            </view>
            <view class="form-item">
                <view class="title">仓库:</view>
                <view class="title">{{$t("Gy.HWHName")}}:</view>
                <view class="right">
                    <uni-combox :candidates="arrayHWHName" placeholder="请输入(或扫描)仓库" v-model="hform.HWHName"
                        @input="HWHNameChange"></uni-combox>
                    <uni-combox :candidates="arrayHWHName" :placeholder="$t('Gy.HWHName_Placeholder')"
                        v-model="hform.HWHName" @input="HWHNameChange"></uni-combox>
                </view>
            </view>
            <view class="form-item">
                <view class="title">仓位:</view>
                <view class="title">{{$t("Gy.HStockPlaceName")}}:</view>
                <view class="right" v-show="showHStockPlaceName">
                    <uni-combox :candidates="HStockPlaceNameListComputed" placeholder="请输入(或扫描)仓位"
                        v-model="hform.HStockPlaceName" @input="HStockPlaceNameChange" @confirm="HStockPlaceNameScan"></uni-combox>
                    <uni-combox :candidates="HStockPlaceNameListComputed"
                        :placeholder="$t('Gy.HStockPlaceName_Placeholder')" v-model="hform.HStockPlaceName"
                        @input="HStockPlaceNameChange" @confirm="HStockPlaceNameScan"></uni-combox>
                </view>
                <view class="righton" v-show="!showHStockPlaceName"><input v-model="hform.HStockPlaceName"
                        placeholder="不可操作" /></view>
                        :placeholder="$t('Gy.OperationDisabled')" /></view>
            </view>
            <view class="tabs">
                <view :class="tabs == 0 ? 'on':''" @tap="tabs = 0">选择源单</view>
                <view :class="tabs == 1 ? 'on':''" @tap="tabs = 1">表头信息</view>
                <view :class="tabs == 2 ? 'on':''" @tap="tabs = 2">物料信息</view>
                <view :class="tabs == 3 ? 'on':''" @tap="tabs = 3">条码信息</view>
                <view :class="tabs == 0 ? 'on':''" @tap="tabs = 0">{{$t("Gy.SourceBillSelect")}}</view>
                <view :class="tabs == 1 ? 'on':''" @tap="tabs = 1">{{$t("Gy.TableHeaderInfo")}}</view>
                <view :class="tabs == 2 ? 'on':''" @tap="tabs = 2">{{$t("Gy.MaterInfo")}}</view>
                <view :class="tabs == 3 ? 'on':''" @tap="tabs = 3">{{$t("Gy.BarCodeInfo")}}</view>
            </view>
            <view v-if="tabs == 0">
                <view class="form-item">
                    <view class="title">源单类型:</view>
                    <view class="title">{{$t("Gy.HMainSourceBillType")}}:</view>
                    <view class="right" v-show="showHMainSourceBillType">
                        <picker :range="arrayHMainSourceBillType" v-model="HMainSourceBillType"
                            @change="HMainSourceBillTypeChange">
                            <input name="HMainSourceBillType" disabled v-model="HMainSourceBillType"
                                placeholder="请选择源单类型" />
                                :placeholder="$t('Gy.HMainSourceBillType_Placeholder')" />
                            <view class="picker-overlay"></view>
                        </picker>
                    </view>
                    <view class="righton" v-show="!showHMainSourceBillType">
                        <input name="HMainSourceBillType" disabled v-model="HMainSourceBillType"
                            placeholder="请选择源单类型" />
                            :placeholder="$t('Gy.HMainSourceBillType_Placeholder')" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">源单单号:</view>
                    <view class="title">{{$t("Gy.HMainSourceBillNo")}}:</view>
                    <view class="right" style="width: 380rpx;" v-show="showHSourceBillNo">
                        <input v-model="hform.HSourceBillNo" :focus="HSourceBillNoFocus"
                            @confirm="onHSourceBillNoConfirmHandler" placeholder="请扫描(或输入)源单单号" />
                            @confirm="onHSourceBillNoConfirmHandler"
                            :placeholder="$t('Gy.HMainSourceBillNo_Placeholder')" />
                    </view>
                    <uni-icons v-show="showHSourceBillNo" type="scan"
                        style="margin-left: 10rpx;background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;"
                        size="20" @click="toScanCodeA()"></uni-icons>
                    <view class="righton" v-show="!showHSourceBillNo">
                        <input name="HSourceBillNo" disabled v-model="hform.HSourceBillNo" placeholder="请输入源单单号" />
                        <input name="HSourceBillNo" disabled v-model="hform.HSourceBillNo"
                            :placeholder="$t('Gy.HMainSourceBillNo_Placeholder')" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">日期:</view>
                    <view class="title">{{$t("Gy.HDate")}}:</view>
                    <view class="right">
                        <picker mode="date" v-model="hform.HDate" @change="HDateChange">
                            <input disabled v-model="hform.HDate" placeholder="请选择日期" />
                            <input disabled v-model="hform.HDate" :placeholder="$t('Gy.HDate_Placeholder')" />
                            <view class="picker-overlay"></view>
                        </picker>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">制单人:</view>
                    <view class="title">{{$t("Gy.HMaker")}}:</view>
                    <view class="righton">
                        <input name="HMaker" disabled v-model="hform.HMaker" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">单据号:</view>
                    <view class="title">{{$t("Gy.HBillNo")}}:</view>
                    <view class="righton">
                        <input name="HBillNo" disabled v-model="hform.HBillNo" />
                    </view>
@@ -96,7 +99,7 @@
                </view>
                <view class="form-item">
                    <view class="title">单据ID:</view>
                    <view class="title">{{$t("Gy.HInterID")}}:</view>
                    <view class="righton">
                        <input name="HInterID" disabled v-model="hform.HInterID" />
                    </view>
@@ -105,28 +108,28 @@
            <view v-if="tabs == 1">
                <view class="form-item">
                    <view class="title">保管:</view>
                    <view class="title">{{$t("Gy.HKeeperName")}}:</view>
                    <view class="right">
                        <uni-combox :candidates="arrayHEmpName" placeholder="请选择保管员" v-model="hform.HKeeperName"
                            @input="HKeeperNameChange"></uni-combox>
                        <uni-combox :candidates="arrayHEmpName" :placeholder="$t('Gy.HKeeperName_Placeholder')"
                            v-model="hform.HKeeperName" @input="HKeeperNameChange"></uni-combox>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">验收:</view>
                    <view class="title">{{$t("Gy.HSecManagerName")}}:</view>
                    <view class="right">
                        <uni-combox :candidates="arrayHEmpName" placeholder="请选择验收员" v-model="hform.HSecManagerName"
                            @input="HSecManagerNameChange"></uni-combox>
                        <uni-combox :candidates="arrayHEmpName" :placeholder="$t('Gy.HSecManagerName_Placeholder')"
                            v-model="hform.HSecManagerName" @input="HSecManagerNameChange"></uni-combox>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">部门:</view>
                    <view class="title">{{$t("Gy.HDeptName")}}:</view>
                    <view class="right">
                        <uni-combox :candidates="arrayHDeptName" placeholder="请选择部门" v-model="hform.HDeptName"
                            @input="HDeptNameChange"></uni-combox>
                        <uni-combox :candidates="arrayHDeptName" :placeholder="$t('Gy.HDeptName_Placeholder')"
                            v-model="hform.HDeptName" @input="HDeptNameChange"></uni-combox>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">客户:</view>
                    <view class="title">{{$t("Gy.HCusName")}}:</view>
                    <!-- <view class="right" v-show="showHSupName">
                        <uni-combox :candidates="arrayHSupName" placeholder="请选择客户" v-model="hform.HSupName"
                            @input="HSupNameChange"></uni-combox>
@@ -136,7 +139,7 @@
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">组织:</view>
                    <view class="title">{{$t("Gy.HStockOrgName")}}:</view>
                    <view class="righton">
                        <input name="HStockOrgName" disabled v-model="hform.HStockOrgName" />
                    </view>
@@ -147,25 +150,14 @@
                <view class="list" v-for="(item,index) in Materlist" :key="index">
                    <uni-card :title="item.物料名称" :extra="item.物料代码" style="margin: 10px;" @tap="delMater(item)">
                        <view class="card-detail">
                            <view class="detail">
                                <text>源单单号:</text>{{item.源单单号}}
                            </view>
                            <view class="detail">
                                <text>源单数量:</text>{{item.源单数量}}
                            </view>
                            <view class="detail">
                                <text>数量:</text>{{item.数量}}
                            </view>
                            <view class="detail">
                                <text>条码个数:</text>{{item.条码个数}}
                            </view>
                            <view class="detail" v-if="item.规格型号">
                                <text>规格型号:</text>{{item.规格型号}}
                            </view>
                            <view class="detail" v-if="item.辅助属性">
                                <text>辅助属性:</text>{{item.辅助属性}}
                            </view>
                            <template v-for="(HBillField, index) in HFieldList">
                                <view class="detail" v-if="HBillField.ColmType == 'DateTime'">
                                    <text>{{ $t(`${HModName}.${HBillField.ColmCols}`) }}:</text>{{ item[HBillField.ColmCols] ? dayjs(item[HBillField.ColmCols]).format("YYYY-MM-DD HH:mm:ss") : "" }}
                                </view>
                                <view class="detail" v-else>
                                    <text>{{ $t(`${HModName}.${HBillField.ColmCols}`) }}:</text>{{ item[HBillField.ColmCols] }}
                                </view>
                            </template>
                            <!-- 兴达客户 功能 -->
                            <view class="detail" v-if="materMeta[0].HWHName && /兴达/.test(hform.HStockOrgName
                            )">
@@ -179,55 +171,55 @@
            <view v-if="tabs == 3">
                <view class="form-item">
                    <view class="title">条码:</view>
                    <view class="title">{{$t("Gy.HBarCode_B")}}:</view>
                    <view class="righton">
                        <input name="HBarCode_B" disabled v-model="hform.HBarCode_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">物料:</view>
                    <view class="title">{{$t("Gy.HMaterName_B")}}:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HMaterName_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">规格:</view>
                    <view class="title">{{$t("Gy.HMaterModel_B")}}:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HMaterModel_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">批次:</view>
                    <view class="title">{{$t("Gy.HBatchNo_B")}}:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HBatchNo_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">单位:</view>
                    <view class="title">{{$t("Gy.HUnitName_B")}}:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HUnitName_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">数量:</view>
                    <view class="title">{{$t("Gy.HQty_B")}}:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HQty_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">容量:</view>
                    <view class="title">{{$t("Gy.HTMQty_B")}}:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HTMQty_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">仓库:</view>
                    <view class="title">{{$t("Gy.HWHName_B")}}:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HWHName_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">仓位:</view>
                    <view class="title">{{$t("Gy.HSPName_B")}}:</view>
                    <view class="righton">
                        <input disabled v-model="hform.HSPName_B" />
                    </view>
@@ -235,10 +227,10 @@
            </view>
            <view class="bottom-btn">
                <button class="btn-a" size="mini" @tap="submit">提交</button>
                <button class="btn-a" size="mini" @tap="submit">{{$t("Gy.submit")}}</button>
                <view style="flex: 1;"></view>
                <button class="btn-a" size="mini" @tap="addNew">新增</button>
                <button class="btn-c" size="mini" @tap="goBack">退出</button>
                <button class="btn-a" size="mini" @tap="addNew">{{$t("Gy.addNew")}}</button>
                <button class="btn-c" size="mini" @tap="goBack">{{$t("Gy.goBack")}}</button>
            </view>
        </view>
        <BarCodePopupVue ref="barcodePopup"></BarCodePopupVue>
@@ -253,7 +245,9 @@
        getUserStockRelation
    } from '../../utils/userRelationManager';
    import BarCodePopupVue from "../../components/BarCodePopup/BarCodePopup.vue";
    import { CommonUtils } from '../../utils/common';
    import {
        CommonUtils
    } from '../../utils/common';
    export default {
        components: {
            BarCodePopupVue
@@ -270,6 +264,7 @@
        },
        data() {
            return {
                CommonUtils,
                userInfo: getUserInfo(),
                serverUrl: uni.getStorageSync('serverUrl') || 'http://47.96.97.237/API',
                HModName: 'Kf_SellOutBackBill_PDA',
@@ -289,6 +284,7 @@
                tabs: 0,
                HMainSourceBillType: '退货通知单',
                arrayHMainSourceBillType: ['退货通知单', '销售订单', '手工录入'],
                arrayHMainSourceBillValue: [1403, 1401, -1],
                linterid: '',
                HBillNo: '',
@@ -311,6 +307,7 @@
                Materlist: [],
                materMeta: [],
                HFieldList: [], // 字段列表
                hform: {
                    HBillType: 1247,
                    HBillerID: uni.getStorageSync('HBillerID'),
@@ -371,6 +368,7 @@
            this.getHDeptList()
            this.getRelationStore()
            this.GetSourceBillType()
        },
        methods: {
            async HWHNameScan(e) {
@@ -390,7 +388,7 @@
                // 扫描仓位码
                console.log('仓位码: ', e);
                let index = this.HStockPlaceNameList.findIndex(elem => elem['条码编号'] == e.trim())
               // 不先置空的话,数据再次扫描相同的仓位码 不会触发组件内的刷新
                // 不先置空的话,数据再次扫描相同的仓位码 不会触发组件内的刷新
                this.hform.HStockPlaceID = 0
                this.hform.HStockPlaceName = ''
                await this.$nextTick()
@@ -414,6 +412,58 @@
                        title: err
                    })
                }
            },
            async GetSourceBillType() {
                CommonUtils.doRequest2({
                    url: '/Web/GetHSourceBillTypeByBillType',
                    data: {
                        HBillType: this.hform.HBillType,
                        Num: 2
                    },
                    resFunction: (res) => {
                        let {
                            data,
                            count,
                            Message
                        } = res.data
                        if (count == 1) {
                            // console.log('data: ', data);
                            if (data.length == 0) {
                                // 数据库中没有配置,默认使用本地
                                for (let i = 0; i < this.HMainSourceBillType; i++) {
                                    let transed = this.$t(`${this.HModName}.HSourceBillType${i}`).split(
                                        "@")
                                    this.arrayHMainSourceBillType.push(transed[0])
                                    this.arrayHMainSourceBillValue.push(transed[1])
                                }
                                return
                            }
                            this.arrayHMainSourceBillType = []
                            this.arrayHMainSourceBillValue = []
                            let i
                            for (i = 0; i < data.length; i++) {
                                let tranItem = this.$t(`${this.HModName}.HSourceBillType${i}`).split(
                                    "@")
                                this.arrayHMainSourceBillType.push(tranItem[0])
                                this.arrayHMainSourceBillValue.push(tranItem[1])
                            }
                            let trans = (this.$t(`${this.HModName}.HSourceBillType${i}`)).split("@")
                            this.arrayHMainSourceBillType.push(trans[0])
                            this.arrayHMainSourceBillValue.push(trans[1])
                            this.HMainSourceBillType = this.arrayHMainSourceBillType[0]
                            this.hform.HMainSourceBillType = this.arrayHMainSourceBillValue[0]
                        } else {
                            // 数据库中没有配置,则使用本地的配置
                            for (let i = 0; i < this.HMainSourceBillType; i++) {
                                let transed = this.$t(`${this.HModName}.HSourceBillType${i}`).split("@")
                                this.arrayHMainSourceBillType.push(transed[0])
                                this.arrayHMainSourceBillValue.push(transed[1])
                            }
                        }
                    }
                })
            },
            async getRelationStore() {
                let {
@@ -522,7 +572,7 @@
                            for (var i = 0; i < res.data.data.length; i++) {
                                this.arrayHWHName[i] = res.data.data[i].仓库名称
                            }
                            this.HWHNameChange(getUserInfo()["HWhName"])
                        } else {
                            uni.showToast({
@@ -646,15 +696,11 @@
            },
            //选择源单类型
            HMainSourceBillTypeChange(e) {
                this.HMainSourceBillType = this.arrayHMainSourceBillType[e.detail.value]
                if (this.HMainSourceBillType == '退货通知单') {
                    this.hform.HMainSourceBillType = 1403
                    this.getHYDList()
                } else if (this.HMainSourceBillType == '销售订单') {
                    this.hform.HMainSourceBillType = 1401
                    this.getHYDList()
                } else {
                    this.hform.HMainSourceBillType = -1
                let index = e.detail.value
                if (index != -1) {
                    this.HMainSourceBillType = this.arrayHMainSourceBillType[index]
                    this.hform.HMainSourceBillType = this.arrayHMainSourceBillValue[index]
                    // this.showHMainSourceBillType = false
                    this.getHYDList()
                }
            },
@@ -1017,17 +1063,11 @@
                                this.hform.HSourceBillNo = data.hSourceBillNoField
                                //获取源单类型、源单单号
                                this.hform.HMainSourceBillType = data.hSourceBillTypeField
                                if (data.hSourceBillTypeField == "1403") {
                                    this.HMainSourceBillType = '退货通知单'
                                    this.hform.HMainSourceBillType = 1403
                                    this.showHMainSourceBillType = false
                                } else if (data.hSourceBillTypeField == "1401") {
                                    this.HMainSourceBillType = '销售订单'
                                    this.hform.HMainSourceBillType = 1401
                                    this.showHMainSourceBillType = false
                                } else {
                                    this.HMainSourceBillType = '手工录入'
                                    this.hform.HMainSourceBillType = -1
                                let index = this.arrayHMainSourceBillValue.findIndex(e => e == data
                                    .hSourceBillTypeField)
                                if (index != -1) {
                                    this.HMainSourceBillType = this.arrayHMainSourceBillType[index]
                                    this.hform.HMainSourceBillType = data.hSourceBillTypeField
                                    this.showHMainSourceBillType = false
                                }
                                if (data.hMulSourceFlagField == 0) {
@@ -1057,19 +1097,7 @@
                                        this.hform.HMainSourceBillType = data.hSourceBillTypeField
                                        this.showHMainSourceBillType = false
                                    }
                                    // if (data.hSourceBillTypeField == "1103") {
                                    //     this.HMainSourceBillType = '收料通知单'
                                    //     this.hform.HMainSourceBillType = 1103
                                    //     this.showHMainSourceBillType = false
                                    // } else if (data.hSourceBillTypeField == "1102") {
                                    //     this.HMainSourceBillType = '采购订单'
                                    //     this.hform.HMainSourceBillType = 1102
                                    //     this.showHMainSourceBillType = false
                                    // } else {
                                    //     this.HMainSourceBillType = '手工录入'
                                    //     this.hform.HMainSourceBillType = -1
                                    //     this.showHMainSourceBillType = false
                                    // }
                                    if (data.hMulSourceFlagField == 0) {
                                        this.showHSourceBillNo = false
                                    }
@@ -1254,11 +1282,22 @@
                    },
                    success: (res) => {
                        console.log('物料', res.data)
                        if (res.data.count == 1) {
                            let list = res.data.list
                            var data = res.data.data
                            this.materMeta = data.BarCodeDetailslist
                            this.Materlist = data.Materlist
                            this.HFieldList = CommonUtils.fieldListFilterRole({
                                FieldList: list,
                                ExcludeKeys: ["物料名称", "物料代码"],
                            }).data
                            
                            console.log('字段列表: ',CommonUtils.fieldListFilterRole({
                                FieldList: list,
                                ExcludeKeys: ["物料名称", "物料代码"],
                            }).data);
                            if (/兴达/.test(uni.getStorageSync("Organization"))) {
                                // 兴达客户 带出 仓库
                                console.log("兴达带出默认仓库")
@@ -1529,7 +1568,7 @@
                                icon: 'none'
                            })
                        }
                        // uni.request({
                        //     url: this.serverUrl + '/WEBSController/set_SaveSellOutBackBill_Json',
                        //     method: 'POST',
pages/zhijiediaobo/MoveStockBill.vue
@@ -706,41 +706,77 @@
                }
            },
            async HStockPlaceOutNameScan(e) {
                // 扫描仓位码
                console.log('仓位码: ', e);
                // 不先置空的话,数据再次扫描相同的仓位码 不会触发组件内的刷新
                this.hform.HOutStockPlaceID = 0
                this.hform.HOutStockPlaceName = ''
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Gy_StockPlace/list',
                        data: {
                            sWhere: ` and 条码编号 = '${e}'`,
                            user: uni.getStorageSync('HUserName'),
                            Organization: uni.getStorageSync('Organization')
                        },
                    })
                // 扫描仓位码
                console.log('Code: ', e);
                // 不先置空的话,数据再次扫描相同的仓位码 不会触发组件内的刷新
                this.hform.HStockPlaceID = 0
                this.hform.HStockPlaceName = ''
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Gy_StockPlace/list',
                        data: {
                            sWhere: ` and 条码编号 = '${e}'`,
                            user: uni.getStorageSync('HUserName'),
                            Organization: uni.getStorageSync('Organization')
                        },
                    })
                    if (res.data.count == 1) {
                        this.hform.HOutStockPlaceID = res.data.data[0].HMainID
                        this.hform.HOutStockPlaceName = res.data.data[0].仓位名称
                        this.hform.HSCWHID = res.data.data[0].HWHID
                        this.hform.HSCWHName = res.data.data[0].所属仓库
                    } else {
                        uni.showToast({
                            title: '仓位数据请求失败',
                            icon: 'none'
                        })
                    }
                } catch (err) {
                    uni.showToast({
                        title: '仓位数据请求失败',
                        icon: 'none'
                    })
                }
                // // 扫描仓位码
                // console.log('仓位码: ', e);
                // // 不先置空的话,数据再次扫描相同的仓位码 不会触发组件内的刷新
                // this.hform.HOutStockPlaceID = 0
                // this.hform.HOutStockPlaceName = ''
                // try {
                //     let res = await CommonUtils.doRequest2Async({
                //         url: '/Gy_StockPlace/list',
                //         data: {
                //             sWhere: ` and 条码编号 = '${e}'`,
                //             user: uni.getStorageSync('HUserName'),
                //             Organization: uni.getStorageSync('Organization')
                //         },
                //     })
                    if (res.data.count == 1) {
                //     if (res.data.count == 1) {
                        this.hform.HOutStockPlaceID = res.data.data[0].HMainID
                        this.hform.HOutStockPlaceName = res.data.data[0].仓位名称
                        this.hform.HSCWHID = res.data.data[0].HWHID
                        // this.hform.HSCWHName = res.data.data[0].所属仓库
                        this.HSCWHNameChange(res.data.data[0].所属仓库)
                    } else {
                        uni.showToast({
                            title: '仓位数据请求失败',
                            icon: 'none'
                        })
                    }
                //         this.hform.HOutStockPlaceID = res.data.data[0].HMainID
                //         this.hform.HOutStockPlaceName = res.data.data[0].仓位名称
                //         this.hform.HSCWHID = res.data.data[0].HWHID
                //         // this.hform.HSCWHName = res.data.data[0].所属仓库
                //         this.HSCWHNameChange(res.data.data[0].所属仓库)
                //     } else {
                //         uni.showToast({
                //             title: '仓位数据请求失败',
                //             icon: 'none'
                //         })
                //     }
                } catch (err) {
                    uni.showToast({
                        title: '仓位数据请求失败',
                        icon: 'none'
                    })
                }
                // } catch (err) {
                //     uni.showToast({
                //         title: '仓位数据请求失败',
                //         icon: 'none'
                //     })
                // }
            },
            async HWHNameInScan(e) {
                return;
@@ -757,41 +793,79 @@
                }
            },
            async HStockPlaceNameInScan(e) {
                // 扫描仓位码
                console.log('仓位码: ', e);
                // 不先置空的话,数据再次扫描相同的仓位码 不会触发组件内的刷新
                this.hform.HStockPlaceID = 0
                this.hform.HStockPlaceName = ''
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Gy_StockPlace/list',
                        data: {
                            sWhere: ` and 条码编号 = '${e}'`,
                            user: uni.getStorageSync('HUserName'),
                            Organization: uni.getStorageSync('Organization')
                        },
                    })
                // 扫描仓位码
                console.log('Code: ', e);
                // 不先置空的话,数据再次扫描相同的仓位码 不会触发组件内的刷新
                this.hform.HStockPlaceID = 0
                this.hform.HStockPlaceName = ''
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Gy_StockPlace/list',
                        data: {
                            sWhere: ` and 条码编号 = '${e}'`,
                            user: uni.getStorageSync('HUserName'),
                            Organization: uni.getStorageSync('Organization')
                        },
                    })
                    if (res.data.count == 1) {
                        this.hform.HStockPlaceID = res.data.data[0].HMainID
                        this.hform.HStockPlaceName = res.data.data[0].仓位名称
                        this.hform.HWHID = res.data.data[0].HWHID
                        this.hform.HWHName = res.data.data[0].所属仓库
                    } else {
                        uni.showToast({
                            title: '仓位数据请求失败',
                            icon: 'none'
                        })
                    }
                } catch (err) {
                    uni.showToast({
                        title: '仓位数据请求失败',
                        icon: 'none'
                    })
                }
      //           // 扫描仓位码
      //           console.log('仓位码: ', e);
      //           // 不先置空的话,数据再次扫描相同的仓位码 不会触发组件内的刷新
      //           this.hform.HStockPlaceID = 0
      //           this.hform.HStockPlaceName = ''
      //           try {
      //               let res = await CommonUtils.doRequest2Async({
      //                   url: '/Gy_StockPlace/list',
      //                   data: {
      //                       sWhere: ` and 条码编号 = '${e}'`,
      //                       user: uni.getStorageSync('HUserName'),
      //                       Organization: uni.getStorageSync('Organization')
      //                   },
      //               })
                    if (res.data.count == 1) {
      //               if (res.data.count == 1) {
                        this.hform.HStockPlaceID = res.data.data[0].HMainID
                        this.hform.HStockPlaceName = res.data.data[0].仓位名称
                        this.hform.HWHID = res.data.data[0].HWHID
                        // this.hform.HWHName = res.data.data[0].所属仓库
                        this.HWHInNameChange(res.data.data[0].所属仓库)
                    } else {
                        uni.showToast({
                            title: '仓位数据请求失败',
                            icon: 'none'
                        })
                    }
      //                   this.hform.HStockPlaceID = res.data.data[0].HMainID
      //                   this.HStockPlaceInNameChange(res.data.data[0].仓位名称)
      //                   this.hform.HWHID = res.data.data[0].HWHID
      //                   // this.hform.HWHName = res.data.data[0].所属仓库
      //                   this.HWHInNameChange(res.data.data[0].所属仓库)
      //               } else {
      //                   uni.showToast({
      //                       title: '仓位数据请求失败',
      //                       icon: 'none'
      //                   })
      //               }
                } catch (err) {
                    uni.showToast({
                        title: '仓位数据请求失败',
                        icon: 'none'
                    })
                }
      //           } catch (err) {
      //               uni.showToast({
      //                   title: '仓位数据请求失败',
      //                   icon: 'none'
      //               })
      //           }
            },
            async qrCodeDisplay() {
                try {
utils/RequestQueue.js
New file
@@ -0,0 +1,56 @@
// 全局请求队列(存储所有请求)
const requestQueue = []
// 取消所有请求
export function cancelAllRequest() {
  requestQueue.forEach((task) => {
    try {
      task.abort()
    } catch {}
  })
  requestQueue.length = 0
}
// 从队列移除
function removeTask(task) {
  const index = requestQueue.indexOf(task)
  if (index > -1) requestQueue.splice(index, 1)
}
// ==============================================
// 重写原生 uni.request
// ==============================================
export function overrideUniRequest() {
  const _originalRequest = uni.request
  uni.request = function (options) {
    const originalSuccess = options.success
    const originalFail = options.fail
    options.success = function (res) {
      removeTask(task)
      originalSuccess && originalSuccess(res)
    }
    options.fail = function (err) {
      removeTask(task)
      if (err.errMsg && err.errMsg.includes('abort')) {
        return
      }
      originalFail && originalFail(err)
    }
    const task = _originalRequest.call(uni, options)
    requestQueue.push(task)
    return task
  }
}