init commit
This commit is contained in:
0
.idea/.gitignore
generated
vendored
Normal file
0
.idea/.gitignore
generated
vendored
Normal file
8
.idea/compiler.xml
generated
Normal file
8
.idea/compiler.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<bytecodeTargetLevel>
|
||||||
|
<module name="cmeim" target="1.8" />
|
||||||
|
</bytecodeTargetLevel>
|
||||||
|
</component>
|
||||||
|
</project>
|
36
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
36
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="TOP_LEVEL_CLASS_OPTIONS">
|
||||||
|
<value>
|
||||||
|
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||||
|
<option name="REQUIRED_TAGS" value="" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="INNER_CLASS_OPTIONS">
|
||||||
|
<value>
|
||||||
|
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||||
|
<option name="REQUIRED_TAGS" value="" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="METHOD_OPTIONS">
|
||||||
|
<value>
|
||||||
|
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||||
|
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="FIELD_OPTIONS">
|
||||||
|
<value>
|
||||||
|
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||||
|
<option name="REQUIRED_TAGS" value="" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="IGNORE_DEPRECATED" value="false" />
|
||||||
|
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
|
||||||
|
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
|
||||||
|
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
|
||||||
|
<option name="myAdditionalJavadocTags" value="date" />
|
||||||
|
</inspection_tool>
|
||||||
|
</profile>
|
||||||
|
</component>
|
25
.idea/jarRepositories.xml
generated
Normal file
25
.idea/jarRepositories.xml
generated
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="RemoteRepositoriesConfiguration">
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="cmeim-maven" />
|
||||||
|
<option name="name" value="cmeim-alimaven" />
|
||||||
|
<option name="url" value="http://dev.cme-im.com/nexus/repository/maven-public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="central" />
|
||||||
|
<option name="name" value="Maven Central repository" />
|
||||||
|
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="jboss.community" />
|
||||||
|
<option name="name" value="JBoss Community repository" />
|
||||||
|
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="central" />
|
||||||
|
<option name="name" value="Central Repository" />
|
||||||
|
<option name="url" value="https://nexus.cme-im.com:55443/nexus/repository/maven-public/" />
|
||||||
|
</remote-repository>
|
||||||
|
</component>
|
||||||
|
</project>
|
13
.idea/libraries/Maven__org_springframework_boot_spring_boot_2_3_7_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_boot_spring_boot_2_3_7_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework.boot:spring-boot:2.3.7.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/boot/spring-boot/2.3.7.RELEASE/spring-boot-2.3.7.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/boot/spring-boot/2.3.7.RELEASE/spring-boot-2.3.7.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/boot/spring-boot/2.3.7.RELEASE/spring-boot-2.3.7.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/Maven__org_springframework_cloud_spring_cloud_commons_2_2_6_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_cloud_spring_cloud_commons_2_2_6_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework.cloud:spring-cloud-commons:2.2.6.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/cloud/spring-cloud-commons/2.2.6.RELEASE/spring-cloud-commons-2.2.6.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/cloud/spring-cloud-commons/2.2.6.RELEASE/spring-cloud-commons-2.2.6.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/cloud/spring-cloud-commons/2.2.6.RELEASE/spring-cloud-commons-2.2.6.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/Maven__org_springframework_security_spring_security_crypto_5_3_6_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_security_spring_security_crypto_5_3_6_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework.security:spring-security-crypto:5.3.6.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/security/spring-security-crypto/5.3.6.RELEASE/spring-security-crypto-5.3.6.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/security/spring-security-crypto/5.3.6.RELEASE/spring-security-crypto-5.3.6.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/security/spring-security-crypto/5.3.6.RELEASE/spring-security-crypto-5.3.6.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/Maven__org_springframework_spring_aop_5_2_12_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_spring_aop_5_2_12_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework:spring-aop:5.2.12.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-aop/5.2.12.RELEASE/spring-aop-5.2.12.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-aop/5.2.12.RELEASE/spring-aop-5.2.12.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-aop/5.2.12.RELEASE/spring-aop-5.2.12.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/Maven__org_springframework_spring_beans_5_2_12_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_spring_beans_5_2_12_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework:spring-beans:5.2.12.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-beans/5.2.12.RELEASE/spring-beans-5.2.12.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-beans/5.2.12.RELEASE/spring-beans-5.2.12.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-beans/5.2.12.RELEASE/spring-beans-5.2.12.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/Maven__org_springframework_spring_context_5_2_12_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_spring_context_5_2_12_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework:spring-context:5.2.12.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-context/5.2.12.RELEASE/spring-context-5.2.12.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-context/5.2.12.RELEASE/spring-context-5.2.12.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-context/5.2.12.RELEASE/spring-context-5.2.12.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/Maven__org_springframework_spring_core_5_2_12_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_spring_core_5_2_12_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework:spring-core:5.2.12.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-core/5.2.12.RELEASE/spring-core-5.2.12.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-core/5.2.12.RELEASE/spring-core-5.2.12.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-core/5.2.12.RELEASE/spring-core-5.2.12.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/Maven__org_springframework_spring_expression_5_2_12_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_spring_expression_5_2_12_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework:spring-expression:5.2.12.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-expression/5.2.12.RELEASE/spring-expression-5.2.12.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-expression/5.2.12.RELEASE/spring-expression-5.2.12.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-expression/5.2.12.RELEASE/spring-expression-5.2.12.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/Maven__org_springframework_spring_jcl_5_2_12_RELEASE.xml
generated
Normal file
13
.idea/libraries/Maven__org_springframework_spring_jcl_5_2_12_RELEASE.xml
generated
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.springframework:spring-jcl:5.2.12.RELEASE">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-jcl/5.2.12.RELEASE/spring-jcl-5.2.12.RELEASE.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-jcl/5.2.12.RELEASE/spring-jcl-5.2.12.RELEASE-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../server/maven/repository/org/springframework/spring-jcl/5.2.12.RELEASE/spring-jcl-5.2.12.RELEASE-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
11
.idea/misc.xml
generated
Normal file
11
.idea/misc.xml
generated
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MavenProjectsManager">
|
||||||
|
<option name="originalFiles">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/pom.xml" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
|
||||||
|
</project>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/cmeim.iml" filepath="$PROJECT_DIR$/cmeim.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="svn" />
|
||||||
|
</component>
|
||||||
|
</project>
|
59
.idea/workspace.xml
generated
Normal file
59
.idea/workspace.xml
generated
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AutoImportSettings">
|
||||||
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
|
</component>
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="2c999ccd-72c6-4053-87e5-c06267607d77" name="Default Changelist" comment="" />
|
||||||
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
|
</component>
|
||||||
|
<component name="MavenImportPreferences">
|
||||||
|
<option name="generalSettings">
|
||||||
|
<MavenGeneralSettings>
|
||||||
|
<option name="alwaysUpdateSnapshots" value="true" />
|
||||||
|
<option name="localRepository" value="D:\server\maven\repository" />
|
||||||
|
<option name="mavenHome" value="C:/Program Files/apache-maven-3.5.3" />
|
||||||
|
<option name="userSettingsFile" value="C:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\plugins\maven\lib\maven3\conf\settings.xml" />
|
||||||
|
</MavenGeneralSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectId" id="2zLK3XrqWhEx6oYyRXUNvnI6t9C" />
|
||||||
|
<component name="ProjectViewState">
|
||||||
|
<option name="abbreviatePackageNames" value="true" />
|
||||||
|
<option name="showLibraryContents" value="true" />
|
||||||
|
<option name="showMembers" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent">
|
||||||
|
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||||
|
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||||
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
|
<property name="aspect.path.notification.shown" value="true" />
|
||||||
|
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||||
|
<property name="project.structure.last.edited" value="Project" />
|
||||||
|
<property name="project.structure.proportion" value="0.0" />
|
||||||
|
<property name="project.structure.side.proportion" value="0.0" />
|
||||||
|
<property name="settings.editor.selected.configurable" value="MavenSettings" />
|
||||||
|
</component>
|
||||||
|
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||||
|
<component name="SvnConfiguration" cleanupOnStartRun="true">
|
||||||
|
<configuration>C:\Users\86484\AppData\Roaming\Subversion</configuration>
|
||||||
|
<supportedVersion>125</supportedVersion>
|
||||||
|
</component>
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="Default task">
|
||||||
|
<changelist id="2c999ccd-72c6-4053-87e5-c06267607d77" name="Default Changelist" comment="" />
|
||||||
|
<created>1751504716722</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1751504716722</updated>
|
||||||
|
<workItem from="1751504719564" duration="58000" />
|
||||||
|
</task>
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
|
<option name="version" value="3" />
|
||||||
|
</component>
|
||||||
|
</project>
|
1
.svn/entries
Normal file
1
.svn/entries
Normal file
@ -0,0 +1 @@
|
|||||||
|
12
|
1
.svn/format
Normal file
1
.svn/format
Normal file
@ -0,0 +1 @@
|
|||||||
|
12
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/googlecode/concurrentlinkedhashmap/concurrentlinkedhashmap-lru/1.4.2/concurrentlinkedhashmap-lru-1.4.2.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/googlecode/concurrentlinkedhashmap/concurrentlinkedhashmap-lru/1.4.2/concurrentlinkedhashmap-lru-1.4.2-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/googlecode/concurrentlinkedhashmap/concurrentlinkedhashmap-lru/1.4.2/concurrentlinkedhashmap-lru-1.4.2-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.cmeim.basic.po;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "ba_template")
|
||||||
|
public class BaTemplate {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||||
|
@Column(name = "id")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板名称
|
||||||
|
*/
|
||||||
|
@Column(name = "template_name")
|
||||||
|
@ApiParam(value = "模板名称")
|
||||||
|
private String templateName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板编号
|
||||||
|
*/
|
||||||
|
@Column(name = "template_code")
|
||||||
|
@ApiParam(value = "模板编号")
|
||||||
|
private String templateCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "created_dt")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private String createdDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "created_by")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板大类
|
||||||
|
*/
|
||||||
|
@Column(name = "template_category")
|
||||||
|
@ApiParam(value = "模板大类")
|
||||||
|
private String templateCategory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板类型
|
||||||
|
*/
|
||||||
|
@Column(name = "template_type")
|
||||||
|
@ApiParam(value = "模板类型")
|
||||||
|
private String templateType;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
@ApiParam(value = "创建时间集合")
|
||||||
|
private List<String> createdDtList;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
@ApiParam(value = "更新时间集合")
|
||||||
|
private List<String> updatedDtList;
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: com.github.jsqlparser:jsqlparser:4.3">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/github/jsqlparser/jsqlparser/4.3/jsqlparser-4.3.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/github/jsqlparser/jsqlparser/4.3/jsqlparser-4.3-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/github/jsqlparser/jsqlparser/4.3/jsqlparser-4.3-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.cmeim.biz.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Verasion:1.0
|
||||||
|
* @Author:DZY
|
||||||
|
* @Date:2022/5/12 红字查询
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
public class InputListDto implements Serializable {
|
||||||
|
/**
|
||||||
|
* 入库单主表
|
||||||
|
*/
|
||||||
|
private InputBillNewDto inputBillDto;
|
||||||
|
/**
|
||||||
|
* 入库单子表
|
||||||
|
*/
|
||||||
|
private List<InputBillDetailNewDto> items;
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.cmeim.common.security.feign;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import feign.RequestInterceptor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Feign 配置注册
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
**/
|
||||||
|
@Configuration
|
||||||
|
public class FeignAutoConfiguration
|
||||||
|
{
|
||||||
|
@Bean
|
||||||
|
public RequestInterceptor requestInterceptor()
|
||||||
|
{
|
||||||
|
return new FeignRequestInterceptor();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,820 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form
|
||||||
|
:model="queryParams"
|
||||||
|
ref="queryForm"
|
||||||
|
:inline="true"
|
||||||
|
label-width="80px"
|
||||||
|
>
|
||||||
|
|
||||||
|
<el-form-item prop="number">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.name"
|
||||||
|
placeholder="请输入工艺名称"
|
||||||
|
size="small"
|
||||||
|
style="width: 230px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item prop="bomName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.bomName"
|
||||||
|
size="small"
|
||||||
|
placeholder="请输入BOM版本"
|
||||||
|
style="width: 230px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item prop="dictStatus">
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
placeholder="请选择工艺状态"
|
||||||
|
v-model="queryParams.dictStatus"
|
||||||
|
style="width: 230px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="(dict, index) in this.$dictType.getRouteStatusArray()"
|
||||||
|
:key="index"
|
||||||
|
:label="dict.text"
|
||||||
|
:value="dict.key"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item prop="dictType">
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
v-model="queryParams.dictType"
|
||||||
|
placeholder="请选择工艺类型"
|
||||||
|
style="width: 230px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="(dict, index) in this.$dictType.getRouteTypeArray()"
|
||||||
|
:key="index"
|
||||||
|
:label="dict.text"
|
||||||
|
:value="dict.key"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
size="mini"
|
||||||
|
@click="handleQuery"
|
||||||
|
>搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="handleAdd"
|
||||||
|
v-hasPermi="['baRouter_add']"
|
||||||
|
>新增
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="success"
|
||||||
|
icon="el-icon-edit"
|
||||||
|
size="mini"
|
||||||
|
:disabled="single"
|
||||||
|
@click="handleUpdate"
|
||||||
|
v-hasPermi="['baRouter_edit']"
|
||||||
|
>修改
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
size="mini"
|
||||||
|
:disabled="single"
|
||||||
|
@click="handleDelete"
|
||||||
|
v-hasPermi="['baRouter_remove']"
|
||||||
|
>删除</el-button
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="info"
|
||||||
|
icon="el-icon-upload2"
|
||||||
|
size="mini"
|
||||||
|
@click="handleImport"
|
||||||
|
v-hasPermi="['baRouter_import']"
|
||||||
|
>导入
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="el-icon-edit"
|
||||||
|
size="mini"
|
||||||
|
:disabled="single"
|
||||||
|
@click="openGraph"
|
||||||
|
v-hasPermi="['baRouter_openGraph']"
|
||||||
|
>工艺配置
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-select
|
||||||
|
ref="select"
|
||||||
|
@click.native="notSelect"
|
||||||
|
style="width: 800px"
|
||||||
|
v-model="seqence"
|
||||||
|
:multiple="true"
|
||||||
|
placeholder=""
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in seqenceOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
<el-popover
|
||||||
|
style="float: right"
|
||||||
|
placement="bottom-end"
|
||||||
|
title="自定义显示列"
|
||||||
|
width="250"
|
||||||
|
@show="initPopover"
|
||||||
|
trigger="hover"
|
||||||
|
>
|
||||||
|
<headConfig
|
||||||
|
ref="test"
|
||||||
|
@fathers="fathers"
|
||||||
|
:propThis="propThis"
|
||||||
|
></headConfig>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
class="el-icon-caret-bottom"
|
||||||
|
slot="reference"
|
||||||
|
>自定义列</el-button
|
||||||
|
>
|
||||||
|
</el-popover>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
@sort-change="sortChange"
|
||||||
|
v-loading="loading"
|
||||||
|
:data="routeList"
|
||||||
|
@header-dragend="headerDragend"
|
||||||
|
lazy
|
||||||
|
v-if="indexShow"
|
||||||
|
highlight-current-row
|
||||||
|
@current-change="selectRow"
|
||||||
|
:tree-props="{ children: 'children', hasChildren: true }"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
border
|
||||||
|
ref="list"
|
||||||
|
stripe
|
||||||
|
:height="tableHeight"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" align="center" label="序号" width="50">
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column type="expand">-->
|
||||||
|
<!-- <template slot-scope="scope">-->
|
||||||
|
<!-- <el-table v-loading="subLoading" :data="childrenList" style="width: 80%"-->
|
||||||
|
<!-- class="two-list">-->
|
||||||
|
<!-- <el-table-column align="center" type="index" label="序号"></el-table-column>-->
|
||||||
|
<!-- <el-table-column prop="name" label="工序名称" width="200"></el-table-column>-->
|
||||||
|
<!-- <el-table-column prop="workCenterName" label="工作中心" width="200"></el-table-column>-->
|
||||||
|
<!-- <el-table-column prop="dictStatusShow" label="状态"></el-table-column>-->
|
||||||
|
<!-- <el-table-column prop="dictTypeShow" label="类型"></el-table-column>-->
|
||||||
|
<!-- <el-table-column prop="currentRevision" label="当前版本"></el-table-column>-->
|
||||||
|
<!-- </el-table>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
v-for="(item, index) in realList"
|
||||||
|
:sortable="item.notSort == true ? false : `custom`"
|
||||||
|
:prop="item.tableProp"
|
||||||
|
:key="index"
|
||||||
|
:align="item.align"
|
||||||
|
header-align="center"
|
||||||
|
:min-width="item.width"
|
||||||
|
:label="item.tableTitle"
|
||||||
|
:show-overflow-tooltip="item.show_overflow_tooltip"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<el-pagination
|
||||||
|
style="margin-top: 10px"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page="queryParams.pageNo"
|
||||||
|
:page-sizes="[10, 20, 50, 100, 200, 500, 1000]"
|
||||||
|
:page-size="queryParams.pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="total"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
<!-- 用户导入对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
:title="upload.title"
|
||||||
|
:visible.sync="upload.open"
|
||||||
|
width="400px"
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<el-upload
|
||||||
|
ref="upload"
|
||||||
|
:limit="1"
|
||||||
|
accept=".xlsx, .xls"
|
||||||
|
:headers="headers"
|
||||||
|
:action="upload.url + '?updateSupport=' + upload.updateSupport"
|
||||||
|
:disabled="upload.isUploading"
|
||||||
|
:on-progress="handleFileUploadProgress"
|
||||||
|
:on-success="handleFileSuccess"
|
||||||
|
:auto-upload="false"
|
||||||
|
drag
|
||||||
|
>
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">
|
||||||
|
将文件拖到此处,或
|
||||||
|
<em>点击上传</em>
|
||||||
|
</div>
|
||||||
|
<div class="el-upload__tip" style="color: red" slot="tip">
|
||||||
|
提示:仅允许导入“xls”或“xlsx”格式文件!
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="el-upload__tip" style="color: red" slot="tip">
|
||||||
|
<el-link type="success" @click.prevent="down">下载模板</el-link>
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
||||||
|
<el-button @click="upload.open = false">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import graphEdit from "./graphEdit";
|
||||||
|
import baRoute from "./ba-route-form";
|
||||||
|
// import bomList from './order-prod-valid'
|
||||||
|
|
||||||
|
import TreeSelect from "@riophae/vue-treeselect"; //引用下拉树组件
|
||||||
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||||
|
//引入css文件
|
||||||
|
import "@/assets/styles/cme-im-grid.scss";
|
||||||
|
import { getToken } from "@/utils/auth";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "OrderProd",
|
||||||
|
components: {
|
||||||
|
TreeSelect,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
normalizer(node) {
|
||||||
|
return {
|
||||||
|
id: node.value,
|
||||||
|
label: node.title,
|
||||||
|
children: node.children,
|
||||||
|
isDefaultExpanded: true,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
// 用户导入参数
|
||||||
|
upload: {
|
||||||
|
// 是否显示弹出层(用户导入)
|
||||||
|
open: false,
|
||||||
|
// 弹出层标题(用户导入)
|
||||||
|
title: "",
|
||||||
|
// 是否禁用上传
|
||||||
|
isUploading: false,
|
||||||
|
// 是否更新已经存在的用户数据
|
||||||
|
updateSupport: 0,
|
||||||
|
// 设置上传的请求头部
|
||||||
|
// 上传的地址
|
||||||
|
url: "/dev-api/craft/craft/route/importExcel2",
|
||||||
|
},
|
||||||
|
propThis: this,
|
||||||
|
selectRowNow: {},
|
||||||
|
List: [],
|
||||||
|
realList: [],
|
||||||
|
tableHeight: 0,
|
||||||
|
indexShow: false,
|
||||||
|
treeValue: [],
|
||||||
|
treeOptions: [], //下拉树数据
|
||||||
|
routeList: [],
|
||||||
|
childrenList: [],
|
||||||
|
expendFlag: false,
|
||||||
|
subLoading: false,
|
||||||
|
// 遮罩层
|
||||||
|
dateRange: [],
|
||||||
|
loading: false,
|
||||||
|
orderStatus: [],
|
||||||
|
orderType: [],
|
||||||
|
// 选中数组
|
||||||
|
rows: [],
|
||||||
|
// 非单个禁用
|
||||||
|
single: true,
|
||||||
|
// 非多个禁用
|
||||||
|
multiple: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 用户表格数据
|
||||||
|
|
||||||
|
// 弹出层标题
|
||||||
|
// 表单参数
|
||||||
|
form: {
|
||||||
|
id: undefined,
|
||||||
|
number: "",
|
||||||
|
planQty: 0,
|
||||||
|
materialId: "",
|
||||||
|
bomId: "",
|
||||||
|
dictStatus: 1,
|
||||||
|
dictType: 1,
|
||||||
|
order: 99,
|
||||||
|
customerOrder: "",
|
||||||
|
customer: "",
|
||||||
|
autoOrderPicking: false,
|
||||||
|
autoOrderWork: false,
|
||||||
|
planStartDt: undefined,
|
||||||
|
planEndDt: undefined,
|
||||||
|
routeId: undefined,
|
||||||
|
workCenterId: undefined,
|
||||||
|
},
|
||||||
|
|
||||||
|
centerTree: [],
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 50,
|
||||||
|
number: undefined,
|
||||||
|
bomName: undefined,
|
||||||
|
dictStatus: undefined,
|
||||||
|
dictType: undefined,
|
||||||
|
workCenterId: undefined,
|
||||||
|
},
|
||||||
|
seqenceOptions: [],
|
||||||
|
seqence: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
seqence: function () {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
headers() {
|
||||||
|
return {
|
||||||
|
Authorization: "Bearer " + getToken(),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
console.log(process.env.NODE_ENV,"渲染时候")
|
||||||
|
if (process.env.NODE_ENV == "development") {
|
||||||
|
this.upload.url = `/dev-api/craft/craft/route/importExcel2`;
|
||||||
|
} else {
|
||||||
|
this.upload.url = `/prod-api/craft/craft/route/importExcel2`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
let tempList = this.$headerConfig.getList("baRouter");
|
||||||
|
|
||||||
|
tempList.forEach((data, index) => {
|
||||||
|
if (data.notSort) return;
|
||||||
|
let temp = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
temp.value = data.tableProp.replace("Show", "") + " ascending";
|
||||||
|
temp.label = data.tableTitle + " 升序";
|
||||||
|
|
||||||
|
this.seqenceOptions.push(temp);
|
||||||
|
|
||||||
|
let tempD = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
tempD.value = data.tableProp.replace("Show", "") + " descending";
|
||||||
|
tempD.label = data.tableTitle + " 降序";
|
||||||
|
|
||||||
|
this.seqenceOptions.push(tempD);
|
||||||
|
});
|
||||||
|
this.initData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
notSelect() {
|
||||||
|
this.$refs.select.blur();
|
||||||
|
},
|
||||||
|
|
||||||
|
sortChange({ column, prop, order }) {
|
||||||
|
console.log(prop);
|
||||||
|
let sTemp = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
let value = prop.replace("Show", "") + " " + order;
|
||||||
|
let judgeValue = value.split(" ");
|
||||||
|
// this.seqence.push(value)
|
||||||
|
if (this.seqence.length === 0) {
|
||||||
|
this.seqence.push(value);
|
||||||
|
} else {
|
||||||
|
for (let i = 0; i < this.seqence.length; i++) {
|
||||||
|
let judgeSeqence = this.seqence[i].split(" ");
|
||||||
|
if (judgeValue[0] === judgeSeqence[0]) {
|
||||||
|
if (judgeValue[1] === "null") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.seqence.splice(i, 1, value);
|
||||||
|
console.log(this.seqence);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (i + 1 === this.seqence.length) {
|
||||||
|
this.seqence.push(value);
|
||||||
|
console.log(this.seqence);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
headerDragend(newWidth, oldWidth, column, event) {
|
||||||
|
// realList
|
||||||
|
this.realList.forEach((value) => {
|
||||||
|
if (column.property == value.tableProp) {
|
||||||
|
value.width = newWidth;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$refs.test.init();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.test.show();
|
||||||
|
}, 1000);
|
||||||
|
},
|
||||||
|
handleImport() {
|
||||||
|
this.upload.title = "工艺路线信息导入";
|
||||||
|
this.upload.open = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
down() {
|
||||||
|
if (process.env.NODE_ENV == "development") {
|
||||||
|
window.location.href = `./down/route.xlsx`;
|
||||||
|
// 工艺路线信息导入 模板
|
||||||
|
} else {
|
||||||
|
window.location.href = `./down/route.xlsx`;
|
||||||
|
// 工艺路线信息导入 模板
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// /** 下载模板操作 */
|
||||||
|
// importTemplate() {
|
||||||
|
// importTemplate().then(response => {
|
||||||
|
// this.download(response.msg)
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// 文件上传中处理
|
||||||
|
handleFileUploadProgress(event, file, fileList) {
|
||||||
|
this.upload.isUploading = true;
|
||||||
|
},
|
||||||
|
// 文件上传成功处理
|
||||||
|
handleFileSuccess(response, file, fileList) {
|
||||||
|
this.upload.open = false;
|
||||||
|
this.upload.isUploading = false;
|
||||||
|
this.$refs.upload.clearFiles();
|
||||||
|
this.$alert(response.data, "导入结果", {
|
||||||
|
dangerouslyUseHTMLString: true,
|
||||||
|
});
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
// 提交上传文件
|
||||||
|
submitFileForm() {
|
||||||
|
this.$refs.upload.submit();
|
||||||
|
},
|
||||||
|
|
||||||
|
initPopover() {
|
||||||
|
const params = {
|
||||||
|
tableName: "baRouter",
|
||||||
|
};
|
||||||
|
this.$headerConfig.getRealList(params).then((data) => {
|
||||||
|
// console.log("dsffwggerwer2w",data);
|
||||||
|
let temp = JSON.parse(data.data.data);
|
||||||
|
// console.log(temp);
|
||||||
|
this.realList = temp.headerList;
|
||||||
|
console.log(this.realList);
|
||||||
|
this.$refs.test.init();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
fathers(data) {
|
||||||
|
this.List = data.configure.List;
|
||||||
|
data.configure.List.forEach((value) => {
|
||||||
|
this.realList.forEach((real) => {
|
||||||
|
if (value.tableProp == real.tableProp) {
|
||||||
|
value.width = real.width;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
data.configure.headerList.forEach((value) => {
|
||||||
|
this.realList.forEach((real) => {
|
||||||
|
if (value.tableProp == real.tableProp) {
|
||||||
|
value.width = real.width;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if (data.configure.headerList.length <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const params = {
|
||||||
|
tableName: "baRouter",
|
||||||
|
configure: JSON.stringify(data.configure),
|
||||||
|
};
|
||||||
|
|
||||||
|
this.realList = data.configure.headerList;
|
||||||
|
|
||||||
|
this.$headerConfig.updateRealList(params).then((value) => {
|
||||||
|
console.log(value);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
selectRow(val) {
|
||||||
|
this.single = false;
|
||||||
|
this.selectRowNow = val;
|
||||||
|
},
|
||||||
|
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.queryParams.pageSize = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.queryParams.pageNo = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
//在method里面写上方法
|
||||||
|
|
||||||
|
// expandChange(value) {
|
||||||
|
// this.expendFlag = !this.expendFlag
|
||||||
|
// if (this.expendFlag) {
|
||||||
|
// this.getChildrenList(value.id)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// },
|
||||||
|
//初始化表格
|
||||||
|
initData() {
|
||||||
|
this.getList();
|
||||||
|
this.getWorkCenterTree();
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.tableHeight =
|
||||||
|
window.innerHeight - this.$refs.queryForm.$el.offsetTop - 260;
|
||||||
|
// 监听窗口大小变化
|
||||||
|
let self = this;
|
||||||
|
window.onresize = function () {
|
||||||
|
self.tableHeight =
|
||||||
|
window.innerHeight - self.$refs.queryForm.$el.offsetTop - 260;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
tableName: "baRouter",
|
||||||
|
};
|
||||||
|
this.$headerConfig.getRealList(params).then((data) => {
|
||||||
|
console.log("开始输出真正表格");
|
||||||
|
if (data.data && data.data.data && data.data.data !== null) {
|
||||||
|
let temp = JSON.parse(data.data.data);
|
||||||
|
this.realList = temp.headerList;
|
||||||
|
this.List = temp.List;
|
||||||
|
} else {
|
||||||
|
this.List = this.$headerConfig.getList("baRouter");
|
||||||
|
this.realList = this.List;
|
||||||
|
let temp = {
|
||||||
|
headerList: this.realList,
|
||||||
|
List: this.List,
|
||||||
|
};
|
||||||
|
const params = {
|
||||||
|
tableName: "baRouter",
|
||||||
|
configure: JSON.stringify(temp),
|
||||||
|
};
|
||||||
|
this.$headerConfig.updateRealList(params).then((value) => {
|
||||||
|
console.log(value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.indexShow = true;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
getWorkCenterTree() {
|
||||||
|
this.$plan.getWorkCenterTree().then((resp) => {
|
||||||
|
this.treeOptions = [];
|
||||||
|
this.treeOptions.push(resp.data.data);
|
||||||
|
this.removeBlackChildren(this.treeOptions);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
removeBlackChildren(list) {
|
||||||
|
list.forEach((value) => {
|
||||||
|
if (value.children.length == 0) {
|
||||||
|
value.children = undefined;
|
||||||
|
} else {
|
||||||
|
this.removeBlackChildren(value.children);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 查询工艺列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true;
|
||||||
|
const orders = [];
|
||||||
|
this.seqence.map((val) => {
|
||||||
|
orders.push(
|
||||||
|
val.replace("ascending", "asc").replace("descending", "desc")
|
||||||
|
);
|
||||||
|
});
|
||||||
|
this.queryParams.orders = orders;
|
||||||
|
this.$baRoute.getRouteList(this.queryParams).then((resp) => {
|
||||||
|
this.loading = false;
|
||||||
|
this.total = resp.data.data.recordsTotal;
|
||||||
|
this.routeList = resp.data.data.data;
|
||||||
|
this.routeList.forEach((value) => {
|
||||||
|
value.dictStatusShow = this.$dictType.getRouteStatus(
|
||||||
|
value.dictStatus
|
||||||
|
);
|
||||||
|
value.dictTypeShow = this.$dictType.getRouteType(value.dictType);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
//获取工序
|
||||||
|
getChildrenList(routeId) {
|
||||||
|
this.subLoading = true;
|
||||||
|
let params = {
|
||||||
|
routeId,
|
||||||
|
};
|
||||||
|
this.$baRoute.getOperationListByRoute(params).then((resp) => {
|
||||||
|
this.subLoading = false;
|
||||||
|
if (resp.data.code == "200") {
|
||||||
|
this.childrenList = resp.data.data;
|
||||||
|
this.childrenList.forEach((value) => {
|
||||||
|
value.dictStatusShow = this.$dictType.getRouteStatus(
|
||||||
|
value.dictStatus
|
||||||
|
);
|
||||||
|
value.dictTypeShow = this.$dictType.getRouteType(value.dictType);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNo = 1;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 50,
|
||||||
|
number: undefined,
|
||||||
|
bomName: undefined,
|
||||||
|
dictStatus: undefined,
|
||||||
|
dictType: undefined,
|
||||||
|
workCenterId: undefined,
|
||||||
|
};
|
||||||
|
this.seqence = [];
|
||||||
|
// this.handleQuery();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.rows = selection;
|
||||||
|
this.single = selection.length != 1;
|
||||||
|
this.multiple = !selection.length;
|
||||||
|
},
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
handleAdd() {
|
||||||
|
this.$layer.iframe({
|
||||||
|
shadeClose: false,
|
||||||
|
content: {
|
||||||
|
content: baRoute, //传递的组件对象
|
||||||
|
parent: this, //当前的vue对象
|
||||||
|
},
|
||||||
|
area: ["730px", "400px"],
|
||||||
|
title: "创建工艺路线",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
openGraph() {
|
||||||
|
console.log('1607')
|
||||||
|
this.$layer.iframe({
|
||||||
|
shadeClose: false,
|
||||||
|
content: {
|
||||||
|
content: graphEdit, //传递的组件对象
|
||||||
|
parent: this, //当前的vue对象
|
||||||
|
shadeClose: false,
|
||||||
|
data: {
|
||||||
|
formType: 1,
|
||||||
|
row: this.selectRowNow,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
area: ["1200px", "670px"],
|
||||||
|
title: "编辑工艺路线",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
handleUpdate() {
|
||||||
|
this.$layer.iframe({
|
||||||
|
shadeClose: false,
|
||||||
|
content: {
|
||||||
|
content: baRoute, //传递的组件对象
|
||||||
|
parent: this, //当前的vue对象
|
||||||
|
shadeClose: false,
|
||||||
|
data: {
|
||||||
|
formType: 1,
|
||||||
|
row: this.selectRowNow,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
area: ["730px", "400px"],
|
||||||
|
title: "编辑工艺路线",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
valid() {
|
||||||
|
// this.$layer.iframe({
|
||||||
|
// shadeClose:false,
|
||||||
|
// content: {
|
||||||
|
// content: bomList, //传递的组件对象
|
||||||
|
// parent: this,//当前的vue对象
|
||||||
|
// shadeClose: false,
|
||||||
|
// data: {
|
||||||
|
// rows:this.rows
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// area: ['900px', '420px'],
|
||||||
|
// title: '齐套性判断'
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete(row) {
|
||||||
|
row = this.selectRowNow;
|
||||||
|
this.$confirm("是否删除选中工艺路线【" + row.name + "】?", "警告", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
}).then(() => {
|
||||||
|
this.$baRoute.deleteRoute({ id: row.id }).then((resp) => {
|
||||||
|
|
||||||
|
if (resp.data.code == "200") {
|
||||||
|
this.$message.success("删除成功!!");
|
||||||
|
this.getList();
|
||||||
|
}else{
|
||||||
|
}
|
||||||
|
}).catch(resp=>{
|
||||||
|
this.$message.error(resp.msg);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
>>> .el-table--striped .el-table__body tr.el-table__row--striped.current-row td,
|
||||||
|
>>> .el-table__body tr.current-row > td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-table__body tr:hover > td {
|
||||||
|
background-color: #e9edf3 !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
>>> .el-link.el-link--default {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.mb8 >>> .el-select .el-input__inner {
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb8 >>> .el-select .el-input__inner {
|
||||||
|
border: 0px;
|
||||||
|
padding-right: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-input__suffix-inner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
>>> .el-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-divider {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-table .el-table__header-wrapper th {
|
||||||
|
padding: 5px 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,104 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
|
||||||
|
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="80px">
|
||||||
|
|
||||||
|
<el-form-item label="BOM名称" prop="materialId">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.name"
|
||||||
|
placeholder="输入BOM名称"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 200px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-table v-loading="loading" border :data="BomList" @row-dblclick="handleDbClick" ref="list" height="400px">
|
||||||
|
<el-table-column label="BOM名称" align="center" prop="name" width="200" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="BOM版本" align="center" prop="revision" width="200" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="当前版本" align="center" prop="currentRevision" width="200" :show-overflow-tooltip="true"/>
|
||||||
|
</el-table>
|
||||||
|
<pagination
|
||||||
|
v-show="total>0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNo"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
<!-- <order-prod-form :propThis="propsThis" ref="orderForm"></order-prod-form>-->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'orderProd',
|
||||||
|
props: {
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading:false,
|
||||||
|
total:0,
|
||||||
|
BomList:[],
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 50,
|
||||||
|
code: undefined,
|
||||||
|
name: undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {},
|
||||||
|
mounted() {
|
||||||
|
this.initData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//初始化表格
|
||||||
|
initData() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
handleDbClick(row, event, column) {
|
||||||
|
this.$parent.getSelectBom(row);
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
},
|
||||||
|
/** 查询订单列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
this.$plan.getBomList(this.queryParams).then(_data => {
|
||||||
|
let resp=_data.config?_data.data:_data
|
||||||
|
console.log(resp,'order-prod-select-bom getList')
|
||||||
|
this.loading = false;
|
||||||
|
this.total = resp.data.recordsTotal
|
||||||
|
this.BomList = resp.data.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNo = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.dateRange = []
|
||||||
|
this.resetForm('queryForm')
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,123 @@
|
|||||||
|
package com.cmeim.stock.controller;
|
||||||
|
|
||||||
|
import com.cmeim.common.core.exception.ServiceException;
|
||||||
|
import com.cmeim.common.core.web.controller.GenericController;
|
||||||
|
import com.cmeim.common.core.web.domain.Respond;
|
||||||
|
import com.cmeim.common.core.web.domain.RespondEnum;
|
||||||
|
import com.cmeim.common.core.web.page.PageVo;
|
||||||
|
import com.cmeim.common.log.annotation.Log;
|
||||||
|
import com.cmeim.common.log.enums.BusinessType;
|
||||||
|
import com.cmeim.stock.po.ContainerInfo;
|
||||||
|
import com.cmeim.stock.po.ShelfInfo;
|
||||||
|
import com.cmeim.stock.po.StationInfo;
|
||||||
|
import com.cmeim.stock.repository.ShelfInfoRepository;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.persistence.criteria.CriteriaBuilder;
|
||||||
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
|
import javax.persistence.criteria.Predicate;
|
||||||
|
import javax.persistence.criteria.Root;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 李俊辉
|
||||||
|
* @version 1.0
|
||||||
|
* date: 2023/6/28
|
||||||
|
*/
|
||||||
|
@Api(tags = "货架")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "shelf")
|
||||||
|
@Slf4j
|
||||||
|
public class ShelfController extends GenericController {
|
||||||
|
@Autowired
|
||||||
|
private ShelfInfoRepository shelfInfoRepository;
|
||||||
|
|
||||||
|
@ApiOperation(value = "列表")
|
||||||
|
@GetMapping(value = "list")
|
||||||
|
public Respond list(PageVo pv, ShelfInfo shelfInfo) {
|
||||||
|
PageRequest pageRequest = PageRequest.of(pv.getPageNo() - 1, pv.getPageSize(),
|
||||||
|
Sort.by(sortOrder(shelfInfo.getOrders())));
|
||||||
|
Page page = shelfInfoRepository.findAll(buildSpecification(shelfInfo), pageRequest);
|
||||||
|
List<ShelfInfo> list = page.getContent();
|
||||||
|
pv.setRecordsTotal(page.getTotalElements());
|
||||||
|
pv.setData(list);
|
||||||
|
return buildSuccess(pv);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改货架状态")
|
||||||
|
@Log(title = "货架", businessType = BusinessType.UPDATE)
|
||||||
|
@PostMapping(value = "updateShelfStatus")
|
||||||
|
public Respond updateStationStatus(ShelfInfo shelfInfo) {
|
||||||
|
ShelfInfo shelf = shelfInfoRepository.findByShelfCode(shelfInfo.getShelfCode());
|
||||||
|
if (shelf == null) {
|
||||||
|
ServiceException exception = new ServiceException(RespondEnum.FAILURE);
|
||||||
|
exception.setErrorMessage("未找到该货架");
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
shelf.setShelfStatus(shelfInfo.getShelfStatus());
|
||||||
|
shelf.setQty(shelfInfo.getQty());
|
||||||
|
shelf.setUpdatedBy(shelfInfo.getUpdatedBy());
|
||||||
|
shelf.setUpdatedDt(shelfInfo.getUpdatedDt());
|
||||||
|
ShelfInfo save = shelfInfoRepository.save(shelf);
|
||||||
|
return buildSuccess(save);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改任务单优先级")
|
||||||
|
@Log(title = "货架", businessType = BusinessType.UPDATE)
|
||||||
|
@PostMapping(value = "updateShelfPriority")
|
||||||
|
public Respond updateShelfPriority(String productionTask) {
|
||||||
|
List<ShelfInfo> shelfInfoList = shelfInfoRepository.findByProductionTask(productionTask);
|
||||||
|
if (shelfInfoList.size() == 0) {
|
||||||
|
ServiceException exception = new ServiceException(RespondEnum.FAILURE);
|
||||||
|
exception.setErrorMessage("未找到该该任务对应的货架");
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
for (ShelfInfo shelfInfo : shelfInfoList) {
|
||||||
|
shelfInfo.setPriority(1);
|
||||||
|
}
|
||||||
|
shelfInfoRepository.saveAll(shelfInfoList);
|
||||||
|
return buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Specification buildSpecification(ShelfInfo shelfInfo) {
|
||||||
|
Specification<ShelfInfo> specification = new Specification<ShelfInfo>() {
|
||||||
|
@Override
|
||||||
|
public Predicate toPredicate(Root<ShelfInfo> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
|
||||||
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
if (shelfInfo.getShelfCode() != null) {
|
||||||
|
predicates.add(cb.like(root.get("shelfCode").as(String.class), "%" + shelfInfo.getShelfCode() + "%"));
|
||||||
|
}
|
||||||
|
if (shelfInfo.getProductionTask() != null) {
|
||||||
|
predicates.add(cb.like(root.get("productionTask").as(String.class), "%" + shelfInfo.getProductionTask() + "%"));
|
||||||
|
}
|
||||||
|
if (shelfInfo.getShelfStatus() != null) {
|
||||||
|
predicates.add(cb.equal(root.get("shelfStatus").as(Integer.class), shelfInfo.getShelfStatus()));
|
||||||
|
}
|
||||||
|
if (shelfInfo.getOrderStatus() != null) {
|
||||||
|
predicates.add(cb.equal(root.get("orderStatus").as(Integer.class), shelfInfo.getOrderStatus()));
|
||||||
|
}
|
||||||
|
if (shelfInfo.getOrderStatusArr() != null) {
|
||||||
|
CriteriaBuilder.In<Integer> in = cb.in(root.get("orderStatus").as(Integer.class));
|
||||||
|
for (Integer status : shelfInfo.getOrderStatusArr()) {
|
||||||
|
in.value(status);
|
||||||
|
}
|
||||||
|
predicates.add(in);
|
||||||
|
}
|
||||||
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return specification;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
package com.cmeim.common.core.utils.file;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import org.apache.poi.util.IOUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片处理工具类
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
public class ImageUtils
|
||||||
|
{
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(ImageUtils.class);
|
||||||
|
|
||||||
|
public static byte[] getImage(String imagePath)
|
||||||
|
{
|
||||||
|
InputStream is = getFile(imagePath);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return IOUtils.toByteArray(is);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.error("图片加载异常 {}", e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
IOUtils.closeQuietly(is);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static InputStream getFile(String imagePath)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] result = readFile(imagePath);
|
||||||
|
result = Arrays.copyOf(result, result.length);
|
||||||
|
return new ByteArrayInputStream(result);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.error("获取图片异常 {}", e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 读取文件为字节数据
|
||||||
|
*
|
||||||
|
* @param key 地址
|
||||||
|
* @return 字节数据
|
||||||
|
*/
|
||||||
|
public static byte[] readFile(String url)
|
||||||
|
{
|
||||||
|
InputStream in = null;
|
||||||
|
ByteArrayOutputStream baos = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 网络地址
|
||||||
|
URL urlObj = new URL(url);
|
||||||
|
URLConnection urlConnection = urlObj.openConnection();
|
||||||
|
urlConnection.setConnectTimeout(30 * 1000);
|
||||||
|
urlConnection.setReadTimeout(60 * 1000);
|
||||||
|
urlConnection.setDoInput(true);
|
||||||
|
in = urlConnection.getInputStream();
|
||||||
|
return IOUtils.toByteArray(in);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.error("访问文件异常 {}", e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
IOUtils.closeQuietly(baos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,277 @@
|
|||||||
|
package com.cmeim.biz.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.serializer.PascalNameFilter;
|
||||||
|
import com.cmeim.basic.api.dto.SyDictDto;
|
||||||
|
import com.cmeim.basic.api.enums.BaNumberRuleCode;
|
||||||
|
import com.cmeim.biz.po.MmElectronBill;
|
||||||
|
import com.cmeim.biz.po.MmElectronBillDetail;
|
||||||
|
import com.cmeim.biz.po.MmInputBill;
|
||||||
|
import com.cmeim.biz.po.MmInputBillDetail;
|
||||||
|
import com.cmeim.biz.po.MmSporadicPickBill;
|
||||||
|
import com.cmeim.biz.po.MmSporadicPickBillDetail;
|
||||||
|
import com.cmeim.biz.repository.MmElectronBillDetailRepository;
|
||||||
|
import com.cmeim.biz.repository.MmElectronBillRepository;
|
||||||
|
import com.cmeim.biz.vo.MmElectronBillVo;
|
||||||
|
import com.cmeim.biz.vo.MmPickBillVo;
|
||||||
|
import com.cmeim.common.core.exception.ServiceException;
|
||||||
|
import com.cmeim.common.core.utils.BeanUtil;
|
||||||
|
import com.cmeim.common.core.utils.DateUtil;
|
||||||
|
import com.cmeim.common.core.utils.SecurityUtils;
|
||||||
|
import com.cmeim.common.core.web.domain.TUserInfo;
|
||||||
|
import com.cmeim.kafka.api.Topic;
|
||||||
|
import com.cmeim.kafka.api.dto.output.BarDto;
|
||||||
|
import com.cmeim.kafka.api.dto.output.SporadicPickBillDto;
|
||||||
|
import com.cmeim.kafka.api.dto.output.SyncPickBillDto;
|
||||||
|
import com.cmeim.stock.dto.StockElectronDto;
|
||||||
|
import com.cmeim.stock.po.MmStock;
|
||||||
|
import com.cmeim.stock.repository.MmStockRepository;
|
||||||
|
import com.cmeim.wms.api.dto.MissPickListRDto;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.kafka.core.KafkaTemplate;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.persistence.criteria.CriteriaBuilder;
|
||||||
|
import javax.persistence.criteria.Join;
|
||||||
|
import javax.persistence.criteria.JoinType;
|
||||||
|
import javax.persistence.criteria.Path;
|
||||||
|
import javax.persistence.criteria.Predicate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作者: 徐一码
|
||||||
|
* 时间: 2022/10/18
|
||||||
|
*
|
||||||
|
* @author XXL
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
@Transactional(rollbackFor = {ServiceException.class, RuntimeException.class, Exception.class})
|
||||||
|
public class MmElectronBillService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private InputRemoteService remoteService;
|
||||||
|
@Autowired
|
||||||
|
private MmElectronBillRepository electronBillRepository;
|
||||||
|
@Autowired
|
||||||
|
private MmElectronBillDetailRepository electronBillDetailRepository;
|
||||||
|
@Autowired
|
||||||
|
private KafkaTemplate kafkaTemplate;
|
||||||
|
@Autowired
|
||||||
|
private MmStockRepository stockRepository;
|
||||||
|
|
||||||
|
|
||||||
|
public Specification buildSpecification(MmElectronBillVo entity) {
|
||||||
|
Specification specification = (Specification<MmElectronBill>) (root, criteriaQuery, cb) -> {
|
||||||
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
String electronBillNumber = "electronBillNumber";
|
||||||
|
String orderWorkNumbers = "orderWorkNumbers";
|
||||||
|
String orderProdNumbers = "orderProdNumbers";
|
||||||
|
String items = "items";
|
||||||
|
if (StringUtils.isNotBlank(entity.getElectronBillNumber())) {
|
||||||
|
String[] pickBillNumbers = entity.getElectronBillNumber().split(" ");
|
||||||
|
if (pickBillNumbers.length > 1) {
|
||||||
|
CriteriaBuilder.In<String> in = cb.in(root.get(electronBillNumber).as(String.class));
|
||||||
|
for (String materialCode : pickBillNumbers) {
|
||||||
|
in.value(materialCode);
|
||||||
|
}
|
||||||
|
predicates.add(in);
|
||||||
|
} else {
|
||||||
|
predicates.add(cb.like(root.get(electronBillNumber).as(String.class),
|
||||||
|
"%" + entity.getElectronBillNumber() + "%"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getMaterialCode())) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("materialCode");
|
||||||
|
predicates.add(cb.like(path, "%" + entity.getMaterialCode() + "%"));
|
||||||
|
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getMaterialName())) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("materialName");
|
||||||
|
predicates.add(cb.like(path, "%" + entity.getMaterialName() + "%"));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getMaterialSpec())) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("materialSpec");
|
||||||
|
predicates.add(cb.like(path, "%" + entity.getMaterialSpec() + "%"));
|
||||||
|
}
|
||||||
|
criteriaQuery.distinct(true);
|
||||||
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
||||||
|
};
|
||||||
|
return specification;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电子料仓单新增
|
||||||
|
* @param mmElectronBill
|
||||||
|
*/
|
||||||
|
public void add(MmElectronBill mmElectronBill) {
|
||||||
|
String electronBillNumber = remoteService.getByCode(BaNumberRuleCode.ELECTRONBILL);
|
||||||
|
String createdDt = DateUtil.getCurrentDate();
|
||||||
|
String createdBy = SecurityUtils.getUsername();
|
||||||
|
mmElectronBill.setElectronBillNumber(electronBillNumber);
|
||||||
|
mmElectronBill.setDictStatus(0);
|
||||||
|
mmElectronBill.setCreatedDt(createdDt);
|
||||||
|
mmElectronBill.setCreatedBy(createdBy);
|
||||||
|
|
||||||
|
mmElectronBill.getItems().forEach(data ->{
|
||||||
|
data.setElectronBillNumber(electronBillNumber);
|
||||||
|
data.setDictStatus(0);
|
||||||
|
data.setCreatedDt(createdDt);
|
||||||
|
data.setCreatedBy(createdBy);
|
||||||
|
});
|
||||||
|
electronBillRepository.save(mmElectronBill);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(MmElectronBill mmElectronBill) {
|
||||||
|
String dt = DateUtil.getCurrentDate();
|
||||||
|
String by = SecurityUtils.getUsername();
|
||||||
|
MmElectronBill bill = BeanUtil.copyProperties(mmElectronBill, MmElectronBill.class);
|
||||||
|
bill.setUpdatedDt(dt);
|
||||||
|
bill.setUpdatedBy(by);
|
||||||
|
bill.getItems().forEach(data ->{
|
||||||
|
if (data.getId() == null) {
|
||||||
|
data.setElectronBillNumber(mmElectronBill.getElectronBillNumber());
|
||||||
|
data.setDictStatus(0);
|
||||||
|
data.setCreatedDt(dt);
|
||||||
|
data.setCreatedBy(by);
|
||||||
|
}
|
||||||
|
if (data.getId() != null) {
|
||||||
|
data.setUpdatedBy(by);
|
||||||
|
data.setUpdatedDt(dt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
electronBillDetailRepository.deleteAllByElectronBillId(mmElectronBill.getId());
|
||||||
|
electronBillRepository.save(mmElectronBill);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印数据
|
||||||
|
*
|
||||||
|
* @param list 入库单list
|
||||||
|
* @param cloumns 列数组
|
||||||
|
* @return 返回值
|
||||||
|
*/
|
||||||
|
public List<Object[]> initPrintData(List<MmElectronBill> list, String[] cloumns) {
|
||||||
|
List<Object[]> datalist = new ArrayList<>();
|
||||||
|
// 状态
|
||||||
|
/*SyDictDto dto = new SyDictDto();
|
||||||
|
dto.setGroupCode("mm_input_bill_status");
|
||||||
|
List<SyDictDto> inputBillStatus = remoteSyDictService.query(dto).getData();*/
|
||||||
|
for (MmElectronBill mmElectronBill : list) {
|
||||||
|
List<MmElectronBillDetail> items = mmElectronBill.getItems();
|
||||||
|
datalist = buildData(items, cloumns, mmElectronBill);
|
||||||
|
}
|
||||||
|
return datalist;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Object[]> buildData(List<MmElectronBillDetail> items, String[] cloumns, MmElectronBill mmElectronBill) {
|
||||||
|
int index = 1;
|
||||||
|
List<Object[]> datalist = new ArrayList<>();
|
||||||
|
for (int i = 0; i < items.size(); i++) {
|
||||||
|
MmElectronBillDetail item = items.get(i);
|
||||||
|
Object[] data = new Object[cloumns.length];
|
||||||
|
data[0] = index;
|
||||||
|
index++;
|
||||||
|
if (i == 0) {
|
||||||
|
// 电子料仓单
|
||||||
|
data[1] = mmElectronBill.getElectronBillNumber();
|
||||||
|
//仓库代码
|
||||||
|
data[2] = mmElectronBill.getWarehouseCode();
|
||||||
|
// 仓库名称
|
||||||
|
data[3] = mmElectronBill.getWarehouseName();
|
||||||
|
}
|
||||||
|
// 批次
|
||||||
|
data[4] = item.getBatchNo();
|
||||||
|
data[5] = item.getMaterialCode();
|
||||||
|
data[6] = item.getMaterialName();
|
||||||
|
data[7] = item.getMaterialSpec();
|
||||||
|
data[8] = item.getMaterialBar();
|
||||||
|
data[9] = item.getDictStatus() == 0 ? "待取料" : "已取料";
|
||||||
|
data[10] = item.getBarQty();
|
||||||
|
data[11] = item.getCreatedBy();
|
||||||
|
data[12] = item.getCreatedDt();
|
||||||
|
data[13] = item.getUpdatedBy();
|
||||||
|
data[14] = item.getUpdatedDt();
|
||||||
|
datalist.add(data);
|
||||||
|
}
|
||||||
|
return datalist;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(List<Long> ids) {
|
||||||
|
List<MmElectronBill> allById = electronBillRepository.findAllById(ids);
|
||||||
|
electronBillRepository.deleteAll(allById);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* syncPickBillSporadicPick
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public void syncPickBillSporadicPick(MmElectronBillVo mmElectronBillVo) {
|
||||||
|
SporadicPickBillDto sporadicPickBillDto = new SporadicPickBillDto();
|
||||||
|
List<BarDto> barDtoList = new ArrayList<>();
|
||||||
|
//判断 最优先的条码
|
||||||
|
|
||||||
|
sporadicPickBillDto.setItemType("1");
|
||||||
|
sporadicPickBillDto.setTaskType("1");
|
||||||
|
sporadicPickBillDto.setPickType("领料");
|
||||||
|
sporadicPickBillDto.setTaskNo(mmElectronBillVo.getElectronBillNumber());
|
||||||
|
for (MmElectronBillDetail mm : mmElectronBillVo.getItems()) {
|
||||||
|
BarDto barDto = new BarDto();
|
||||||
|
barDto.setUID(mm.getMaterialBar());
|
||||||
|
barDtoList.add(barDto);
|
||||||
|
}
|
||||||
|
sporadicPickBillDto.setItemList(barDtoList);
|
||||||
|
|
||||||
|
log.info("下发智能仓储柜,data:{}, result:{}",sporadicPickBillDto, new PascalNameFilter());
|
||||||
|
|
||||||
|
//通过kafka的形式给边缘端发送信息
|
||||||
|
kafkaTemplate.send(Topic.Output.OUTPUT_SYNC_PICKBILL_TEST, JSONObject.toJSONString(sporadicPickBillDto, new PascalNameFilter()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MmStock> selectStock(MmElectronBillVo syncPickBillDto) {
|
||||||
|
List<Integer> lists = new ArrayList<>();
|
||||||
|
lists.add(20);
|
||||||
|
lists.add(30);
|
||||||
|
return stockRepository.findAll(buildSpecificationSelectStock(syncPickBillDto,lists));
|
||||||
|
}
|
||||||
|
private Specification buildSpecificationSelectStock(MmElectronBillVo syncPickBillDto, List<Integer> dictStatus) {
|
||||||
|
Specification<MmElectronBillVo> specification = (Specification<MmElectronBillVo>) (root, criteriaQuery, cb) -> {
|
||||||
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
if (com.cmeim.common.core.utils.StringUtils.isNotBlank(syncPickBillDto.getMaterialCode())) {
|
||||||
|
predicates.add(cb.like(root.get("materialCode").as(String.class),
|
||||||
|
"%" + syncPickBillDto.getMaterialCode() + "%"));
|
||||||
|
}
|
||||||
|
if (com.cmeim.common.core.utils.StringUtils.isNotBlank(syncPickBillDto.getMaterialName())) {
|
||||||
|
predicates.add(cb.like(root.get("materialName").as(String.class),
|
||||||
|
"%" + syncPickBillDto.getMaterialName() + "%"));
|
||||||
|
}
|
||||||
|
if (com.cmeim.common.core.utils.StringUtils.isNotBlank(syncPickBillDto.getWarehouseCode())) {
|
||||||
|
predicates.add(cb.equal(root.get("warehouseCode").as(String.class),syncPickBillDto.getWarehouseCode()));
|
||||||
|
}
|
||||||
|
if(dictStatus != null && dictStatus.size() > 0){
|
||||||
|
CriteriaBuilder.In<Integer> in = cb.in(root.get("warehouseType"));
|
||||||
|
for (Integer id : dictStatus) {
|
||||||
|
in.value(id);
|
||||||
|
}
|
||||||
|
predicates.add(in);
|
||||||
|
}
|
||||||
|
criteriaQuery.distinct(true);
|
||||||
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
||||||
|
};
|
||||||
|
return specification;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.cmeim.gateway.config.properties;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 放行白名单配置
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@RefreshScope
|
||||||
|
@ConfigurationProperties(prefix = "ignore")
|
||||||
|
public class IgnoreWhiteProperties
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 放行白名单配置,网关不校验此处的白名单
|
||||||
|
*/
|
||||||
|
private List<String> whites = new ArrayList<>();
|
||||||
|
|
||||||
|
public List<String> getWhites()
|
||||||
|
{
|
||||||
|
return whites;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWhites(List<String> whites)
|
||||||
|
{
|
||||||
|
this.whites = whites;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,109 @@
|
|||||||
|
<template>
|
||||||
|
<!-- 帆软报表-->
|
||||||
|
<div class="full-screen">
|
||||||
|
<div v-if="isFrameShow" class="main-section flex-column">
|
||||||
|
<iframe ref="activit" :src="src" class="iframe" height="100%" width="100%"
|
||||||
|
@load="handleIframeLoaded"></iframe>
|
||||||
|
</div>
|
||||||
|
<span v-else style="text-align:center;">
|
||||||
|
<i class="el-icon-loading"></i>
|
||||||
|
正在加载中 请稍等
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import importModal from '@/components/buttons/import/modal'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isFrameShow: false,
|
||||||
|
userList: [], //传给子页面的用户列表
|
||||||
|
roleList: [],//传给子页面的角色列表,
|
||||||
|
path: "",
|
||||||
|
handledPaths: ['生产报表/生产日报表']
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
src() {
|
||||||
|
if (this.handledPaths.includes(this.path)) {
|
||||||
|
return `/webroot/decision/view/report?viewlet=MX/${this.path}.cpt`
|
||||||
|
}
|
||||||
|
return "https://fineReport.cme-im.com/webroot/decision/view/report?viewlet=MX/" + this.path + ".cpt"//this.$store.modelId;//activiti主html路径
|
||||||
|
},
|
||||||
|
apiUrl() {
|
||||||
|
//被public里的app-cfg.js调用
|
||||||
|
return [process.env.VUE_APP_BASE_API] + "/basic/activiti6/modeler";//后台部署的api服务
|
||||||
|
},
|
||||||
|
token() {
|
||||||
|
//被public里的modeler.html里的open方法调用
|
||||||
|
// return getToken();//token
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
if (this.$route.path[0] === '/') {
|
||||||
|
this.path = this.$route.path.substring(1)
|
||||||
|
} else {
|
||||||
|
this.path = this.$route.path
|
||||||
|
}
|
||||||
|
this.isFrameShow = true
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
goto() {
|
||||||
|
console.log('goto')
|
||||||
|
this.$message.success("保存模型成功");
|
||||||
|
this.$emit("closeSubPage")
|
||||||
|
// this.$router.push({name:"/sys/activiti"})
|
||||||
|
},
|
||||||
|
handleIframeLoaded() {
|
||||||
|
if (!this.handledPaths.includes(this.path)) return
|
||||||
|
|
||||||
|
// 第一个是 生产日报表
|
||||||
|
if (this.path === this.handledPaths[0]) {
|
||||||
|
this.dealDailyReport()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dealDailyReport() {
|
||||||
|
const iframeEl = this.$refs.activit
|
||||||
|
if (!iframeEl) return
|
||||||
|
|
||||||
|
const buttonsEl = iframeEl.contentWindow.document.querySelector('.bi-button-group')
|
||||||
|
if (!buttonsEl) {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.dealDailyReport()
|
||||||
|
}, 100)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const newNode = buttonsEl.children[7].cloneNode(true)
|
||||||
|
|
||||||
|
newNode.innerHTML = newNode.innerHTML.replace('邮件', '导入')
|
||||||
|
.replaceAll('base-disabled', '')
|
||||||
|
.replaceAll('disabled', '')
|
||||||
|
.replaceAll('mail-font', 'import-font')
|
||||||
|
|
||||||
|
newNode.onclick = () => {
|
||||||
|
importModal({
|
||||||
|
title: '导入生产日报表',
|
||||||
|
uploadUrl: '/report/workReport/import',
|
||||||
|
downloadUrl: '/report/workReport/exportExample',
|
||||||
|
downloadFileName: '生产日报表模板'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// buttonsEl.insertBefore(buttonsEl.children[7], newNode)
|
||||||
|
buttonsEl.appendChild(newNode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100vh - 94px);
|
||||||
|
}
|
||||||
|
|
||||||
|
> > > .copyrightInfo-div {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,231 @@
|
|||||||
|
<template>
|
||||||
|
<div style="width: 1200px">
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="serialList"
|
||||||
|
border
|
||||||
|
highlight-current-row
|
||||||
|
stripe
|
||||||
|
ref="list"
|
||||||
|
height="400px"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" width="50"> </el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="序号"
|
||||||
|
align="center"
|
||||||
|
type="index"
|
||||||
|
width="50"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
|
||||||
|
align="center"
|
||||||
|
<el-table-column
|
||||||
|
label="是否筛选"
|
||||||
|
align="center"
|
||||||
|
prop="isFil"
|
||||||
|
:formatter="stateFormat"
|
||||||
|
width="100"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="包装条码"
|
||||||
|
align="center"
|
||||||
|
prop="materialBar"
|
||||||
|
width="300"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="物料编码"
|
||||||
|
align="left"
|
||||||
|
header-align="center"
|
||||||
|
prop="materialCode"
|
||||||
|
width="220"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="物料名称"
|
||||||
|
align="left"
|
||||||
|
header-align="center"
|
||||||
|
width="220"
|
||||||
|
prop="materialName"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="物料规格"
|
||||||
|
align="left"
|
||||||
|
header-align="center"
|
||||||
|
prop="materialSpec"
|
||||||
|
width="220"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="库存数量"
|
||||||
|
prop="qty"
|
||||||
|
align="center"
|
||||||
|
width="120"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="领料数量"
|
||||||
|
align="center"
|
||||||
|
width="120"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
>
|
||||||
|
<template scope="scope">
|
||||||
|
<el-input-number
|
||||||
|
:controls="false"
|
||||||
|
style="width: 80px"
|
||||||
|
:min="0"
|
||||||
|
:max="scope.row.qty"
|
||||||
|
v-model="scope.row.outQty"
|
||||||
|
></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="单位"
|
||||||
|
prop="materialUnit"
|
||||||
|
width="50"
|
||||||
|
align="center"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="创建人"
|
||||||
|
align="center"
|
||||||
|
prop="createdBy"
|
||||||
|
width="100"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="创建时间"
|
||||||
|
align="center"
|
||||||
|
prop="createdDt"
|
||||||
|
width="180"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="修改人"
|
||||||
|
align="center"
|
||||||
|
prop="updatedBy"
|
||||||
|
width="100"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="修改时间"
|
||||||
|
align="center"
|
||||||
|
prop="updatedDt"
|
||||||
|
width="160"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
</el-table>
|
||||||
|
<el-row>
|
||||||
|
<el-col>
|
||||||
|
<el-button
|
||||||
|
style="margin-left:43%"
|
||||||
|
type="primary"
|
||||||
|
@click="submitForm"
|
||||||
|
:disabled="this.selectList.length <= 0"
|
||||||
|
>确 定</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "ass",
|
||||||
|
props: {
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// this.rows=this.row
|
||||||
|
this.getStockList();
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
serialList: [],
|
||||||
|
loading: false,
|
||||||
|
rows: {},
|
||||||
|
isshow: true,
|
||||||
|
selectList: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
stateFormat(row, column) {
|
||||||
|
if (row.isFil === "Y") {
|
||||||
|
return "是";
|
||||||
|
} else {
|
||||||
|
return "否";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getStockList() {
|
||||||
|
let params = {
|
||||||
|
materialCode: this.row.materialNumber,
|
||||||
|
materialId: this.row.materialId,
|
||||||
|
isFil: this.row.isFil,
|
||||||
|
};
|
||||||
|
this.$pickDetail.StockList(params).then((resp) => {
|
||||||
|
if (resp.data.code == 200) {
|
||||||
|
resp.data.data.forEach((e) => {
|
||||||
|
e.outQty = "";
|
||||||
|
});
|
||||||
|
this.serialList = resp.data.data;
|
||||||
|
console.log("拿到数据哈", this.serialList);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.selectList = selection;
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
// this.$parent.initData();
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
},
|
||||||
|
submitForm() {
|
||||||
|
let obj = {};
|
||||||
|
let recommends = [];
|
||||||
|
this.selectList.forEach((e) => {
|
||||||
|
obj = {};
|
||||||
|
obj.stockId = e.id;
|
||||||
|
obj.outQty = e.outQty;
|
||||||
|
recommends.push(obj);
|
||||||
|
});
|
||||||
|
for(let i=0;i<recommends.length;i++){
|
||||||
|
if(recommends[i].outQty==0){
|
||||||
|
this.$message.error("领料数量不能为空!")
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let params = {
|
||||||
|
detail: this.row,
|
||||||
|
recommends,
|
||||||
|
};
|
||||||
|
this.$pick.recommends(params).then((resp) => {
|
||||||
|
if (resp.data.code == 200) {
|
||||||
|
this.$message.success("提交成功!");
|
||||||
|
this.$parent.getPickBillList();
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.cmeim.biz.vo.app;
|
||||||
|
|
||||||
|
import com.cmeim.biz.po.MmMaterialBar;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class MaterialBarVo extends MmMaterialBar {
|
||||||
|
|
||||||
|
@ApiParam("物料规格")
|
||||||
|
private String materialSpec;
|
||||||
|
|
||||||
|
@ApiParam(value = "条码状态")
|
||||||
|
private String dictStatusShow;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
// base color
|
||||||
|
$blue:#324157;
|
||||||
|
$light-blue:#3A71A8;
|
||||||
|
$red:#C03639;
|
||||||
|
$pink: #E65D6E;
|
||||||
|
$green: #30B08F;
|
||||||
|
$tiffany: #4AB7BD;
|
||||||
|
$yellow:#FEC171;
|
||||||
|
$panGreen: #30B08F;
|
||||||
|
|
||||||
|
// sidebar
|
||||||
|
$menuText:#bfcbd9;
|
||||||
|
$menuActiveText:#409EFF;
|
||||||
|
$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
|
||||||
|
|
||||||
|
$menuBg:#304156;
|
||||||
|
$menuHover:#263445;
|
||||||
|
|
||||||
|
$subMenuBg:#1f2d3d;
|
||||||
|
$subMenuHover:#001528;
|
||||||
|
|
||||||
|
$sideBarWidth: 200px;
|
||||||
|
|
||||||
|
// the :export directive is the magic sauce for webpack
|
||||||
|
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
|
||||||
|
:export {
|
||||||
|
menuText: $menuText;
|
||||||
|
menuActiveText: $menuActiveText;
|
||||||
|
subMenuActiveText: $subMenuActiveText;
|
||||||
|
menuBg: $menuBg;
|
||||||
|
menuHover: $menuHover;
|
||||||
|
subMenuBg: $subMenuBg;
|
||||||
|
subMenuHover: $subMenuHover;
|
||||||
|
sideBarWidth: $sideBarWidth;
|
||||||
|
}
|
@ -0,0 +1,269 @@
|
|||||||
|
<template>
|
||||||
|
<!-- wms到货单生成检验单 -->
|
||||||
|
<el-container style="margin-top: 10px;" v-loading="loading">
|
||||||
|
<!-- 添加或修改参数配置对话框 -->
|
||||||
|
<el-form
|
||||||
|
ref="form"
|
||||||
|
:model="form"
|
||||||
|
label-width="120px"
|
||||||
|
:rules="rules"
|
||||||
|
align="left"
|
||||||
|
style="width: 100%;"
|
||||||
|
>
|
||||||
|
<!-- 列表 -->
|
||||||
|
<el-table
|
||||||
|
style="width: 99%;margin: 10px 0px 0px 5px;"
|
||||||
|
height="560"
|
||||||
|
border
|
||||||
|
v-loading="tableLoading"
|
||||||
|
:data="detailList"
|
||||||
|
ref="list"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
>
|
||||||
|
<el-table-column align="center" type="index" label="序号" width="50" />
|
||||||
|
<el-table-column type="selection" width="50" />
|
||||||
|
<!-- <el-table-column label="检验单号" align="center" prop="inspectBillNumber" width="150px" :show-overflow-tooltip="true"/> -->
|
||||||
|
<!-- <el-table-column label="到货单号" align="center" prop="arriveBillNumber" width="150px" :show-overflow-tooltip="true"/> -->
|
||||||
|
<!-- <el-table-column label="物料条码" align="center" prop="materialBar" width="100px" :show-overflow-tooltip="true"/> -->
|
||||||
|
<el-table-column
|
||||||
|
label="物料编码"
|
||||||
|
align="center"
|
||||||
|
prop="materialCode"
|
||||||
|
width="100px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="物料名称"
|
||||||
|
align="center"
|
||||||
|
prop="materialName"
|
||||||
|
width="150px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="物料规格"
|
||||||
|
align="center"
|
||||||
|
prop="materialSpec"
|
||||||
|
width="150px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="检验总数"
|
||||||
|
align="center"
|
||||||
|
prop="inspectTotalQty"
|
||||||
|
width="100px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="抽检数量"
|
||||||
|
align="center"
|
||||||
|
prop="spotCheckQty"
|
||||||
|
width="100px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="抽检标准数"
|
||||||
|
align="center"
|
||||||
|
prop="spotCheckStandardQty"
|
||||||
|
width="100px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="抽检合格数"
|
||||||
|
align="center"
|
||||||
|
prop="spotCheckQualifiedQty"
|
||||||
|
width="150px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="抽检不合格数"
|
||||||
|
align="center"
|
||||||
|
prop="spotCheckUnqualifiedQty"
|
||||||
|
width="150px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="批次号"
|
||||||
|
align="center"
|
||||||
|
prop="batchNo"
|
||||||
|
width="100px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
</el-table>
|
||||||
|
<!-- 表单按钮 -->
|
||||||
|
<el-row style="margin-top:20px">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item style="float: right;margin-right: 20px">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitAllForm"
|
||||||
|
v-loading="saveLoading"
|
||||||
|
>全部入库</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitPartForm"
|
||||||
|
v-loading="saveLoading"
|
||||||
|
>分单入库</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<SelectWidget ref="selectWidget" @getSelect="getSelect"></SelectWidget>
|
||||||
|
</el-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import SelectWidget from "@/views/components/select-widget/select-widget";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
SelectWidget
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
default: undefined
|
||||||
|
},
|
||||||
|
formType: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
form: {},
|
||||||
|
rules: {},
|
||||||
|
tableLoading: false,
|
||||||
|
detailList: [],
|
||||||
|
saveLoading: false,
|
||||||
|
multipleSelectionTable: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
async mounted() {},
|
||||||
|
created() {
|
||||||
|
console.log(this.row);
|
||||||
|
this.initData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//初始化
|
||||||
|
initData() {
|
||||||
|
this.loading = true;
|
||||||
|
this.$inspectBill.queryInspectDetail(this.row.id).then(res => {
|
||||||
|
this.detailList = res.data.data;
|
||||||
|
this.detailList = this.detailList.filter(
|
||||||
|
detail => detail.dictStatus < 15
|
||||||
|
);
|
||||||
|
this.detailList.forEach(item => {
|
||||||
|
item.dictStatusShow = this.$dictType.getDictNameByCodeAndKey(
|
||||||
|
"mm_inspect_bill_status",
|
||||||
|
item.dictStatus
|
||||||
|
);
|
||||||
|
});
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//保存按钮
|
||||||
|
submitAllForm() {
|
||||||
|
if (this.multipleSelectionTable.length == 0) {
|
||||||
|
this.$message.error("请至少选择一条数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.saveLoading) return;
|
||||||
|
this.saveLoading = true;
|
||||||
|
let detailIds = [];
|
||||||
|
this.multipleSelectionTable.forEach(data => {
|
||||||
|
detailIds.push(data.id);
|
||||||
|
});
|
||||||
|
let dto = {
|
||||||
|
id: this.row.id,
|
||||||
|
detailIds: detailIds
|
||||||
|
};
|
||||||
|
this.$inspectBill
|
||||||
|
.addByInspect(dto)
|
||||||
|
.then(res => {
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
this.$message.success("办理成功");
|
||||||
|
this.$parent.getList();
|
||||||
|
this.cancel();
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.data.msg);
|
||||||
|
this.saveLoading = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.saveLoading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//保存按钮
|
||||||
|
submitPartForm() {
|
||||||
|
if (this.multipleSelectionTable.length == 0) {
|
||||||
|
this.$message.error("请至少选择一条数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.saveLoading) return;
|
||||||
|
this.saveLoading = true;
|
||||||
|
this.$refs.selectWidget.selectWidget(3);
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
//取消按钮
|
||||||
|
cancel() {
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
},
|
||||||
|
//列表多选
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.multipleSelectionTable = selection;
|
||||||
|
},
|
||||||
|
getSelect(row, index) {
|
||||||
|
//查询选择回调 0物料 1 BOM 2工艺
|
||||||
|
console.log(this.selectWidgetArray, "1834");
|
||||||
|
console.log(row, index, "1910");
|
||||||
|
if (index === 3) {
|
||||||
|
console.log(row, index, "19113");
|
||||||
|
}
|
||||||
|
this.$inspectBill
|
||||||
|
.batchInput({
|
||||||
|
inspectBillNumber: this.row.inspectBillNumber,
|
||||||
|
warehouseCode: row.warehouseCode
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
this.$message.success("办理成功");
|
||||||
|
this.$parent.getList();
|
||||||
|
this.cancel();
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.data.msg);
|
||||||
|
this.saveLoading = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.saveLoading = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
>>> .el-table__body tr.current-row > td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-table >>> tbody tr:hover > td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
}
|
||||||
|
.input_inner /deep/ .el-input__inner {
|
||||||
|
background-color: white !important;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.cmeim.basic.exception.code;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wuyuqi
|
||||||
|
* @since 2022/8/31 13:05
|
||||||
|
*/
|
||||||
|
public enum BaShiftExceptionCode {
|
||||||
|
|
||||||
|
DUPLICATE_SHIFT(301, "班制名或编码重复"),
|
||||||
|
DUPLICATE_TIME(302, "班次名或编码重复"),
|
||||||
|
SHIFT_NOT_FOUND(303, "找不到指定班制"),
|
||||||
|
TIME_NOT_FOUND(304, "找不到指定班次"),
|
||||||
|
TIMES_EXISTS(305, "此班制下仍然有班次存在"),
|
||||||
|
DELETE_FAILED(306, "删除失败"),
|
||||||
|
DUPLICATE_REST_EXTRA_TIME(307, "加班时间或休息时间中冲突"),
|
||||||
|
START_TIME_WRONG(308, "时间段结束时间需大于开始时间"),
|
||||||
|
TIME_START_TIME_WRONG(309, "班次结束时间需大于开始时间"),
|
||||||
|
TIME_OVER_BORDER(310, "存在休息时间或者加班时间不在班次时间内"),
|
||||||
|
ORG_NOT_FOUND(311, "找不到指定的工作中心"),
|
||||||
|
CALENDAR_NOT_FOUND(312, "找不到相关的生产日历"),
|
||||||
|
DUPLICATE_RESOURCE(313, "存在重复的生产资源日历"),
|
||||||
|
WRONG_SHIFT_TIME(314, "班制下的班次存在时间冲突"),
|
||||||
|
MORE_THAN_24_HOURS(315, "班制下班次时间超过24小时");
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final int code;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final String message;
|
||||||
|
|
||||||
|
BaShiftExceptionCode(int code, String message) {
|
||||||
|
|
||||||
|
this.code = code;
|
||||||
|
this.message = message;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,147 @@
|
|||||||
|
package com.cmeim.system.controller;
|
||||||
|
|
||||||
|
import com.cmeim.common.core.constant.UserConstants;
|
||||||
|
import com.cmeim.common.core.domain.R;
|
||||||
|
import com.cmeim.common.core.utils.SecurityUtils;
|
||||||
|
import com.cmeim.common.core.utils.ServletUtils;
|
||||||
|
import com.cmeim.common.core.utils.StringUtils;
|
||||||
|
import com.cmeim.common.core.web.controller.BaseController;
|
||||||
|
import com.cmeim.common.core.web.domain.AjaxResult;
|
||||||
|
import com.cmeim.common.log.annotation.Log;
|
||||||
|
import com.cmeim.common.log.enums.BusinessType;
|
||||||
|
import com.cmeim.common.security.service.TokenService;
|
||||||
|
import com.cmeim.system.api.RemoteFileService;
|
||||||
|
import com.cmeim.system.api.domain.SysFile;
|
||||||
|
import com.cmeim.system.api.domain.SysUser;
|
||||||
|
import com.cmeim.system.api.model.LoginUser;
|
||||||
|
import com.cmeim.system.service.ISysUserService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 个人信息 业务处理
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/user/profile")
|
||||||
|
public class SysProfileController extends BaseController
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private ISysUserService userService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TokenService tokenService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RemoteFileService remoteFileService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 个人信息
|
||||||
|
*/
|
||||||
|
@GetMapping
|
||||||
|
public AjaxResult profile()
|
||||||
|
{
|
||||||
|
String username = SecurityUtils.getUsername();
|
||||||
|
SysUser user = userService.selectUserByUserName(username);
|
||||||
|
AjaxResult ajax = AjaxResult.success(user);
|
||||||
|
ajax.put("roleGroup", userService.selectUserRoleGroup(username));
|
||||||
|
ajax.put("postGroup", userService.selectUserPostGroup(username));
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改用户
|
||||||
|
*/
|
||||||
|
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping
|
||||||
|
public AjaxResult updateProfile(@RequestBody SysUser user)
|
||||||
|
{
|
||||||
|
if (StringUtils.isNotEmpty(user.getPhonenumber())
|
||||||
|
&& UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
|
||||||
|
{
|
||||||
|
return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
|
||||||
|
}
|
||||||
|
else if (StringUtils.isNotEmpty(user.getEmail())
|
||||||
|
&& UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
|
||||||
|
{
|
||||||
|
return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
|
||||||
|
}
|
||||||
|
if (userService.updateUserProfile(user) > 0)
|
||||||
|
{
|
||||||
|
LoginUser loginUser = tokenService.getLoginUser();
|
||||||
|
// 更新缓存用户信息
|
||||||
|
loginUser.getSysUser().setNickName(user.getNickName());
|
||||||
|
loginUser.getSysUser().setPhonenumber(user.getPhonenumber());
|
||||||
|
loginUser.getSysUser().setEmail(user.getEmail());
|
||||||
|
loginUser.getSysUser().setSex(user.getSex());
|
||||||
|
tokenService.setLoginUser(loginUser);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error("修改个人信息异常,请联系管理员");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置密码
|
||||||
|
*/
|
||||||
|
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping("/updatePwd")
|
||||||
|
public AjaxResult updatePwd(String oldPassword, String newPassword) {
|
||||||
|
String username = SecurityUtils.getUsername();
|
||||||
|
SysUser user = userService.selectUserByUserName(username);
|
||||||
|
String password = user.getPassword();
|
||||||
|
if (!SecurityUtils.matchesPassword(oldPassword, password)) {
|
||||||
|
return AjaxResult.error("修改密码失败,旧密码错误");
|
||||||
|
}
|
||||||
|
if (SecurityUtils.matchesPassword(newPassword, password)) {
|
||||||
|
return AjaxResult.error("新密码不能与旧密码相同");
|
||||||
|
}
|
||||||
|
if (!(newPassword.length()>=6 && newPassword.length() <=20)) {
|
||||||
|
return AjaxResult.error("长度在 6 到 20 个字符");
|
||||||
|
}
|
||||||
|
String regex = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$";
|
||||||
|
if (!(newPassword.matches(regex))) {
|
||||||
|
return AjaxResult.error("新密码请包含大小写字母和数字");
|
||||||
|
}
|
||||||
|
if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0) {
|
||||||
|
// 更新缓存用户密码
|
||||||
|
LoginUser loginUser = tokenService.getLoginUser();
|
||||||
|
loginUser.getSysUser().setPassword(SecurityUtils.encryptPassword(newPassword));
|
||||||
|
tokenService.setLoginUser(loginUser);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error("修改密码异常,请联系管理员");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 头像上传
|
||||||
|
*/
|
||||||
|
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
|
||||||
|
@PostMapping("/avatar")
|
||||||
|
public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException
|
||||||
|
{
|
||||||
|
if (!file.isEmpty())
|
||||||
|
{
|
||||||
|
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
||||||
|
R<SysFile> fileResult = remoteFileService.upload(file);
|
||||||
|
if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData()))
|
||||||
|
{
|
||||||
|
return AjaxResult.error("文件服务异常,请联系管理员");
|
||||||
|
}
|
||||||
|
String url = fileResult.getData().getUrl();
|
||||||
|
if (userService.updateUserAvatar(loginUser.getUsername(), url))
|
||||||
|
{
|
||||||
|
AjaxResult ajax = AjaxResult.success();
|
||||||
|
ajax.put("imgUrl", url);
|
||||||
|
// 更新缓存用户头像
|
||||||
|
loginUser.getSysUser().setAvatar(url);
|
||||||
|
tokenService.setLoginUser(loginUser);
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return AjaxResult.error("上传图片异常,请联系管理员");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.checkerframework:checker-qual:2.11.1">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,100 @@
|
|||||||
|
package com.cmeim.basic.po;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "ba_printer_type_args")
|
||||||
|
public class BaPrinterTypeArgs implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||||
|
@Column(name = "id")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "template_id")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Long templateId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "dict_type")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Integer dictType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "params_content")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private String paramsContent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "width")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Integer width;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "height")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Integer height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "axisX")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Integer axisX;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "axisY")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Integer axisY;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "created_by")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "created_dt")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private String createdDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_by")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private String updatedBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_dt")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private String updatedDt;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.apache.httpcomponents:httpclient:4.5.13">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,391 @@
|
|||||||
|
package com.cmeim.biz.controller.app;
|
||||||
|
|
||||||
|
import com.cmeim.basic.api.RemoteLocationService;
|
||||||
|
import com.cmeim.biz.po.MmMaterialBar;
|
||||||
|
import com.cmeim.biz.po.MmSporadicPickBill;
|
||||||
|
import com.cmeim.biz.po.MmSporadicPickBillDetail;
|
||||||
|
import com.cmeim.biz.po.MmSporadicPickBillItem;
|
||||||
|
import com.cmeim.biz.repository.MmSporadicPickBillDetailRepository;
|
||||||
|
import com.cmeim.biz.repository.MmSporadicPickBillItemRepository;
|
||||||
|
import com.cmeim.biz.repository.MmSporadicPickBillRepository;
|
||||||
|
import com.cmeim.biz.service.OutputAppService;
|
||||||
|
import com.cmeim.biz.service.SporadicPickBillService;
|
||||||
|
import com.cmeim.biz.vo.InputBillDetailVo;
|
||||||
|
import com.cmeim.biz.vo.MmPickBillVo;
|
||||||
|
import com.cmeim.biz.vo.MmSporadicPickBillVo;
|
||||||
|
import com.cmeim.biz.vo.app.FndByPickNumberVo;
|
||||||
|
import com.cmeim.biz.vo.app.SporadicPickBillAppVo;
|
||||||
|
import com.cmeim.biz.vo.app.SporadicPickBillDetailVo;
|
||||||
|
import com.cmeim.biz.vo.app.SporadicPickSaveVo;
|
||||||
|
import com.cmeim.biz.vo.app.SporadicRedPickSaveVo;
|
||||||
|
import com.cmeim.common.core.utils.BeanUtil;
|
||||||
|
import com.cmeim.common.core.utils.DateUtil;
|
||||||
|
import com.cmeim.common.core.utils.SecurityUtils;
|
||||||
|
import com.cmeim.common.core.utils.bean.BeanUtils;
|
||||||
|
import com.cmeim.common.core.web.controller.GenericController;
|
||||||
|
import com.cmeim.common.core.web.domain.Respond;
|
||||||
|
import com.cmeim.common.core.web.page.PageVo;
|
||||||
|
import com.cmeim.stock.dto.MmStockDto;
|
||||||
|
import com.cmeim.stock.po.MmStock;
|
||||||
|
import com.cmeim.stock.repository.MmStockRepository;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.persistence.criteria.CriteriaBuilder;
|
||||||
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
|
import javax.persistence.criteria.Join;
|
||||||
|
import javax.persistence.criteria.JoinType;
|
||||||
|
import javax.persistence.criteria.Order;
|
||||||
|
import javax.persistence.criteria.Path;
|
||||||
|
import javax.persistence.criteria.Predicate;
|
||||||
|
import javax.persistence.criteria.Root;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Api(value = "app", tags = "APP零星出库模块")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "output/app/sporadicPickBill")
|
||||||
|
public class AppSporadicPickBillController extends GenericController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OutputAppService appService;
|
||||||
|
@Autowired
|
||||||
|
private SporadicPickBillService service;
|
||||||
|
@Autowired
|
||||||
|
private MmSporadicPickBillRepository repository;
|
||||||
|
@Autowired
|
||||||
|
private MmSporadicPickBillDetailRepository detailRepository;
|
||||||
|
@Autowired
|
||||||
|
private RemoteLocationService locationService;
|
||||||
|
@Autowired
|
||||||
|
private MmSporadicPickBillItemRepository sporadicPickBillItemRepository;
|
||||||
|
@Autowired
|
||||||
|
private MmStockRepository mmStockRepository;
|
||||||
|
|
||||||
|
|
||||||
|
private static final String sporadicPickBillNumber = "sporadicPickBillNumber";
|
||||||
|
/**
|
||||||
|
* IF-150:pc未完成领料单列表 工单 领料单号
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "IF-150:pc未完成领料单列表 工单 领料单号")
|
||||||
|
@GetMapping(value = "missPickList2")
|
||||||
|
public Respond missPickList2(PageVo pv, String parameter) {
|
||||||
|
String[] orders = {"sporadicPickBillNumber desc"};
|
||||||
|
pv.setPageSize(50);
|
||||||
|
pv.setPageNo(1);
|
||||||
|
PageRequest pageRequest = PageRequest.of(pv.getPageNo() - 1, pv.getPageSize(),
|
||||||
|
Sort.by(sortOrder(orders)));
|
||||||
|
Integer[] dictStatus = new Integer[2];
|
||||||
|
dictStatus[0] = 15; // 部分领料
|
||||||
|
dictStatus[1] = 20; // 全部领料
|
||||||
|
MmSporadicPickBillVo mmPickBillVo = new MmSporadicPickBillVo();
|
||||||
|
mmPickBillVo.setDictStatusArr(dictStatus);
|
||||||
|
Page page = repository.findAll(buildSpecification(mmPickBillVo, parameter), pageRequest);
|
||||||
|
|
||||||
|
List<MmSporadicPickBill> pickBillList = BeanUtil.copyProperties(page.getContent(), MmSporadicPickBill.class);
|
||||||
|
final List<MmSporadicPickBill> collectBillList =
|
||||||
|
pickBillList.stream().filter(e -> e.getDictType() != 3).collect(Collectors.toList());
|
||||||
|
return buildSuccess(collectBillList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Specification buildSpecification(MmSporadicPickBillVo mmArriveBillVo, String parameter) {
|
||||||
|
return new Specification<MmSporadicPickBill>() {
|
||||||
|
@Override
|
||||||
|
public Predicate toPredicate(Root<MmSporadicPickBill> root, CriteriaQuery<?> criteriaQuery,
|
||||||
|
CriteriaBuilder cb) {
|
||||||
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
List<Predicate> orlsit = new ArrayList<>();
|
||||||
|
if (mmArriveBillVo.getDictStatusArr() != null) {
|
||||||
|
CriteriaBuilder.In<Integer> in = cb.in(root.get("dictStatus").as(Integer.class));
|
||||||
|
for (Integer status : mmArriveBillVo.getDictStatusArr()) {
|
||||||
|
in.value(status);
|
||||||
|
}
|
||||||
|
predicates.add(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (com.cmeim.common.core.utils.StringUtils.isNotEmpty(parameter)) {
|
||||||
|
orlsit.add(cb.like(root.get(sporadicPickBillNumber).as(String.class), "%" + parameter + "%"));
|
||||||
|
orlsit.add(cb.like(root.get("orderProdNumber").as(String.class), "%" + parameter + "%"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
List<Order> orders = new ArrayList<>();
|
||||||
|
orders.add(cb.desc(root.get(sporadicPickBillNumber)));
|
||||||
|
criteriaQuery.orderBy(orders);
|
||||||
|
|
||||||
|
// 外联结子表,状态多选->去重
|
||||||
|
criteriaQuery.distinct(true);
|
||||||
|
|
||||||
|
Predicate[] preOr = new Predicate[orlsit.size()];
|
||||||
|
Predicate[] preAnd = new Predicate[predicates.size()];
|
||||||
|
|
||||||
|
if (orlsit.size() == 0) {
|
||||||
|
//单独使用 and 或者 or 时 返回
|
||||||
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
||||||
|
}
|
||||||
|
//组合 and or 时 返回
|
||||||
|
return criteriaQuery.where(cb.and(predicates.toArray(preAnd)), cb.or(orlsit.toArray(preOr))).getRestriction();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IF-180:未完成出库单列表接口
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "IF-180:未完成出库单列表接口")
|
||||||
|
@GetMapping(value = "uncompletedList")
|
||||||
|
public Respond uncompletedList(PageVo pv, MmSporadicPickBillVo query) {
|
||||||
|
Integer[] dictStatusArr = {5, 15,20};//,20
|
||||||
|
query.setDictStatusArr(dictStatusArr);
|
||||||
|
PageRequest pageRequest = PageRequest.of(pv.getPageNo() - 1, pv.getPageSize(),
|
||||||
|
Sort.by(sortOrder(pv.getOrders())));
|
||||||
|
Page page = repository.findAll(buildSpecifications(query), pageRequest);
|
||||||
|
List<MmSporadicPickBill> list = page.getContent();
|
||||||
|
List<SporadicPickBillAppVo> voList = new ArrayList<>();
|
||||||
|
//优化调用接口的逻辑
|
||||||
|
list.forEach(v -> {
|
||||||
|
SporadicPickBillAppVo vo = new SporadicPickBillAppVo();
|
||||||
|
BeanUtils.copyProperties(v, vo);
|
||||||
|
if (vo.getDictType() != null) {
|
||||||
|
vo.setDictTypeShow(appService.judge1(vo.getDictType()));
|
||||||
|
}
|
||||||
|
vo.setDictStatusShow(appService.judge2(vo.getDictStatus()));
|
||||||
|
voList.add(vo);
|
||||||
|
});
|
||||||
|
pv.setRecordsTotal(page.getTotalElements());
|
||||||
|
pv.setData(voList);
|
||||||
|
return buildSuccess(pv);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IF-181:出库单明细接口
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "IF-181:出库单明细接口")
|
||||||
|
@GetMapping(value = "getDetail")
|
||||||
|
public Respond getDetail(String sporadicPickBillNumber) {
|
||||||
|
MmSporadicPickBill sporadicPickBill = repository.findBySporadicPickBillNumber(sporadicPickBillNumber);
|
||||||
|
|
||||||
|
List<MmSporadicPickBillDetail> detailList =
|
||||||
|
detailRepository.findAllBySporadicPickBillNumber(sporadicPickBillNumber);
|
||||||
|
List<SporadicPickBillDetailVo> voList = BeanUtil.copyProperties(detailList, SporadicPickBillDetailVo.class);
|
||||||
|
|
||||||
|
voListAdd(voList,sporadicPickBill);
|
||||||
|
|
||||||
|
return buildSuccess(voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void voListAdd(List<SporadicPickBillDetailVo> voList,MmSporadicPickBill sporadicPickBill){
|
||||||
|
voList.forEach(vo -> {
|
||||||
|
if (vo.getDoneQty().compareTo(vo.getPlanQty()) < 0) {
|
||||||
|
// 还需要领取的数量
|
||||||
|
BigDecimal needQty = vo.getPlanQty().subtract(vo.getDoneQty());
|
||||||
|
|
||||||
|
List<MmStock> result =
|
||||||
|
mmStockRepository.findAllByWarehouseCodeAndMaterialCode(sporadicPickBill.getWarehouseCode(),
|
||||||
|
vo.getMaterialCode());
|
||||||
|
List<MmStockDto> stockDtoList = BeanUtil.copyProperties(result, MmStockDto.class);
|
||||||
|
|
||||||
|
if (stockDtoList.size() != 0) {
|
||||||
|
List<String> materialBarList = new ArrayList<>();
|
||||||
|
List<String> locationCodeList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (MmStockDto stock : stockDtoList) {
|
||||||
|
materialBarList.add(stock.getMaterialBar());
|
||||||
|
locationCodeList.add(stock.getLocationCode());
|
||||||
|
if (needQty.compareTo(stock.getQty()) > 0) {
|
||||||
|
needQty = needQty.subtract(stock.getQty());
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vo.setRecommendBar(String.join(",", materialBarList));
|
||||||
|
if (locationCodeList.size() > 0) {
|
||||||
|
// 库位去重
|
||||||
|
locationCodeList = locationCodeList.stream().distinct().collect(Collectors.toList());
|
||||||
|
vo.setRecommendLocation(String.join(",", locationCodeList));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 查询相关领料记录
|
||||||
|
List<MmSporadicPickBillItem> items =
|
||||||
|
sporadicPickBillItemRepository.findAllBySporadicPickBillNumberAndMaterialCode(sporadicPickBillNumber, vo.getMaterialCode());
|
||||||
|
vo.setItems(items);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IF-152:app领料单保存
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "IF-152:app领料单保存")
|
||||||
|
@PostMapping(value = "sporadicPickSave")
|
||||||
|
public Respond sporadicPickSave(@RequestBody SporadicPickSaveVo vo) {
|
||||||
|
MmMaterialBar mmMaterialBar = service.sporadicPickSave(vo.getSporadicPickBillNumber(), vo.getMaterialBar(), vo.getQty());
|
||||||
|
return buildSuccess(mmMaterialBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IF-152:app红字领料单保存
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "IF-152:app红字领料单保存")
|
||||||
|
@PostMapping(value = "sporadicRedPickSave")
|
||||||
|
public Respond sporadicRedPickSave(@RequestBody SporadicRedPickSaveVo vo) {
|
||||||
|
service.sporadicRedPickSave(vo);
|
||||||
|
return buildSuccess("保存成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IF-153:app零星出库选择库区
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "IF-153:app零星出库选择库区")
|
||||||
|
@PostMapping(value = "saveSporadicPickBill")
|
||||||
|
public Respond saveSporadicPickBill(@RequestBody MmSporadicPickBill mmSporadicPickBill) {
|
||||||
|
MmSporadicPickBill mmSporadicPickBill1 = BeanUtil.copyProperties(mmSporadicPickBill, MmSporadicPickBill.class);
|
||||||
|
mmSporadicPickBill1.setUpdatedBy(SecurityUtils.getUsername());
|
||||||
|
mmSporadicPickBill1.setUpdatedDt(DateUtil.getCurrentDate());
|
||||||
|
repository.save(mmSporadicPickBill1);
|
||||||
|
return buildSuccess("库区修改成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Specification buildSpecifications(MmSporadicPickBillVo entity) {
|
||||||
|
String items = "items";
|
||||||
|
String createdDt = "createdDt";
|
||||||
|
return (Specification<MmPickBillVo>) (root, criteriaQuery, cb) -> {
|
||||||
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
if (StringUtils.isNotBlank(entity.getSporadicPickBillNumber())) {
|
||||||
|
predicates.add(cb.like(root.get(sporadicPickBillNumber).as(String.class),
|
||||||
|
"%" + entity.getSporadicPickBillNumber() + "%"));
|
||||||
|
}
|
||||||
|
if (entity.getDictStatusArr() != null) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("dictStatus");
|
||||||
|
CriteriaBuilder.In<Integer> in = cb.in(path);
|
||||||
|
for (Integer status : entity.getDictStatusArr()) {
|
||||||
|
in.value(status);
|
||||||
|
}
|
||||||
|
predicates.add(in);
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getStartTime())) {
|
||||||
|
predicates.add(cb.greaterThanOrEqualTo(root.get(createdDt).as(String.class),
|
||||||
|
entity.getStartTime()));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getEndTime())) {
|
||||||
|
predicates.add(cb.lessThanOrEqualTo(root.get(createdDt).as(String.class), entity.getEndTime()));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getCustomerName())) {
|
||||||
|
predicates.add(cb.like(root.get("customerName").as(String.class),
|
||||||
|
"%" + entity.getCustomerName() + "%"));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getCustomerCode())) {
|
||||||
|
predicates.add(cb.like(root.get("customerCode").as(String.class), entity.getCustomerCode()));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getOrderProdNumber())) {
|
||||||
|
predicates.add(cb.like(root.get("orderProdNumber").as(String.class), entity.getOrderProdNumber()));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getOrderWorkNumber())) {
|
||||||
|
predicates.add(cb.like(root.get("orderWorkNumber").as(String.class), entity.getOrderWorkNumber()));
|
||||||
|
}
|
||||||
|
if (entity.getDictTypeArr() != null) {
|
||||||
|
CriteriaBuilder.In<Integer> in = cb.in(root.get("dictType").as(Integer.class));
|
||||||
|
for (Integer status : entity.getDictTypeArr()) {
|
||||||
|
in.value(status);
|
||||||
|
}
|
||||||
|
predicates.add(in);
|
||||||
|
}
|
||||||
|
if (entity.getOrderArr() != null) {
|
||||||
|
CriteriaBuilder.In<String> in = cb.in(root.get(sporadicPickBillNumber).as(String.class));
|
||||||
|
for (String status : entity.getOrderArr()) {
|
||||||
|
in.value(status);
|
||||||
|
}
|
||||||
|
predicates.add(in);
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getMaterialCode())) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("materialCode");
|
||||||
|
predicates.add(cb.like(path, "%" + entity.getMaterialCode() + "%"));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getMaterialName())) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("materialName");
|
||||||
|
predicates.add(cb.like(path, "%" + entity.getMaterialName() + "%"));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getMaterialSpec())) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("materialSpec");
|
||||||
|
predicates.add(cb.like(path, "%" + entity.getMaterialSpec() + "%"));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getSourceWarehouseCode())) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("sourceWarehouseCode");
|
||||||
|
predicates.add(cb.equal(path, entity.getSourceWarehouseCode()));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entity.getTargetWarehouseCode())) {
|
||||||
|
Path path;
|
||||||
|
Join join = root.join(items, JoinType.LEFT);
|
||||||
|
path = join.get("targetWarehouseCode");
|
||||||
|
predicates.add(cb.equal(path, entity.getTargetWarehouseCode()));
|
||||||
|
}
|
||||||
|
List<Order> orders = new ArrayList<>();
|
||||||
|
orders.add(cb.desc(root.get(createdDt)));
|
||||||
|
criteriaQuery.orderBy(orders);
|
||||||
|
criteriaQuery.distinct(true);
|
||||||
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领料亮灯推荐
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "领料亮灯推荐")
|
||||||
|
@GetMapping(value = "pickLightUp")
|
||||||
|
public Respond pickLightUp(String pickBillNumber) {
|
||||||
|
String color = service.pickLightUp(pickBillNumber);
|
||||||
|
return buildSuccess(color);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 红字货架熄灯
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "红字货架熄灯")
|
||||||
|
@GetMapping(value = "redOff")
|
||||||
|
public Respond redOff(String inputBillNumber) {
|
||||||
|
service.redOff(inputBillNumber);
|
||||||
|
return buildSuccess();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* APP筛选
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "APP筛选")
|
||||||
|
@PostMapping(value = "findBySporadicPickBillList")
|
||||||
|
public Respond findBySporadicPickBillList(@RequestBody FndByPickNumberVo vo) {
|
||||||
|
List<SporadicPickBillDetailVo> voList = service.findBySporadicPickBillList(vo.getPickBillNumber(), vo.getDictStatus(), vo.getMaterialCode());
|
||||||
|
|
||||||
|
if (voList.size() > 0) {
|
||||||
|
return buildSuccess(voList.stream().sorted(
|
||||||
|
Comparator.comparing(SporadicPickBillDetailVo::getDictStatus)).collect(Collectors.toList()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return buildSuccess(voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,168 @@
|
|||||||
|
package com.cmeim.basic.po;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "ba_customer")
|
||||||
|
public class BaCustomer implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自增长id
|
||||||
|
*/
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||||
|
@Column(name = "id")
|
||||||
|
@ApiParam(value = "自增长id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户编号(客户编码)
|
||||||
|
*/
|
||||||
|
@Column(name = "customer_code")
|
||||||
|
@ApiParam(value = "客户编号(客户编码)")
|
||||||
|
private String customerCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户名称(客户名称)
|
||||||
|
*/
|
||||||
|
@Column(name = "customer_name")
|
||||||
|
@ApiParam(value = "客户名称(客户名称)")
|
||||||
|
private String customerName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户地址(客户简介)
|
||||||
|
*/
|
||||||
|
@Column(name = "customer_address")
|
||||||
|
@ApiParam(value = "客户地址(客户简介)")
|
||||||
|
private String customerAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联系人
|
||||||
|
*/
|
||||||
|
@Column(name = "contacts")
|
||||||
|
@ApiParam(value = "联系人")
|
||||||
|
private String contacts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联系方式
|
||||||
|
*/
|
||||||
|
@Column(name = "contact_way")
|
||||||
|
@ApiParam(value = "联系方式")
|
||||||
|
private String contactWay;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人
|
||||||
|
*/
|
||||||
|
@Column(name = "created_by")
|
||||||
|
@ApiParam(value = "创建人")
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(name = "created_dt")
|
||||||
|
@ApiParam(value = "创建时间")
|
||||||
|
private String createdDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改人
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_by")
|
||||||
|
@ApiParam(value = "修改人")
|
||||||
|
private String updatedBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改时间
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_dt")
|
||||||
|
@ApiParam(value = "修改时间")
|
||||||
|
private String updatedDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码规则代码
|
||||||
|
*/
|
||||||
|
@Column(name = "rule_code")
|
||||||
|
@ApiParam(value = "编码规则代码")
|
||||||
|
private String ruleCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码规则名称
|
||||||
|
*/
|
||||||
|
@Column(name = "rule_name")
|
||||||
|
@ApiParam(value = "编码规则名称")
|
||||||
|
private String ruleName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前缀
|
||||||
|
*/
|
||||||
|
@Column(name = "prefix")
|
||||||
|
@ApiParam(value = "前缀")
|
||||||
|
private String prefix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否添加订单号
|
||||||
|
*/
|
||||||
|
@Column(name = "is_order_prod")
|
||||||
|
@ApiParam(value = "是否添加订单号")
|
||||||
|
private Integer isOrderProd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日期格式
|
||||||
|
*/
|
||||||
|
@Column(name = "date_form")
|
||||||
|
@ApiParam(value = "日期格式")
|
||||||
|
private Integer dateForm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流水号位数值
|
||||||
|
*/
|
||||||
|
@Column(name = "length_value")
|
||||||
|
@ApiParam(value = "流水号位数值")
|
||||||
|
private Integer lengthValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后缀
|
||||||
|
*/
|
||||||
|
@Column(name = "suffix")
|
||||||
|
@ApiParam(value = "后缀")
|
||||||
|
private String suffix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否添加日期
|
||||||
|
*/
|
||||||
|
@Column(name = "is_date")
|
||||||
|
@ApiParam(value = "是否添加日期")
|
||||||
|
private Integer isDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联仓库代码
|
||||||
|
*/
|
||||||
|
@Column(name = "warehouse_code")
|
||||||
|
@ApiParam(value = "关联仓库代码")
|
||||||
|
private String warehouseCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联仓库名称
|
||||||
|
*/
|
||||||
|
@Column(name = "warehouse_name")
|
||||||
|
@ApiParam(value = "关联仓库名称")
|
||||||
|
private String warehouseName;
|
||||||
|
|
||||||
|
@Column(name = "stock_save_type")
|
||||||
|
@ApiParam("存货类型")
|
||||||
|
private Integer stockSaveType;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
@ApiParam(value = "创建时间集合")
|
||||||
|
private List<String> createdDtList;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
@ApiParam(value = "更新时间集合")
|
||||||
|
private List<String> updatedDtList;
|
||||||
|
}
|
@ -0,0 +1,502 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container" style="width: 700px; height: 600px">
|
||||||
|
<el-form
|
||||||
|
label-width="120px"
|
||||||
|
ref="formData"
|
||||||
|
:model="formData"
|
||||||
|
:rules="rules"
|
||||||
|
style="padding-top: 10px; padding-right: 10px"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="设备名称" prop="deviceName">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
placeholder="请输入设备名称"
|
||||||
|
v-model="formData.deviceName"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="设备编号" prop="deviceCode">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
placeholder="请输入设备编号"
|
||||||
|
v-model="formData.deviceCode"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="规格型号" prop="specificationModel">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
placeholder="请输入规格型号"
|
||||||
|
v-model="formData.specificationModel"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="使用年限">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
onkeyup="value=value.replace(/[^\d]/g,'')"
|
||||||
|
placeholder="请输入使用年限"
|
||||||
|
v-model="formData.serviceLife"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="生产厂家" prop="manufacturer">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
placeholder="请输入生产厂家"
|
||||||
|
v-model="formData.manufacturer"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="购入时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="formData.buyTime"
|
||||||
|
type="datetime"
|
||||||
|
size="small"
|
||||||
|
format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
style="width: 205px"
|
||||||
|
placeholder="购入时间"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="保养时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="formData.maintenanceTime"
|
||||||
|
type="datetime"
|
||||||
|
size="small"
|
||||||
|
format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
style="width: 205px"
|
||||||
|
placeholder="保养时间"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="下次保养时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="formData.nextMaintenanceTime"
|
||||||
|
type="datetime"
|
||||||
|
size="small"
|
||||||
|
format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
style="width: 205px"
|
||||||
|
placeholder="下次保养时间"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="状态">
|
||||||
|
<el-select
|
||||||
|
style="width: 205px"
|
||||||
|
v-model="formData.status"
|
||||||
|
placeholder="状态"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in statusArr"
|
||||||
|
:key="item.key"
|
||||||
|
:label="item.value"
|
||||||
|
:value="item.key"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
|
||||||
|
<el-form-item label="部门名称">
|
||||||
|
<!-- <el-input
|
||||||
|
type="text"
|
||||||
|
placeholder="请输入部门名称"
|
||||||
|
v-model="formData.deptName"
|
||||||
|
></el-input>-->
|
||||||
|
<el-input
|
||||||
|
v-model="formData.deptName"
|
||||||
|
class="input_inner"
|
||||||
|
size="small"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
slot="suffix"
|
||||||
|
v-if="true"
|
||||||
|
class="el-icon-circle-close "
|
||||||
|
style="margin-right: 10px"
|
||||||
|
@click.prevent="produceCleanDept"
|
||||||
|
></i>
|
||||||
|
<i
|
||||||
|
slot="suffix"
|
||||||
|
class="el-icon-search "
|
||||||
|
@click.prevent="selectDept"
|
||||||
|
></i>
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="详细信息">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
placeholder="请输入详细信息"
|
||||||
|
v-model="formData.description"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="折旧年限">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
onkeyup="value=value.replace(/[^\d]/g,'')"
|
||||||
|
placeholder="请输入折旧年限"
|
||||||
|
v-model="formData.depreciationPeriod"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="请选择节点" prop="workCenterId">
|
||||||
|
<Treeselect
|
||||||
|
placeholder="请选择工作空间"
|
||||||
|
v-model="formData.workCenterId"
|
||||||
|
:multiple="false"
|
||||||
|
:normalizer="normalizer"
|
||||||
|
:isDefaultExpanded="true"
|
||||||
|
noResultsText="没有搜索到数据"
|
||||||
|
:options="treeOptions"
|
||||||
|
>
|
||||||
|
</Treeselect>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="设备类型" prop="dictEquipmentType">
|
||||||
|
<el-select
|
||||||
|
v-model="formData.dictEquipmentType"
|
||||||
|
placeholder="请选择设备类型"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="(item, index) in this.$dictType.getDict(
|
||||||
|
'apm_equipment_type'
|
||||||
|
)"
|
||||||
|
:key="index"
|
||||||
|
:label="item.text"
|
||||||
|
:value="item.key"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item style="float: right; margin-right: 20px">
|
||||||
|
<el-button type="primary" @click="save('formData')">确 定</el-button>
|
||||||
|
<el-button @click="goback">取 消</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Treeselect from "@riophae/vue-treeselect";
|
||||||
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||||
|
import selectDept from "@/views/mes/warehouse/arriveBill/select-dept";
|
||||||
|
export default {
|
||||||
|
name: "edit",
|
||||||
|
components: { Treeselect },
|
||||||
|
props: {
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
lydata: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.ruleFormList();
|
||||||
|
this.getWorkCenterTree();
|
||||||
|
|
||||||
|
if (this.$parent.isAdd == false) {
|
||||||
|
this.formData = JSON.parse(JSON.stringify(this.lydata));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
normalizer(node) {
|
||||||
|
return {
|
||||||
|
id: node.value,
|
||||||
|
label: node.title,
|
||||||
|
children: node.children,
|
||||||
|
isDefaultExpanded: true,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
ruleForm: {
|
||||||
|
type: "",
|
||||||
|
name: "",
|
||||||
|
value: "",
|
||||||
|
deviceCode: "",
|
||||||
|
},
|
||||||
|
statusArr: [
|
||||||
|
{ key: 0, value: "在库" },
|
||||||
|
{ key: 1, value: "在用" },
|
||||||
|
],
|
||||||
|
formData: {
|
||||||
|
deviceCode: undefined,
|
||||||
|
name: undefined,
|
||||||
|
specificationModel: undefined,
|
||||||
|
serviceLife: undefined,
|
||||||
|
manufacturer: undefined,
|
||||||
|
buyTime: undefined,
|
||||||
|
maintenanceTime: undefined,
|
||||||
|
nextMaintenanceTime: undefined,
|
||||||
|
status: undefined,
|
||||||
|
deptName: undefined,
|
||||||
|
description: undefined,
|
||||||
|
depreciationPeriod: undefined,
|
||||||
|
dictEquipmentType: undefined,
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
deviceName: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
|
||||||
|
deviceCode: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入设备型号",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
specificationModel: [
|
||||||
|
{ required: true, message: "请输入规格型号", trigger: "blur" },
|
||||||
|
],
|
||||||
|
manufacturer: [
|
||||||
|
{ required: true, message: "请输入生产厂家", trigger: "blur" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
defaultProps: {
|
||||||
|
children: "children",
|
||||||
|
label: "label",
|
||||||
|
},
|
||||||
|
treeOptions: [],
|
||||||
|
options: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
ruleFormList() {
|
||||||
|
this.$FactoryModel.getTypetree().then((data) => {
|
||||||
|
console.log(data);
|
||||||
|
if (data.data.code === 200) {
|
||||||
|
this.options = data.data.data[0].children;
|
||||||
|
}
|
||||||
|
/* this.ruleForm.type = data.type;
|
||||||
|
this.ruleForm.name = data.label;*/
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleChange() {
|
||||||
|
console.log(this.ruleForm.value);
|
||||||
|
console.log(this.ruleForm.value[this.ruleForm.value.length - 1]);
|
||||||
|
},
|
||||||
|
getparentCode(list) {
|
||||||
|
if (list === undefined || this.formData.workCenterId === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
list.forEach((value) => {
|
||||||
|
if (value.value === this.formData.workCenterId) {
|
||||||
|
this.formData.workCenterName = value.title;
|
||||||
|
} else {
|
||||||
|
this.getparentCode(value.children);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
save() {
|
||||||
|
this.getparentCode(this.treeOptions);
|
||||||
|
if (this.$parent.isAdd) {
|
||||||
|
this.$refs["formData"].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
let params = {
|
||||||
|
deviceCode: this.formData.deviceCode,
|
||||||
|
deviceName: this.formData.deviceName,
|
||||||
|
specificationModel: this.formData.specificationModel,
|
||||||
|
serviceLife: this.formData.serviceLife,
|
||||||
|
manufacturer: this.formData.manufacturer,
|
||||||
|
buyTime: this.formData.buyTime,
|
||||||
|
maintenanceTime: this.formData.maintenanceTime,
|
||||||
|
nextMaintenanceTime: this.formData.nextMaintenanceTime,
|
||||||
|
status: this.formData.status,
|
||||||
|
deptName: this.formData.deptName,
|
||||||
|
description: this.formData.description,
|
||||||
|
depreciationPeriod: this.formData.depreciationPeriod,
|
||||||
|
workCenterId: this.formData.workCenterId,
|
||||||
|
workCenterName: this.formData.workCenterName,
|
||||||
|
dictEquipmentType: this.formData.dictEquipmentType,
|
||||||
|
};
|
||||||
|
this.$EquipmentAccount.addEquipment(params).then((resp) => {
|
||||||
|
if (resp.data.code == 200) {
|
||||||
|
this.$message.success("添加成功");
|
||||||
|
this.$parent.getList();
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (this.$parent.isAdd === false) {
|
||||||
|
this.$refs["formData"].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
let params = {
|
||||||
|
buyTime: this.formData.buyTime,
|
||||||
|
depreciationPeriod: this.formData.depreciationPeriod,
|
||||||
|
deptName: this.formData.deptName,
|
||||||
|
description: this.formData.description,
|
||||||
|
deviceCode: this.formData.deviceCode,
|
||||||
|
isSub: true,
|
||||||
|
deviceFieldsList: [
|
||||||
|
{
|
||||||
|
delFlag: 0,
|
||||||
|
enterType: 0,
|
||||||
|
equipmentId: 0,
|
||||||
|
fieldValue: "string",
|
||||||
|
id: 0,
|
||||||
|
name: "string",
|
||||||
|
propertyGroup: 0,
|
||||||
|
propertyId: 0,
|
||||||
|
propertyType: 0,
|
||||||
|
typeId: 0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
dna: "string",
|
||||||
|
id: this.lydata.id,
|
||||||
|
levelInfo: "string",
|
||||||
|
maintenanceTime: this.formData.maintenanceTime,
|
||||||
|
manufacturer: this.formData.manufacturer,
|
||||||
|
|
||||||
|
deviceName: this.formData.deviceName,
|
||||||
|
nextMaintenanceTime: this.formData.nextMaintenanceTime,
|
||||||
|
|
||||||
|
oeeId: 0,
|
||||||
|
orgId: this.formData.orgId,
|
||||||
|
orgName: "string",
|
||||||
|
picPath: "string",
|
||||||
|
serviceLife: this.formData.serviceLife,
|
||||||
|
|
||||||
|
specificationModel: this.formData.specificationModel,
|
||||||
|
|
||||||
|
status: this.formData.status,
|
||||||
|
/* tdeviceFields: [
|
||||||
|
{
|
||||||
|
delFlag: 0,
|
||||||
|
enterType: 0,
|
||||||
|
equipmentId: 0,
|
||||||
|
fieldValue: "string",
|
||||||
|
id: 0,
|
||||||
|
name: "string",
|
||||||
|
propertyGroup: 0,
|
||||||
|
propertyId: 0,
|
||||||
|
propertyType: 0,
|
||||||
|
typeId: 0,
|
||||||
|
},
|
||||||
|
],*/
|
||||||
|
topicCode: "string",
|
||||||
|
typeId: 0,
|
||||||
|
typeName: "string",
|
||||||
|
};
|
||||||
|
this.$EquipmentAccount.DpdataEquipment(params).then((resp) => {
|
||||||
|
if (resp.data.code == 200) {
|
||||||
|
this.$message.success("修改成功");
|
||||||
|
this.$parent.getList();
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//打开选择部门弹窗
|
||||||
|
selectDept() {
|
||||||
|
this.$layer.iframe({
|
||||||
|
shadeClose: false,
|
||||||
|
content: {
|
||||||
|
content: selectDept, //传递的组件对象
|
||||||
|
parent: this, //当前的vue对象
|
||||||
|
shadeClose: false
|
||||||
|
},
|
||||||
|
title: "选择部门(双击选中单条数据)"
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//选择部门
|
||||||
|
getDept(row) {
|
||||||
|
this.formData.deptName = row.deptName;
|
||||||
|
},
|
||||||
|
//清空部门
|
||||||
|
produceCleanDept() {
|
||||||
|
this.formData.deptName = null;
|
||||||
|
},
|
||||||
|
goback() {
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
},
|
||||||
|
getWorkCenterTree() {
|
||||||
|
this.$plan.getWorkCenterTree().then((resp) => {
|
||||||
|
console.log(resp.data.data, "回家");
|
||||||
|
this.treeOptions = [];
|
||||||
|
|
||||||
|
this.treeOptions.push(resp.data.data);
|
||||||
|
|
||||||
|
this.removeBlackChildren(this.treeOptions);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
removeBlackChildren(list) {
|
||||||
|
list.forEach((value) => {
|
||||||
|
if (value.children.length == 0) {
|
||||||
|
value.children = undefined;
|
||||||
|
} else {
|
||||||
|
this.removeBlackChildren(value.children);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-tree {
|
||||||
|
top: 8px;
|
||||||
|
background: grey;
|
||||||
|
}
|
||||||
|
.is-current {
|
||||||
|
background-color: rgb(201, 188, 80) !important;
|
||||||
|
}
|
||||||
|
.vue-treeselect--single .vue-treeselect__input-container {
|
||||||
|
font-size: inherit;
|
||||||
|
/* height: 100%; */
|
||||||
|
}
|
||||||
|
.vue-treeselect--single .vue-treeselect__input {
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.cmeim.system.mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.cmeim.system.domain.SysConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参数配置 数据层
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
public interface SysConfigMapper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 查询参数配置信息
|
||||||
|
*
|
||||||
|
* @param config 参数配置信息
|
||||||
|
* @return 参数配置信息
|
||||||
|
*/
|
||||||
|
public SysConfig selectConfig(SysConfig config);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数配置列表
|
||||||
|
*
|
||||||
|
* @param config 参数配置信息
|
||||||
|
* @return 参数配置集合
|
||||||
|
*/
|
||||||
|
public List<SysConfig> selectConfigList(SysConfig config);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据键名查询参数配置信息
|
||||||
|
*
|
||||||
|
* @param configKey 参数键名
|
||||||
|
* @return 参数配置信息
|
||||||
|
*/
|
||||||
|
public SysConfig checkConfigKeyUnique(String configKey);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增参数配置
|
||||||
|
*
|
||||||
|
* @param config 参数配置信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertConfig(SysConfig config);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改参数配置
|
||||||
|
*
|
||||||
|
* @param config 参数配置信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateConfig(SysConfig config);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除参数配置
|
||||||
|
*
|
||||||
|
* @param configId 参数ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteConfigById(Long configId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除参数信息
|
||||||
|
*
|
||||||
|
* @param configIds 需要删除的参数ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteConfigByIds(Long[] configIds);
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.cmeim.biz.repository;
|
||||||
|
|
||||||
|
import com.cmeim.biz.po.MmProdInBill;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作者:李俊辉
|
||||||
|
* date: 2021/9/18
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
public interface MmProdInBillRepository extends JpaRepository<MmProdInBill, Long>, JpaSpecificationExecutor {
|
||||||
|
List<MmProdInBill> findByOrderWorkNumber(String orderWorkNumber);
|
||||||
|
|
||||||
|
MmProdInBill findByProcessInstanceId(String processInstanceId);
|
||||||
|
|
||||||
|
MmProdInBill findByProdInBillNumber(String billNumber);
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: commons-fileupload:commons-fileupload:1.3.3">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,124 @@
|
|||||||
|
module.exports={
|
||||||
|
tableName:"materialBar",
|
||||||
|
headerList:[
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 1,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 2,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 3,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 4,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 5,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 6,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 7,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 8,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 9,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 10,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 11,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 12,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 13,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 14,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width:"230",
|
||||||
|
tableTitleSE: 15,
|
||||||
|
align:"center",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
},
|
||||||
|
]}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.cmeim.biz.dto;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class InputTypeCountDto implements Serializable {
|
||||||
|
|
||||||
|
@ApiParam("入库条数")
|
||||||
|
private Long inputCount;
|
||||||
|
|
||||||
|
@ApiParam("其他入库条数")
|
||||||
|
private Long otherInputCount;
|
||||||
|
|
||||||
|
@ApiParam("退库条数")
|
||||||
|
private Long returnCount;
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.cmeim.biz.repository;
|
||||||
|
|
||||||
|
import com.cmeim.biz.po.MmLadingBill;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 李俊辉
|
||||||
|
* @version 1.0
|
||||||
|
* date: 2023/3/9
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
public interface MmLadingBillRepository extends JpaRepository<MmLadingBill, Long>, JpaSpecificationExecutor {
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.cmeim.biz.repository;
|
||||||
|
|
||||||
|
|
||||||
|
import com.cmeim.biz.po.MmPickBillBackItem;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface MmPickBillBackItemRepository extends JpaRepository<MmPickBillBackItem, Long>,
|
||||||
|
JpaSpecificationExecutor {
|
||||||
|
|
||||||
|
MmPickBillBackItem findFirstByPickBillNumberAndMaterialCode(String pickBillNumber, String materialCode);
|
||||||
|
|
||||||
|
MmPickBillBackItem findFirstByMaterialBarAndDictStatus(String materialBar, Integer dictStatus);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,230 @@
|
|||||||
|
package com.cmeim.biz.po;
|
||||||
|
|
||||||
|
import com.cmeim.biz.query.annotation.FieldProps;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "mm_arrive_bill_detail")
|
||||||
|
public class MmArriveBillDetailBusiness implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID
|
||||||
|
*/
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name = "id")
|
||||||
|
@ApiParam(value = "ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 到货单ID
|
||||||
|
*/
|
||||||
|
@Column(name = "arrive_bill_id")
|
||||||
|
@ApiParam(value = "到货单ID")
|
||||||
|
private Long arriveBillId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 到货单号
|
||||||
|
*/
|
||||||
|
@Column(name = "arrive_bill_number")
|
||||||
|
@ApiParam(value = "到货单号")
|
||||||
|
private String arriveBillNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单ID
|
||||||
|
*/
|
||||||
|
@Column(name = "purchase_bill_id")
|
||||||
|
@ApiParam(value = "采购订单ID")
|
||||||
|
private String purchaseBillId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单号
|
||||||
|
*/
|
||||||
|
@Column(name = "purchase_bill_number")
|
||||||
|
@ApiParam(value = "采购订单号")
|
||||||
|
private String purchaseBillNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单明细ID
|
||||||
|
*/
|
||||||
|
@Column(name = "purchase_bill_detail_id")
|
||||||
|
@ApiParam(value = "采购订单明细ID")
|
||||||
|
private String purchaseBillDetailId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料ID
|
||||||
|
*/
|
||||||
|
@Column(name = "material_id")
|
||||||
|
@ApiParam(value = "物料ID")
|
||||||
|
private Long materialId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
@FieldProps(value = "物料编码")
|
||||||
|
@Column(name = "material_code")
|
||||||
|
@ApiParam(value = "物料编码")
|
||||||
|
private String materialCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料名称
|
||||||
|
*/
|
||||||
|
@FieldProps(value = "物料名称")
|
||||||
|
@Column(name = "material_name")
|
||||||
|
@ApiParam(value = "物料名称")
|
||||||
|
private String materialName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格型号
|
||||||
|
*/
|
||||||
|
@FieldProps(value = "规格型号")
|
||||||
|
@Column(name = "material_spec")
|
||||||
|
@ApiParam(value = "规格型号")
|
||||||
|
private String materialSpec;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
@Column(name = "unit_of_measure")
|
||||||
|
@ApiParam(value = "单位")
|
||||||
|
private String unitOfMeasure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位代码
|
||||||
|
*/
|
||||||
|
@Column(name = "unit_of_measure_code")
|
||||||
|
@ApiParam(value = "单位代码")
|
||||||
|
private String unitOfMeasureCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应到数量
|
||||||
|
*/
|
||||||
|
@FieldProps(value = "应到数量")
|
||||||
|
@Column(name = "plan_qty")
|
||||||
|
@ApiParam(value = "应到数量")
|
||||||
|
private BigDecimal planQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实到数量
|
||||||
|
*/
|
||||||
|
@FieldProps(value = "实到数量")
|
||||||
|
@Column(name = "real_qty")
|
||||||
|
@ApiParam(value = "实到数量")
|
||||||
|
private BigDecimal realQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批次号
|
||||||
|
*/
|
||||||
|
@Column(name = "batch_no")
|
||||||
|
@ApiParam(value = "批次号")
|
||||||
|
private String batchNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否检验
|
||||||
|
*/
|
||||||
|
@Column(name = "is_inspect")
|
||||||
|
@ApiParam(value = "是否检验")
|
||||||
|
private Integer isInspect;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@Column(name = "remark")
|
||||||
|
@ApiParam(value = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
@Column(name = "dict_status")
|
||||||
|
@ApiParam(value = "状态")
|
||||||
|
private Integer dictStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已检验数量
|
||||||
|
*/
|
||||||
|
@Column(name = "inspect_qty")
|
||||||
|
@ApiParam(value = "已检验数量")
|
||||||
|
private BigDecimal inspectQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已入库数量
|
||||||
|
*/
|
||||||
|
@Column(name = "input_qty")
|
||||||
|
@ApiParam(value = "已入库数量")
|
||||||
|
private BigDecimal inputQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拒收数量
|
||||||
|
*/
|
||||||
|
@Column(name = "rejection_qty")
|
||||||
|
@ApiParam(value = "拒收数量")
|
||||||
|
private BigDecimal rejectionQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 完成时间
|
||||||
|
*/
|
||||||
|
@Column(name = "complete_time")
|
||||||
|
@ApiParam(value = "完成时间")
|
||||||
|
private String completeTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ERP同步状态
|
||||||
|
*/
|
||||||
|
@Column(name = "dict_erp_status")
|
||||||
|
@ApiParam(value = "ERP同步状态")
|
||||||
|
private Integer dictErpStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ERP同步时间
|
||||||
|
*/
|
||||||
|
@Column(name = "erp_sync_time")
|
||||||
|
@ApiParam(value = "ERP同步时间")
|
||||||
|
private String erpSyncTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人
|
||||||
|
*/
|
||||||
|
@Column(name = "created_by")
|
||||||
|
@ApiParam(value = "创建人")
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(name = "created_dt")
|
||||||
|
@ApiParam(value = "创建时间")
|
||||||
|
private String createdDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改人
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_by")
|
||||||
|
@ApiParam(value = "修改人")
|
||||||
|
private String updatedBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改时间
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_dt")
|
||||||
|
@ApiParam(value = "修改时间")
|
||||||
|
private String updatedDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ERP存货类型代码
|
||||||
|
*/
|
||||||
|
@Column(name = "erp_material_type_code")
|
||||||
|
@ApiParam(value = "ERP存货类型代码")
|
||||||
|
private String erpMaterialTypeCode;
|
||||||
|
}
|
@ -0,0 +1,264 @@
|
|||||||
|
<template>
|
||||||
|
<!-- wms其他入库单打印 -->
|
||||||
|
<el-container style="margin-top: 10px;" v-loading="loading">
|
||||||
|
<!-- 添加或修改参数配置对话框 -->
|
||||||
|
<el-form ref="form" label-width="110px" align="left" style="width: 100%;">
|
||||||
|
<!-- 主体信息 -->
|
||||||
|
<el-row
|
||||||
|
style="display: flex;width: 100%;padding: 10px 10px 10px 10px;flex-wrap: wrap;height: 170px;overflow: auto;"
|
||||||
|
>
|
||||||
|
<div v-for="(item, index) in otherInputBills" :key="index" class="cards">
|
||||||
|
<el-row>到货单号:{{ item.inputBillNumber }}</el-row>
|
||||||
|
<el-row>部门名称:{{ item.departmentName }}</el-row>
|
||||||
|
<el-row>仓库名称:{{ item.warehouseName }}</el-row>
|
||||||
|
<el-row>业务员:{{ item.salesmanName }}</el-row>
|
||||||
|
</div>
|
||||||
|
<!--<el-col :span="5.8" v-for="(item,index) in rows" :key="index" class="cards">
|
||||||
|
</el-col>-->
|
||||||
|
</el-row>
|
||||||
|
<!-- 分割线 -->
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<!-- 列表 -->
|
||||||
|
<el-table
|
||||||
|
style="width: 99%;margin: 0px 0px 0px 5px;"
|
||||||
|
height="340px"
|
||||||
|
v-loading="tableLoading"
|
||||||
|
border
|
||||||
|
:data="detailList"
|
||||||
|
highlight-current-row
|
||||||
|
ref="list"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" type="index" width="50" align="center" />
|
||||||
|
<el-table-column type="selection" width="50" />
|
||||||
|
<el-table-column
|
||||||
|
label="物料条码"
|
||||||
|
align="center"
|
||||||
|
prop="materialBar"
|
||||||
|
width="320px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="物料编码"
|
||||||
|
align="center"
|
||||||
|
prop="materialCode"
|
||||||
|
width="200px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="物料名称"
|
||||||
|
align="center"
|
||||||
|
prop="materialName"
|
||||||
|
width="260px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="物料规格"
|
||||||
|
align="center"
|
||||||
|
prop="materialSpec"
|
||||||
|
width="210px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="数量"
|
||||||
|
align="center"
|
||||||
|
prop="materialQty"
|
||||||
|
width="150px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="批次号"
|
||||||
|
align="center"
|
||||||
|
prop="batchNo"
|
||||||
|
width="200px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
</el-table>
|
||||||
|
<!-- 表单按钮 -->
|
||||||
|
<el-row style="margin-top:20px;">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item style="float: right;margin-right: 20px">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitForm"
|
||||||
|
v-loading="saveLoading"
|
||||||
|
>打 印</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<div id="printFlow" v-if="printInfo"></div>
|
||||||
|
</el-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import QRCode from "qrcodejs2";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "arrive-bill-print",
|
||||||
|
props: {
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
rows: {
|
||||||
|
type: Array,
|
||||||
|
default: undefined
|
||||||
|
},
|
||||||
|
formType: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
tableLoading: false,
|
||||||
|
detailList: [],
|
||||||
|
multipleList: [],
|
||||||
|
saveLoading: false,
|
||||||
|
otherInputBills: [],
|
||||||
|
materialBars: [],
|
||||||
|
printInfo: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.initData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//初始化
|
||||||
|
initData() {
|
||||||
|
var ids = [];
|
||||||
|
this.rows.forEach(item => {
|
||||||
|
if (ids.indexOf(item.id) == -1) {
|
||||||
|
ids.push(item.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.loading = true;
|
||||||
|
this.$otherInputBill.getMaterialBar({ ids: ids }).then(res => {
|
||||||
|
this.loading = false;
|
||||||
|
this.otherInputBills = res.data.data.otherInputBills;
|
||||||
|
// this.otherInputBills.map(bill => {
|
||||||
|
// bill.dictServiceTypeShow = this.$dictType.getDictNameByCodeAndKey(
|
||||||
|
// "mm_other_input_bill_server_type",
|
||||||
|
// bill.dictServiceType
|
||||||
|
// );
|
||||||
|
// });
|
||||||
|
this.detailList = res.data.data.materialBars;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.multipleList = selection;
|
||||||
|
},
|
||||||
|
//保存
|
||||||
|
submitForm() {
|
||||||
|
let printData = [];
|
||||||
|
this.printInfo = true;
|
||||||
|
let router = "";
|
||||||
|
|
||||||
|
if (this.multipleList.length > 0) {
|
||||||
|
printData = this.multipleList;
|
||||||
|
} else {
|
||||||
|
printData = this.rows;
|
||||||
|
}
|
||||||
|
this.$nextTick(() => {
|
||||||
|
printData.forEach((value, index) => {
|
||||||
|
router =
|
||||||
|
router +
|
||||||
|
'<div class="a4" style="padding-top: 10px;" >' +
|
||||||
|
'<table border="1" cellspacing="0" cellpadding="0" style="width:150px;table-layout:fixed;">' +
|
||||||
|
"<tr>" +
|
||||||
|
'<td align="center" style="font-size: 9px;height: 25px" width="70px">编码</td>' +
|
||||||
|
'<td align="center" style="font-size: 9px;width: 160px;word-wrap:break-word;" >' +
|
||||||
|
value.materialCode +
|
||||||
|
"</td>" +
|
||||||
|
'<td align="center" style="font-size: 18px;width: 120px" colspan="2" rowspan="3"><div style="padding-left: 20px" id="qrcode' +
|
||||||
|
index +
|
||||||
|
'"></div></td>' +
|
||||||
|
"</tr>" +
|
||||||
|
"<tr>" +
|
||||||
|
'<td align="center" style="font-size: 9px;height:55px;" width="120px">名称</td>' +
|
||||||
|
'<td align="center" style="font-size: 8px" colspan="1" width="120px"> ' +
|
||||||
|
value.materialName +
|
||||||
|
"</td>" +
|
||||||
|
"</tr>" +
|
||||||
|
"</tr>" +
|
||||||
|
"<tr>" +
|
||||||
|
'<td align="center" style="font-size: 9px;height:25px;" width="120px">条码</td>' +
|
||||||
|
'<td align="center" style="font-size: 8px" colspan="1" width="120px"> ' +
|
||||||
|
value.materialBar +
|
||||||
|
"</td>" +
|
||||||
|
"</tr>" +
|
||||||
|
"<tr>" +
|
||||||
|
'<td align="center" style="font-size: 9px;height: 25px" width="120px">批次</td>' +
|
||||||
|
'<td align="center" style="font-size: 9px" >' +
|
||||||
|
value.batchNo +
|
||||||
|
"</td>" +
|
||||||
|
'<td align="center" style="font-size: 9px;">数量</td>' +
|
||||||
|
'<td align="center" style="font-size: 9px;" >' +
|
||||||
|
value.materialQty +
|
||||||
|
"</td>" +
|
||||||
|
"</tr>" +
|
||||||
|
"</table>" +
|
||||||
|
" </div>";
|
||||||
|
});
|
||||||
|
|
||||||
|
let printerTable = document.getElementById("printFlow");
|
||||||
|
printerTable.innerHTML = router;
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
printData.forEach((value, idx) => {
|
||||||
|
let qrcode = new QRCode("qrcode" + idx, {
|
||||||
|
width: 90, //图像宽度
|
||||||
|
height: 90, //图像高度
|
||||||
|
colorDark: "#000000", //前景色
|
||||||
|
colorLight: "#ffffff", //背景色
|
||||||
|
typeNumber: 4,
|
||||||
|
correctLevel: QRCode.CorrectLevel.H //容错级别 容错级别有:(1)QRCode.CorrectLevel.L (2)QRCode.CorrectLevel.M (3)QRCode.CorrectLevel.Q (4)QRCode.CorrectLevel.H
|
||||||
|
});
|
||||||
|
console.log(value.materialBar);
|
||||||
|
qrcode.makeCode(value.materialBar);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
window.setTimeout(() => {
|
||||||
|
this.loading = false;
|
||||||
|
this.printInfo = false;
|
||||||
|
let tableToPrint = document.getElementById("printFlow"); //将要被打印的表格
|
||||||
|
let newWin = window.open(""); //新打开一个空窗口
|
||||||
|
newWin.document.write(
|
||||||
|
"<html><head><title>物料条码打印</title></head><style>@page{margin:0px 10px;size: auto} td{text-align: center; border: solid 1px #000000; height: 20px;}.a4{page-break-before: auto;" +
|
||||||
|
' page-break-after: always;}</style><body style="padding: 0px;margin: 0px">'
|
||||||
|
);
|
||||||
|
newWin.document.write(tableToPrint.outerHTML); //将表格添加进新的窗口
|
||||||
|
newWin.document.write("</body></html>");
|
||||||
|
newWin.focus(); //在IE浏览器中使用必须添加这一句
|
||||||
|
newWin.print(); //打印
|
||||||
|
newWin.close(); //关闭窗口
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//取消
|
||||||
|
cancel() {
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
>>> .cards {
|
||||||
|
border: 1px solid black;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin: 10px;
|
||||||
|
background: #e7f6fa;
|
||||||
|
z-index: 111;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,462 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="main">
|
||||||
|
<div class="query" ref="query">
|
||||||
|
<el-form :model="queryParams" ref="queryParams" :inline="true" label-width="100px">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.materialBar"
|
||||||
|
placeholder="最小包装条码"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 230px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.boxBar"
|
||||||
|
placeholder="箱条码"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 230px;"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.materialCode"
|
||||||
|
placeholder="物料编码"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 230px;"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.materialName"
|
||||||
|
placeholder="物料名称"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 230px;"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="Query">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
:icon="showMore==true?'el-icon-arrow-up':'el-icon-arrow-down'"
|
||||||
|
size="mini"
|
||||||
|
@click="showMoreChange"
|
||||||
|
></el-button>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
<div v-show="showMore">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.billNumber"
|
||||||
|
placeholder="单据编号"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 230px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
|
||||||
|
<el-date-picker
|
||||||
|
v-model="queryParams.createdDt"
|
||||||
|
type="datetime"
|
||||||
|
size="small"
|
||||||
|
format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
style="width: 230px"
|
||||||
|
placeholder="创建时间开始">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="queryParams.createdDt2"
|
||||||
|
type="datetime"
|
||||||
|
size="small"
|
||||||
|
format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
style="width: 230px"
|
||||||
|
placeholder="创建时间结束">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-select style="width: 230px" collapse-tags v-model="queryParams.warehouseCode" :multiple="true"
|
||||||
|
placeholder="库区">
|
||||||
|
<el-option
|
||||||
|
v-for="item in warehouseOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<div>
|
||||||
|
<el-form-item>
|
||||||
|
<el-select style="width: 230px" collapse-tags v-model="queryParams.locationCode" :multiple="true"
|
||||||
|
placeholder="库位">
|
||||||
|
<el-option
|
||||||
|
v-for="item in locationOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.supplierName"
|
||||||
|
placeholder="供应商名称"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 230px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.batchNumber"
|
||||||
|
placeholder="批次"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 230px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-select style="width: 230px" collapse-tags v-model="queryParams.dictFreeze"
|
||||||
|
placeholder="冻结状态">
|
||||||
|
<el-option
|
||||||
|
v-for="item in this.$dictType.getFreezeTypeArray()"
|
||||||
|
:key="item.key"
|
||||||
|
:label="item.text"
|
||||||
|
:value="item.key">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-form-item>
|
||||||
|
<el-select style="width: 230px" collapse-tags v-model="queryParams.isFil"
|
||||||
|
placeholder="是否筛选">
|
||||||
|
<el-option
|
||||||
|
v-for="item in filOption"
|
||||||
|
:key="item.key"
|
||||||
|
:label="item.text"
|
||||||
|
:value="item.key">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-popover
|
||||||
|
style="float: right"
|
||||||
|
placement="bottom-end"
|
||||||
|
title="自定义显示列"
|
||||||
|
width="250"
|
||||||
|
@show="initPopover"
|
||||||
|
trigger="hover">
|
||||||
|
<headConfig ref="test" @fathers="fathers" :propThis="propThis"></headConfig>
|
||||||
|
<el-button size="mini" type="primary" class="el-icon-caret-bottom" slot="reference">自定义列</el-button>
|
||||||
|
</el-popover>
|
||||||
|
</el-row>
|
||||||
|
<el-table
|
||||||
|
@header-dragend="headerDragend"
|
||||||
|
v-loading="loading"
|
||||||
|
highlight-current-row
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:data="tableData"
|
||||||
|
border
|
||||||
|
:row-class-name="tableRowClassName"
|
||||||
|
v-if="indexShow"
|
||||||
|
:height="tableHeight"
|
||||||
|
class="tableStyle"
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
type="index"
|
||||||
|
align="center"
|
||||||
|
label="序号"
|
||||||
|
width="50">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
v-for="(item, index) in realList"
|
||||||
|
:prop="item.tableProp"
|
||||||
|
:key="index"
|
||||||
|
:align="item.align"
|
||||||
|
header-align="center"
|
||||||
|
:min-width="item.width"
|
||||||
|
:label="item.tableTitle"
|
||||||
|
:show-overflow-tooltip="item.show_overflow_tooltip"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
style="margin-top: 10px"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange2"
|
||||||
|
:current-page="currentPage"
|
||||||
|
:page-sizes="[10, 20, 50, 100,200,500,1000]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="total">
|
||||||
|
</el-pagination>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'MaterialExpireTime',
|
||||||
|
data() {
|
||||||
|
return{
|
||||||
|
pageQty:0,
|
||||||
|
pageQtySummer:0,
|
||||||
|
indexShow:false,
|
||||||
|
showMore:false,
|
||||||
|
currentRow:null,
|
||||||
|
List:[],
|
||||||
|
warehouseOptions:[],
|
||||||
|
locationOptions:[],
|
||||||
|
realList:[],
|
||||||
|
isAdd:null,
|
||||||
|
total:null,
|
||||||
|
pageSize:50,
|
||||||
|
buttonEnable:true,
|
||||||
|
tableHeight:0,
|
||||||
|
currentPage:1,
|
||||||
|
propThis:this,
|
||||||
|
tableData:[],
|
||||||
|
filOption:[{key:'Y',text:'是'},{key:'N',text:'否'}],
|
||||||
|
queryParams:{
|
||||||
|
|
||||||
|
},
|
||||||
|
loading:false,
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.tableHeight = window.innerHeight - this.$refs.query.offsetHeight - 250
|
||||||
|
})
|
||||||
|
this.getList()
|
||||||
|
const params={
|
||||||
|
tableName:'list'
|
||||||
|
}
|
||||||
|
this.$headerConfig.getRealList(params).then(data=>{
|
||||||
|
console.log("开始输出真正表格")
|
||||||
|
if(data.data.data!==null){
|
||||||
|
let temp = JSON.parse(data.data.data)
|
||||||
|
this.realList = temp.headerList
|
||||||
|
this.List = temp.List
|
||||||
|
}else {
|
||||||
|
this.List = this.$headerConfig.getList("list")
|
||||||
|
this.realList = this.List
|
||||||
|
let temp ={
|
||||||
|
headerList:this.realList,
|
||||||
|
List:this.List
|
||||||
|
}
|
||||||
|
const params={
|
||||||
|
tableName:"list",
|
||||||
|
configure:JSON.stringify(temp)
|
||||||
|
}
|
||||||
|
this.$headerConfig.updateRealList(params).then(value=>{
|
||||||
|
console.log(value)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.indexShow = true
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
headerDragend(newWidth, oldWidth, column, event){
|
||||||
|
// realList
|
||||||
|
this.realList.forEach(value => {
|
||||||
|
if (column.property == value.tableProp) {
|
||||||
|
value.width=newWidth
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.$refs.test.init();
|
||||||
|
setTimeout( ()=>{
|
||||||
|
this.$refs.test.show();
|
||||||
|
}, 1000);
|
||||||
|
},
|
||||||
|
tableRowClassName({row, rowIndex}) {
|
||||||
|
if(row.bzyxqType===2){
|
||||||
|
return 'alert'
|
||||||
|
}
|
||||||
|
if(row.bzyxqType===1){
|
||||||
|
return 'warn'
|
||||||
|
}
|
||||||
|
if(row.bzyxqType===0){
|
||||||
|
return 'normal'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
showMoreChange() {
|
||||||
|
if (!this.showMore) {
|
||||||
|
this.tableHeight = this.tableHeight - 70
|
||||||
|
} else {
|
||||||
|
this.tableHeight = this.tableHeight + 70
|
||||||
|
}
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.showMore = !this.showMore
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
const params = {
|
||||||
|
pageSize:this.pageSize,
|
||||||
|
pageNo:this.currentPage,
|
||||||
|
boxBar:this.queryParams.boxBar,
|
||||||
|
dictBilltype:this.queryParams.dictBilltype,
|
||||||
|
dictStatus:this.queryParams.dictStatus,
|
||||||
|
locationCodes:this.queryParams.locationCode,
|
||||||
|
materialBar:this.queryParams.materialBar,
|
||||||
|
materialCode:this.queryParams.materialCode,
|
||||||
|
materialName:this.queryParams.materialName,
|
||||||
|
srcBillNumber:this.queryParams.srcBillNumber,
|
||||||
|
supplierName:this.queryParams.supplierName,
|
||||||
|
batchNumber:this.queryParams.batchNumber,
|
||||||
|
warehouseCodes:this.queryParams.warehouseCode,
|
||||||
|
createdDt:this.queryParams.createdDt,
|
||||||
|
createdDt2:this.queryParams.createdDt2,
|
||||||
|
dictFreeze:this.queryParams.dictFreeze,
|
||||||
|
isFil:this.queryParams.isFil,
|
||||||
|
}
|
||||||
|
this.$stock.getListExpireTime(params).then(data=>{
|
||||||
|
this.tableData = data.data.data.data
|
||||||
|
this.tableData.forEach(value=>{
|
||||||
|
value.dictBillTypeShow = this.$dictType.getInputBillType(value.dictBilltype)
|
||||||
|
value.dictFreezeShow = this.$dictType.getFreezeType(value.dictFreeze)
|
||||||
|
if(value.isFil==='Y'){
|
||||||
|
value.filShow = '是'
|
||||||
|
}else {
|
||||||
|
value.filShow = '否'
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(parseInt(value.bzyxq)<30)
|
||||||
|
|
||||||
|
if(parseInt(value.bzyxq)<30){
|
||||||
|
value.bzyxqType = 2
|
||||||
|
}else if(parseInt(value.bzyxq)<90){
|
||||||
|
value.bzyxqType = 1
|
||||||
|
}else{
|
||||||
|
value.bzyxqType = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
value.bzyxq =value.bzyxq+'天'
|
||||||
|
})
|
||||||
|
|
||||||
|
this.total = data.data.data.recordsTotal
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
initPopover() {
|
||||||
|
const params={
|
||||||
|
tableName:'list'
|
||||||
|
}
|
||||||
|
this.$headerConfig.getRealList(params).then(data=>{
|
||||||
|
console.log("开始输出真正表格")
|
||||||
|
let temp = JSON.parse(data.data.data)
|
||||||
|
console.log(temp)
|
||||||
|
this.realList =temp.headerList
|
||||||
|
console.log(this.realList)
|
||||||
|
this.$refs.test.init()
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
fathers(data) {
|
||||||
|
|
||||||
|
this.List = data.configure.List
|
||||||
|
data.configure.List.forEach(value=>{
|
||||||
|
this.realList.forEach(real=>{
|
||||||
|
if (value.tableProp == real.tableProp) {
|
||||||
|
value.width=real.width;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
data.configure.headerList.forEach(value=>{
|
||||||
|
this.realList.forEach(real=>{
|
||||||
|
if (value.tableProp == real.tableProp) {
|
||||||
|
value.width=real.width;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
if (data.configure.headerList.length <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const params={
|
||||||
|
tableName:"list",
|
||||||
|
configure:JSON.stringify(data.configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.realList = data.configure.headerList;
|
||||||
|
|
||||||
|
this.$headerConfig.updateRealList(params).then(value=>{
|
||||||
|
console.log(value)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCurrentChange2(val) {
|
||||||
|
// this.currentRow = val;
|
||||||
|
console.log(val)
|
||||||
|
this.currentPage = val;
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
handleSizeChange(val){
|
||||||
|
this.pageSize = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
handleCurrentChange(val){
|
||||||
|
this.buttonEnable = false
|
||||||
|
this.currentRow = val;
|
||||||
|
},
|
||||||
|
Query() {
|
||||||
|
this.currentPage = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
>>> .el-link.el-link--default {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-divider {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>>.el-table .warn {
|
||||||
|
background: #ffc556;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>>.el-table .normal {
|
||||||
|
background: #11bc4a;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>>.el-table .alert {
|
||||||
|
background: #ff5d58;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,239 @@
|
|||||||
|
package com.cmeim.stock.po;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import javax.persistence.TableGenerator;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "mm_stock_his")
|
||||||
|
public class MmStockHis implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Id
|
||||||
|
*/
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name = "id")
|
||||||
|
@ApiParam(value = "Id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库存Id
|
||||||
|
*/
|
||||||
|
@Column(name = "stock_id")
|
||||||
|
@ApiParam(value = "库存Id")
|
||||||
|
private Long stockId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最小包装条码
|
||||||
|
*/
|
||||||
|
@Column(name = "material_bar")
|
||||||
|
@ApiParam(value = "最小包装条码")
|
||||||
|
private String materialBar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 箱条码
|
||||||
|
*/
|
||||||
|
@Column(name = "box_bar")
|
||||||
|
@ApiParam(value = "箱条码")
|
||||||
|
private String boxBar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料Id
|
||||||
|
*/
|
||||||
|
@Column(name = "material_id")
|
||||||
|
@ApiParam(value = "物料Id")
|
||||||
|
private Long materialId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
@Column(name = "material_code")
|
||||||
|
@ApiParam(value = "物料编码")
|
||||||
|
private String materialCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料名称
|
||||||
|
*/
|
||||||
|
@Column(name = "material_name")
|
||||||
|
@ApiParam(value = "物料名称")
|
||||||
|
private String materialName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料规格
|
||||||
|
*/
|
||||||
|
@Column(name = "material_spec")
|
||||||
|
@ApiParam(value = "物料规格")
|
||||||
|
private String materialSpec;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
@Column(name = "unit_of_measure")
|
||||||
|
@ApiParam(value = "单位")
|
||||||
|
private String unitOfMeasure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批次
|
||||||
|
*/
|
||||||
|
@Column(name = "batch_no")
|
||||||
|
@ApiParam(value = "批次")
|
||||||
|
private String batchNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
@Column(name = "qty")
|
||||||
|
@ApiParam(value = "数量")
|
||||||
|
private java.math.BigDecimal qty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库区Id
|
||||||
|
*/
|
||||||
|
@Column(name = "warehouse_id")
|
||||||
|
@ApiParam(value = "库区Id")
|
||||||
|
private Long warehouseId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库区代码
|
||||||
|
*/
|
||||||
|
@Column(name = "warehouse_code")
|
||||||
|
@ApiParam(value = "库区代码")
|
||||||
|
private String warehouseCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库区名称
|
||||||
|
*/
|
||||||
|
@Column(name = "warehouse_name")
|
||||||
|
@ApiParam(value = "库区名称")
|
||||||
|
private String warehouseName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库位Id
|
||||||
|
*/
|
||||||
|
@Column(name = "location_id")
|
||||||
|
@ApiParam(value = "库位Id")
|
||||||
|
private Long locationId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库位代码
|
||||||
|
*/
|
||||||
|
@Column(name = "location_code")
|
||||||
|
@ApiParam(value = "库位代码")
|
||||||
|
private String locationCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库位名称
|
||||||
|
*/
|
||||||
|
@Column(name = "location_name")
|
||||||
|
@ApiParam(value = "库位名称")
|
||||||
|
private String locationName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
@Column(name = "dict_status")
|
||||||
|
@ApiParam(value = "状态")
|
||||||
|
private Integer dictStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单据类型
|
||||||
|
*/
|
||||||
|
@Column(name = "dict_billtype")
|
||||||
|
@ApiParam(value = "单据类型")
|
||||||
|
private Integer dictBilltype;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单据Id
|
||||||
|
*/
|
||||||
|
@Column(name = "bill_id")
|
||||||
|
@ApiParam(value = "单据Id")
|
||||||
|
private Long billId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单据编号
|
||||||
|
*/
|
||||||
|
@Column(name = "bill_number")
|
||||||
|
@ApiParam(value = "单据编号")
|
||||||
|
private String billNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商Id
|
||||||
|
*/
|
||||||
|
@Column(name = "supplier_id")
|
||||||
|
@ApiParam(value = "供应商Id")
|
||||||
|
private Long supplierId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商代码
|
||||||
|
*/
|
||||||
|
@Column(name = "supplier_code")
|
||||||
|
@ApiParam(value = "供应商代码")
|
||||||
|
private String supplierCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商名称
|
||||||
|
*/
|
||||||
|
@Column(name = "supplier_name")
|
||||||
|
@ApiParam(value = "供应商名称")
|
||||||
|
private String supplierName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否筛选
|
||||||
|
*/
|
||||||
|
@Column(name = "is_fil")
|
||||||
|
@ApiParam(value = "是否筛选")
|
||||||
|
private String isFil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保质期有效期
|
||||||
|
*/
|
||||||
|
@Column(name = "bzyxq")
|
||||||
|
@ApiParam(value = "保质期有效期")
|
||||||
|
private String bzyxq;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人
|
||||||
|
*/
|
||||||
|
@Column(name = "created_by")
|
||||||
|
@ApiParam(value = "创建人")
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(name = "created_dt")
|
||||||
|
@ApiParam(value = "创建时间")
|
||||||
|
private String createdDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改人
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_by")
|
||||||
|
@ApiParam(value = "修改人")
|
||||||
|
private String updatedBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改时间
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_dt")
|
||||||
|
@ApiParam(value = "修改时间")
|
||||||
|
private String updatedDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Column(name = "inspection_no")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private String inspectionNo;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
<span ng-if="!property.noValue">{{'PROPERTY.SIGNALDEFINITIONS.DISPLAY' | translate:property.value}}</span>
|
||||||
|
<span ng-if="property.noValue" translate>PROPERTY.SIGNALDEFINITIONS.EMPTY</span>
|
@ -0,0 +1,9 @@
|
|||||||
|
define("ace/snippets/abap",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="",t.scope="abap"});
|
||||||
|
(function() {
|
||||||
|
window.require(["ace/snippets/abap"], function(m) {
|
||||||
|
if (typeof module == "object" && typeof exports == "object" && module) {
|
||||||
|
module.exports = m;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
@ -0,0 +1,9 @@
|
|||||||
|
define("ace/theme/kuroir",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-kuroir",t.cssText=".ace-kuroir .ace_gutter {background: #e8e8e8;color: #333;}.ace-kuroir .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-kuroir {background-color: #E8E9E8;color: #363636;}.ace-kuroir .ace_cursor {color: #202020;}.ace-kuroir .ace_marker-layer .ace_selection {background: rgba(245, 170, 0, 0.57);}.ace-kuroir.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #E8E9E8;}.ace-kuroir .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-kuroir .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(0, 0, 0, 0.29);}.ace-kuroir .ace_marker-layer .ace_active-line {background: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_gutter-active-line {background-color: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_marker-layer .ace_selected-word {border: 1px solid rgba(245, 170, 0, 0.57);}.ace-kuroir .ace_invisible {color: #BFBFBF}.ace-kuroir .ace_fold {border-color: #363636;}.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;font-style:italic;color:#FD1732;background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)});
|
||||||
|
(function() {
|
||||||
|
window.require(["ace/theme/kuroir"], function(m) {
|
||||||
|
if (typeof module == "object" && typeof exports == "object" && module) {
|
||||||
|
module.exports = m;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.cmeim.biz.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName lightVo
|
||||||
|
* @Description
|
||||||
|
* @Author LDJ
|
||||||
|
* @Date 2022/10/12 16:27 星期三
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class lightVo {
|
||||||
|
public String shelfCode;
|
||||||
|
public String lightUpModel;
|
||||||
|
public String lightColour;
|
||||||
|
}
|
@ -0,0 +1,325 @@
|
|||||||
|
/*
|
||||||
|
* Activiti Modeler component part of the Activiti project
|
||||||
|
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Task listeners
|
||||||
|
*/
|
||||||
|
|
||||||
|
var KisBpmTaskListenersCtrl = [ '$scope', '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
|
||||||
|
|
||||||
|
// Config for the modal window
|
||||||
|
var opts = {
|
||||||
|
template: 'editor-app/configuration/properties/task-listeners-popup.html?version=' + Date.now(),
|
||||||
|
scope: $scope
|
||||||
|
};
|
||||||
|
|
||||||
|
// Open the dialog
|
||||||
|
$modal(opts);
|
||||||
|
}];
|
||||||
|
|
||||||
|
var KisBpmTaskListenersPopupCtrl = [ '$scope', '$q', '$translate', function($scope, $q, $translate) {
|
||||||
|
|
||||||
|
// Put json representing form properties on scope
|
||||||
|
if ($scope.property.value !== undefined && $scope.property.value !== null
|
||||||
|
&& $scope.property.value.taskListeners !== undefined
|
||||||
|
&& $scope.property.value.taskListeners !== null) {
|
||||||
|
|
||||||
|
if ($scope.property.value.taskListeners.constructor == String)
|
||||||
|
{
|
||||||
|
$scope.taskListeners = JSON.parse($scope.property.value.taskListeners);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Note that we clone the json object rather then setting it directly,
|
||||||
|
// this to cope with the fact that the user can click the cancel button and no changes should have happened
|
||||||
|
$scope.taskListeners = angular.copy($scope.property.value.taskListeners);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < $scope.taskListeners.length; i++)
|
||||||
|
{
|
||||||
|
var taskListener = $scope.taskListeners[i];
|
||||||
|
if (taskListener.className !== undefined && taskListener.className !== '')
|
||||||
|
{
|
||||||
|
taskListener.implementation = taskListener.className;
|
||||||
|
}
|
||||||
|
else if (taskListener.expression !== undefined && taskListener.expression !== '')
|
||||||
|
{
|
||||||
|
taskListener.implementation = taskListener.expression;
|
||||||
|
}
|
||||||
|
else if (taskListener.delegateExpression !== undefined && taskListener.delegateExpression !== '')
|
||||||
|
{
|
||||||
|
taskListener.implementation = taskListener.delegateExpression;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$scope.taskListeners = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Array to contain selected properties (yes - we only can select one, but ng-grid isn't smart enough)
|
||||||
|
$scope.selectedListeners = [];
|
||||||
|
$scope.selectedFields = [];
|
||||||
|
$scope.translationsRetrieved = false;
|
||||||
|
|
||||||
|
$scope.labels = {};
|
||||||
|
|
||||||
|
var eventPromise = $translate('PROPERTY.TASKLISTENERS.EVENT');
|
||||||
|
var implementationPromise = $translate('PROPERTY.TASKLISTENERS.FIELDS.IMPLEMENTATION');
|
||||||
|
var namePromise = $translate('PROPERTY.TASKLISTENERS.FIELDS.NAME');
|
||||||
|
|
||||||
|
$q.all([eventPromise, implementationPromise, namePromise]).then(function(results) {
|
||||||
|
$scope.labels.eventLabel = results[0];
|
||||||
|
$scope.labels.implementationLabel = results[1];
|
||||||
|
$scope.labels.nameLabel = results[2];
|
||||||
|
$scope.translationsRetrieved = true;
|
||||||
|
|
||||||
|
// Config for grid
|
||||||
|
$scope.gridOptions = {
|
||||||
|
data: 'taskListeners',
|
||||||
|
enableRowReordering: true,
|
||||||
|
headerRowHeight: 28,
|
||||||
|
multiSelect: false,
|
||||||
|
keepLastSelected : false,
|
||||||
|
selectedItems: $scope.selectedListeners,
|
||||||
|
afterSelectionChange: function (rowItem, event) {
|
||||||
|
$scope.selectedFields.length = 0;
|
||||||
|
if ($scope.selectedListeners.length > 0)
|
||||||
|
{
|
||||||
|
var fields = $scope.selectedListeners[0].fields;
|
||||||
|
if (fields !== undefined && fields !== null)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < fields.length; i++)
|
||||||
|
{
|
||||||
|
var field = fields[i];
|
||||||
|
if (field.stringValue !== undefined && field.stringValue !== '')
|
||||||
|
{
|
||||||
|
field.implementation = field.stringValue;
|
||||||
|
}
|
||||||
|
else if (field.expression !== undefined && field.expression !== '')
|
||||||
|
{
|
||||||
|
field.implementation = field.expression;
|
||||||
|
}
|
||||||
|
else if (field.string !== undefined && field.string !== '')
|
||||||
|
{
|
||||||
|
field.implementation = field.string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
columnDefs: [{ field: 'event', displayName: $scope.labels.eventLabel },
|
||||||
|
{ field: 'implementation', displayName: $scope.labels.implementationLabel}]
|
||||||
|
};
|
||||||
|
|
||||||
|
// Config for field grid
|
||||||
|
$scope.gridFieldOptions = {
|
||||||
|
data: 'selectedListeners[0].fields',
|
||||||
|
enableRowReordering: true,
|
||||||
|
headerRowHeight: 28,
|
||||||
|
multiSelect: false,
|
||||||
|
keepLastSelected : false,
|
||||||
|
selectedItems: $scope.selectedFields,
|
||||||
|
columnDefs: [{ field: 'name', displayName: $scope.labels.name },
|
||||||
|
{ field: 'implementation', displayName: $scope.labels.implementationLabel}]
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
$scope.listenerDetailsChanged = function() {
|
||||||
|
if ($scope.selectedListeners[0].className !== '')
|
||||||
|
{
|
||||||
|
$scope.selectedListeners[0].implementation = $scope.selectedListeners[0].className;
|
||||||
|
}
|
||||||
|
else if ($scope.selectedListeners[0].expression !== '')
|
||||||
|
{
|
||||||
|
$scope.selectedListeners[0].implementation = $scope.selectedListeners[0].expression;
|
||||||
|
}
|
||||||
|
else if ($scope.selectedListeners[0].delegateExpression !== '')
|
||||||
|
{
|
||||||
|
$scope.selectedListeners[0].implementation = $scope.selectedListeners[0].delegateExpression;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$scope.selectedListeners[0].implementation = '';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for add button
|
||||||
|
$scope.addNewListener = function() {
|
||||||
|
$scope.taskListeners.push({ event : 'create',
|
||||||
|
implementation : '',
|
||||||
|
className : '',
|
||||||
|
expression: '',
|
||||||
|
delegateExpression: ''});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for remove button
|
||||||
|
$scope.removeListener = function() {
|
||||||
|
if ($scope.selectedListeners.length > 0) {
|
||||||
|
var index = $scope.taskListeners.indexOf($scope.selectedListeners[0]);
|
||||||
|
$scope.gridOptions.selectItem(index, false);
|
||||||
|
$scope.taskListeners.splice(index, 1);
|
||||||
|
|
||||||
|
$scope.selectedListeners.length = 0;
|
||||||
|
if (index < $scope.taskListeners.length) {
|
||||||
|
$scope.gridOptions.selectItem(index + 1, true);
|
||||||
|
} else if ($scope.taskListeners.length > 0) {
|
||||||
|
$scope.gridOptions.selectItem(index - 1, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for up button
|
||||||
|
$scope.moveListenerUp = function() {
|
||||||
|
if ($scope.selectedListeners.length > 0) {
|
||||||
|
var index = $scope.taskListeners.indexOf($scope.selectedListeners[0]);
|
||||||
|
if (index != 0) { // If it's the first, no moving up of course
|
||||||
|
// Reason for funny way of swapping, see https://github.com/angular-ui/ng-grid/issues/272
|
||||||
|
var temp = $scope.taskListeners[index];
|
||||||
|
$scope.taskListeners.splice(index, 1);
|
||||||
|
$timeout(function(){
|
||||||
|
$scope.taskListeners.splice(index + -1, 0, temp);
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for down button
|
||||||
|
$scope.moveListenerDown = function() {
|
||||||
|
if ($scope.selectedListeners.length > 0) {
|
||||||
|
var index = $scope.taskListeners.indexOf($scope.selectedListeners[0]);
|
||||||
|
if (index != $scope.taskListeners.length - 1) { // If it's the last element, no moving down of course
|
||||||
|
// Reason for funny way of swapping, see https://github.com/angular-ui/ng-grid/issues/272
|
||||||
|
var temp = $scope.taskListeners[index];
|
||||||
|
$scope.taskListeners.splice(index, 1);
|
||||||
|
$timeout(function(){
|
||||||
|
$scope.taskListeners.splice(index + 1, 0, temp);
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.fieldDetailsChanged = function() {
|
||||||
|
if ($scope.selectedFields[0].stringValue != '')
|
||||||
|
{
|
||||||
|
$scope.selectedFields[0].implementation = $scope.selectedFields[0].stringValue;
|
||||||
|
}
|
||||||
|
else if ($scope.selectedFields[0].expression != '')
|
||||||
|
{
|
||||||
|
$scope.selectedFields[0].implementation = $scope.selectedFields[0].expression;
|
||||||
|
}
|
||||||
|
else if ($scope.selectedFields[0].string != '')
|
||||||
|
{
|
||||||
|
$scope.selectedFields[0].implementation = $scope.selectedFields[0].string;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$scope.selectedFields[0].implementation = '';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for add button
|
||||||
|
$scope.addNewField = function() {
|
||||||
|
if ($scope.selectedListeners.length > 0)
|
||||||
|
{
|
||||||
|
if ($scope.selectedListeners[0].fields == undefined)
|
||||||
|
{
|
||||||
|
$scope.selectedListeners[0].fields = [];
|
||||||
|
}
|
||||||
|
$scope.selectedListeners[0].fields.push({ name : 'fieldName',
|
||||||
|
implementation : '',
|
||||||
|
stringValue : '',
|
||||||
|
expression: '',
|
||||||
|
string: ''});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for remove button
|
||||||
|
$scope.removeField = function() {
|
||||||
|
if ($scope.selectedFields.length > 0) {
|
||||||
|
var index = $scope.selectedListeners[0].fields.indexOf($scope.selectedFields[0]);
|
||||||
|
$scope.gridFieldOptions.selectItem(index, false);
|
||||||
|
$scope.selectedListeners[0].fields.splice(index, 1);
|
||||||
|
|
||||||
|
$scope.selectedFields.length = 0;
|
||||||
|
if (index < $scope.selectedListeners[0].fields.length) {
|
||||||
|
$scope.gridFieldOptions.selectItem(index + 1, true);
|
||||||
|
} else if ($scope.selectedListeners[0].fields.length > 0) {
|
||||||
|
$scope.gridFieldOptions.selectItem(index - 1, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for up button
|
||||||
|
$scope.moveFieldUp = function() {
|
||||||
|
if ($scope.selectedFields.length > 0) {
|
||||||
|
var index = $scope.selectedListeners[0].fields.indexOf($scope.selectedFields[0]);
|
||||||
|
if (index != 0) { // If it's the first, no moving up of course
|
||||||
|
// Reason for funny way of swapping, see https://github.com/angular-ui/ng-grid/issues/272
|
||||||
|
var temp = $scope.selectedListeners[0].fields[index];
|
||||||
|
$scope.selectedListeners[0].fields.splice(index, 1);
|
||||||
|
$timeout(function(){
|
||||||
|
$scope.selectedListeners[0].fields.splice(index + -1, 0, temp);
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for down button
|
||||||
|
$scope.moveFieldDown = function() {
|
||||||
|
if ($scope.selectedFields.length > 0) {
|
||||||
|
var index = $scope.selectedListeners[0].fields.indexOf($scope.selectedFields[0]);
|
||||||
|
if (index != $scope.selectedListeners[0].fields.length - 1) { // If it's the last element, no moving down of course
|
||||||
|
// Reason for funny way of swapping, see https://github.com/angular-ui/ng-grid/issues/272
|
||||||
|
var temp = $scope.selectedListeners[0].fields[index];
|
||||||
|
$scope.selectedListeners[0].fields.splice(index, 1);
|
||||||
|
$timeout(function(){
|
||||||
|
$scope.selectedListeners[0].fields.splice(index + 1, 0, temp);
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for save button
|
||||||
|
$scope.save = function() {
|
||||||
|
|
||||||
|
if ($scope.taskListeners.length > 0) {
|
||||||
|
$scope.property.value = {};
|
||||||
|
$scope.property.value.taskListeners = $scope.taskListeners;
|
||||||
|
} else {
|
||||||
|
$scope.property.value = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.updatePropertyInModel($scope.property);
|
||||||
|
$scope.close();
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.cancel = function() {
|
||||||
|
$scope.close();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Close button handler
|
||||||
|
$scope.close = function() {
|
||||||
|
$scope.property.mode = 'read';
|
||||||
|
$scope.$hide();
|
||||||
|
};
|
||||||
|
|
||||||
|
}];
|
@ -0,0 +1,74 @@
|
|||||||
|
package com.cmeim.biz.po;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import javax.persistence.TableGenerator;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "inte_sidebin_box")
|
||||||
|
public class InteSidebinBox {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy=GenerationType.IDENTITY, generator = "inte_sidebin_box")
|
||||||
|
@Column(name = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 线边仓编号
|
||||||
|
*/
|
||||||
|
@Column(name = "sidebin_code")
|
||||||
|
private String sidebinCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 周转箱条码
|
||||||
|
*/
|
||||||
|
@Column(name = "box_bar")
|
||||||
|
private String boxBar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最小包装条码
|
||||||
|
*/
|
||||||
|
@Column(name = "material_bar")
|
||||||
|
private String materialBar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
@Column(name = "material_code")
|
||||||
|
private String materialCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料名称
|
||||||
|
*/
|
||||||
|
@Column(name = "material_name")
|
||||||
|
private String materialName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格型号
|
||||||
|
*/
|
||||||
|
@Column(name = "material_spec")
|
||||||
|
private String materialSpec;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条码数量
|
||||||
|
*/
|
||||||
|
@Column(name = "qty")
|
||||||
|
private Integer qty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领料单号
|
||||||
|
*/
|
||||||
|
@Column(name = "request_no")
|
||||||
|
private String requestNo;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
package com.cmeim.job.service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import com.cmeim.job.domain.SysJobLog;
|
||||||
|
import com.cmeim.job.mapper.SysJobLogMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时任务调度日志信息 服务层
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class SysJobLogServiceImpl implements ISysJobLogService
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private SysJobLogMapper jobLogMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取quartz调度器日志的计划任务
|
||||||
|
*
|
||||||
|
* @param jobLog 调度日志信息
|
||||||
|
* @return 调度任务日志集合
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SysJobLog> selectJobLogList(SysJobLog jobLog)
|
||||||
|
{
|
||||||
|
return jobLogMapper.selectJobLogList(jobLog);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过调度任务日志ID查询调度信息
|
||||||
|
*
|
||||||
|
* @param jobLogId 调度任务日志ID
|
||||||
|
* @return 调度任务日志对象信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public SysJobLog selectJobLogById(Long jobLogId)
|
||||||
|
{
|
||||||
|
return jobLogMapper.selectJobLogById(jobLogId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增任务日志
|
||||||
|
*
|
||||||
|
* @param jobLog 调度日志信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void addJobLog(SysJobLog jobLog)
|
||||||
|
{
|
||||||
|
jobLogMapper.insertJobLog(jobLog);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除调度日志信息
|
||||||
|
*
|
||||||
|
* @param logIds 需要删除的数据ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteJobLogByIds(Long[] logIds)
|
||||||
|
{
|
||||||
|
return jobLogMapper.deleteJobLogByIds(logIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除任务日志
|
||||||
|
*
|
||||||
|
* @param jobId 调度日志ID
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteJobLogById(Long jobId)
|
||||||
|
{
|
||||||
|
return jobLogMapper.deleteJobLogById(jobId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清空任务日志
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void cleanJobLog()
|
||||||
|
{
|
||||||
|
jobLogMapper.cleanJobLog();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1546567861908" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2422" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M318.577778 819.2L17.066667 512l301.511111-307.2 45.511111 45.511111L96.711111 512l267.377778 261.688889zM705.422222 819.2l-45.511111-45.511111L927.288889 512l-267.377778-261.688889 45.511111-45.511111L1006.933333 512zM540.785778 221.866667l55.751111 11.150222L483.157333 802.133333l-55.751111-11.093333z" fill="#bfbfbf" p-id="2423"></path></svg>
|
After Width: | Height: | Size: 732 B |
File diff suppressed because one or more lines are too long
@ -0,0 +1,20 @@
|
|||||||
|
package com.cmeim.biz.vo;
|
||||||
|
|
||||||
|
import com.cmeim.biz.po.MmPickBill;
|
||||||
|
import com.cmeim.biz.po.MmPickBillDetail;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PickBillVo {
|
||||||
|
|
||||||
|
@ApiParam(value = "生产订单Id集合")
|
||||||
|
private Long[] orderWorkIds;
|
||||||
|
|
||||||
|
@ApiParam(value = "领料单")
|
||||||
|
private MmPickBill bill;
|
||||||
|
|
||||||
|
@ApiParam(value = "领料明细")
|
||||||
|
private MmPickBillDetail[] dtls;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,92 @@
|
|||||||
|
package com.cmeim.template.po;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "tp_workcenter_bind")
|
||||||
|
public class TpWorkcenterBind implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id记录
|
||||||
|
*/
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||||
|
@Column(name = "id")
|
||||||
|
@ApiParam(value = "id记录")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板ID
|
||||||
|
*/
|
||||||
|
@Column(name = "template_id")
|
||||||
|
@ApiParam(value = "模板ID")
|
||||||
|
private Long templateId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板编码
|
||||||
|
*/
|
||||||
|
@Column(name = "template_code")
|
||||||
|
@ApiParam(value = "模板编码")
|
||||||
|
private String templateCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板名称
|
||||||
|
*/
|
||||||
|
@Column(name = "template_name")
|
||||||
|
@ApiParam(value = "模板名称")
|
||||||
|
private String templateName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作中心id
|
||||||
|
*/
|
||||||
|
@Column(name = "work_center_id")
|
||||||
|
@ApiParam(value = "工作中心id")
|
||||||
|
private Long workCenterId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作中心名称
|
||||||
|
*/
|
||||||
|
@Column(name = "work_center_name")
|
||||||
|
@ApiParam(value = "工作中心名称")
|
||||||
|
private String workCenterName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除标记(0:表示未删除;1:表示已删除)
|
||||||
|
*/
|
||||||
|
@Column(name = "deleted")
|
||||||
|
@ApiParam(value = "删除标记(0:表示未删除;1:表示已删除)")
|
||||||
|
private Integer deleted;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建者
|
||||||
|
*/
|
||||||
|
@Column(name = "created_by")
|
||||||
|
@ApiParam(value = "创建者")
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(name = "created_dt")
|
||||||
|
@ApiParam(value = "创建时间")
|
||||||
|
private String createdDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改者
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_by")
|
||||||
|
@ApiParam(value = "修改者")
|
||||||
|
private String updatedBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改时间
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_dt")
|
||||||
|
@ApiParam(value = "修改时间")
|
||||||
|
private String updatedDt;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.apache.avalon.framework:avalon-framework-impl:4.3.1">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/apache/avalon/framework/avalon-framework-impl/4.3.1/avalon-framework-impl-4.3.1.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/apache/avalon/framework/avalon-framework-impl/4.3.1/avalon-framework-impl-4.3.1-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/apache/avalon/framework/avalon-framework-impl/4.3.1/avalon-framework-impl-4.3.1-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,620 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="main">
|
||||||
|
<query-params
|
||||||
|
ref="query"
|
||||||
|
:form="queryFormConfig"
|
||||||
|
@handleQuery="handleQuery"
|
||||||
|
@getTableData="getTableData"
|
||||||
|
@resetQuery="resetQuery"
|
||||||
|
>
|
||||||
|
</query-params>
|
||||||
|
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="openDetailAdd"
|
||||||
|
v-hasPermi="['MaterialProperties_add']"
|
||||||
|
>新增</el-button
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="openDetail"
|
||||||
|
:disabled="buttonEnable"
|
||||||
|
v-hasPermi="['MaterialProperties_edit']"
|
||||||
|
>编辑</el-button
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="handleDelete"
|
||||||
|
:disabled="buttonEnable"
|
||||||
|
v-hasPermi="['MaterialProperties_delete']"
|
||||||
|
>删除
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-popover
|
||||||
|
style="float: right"
|
||||||
|
placement="bottom-end"
|
||||||
|
title="自定义显示列"
|
||||||
|
width="250"
|
||||||
|
@show="initPopover"
|
||||||
|
trigger="hover"
|
||||||
|
>
|
||||||
|
<headConfig
|
||||||
|
ref="test"
|
||||||
|
@fathers="fathers"
|
||||||
|
:propThis="propThis"
|
||||||
|
></headConfig>
|
||||||
|
<el-button
|
||||||
|
style="margin-right: 5px"
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
class="el-icon-caret-bottom"
|
||||||
|
slot="reference"
|
||||||
|
>自定义列</el-button>
|
||||||
|
</el-popover>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-row
|
||||||
|
:gutter="10"
|
||||||
|
style="margin: 10px 0px"
|
||||||
|
class="mb8"
|
||||||
|
v-if="isSortShow"
|
||||||
|
>
|
||||||
|
<el-col>
|
||||||
|
<el-select
|
||||||
|
class="sortSeq"
|
||||||
|
ref="select"
|
||||||
|
@click.native="notSelect"
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="seqence"
|
||||||
|
:multiple="true"
|
||||||
|
placeholder=""
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in seqenceOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
@sort-change="sortChange"
|
||||||
|
:row-key="getRowKeys"
|
||||||
|
@expand-change="rowExpand"
|
||||||
|
ref="singleTable"
|
||||||
|
v-loading="loading"
|
||||||
|
highlight-current-row
|
||||||
|
@header-dragend="headerDragend"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:data="tableData"
|
||||||
|
border
|
||||||
|
lazy
|
||||||
|
:height="tableHeight"
|
||||||
|
class="tableStyle"
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
type="index"
|
||||||
|
align="center"
|
||||||
|
label="序号"
|
||||||
|
width="50"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column type="expand">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-table
|
||||||
|
border
|
||||||
|
v-loading="loadingChild"
|
||||||
|
:data="scope.row.childrenList"
|
||||||
|
>
|
||||||
|
<el-table-column label="模板编号" prop="templateCode">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="模板名称" prop="templateName">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="自定义属性" prop="attributesName">
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
v-for="(item, index) in realList"
|
||||||
|
:sortable="item.notSort == true ? false : `custom`"
|
||||||
|
:prop="item.tableProp"
|
||||||
|
:key="index"
|
||||||
|
:align="item.align"
|
||||||
|
header-align="center"
|
||||||
|
:min-width="item.width"
|
||||||
|
:label="item.tableTitle"
|
||||||
|
:show-overflow-tooltip="item.show_overflow_tooltip"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
style="margin-top: 10px; height: 20px"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange2"
|
||||||
|
:current-page="currentPage"
|
||||||
|
:page-sizes="[10, 20, 50, 100, 200, 500, 1000]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="total"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import edit from "./edit";
|
||||||
|
export default {
|
||||||
|
name: "MaterialProperties",
|
||||||
|
components: {
|
||||||
|
edit,
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
queryFormConfig()
|
||||||
|
{
|
||||||
|
return{
|
||||||
|
controlList:[
|
||||||
|
{
|
||||||
|
key:'templateCode',
|
||||||
|
label:'模板编号',
|
||||||
|
type:'input',
|
||||||
|
placeholder:'请输入',
|
||||||
|
prop:'templateCode',
|
||||||
|
class:'width_0180'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key:'templateName',
|
||||||
|
label:'模板名称',
|
||||||
|
type:'input',
|
||||||
|
placeholder:'请输入',
|
||||||
|
prop:'templateName',
|
||||||
|
class:'width_0180'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
config:{
|
||||||
|
//零散的配置参数
|
||||||
|
hasAdvQuery:true,//有无高级查询
|
||||||
|
storageMode:true,//记忆模式,开启后每次查询会存储到localstorage中,存储名为下面的storageKey
|
||||||
|
storageKey:"MaterialProperties",
|
||||||
|
propThis:this,//this
|
||||||
|
preFixWidthClass:'width_0100', //前置框的宽度calss,不写则为默认100
|
||||||
|
marginWidthClass:'width_0180' //空白选择框的宽度calss,不写则为默认180
|
||||||
|
},
|
||||||
|
defaultList: [
|
||||||
|
//默认展示的属性,跟controList里面的key相对应
|
||||||
|
'templateCode','templateName'//'planStartDtArray',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
getRowKeys: (row) => {
|
||||||
|
//获取当前行id
|
||||||
|
// console.log(row)
|
||||||
|
return row.id; //这里看这一行中需要根据哪个属性值是id
|
||||||
|
},
|
||||||
|
tableHeight: 0,
|
||||||
|
showMore: false,
|
||||||
|
currentRow: null,
|
||||||
|
buttonEnable: true,
|
||||||
|
realList: [],
|
||||||
|
isAdd: null,
|
||||||
|
total: null,
|
||||||
|
propThis: this,
|
||||||
|
pageSize: 50,
|
||||||
|
currentPage: 1,
|
||||||
|
tableData: [],
|
||||||
|
queryParams: {},
|
||||||
|
loading: false,
|
||||||
|
loadingChild: false,
|
||||||
|
seqenceOptions: [],
|
||||||
|
seqence: [],
|
||||||
|
isSortShow: false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
let tempList = this.$headerConfig.getList("MaterialProperties");
|
||||||
|
|
||||||
|
tempList.forEach((data, index) => {
|
||||||
|
if (data.notSort) return;
|
||||||
|
let temp = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
temp.value = data.tableProp.replace("Show", "") + " ascending";
|
||||||
|
temp.label = data.tableTitle + " 升序";
|
||||||
|
|
||||||
|
this.seqenceOptions.push(temp);
|
||||||
|
|
||||||
|
let tempD = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
tempD.value = data.tableProp.replace("Show", "") + " descending";
|
||||||
|
tempD.label = data.tableTitle + " 降序";
|
||||||
|
|
||||||
|
this.seqenceOptions.push(tempD);
|
||||||
|
});
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.tableHeight =
|
||||||
|
window.innerHeight - this.$refs.query.offsetHeight - 250;
|
||||||
|
let self = this;
|
||||||
|
window.onresize = function () {
|
||||||
|
self.tableHeight =
|
||||||
|
window.innerHeight - self.$refs.query.offsetHeight - 100;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
this.getAllList();
|
||||||
|
const params = {
|
||||||
|
tableName: "MaterialProperties",
|
||||||
|
};
|
||||||
|
this.$headerConfig.getRealList(params).then((data) => {
|
||||||
|
console.log("开始输出真正表格");
|
||||||
|
if (data.data && data.data.data && data.data.data !== null) {
|
||||||
|
let temp = JSON.parse(data.data.data);
|
||||||
|
this.realList = temp.headerList;
|
||||||
|
this.List = temp.List;
|
||||||
|
} else {
|
||||||
|
this.List = this.$headerConfig.getList("MaterialProperties");
|
||||||
|
this.realList = this.List;
|
||||||
|
let temp = {
|
||||||
|
headerList: this.realList,
|
||||||
|
List: this.List,
|
||||||
|
};
|
||||||
|
const params = {
|
||||||
|
tableName: "MaterialProperties",
|
||||||
|
configure: JSON.stringify(temp),
|
||||||
|
};
|
||||||
|
this.$headerConfig.updateRealList(params).then((value) => {
|
||||||
|
console.log(value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$refs.query.init()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
headerDragend(newWidth, oldWidth, column, event) {
|
||||||
|
// realList
|
||||||
|
this.realList.forEach((value) => {
|
||||||
|
if (column.property == value.tableProp) {
|
||||||
|
value.width = newWidth;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$refs.test.init();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.test.show();
|
||||||
|
}, 1000);
|
||||||
|
},
|
||||||
|
notSelect() {
|
||||||
|
this.$refs.select.blur();
|
||||||
|
},
|
||||||
|
|
||||||
|
sortChange({ column, prop, order }) {
|
||||||
|
let sTemp = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
let value = prop.replace("Show", "") + " " + order;
|
||||||
|
let judgeValue = value.split(" ");
|
||||||
|
// this.seqence.push(value)
|
||||||
|
if (this.seqence.length === 0) {
|
||||||
|
this.seqence.push(value);
|
||||||
|
} else {
|
||||||
|
for (let i = 0; i < this.seqence.length; i++) {
|
||||||
|
let judgeSeqence = this.seqence[i].split(" ");
|
||||||
|
if (judgeValue[0] === judgeSeqence[0]) {
|
||||||
|
if (judgeValue[1] === "null") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.seqence.splice(i, 1, value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (i + 1 === this.seqence.length) {
|
||||||
|
this.seqence.push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rowExpand(row, rowList) {
|
||||||
|
this.loadingChild = true;
|
||||||
|
let parmas = {
|
||||||
|
templateId: row.id,
|
||||||
|
};
|
||||||
|
this.$MaterialProperties.getExpandTepleteList(parmas).then((resp) => {
|
||||||
|
if (resp.data.code === 200) {
|
||||||
|
row.childrenList = resp.data.data;
|
||||||
|
this.loadingChild = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
openDetailAdd() {
|
||||||
|
this.isAdd = true;
|
||||||
|
this.$layer.iframe({
|
||||||
|
shadeClose: false,
|
||||||
|
content: {
|
||||||
|
content: edit, //传递的组件对象
|
||||||
|
parent: this, //当前的vue对象
|
||||||
|
shadeClose: false,
|
||||||
|
data: null,
|
||||||
|
},
|
||||||
|
title: "新增",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleDelete() {
|
||||||
|
this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
let params = { templateId: this.currentRow.id };
|
||||||
|
this.$MaterialProperties.deleteThis(params).then((resp) => {
|
||||||
|
if (resp.data.code == 200) {
|
||||||
|
this.$message.success("删除成功");
|
||||||
|
this.getAllList();
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$message({
|
||||||
|
type: "info",
|
||||||
|
message: "已取消删除",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
openDetail() {
|
||||||
|
this.isAdd = false;
|
||||||
|
this.$layer.iframe({
|
||||||
|
shadeClose: false,
|
||||||
|
content: {
|
||||||
|
content: edit, //传递的组件对象
|
||||||
|
parent: this, //当前的vue对象
|
||||||
|
shadeClose: false,
|
||||||
|
data: this.currentRow,
|
||||||
|
},
|
||||||
|
title: "修改",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getQueryParams()
|
||||||
|
{
|
||||||
|
let pageSize=this.queryParams.pageSize
|
||||||
|
let pageNo=this.queryParams.pageNo
|
||||||
|
this.queryParams=this.$refs.query.getQueryParams()//返回子组件的queryParams
|
||||||
|
this.queryParams.pageSize=pageSize
|
||||||
|
this.queryParams.pageNo=pageNo
|
||||||
|
//取得子组件的queryParams并且与原来的pagesize pageNo合并
|
||||||
|
},
|
||||||
|
getTableData(val) {
|
||||||
|
//高级查询
|
||||||
|
this.queryData = val
|
||||||
|
this.tableData=this.queryData.data
|
||||||
|
this.tableData.forEach((value) => {
|
||||||
|
value.materialNumber=value.materialCode
|
||||||
|
value.dictStatusShow = this.$dictType.getOrderWorkStatus(
|
||||||
|
value.dictStatus
|
||||||
|
);
|
||||||
|
value.dictFlowtypeShow = this.$dictType.getMaterialFlowType(
|
||||||
|
value.dictFlowtype
|
||||||
|
);
|
||||||
|
value.dictPtypeShow = this.$dictType.getOrderPtypeType(
|
||||||
|
value.dictPtype
|
||||||
|
);
|
||||||
|
|
||||||
|
value.dictPstatusShow = this.$dictType.getWorkPStatus(value.dictPstatus);//领料状态
|
||||||
|
});
|
||||||
|
this.total=this.queryData.recordsTotal
|
||||||
|
// this.getBomlList()
|
||||||
|
|
||||||
|
},
|
||||||
|
handleQuery(){
|
||||||
|
this.getQueryParams()
|
||||||
|
this.queryParams.pageNo = 1;
|
||||||
|
this.getAllList();
|
||||||
|
},
|
||||||
|
Query() {
|
||||||
|
this.currentPage = 1;
|
||||||
|
this.getAllList();
|
||||||
|
},
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {};
|
||||||
|
this.seqence = [];
|
||||||
|
this.getAllList();
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.pageSize = val;
|
||||||
|
},
|
||||||
|
handleCurrentChange2(val) {
|
||||||
|
this.currentPage = val;
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
if (val === null) {
|
||||||
|
this.buttonEnable = true;
|
||||||
|
} else {
|
||||||
|
this.buttonEnable = false;
|
||||||
|
}
|
||||||
|
this.currentRow = val;
|
||||||
|
},
|
||||||
|
|
||||||
|
initPopover() {
|
||||||
|
const params = {
|
||||||
|
tableName: "MaterialProperties",
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$refs.test.init();
|
||||||
|
},
|
||||||
|
fathers(data) {
|
||||||
|
this.List = data.configure.List;
|
||||||
|
data.configure.List.forEach((value) => {
|
||||||
|
this.realList.forEach((real) => {
|
||||||
|
if (value.tableProp == real.tableProp) {
|
||||||
|
value.width = real.width;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
data.configure.headerList.forEach((value) => {
|
||||||
|
this.realList.forEach((real) => {
|
||||||
|
if (value.tableProp == real.tableProp) {
|
||||||
|
value.width = real.width;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if (data.configure.headerList.length <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const params = {
|
||||||
|
tableName: "MaterialProperties",
|
||||||
|
configure: JSON.stringify(data.configure),
|
||||||
|
};
|
||||||
|
|
||||||
|
this.realList = data.configure.headerList;
|
||||||
|
|
||||||
|
this.$headerConfig.updateRealList(params).then((value) => {
|
||||||
|
console.log(value);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getAllList() {
|
||||||
|
this.loading = true;
|
||||||
|
|
||||||
|
const orders = [];
|
||||||
|
this.seqence.map((val) => {
|
||||||
|
orders.push(
|
||||||
|
val.replace("ascending", "asc").replace("descending", "desc")
|
||||||
|
);
|
||||||
|
});
|
||||||
|
let params = {
|
||||||
|
pageSize: this.pageSize,
|
||||||
|
pageNo: this.currentPage,
|
||||||
|
templateCode: this.queryParams.templateCode,
|
||||||
|
templateName: this.queryParams.templateName,
|
||||||
|
attributesName: this.queryParams.attributesName,
|
||||||
|
orders,
|
||||||
|
};
|
||||||
|
this.$MaterialProperties.getExpandList(params).then((resp) => {
|
||||||
|
if (resp.data.code == 200) {
|
||||||
|
console.log("拿到数据", resp.data.data);
|
||||||
|
this.tableData = resp.data.data.data;
|
||||||
|
this.total = resp.data.data.recordsTotal;
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
seqence: function () {
|
||||||
|
this.getAllList();
|
||||||
|
var oldIsSortShow = this.isSortShow
|
||||||
|
//判断是否显示排序条件
|
||||||
|
if(this.seqence.length > 0 ){
|
||||||
|
this.isSortShow = true
|
||||||
|
}else{
|
||||||
|
this.isSortShow = false
|
||||||
|
}
|
||||||
|
//判断table高度
|
||||||
|
if(oldIsSortShow != this.isSortShow){
|
||||||
|
if (this.isSortShow) {
|
||||||
|
this.tableHeight = this.tableHeight - 47;
|
||||||
|
} else {
|
||||||
|
this.tableHeight = this.tableHeight + 47;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.el-table th.gutter {
|
||||||
|
display: table-cell !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-form-item {
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .vue-treeselect__control {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-divider {
|
||||||
|
margin: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-table__body tr.current-row > td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-table >>> tbody tr:hover > td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
}
|
||||||
|
.mb8 >>> .el-select .el-input__inner {
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb8 >>> .el-select .el-input__inner {
|
||||||
|
border: 0px;
|
||||||
|
padding-right: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sortSeq >>> .el-input__suffix-inner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
>>> .el-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-divider {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-table .el-table__header-wrapper th {
|
||||||
|
padding: 5px 0;
|
||||||
|
}
|
||||||
|
>>> .vue-treeselect__control {
|
||||||
|
height: 30px !important;
|
||||||
|
line-height: 30px !important;
|
||||||
|
}
|
||||||
|
>>> .vue-treeselect--single .vue-treeselect__input-container {
|
||||||
|
height: 30px !important;
|
||||||
|
line-height: 30px !important;
|
||||||
|
}
|
||||||
|
// >>> .el-input-group__append{
|
||||||
|
// padding: 5px;
|
||||||
|
// }
|
||||||
|
>>> .el-input-group__append .el-select,
|
||||||
|
.el-input-group__append .el-button,
|
||||||
|
.el-input-group__prepend .el-select,
|
||||||
|
.el-input-group__prepend .el-button {
|
||||||
|
margin-left: -28px !important;
|
||||||
|
margin-right: -33px !important;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.cmeim.common.log.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人类别
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
public enum OperatorType
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 其它
|
||||||
|
*/
|
||||||
|
OTHER,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后台用户
|
||||||
|
*/
|
||||||
|
MANAGE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机端用户
|
||||||
|
*/
|
||||||
|
MOBILE
|
||||||
|
}
|
@ -0,0 +1,199 @@
|
|||||||
|
<template>
|
||||||
|
<el-popover
|
||||||
|
style="float: right"
|
||||||
|
placement="bottom-end"
|
||||||
|
width="250"
|
||||||
|
trigger="hover">
|
||||||
|
<div>
|
||||||
|
<el-table
|
||||||
|
ref="multipleTable"
|
||||||
|
:data="tableData"
|
||||||
|
:cell-style="cellStyle"
|
||||||
|
row-key="tableTitleSE"
|
||||||
|
tooltip-effect="dark"
|
||||||
|
style="width: 100%;"
|
||||||
|
max-height="400"
|
||||||
|
@selection-change="handleSelectionChange">
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="55">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="tableTitle"
|
||||||
|
label="自定义显示列"
|
||||||
|
width="150">
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column-->
|
||||||
|
<!-- prop="tableProp"-->
|
||||||
|
<!-- label="字段"-->
|
||||||
|
<!-- show-overflow-tooltip>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
</el-table>
|
||||||
|
<el-button style="margin-top: 10px;" type="primary" size="mini" @click="show">保存配置</el-button>
|
||||||
|
</div>
|
||||||
|
<el-button size="mini" type="primary" class="el-icon-caret-bottom" slot="reference">自定义列</el-button>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Sortable from 'sortablejs'
|
||||||
|
export default {
|
||||||
|
name: 'head-config',
|
||||||
|
props:{
|
||||||
|
propThis:Object,
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData:[],
|
||||||
|
realList:[],
|
||||||
|
List:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
const params={
|
||||||
|
tableName:this.propThis.tableName
|
||||||
|
}
|
||||||
|
this.$headerConfig.getRealList(params).then(data=>{
|
||||||
|
console.log("定位符而非")
|
||||||
|
if(data.data.data!==null){
|
||||||
|
let temp = JSON.parse(data.data.data)
|
||||||
|
this.realList = temp.headerList
|
||||||
|
this.List = temp.List
|
||||||
|
}else {
|
||||||
|
this.List = this.$headerConfig.getList(this.propThis.tableName)
|
||||||
|
this.realList = this.List
|
||||||
|
let temp ={
|
||||||
|
headerList:this.realList,
|
||||||
|
List:this.List
|
||||||
|
}
|
||||||
|
const params={
|
||||||
|
tableName:this.propThis.tableName,
|
||||||
|
configure:JSON.stringify(temp)
|
||||||
|
}
|
||||||
|
this.$headerConfig.updateRealList(params).then(value=>{
|
||||||
|
console.log(value)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.propThis.indexShow = true;
|
||||||
|
const paramsF={
|
||||||
|
tableName:"bom",
|
||||||
|
configure:{
|
||||||
|
headerList:this.realList,
|
||||||
|
List:this.List
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(paramsF)
|
||||||
|
|
||||||
|
this.$emit("fathers", paramsF);
|
||||||
|
|
||||||
|
this.tableData = JSON.parse(JSON.stringify(this.List))
|
||||||
|
this.toggleSelection(JSON.parse(JSON.stringify(this.realList)))
|
||||||
|
this.dragSort();
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
init() {
|
||||||
|
this.tableData = JSON.parse(JSON.stringify(this.List))
|
||||||
|
this.toggleSelection(JSON.parse(JSON.stringify(this.realList)))
|
||||||
|
this.dragSort();
|
||||||
|
},
|
||||||
|
cellStyle({ row, column, rowIndex, columnIndex }) {
|
||||||
|
let style = 'padding:6px;padding-top:6px;font-size:15px;'
|
||||||
|
return style
|
||||||
|
},
|
||||||
|
handleSelectionChange(val) {
|
||||||
|
this.multipleSelection = val
|
||||||
|
},
|
||||||
|
dragSort() {
|
||||||
|
const el = this.$refs.multipleTable.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
|
||||||
|
this.sortable = Sortable.create(el, {
|
||||||
|
ghostClass: 'sortable-ghost',
|
||||||
|
setData: function(dataTransfer) {
|
||||||
|
dataTransfer.setData('Text', '')
|
||||||
|
},
|
||||||
|
onEnd: e => {
|
||||||
|
//e.oldIndex为拖动一行原来的位置,e.newIndex为拖动后新的位置
|
||||||
|
const targetRow = this.tableData.splice(e.oldIndex, 1)[0];
|
||||||
|
this.tableData.splice(e.newIndex, 0, targetRow);
|
||||||
|
let dragId = this.tableData[e.newIndex].tableTitleSE;//拖动行的id
|
||||||
|
let oneId, twoId
|
||||||
|
//拖动行的前一行
|
||||||
|
if (this.tableData[e.newIndex - 1]) {
|
||||||
|
oneId = this.tableData[e.newIndex - 1].tableTitleSE;
|
||||||
|
} else {
|
||||||
|
oneId = ""
|
||||||
|
}
|
||||||
|
//拖动行的后一行
|
||||||
|
if (this.tableData[e.newIndex + 1]) {
|
||||||
|
twoId = this.tableData[e.newIndex + 1].tableTitleSE;
|
||||||
|
} else {
|
||||||
|
twoId = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
toggleSelection(rows) {
|
||||||
|
if (rows) {
|
||||||
|
rows.forEach(row => {
|
||||||
|
this.tableData.forEach(data=>{
|
||||||
|
if(data.tableTitleSE ===row.tableTitleSE){
|
||||||
|
this.$nextTick(function () {
|
||||||
|
this.$refs.multipleTable.toggleRowSelection(data,true);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$refs.multipleTable.clearSelection();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show() {
|
||||||
|
console.log("进入罗马")
|
||||||
|
this.propThis.indexShow=false
|
||||||
|
|
||||||
|
let tempData = JSON.parse(JSON.stringify(this.multipleSelection))
|
||||||
|
// console.log(tempData)
|
||||||
|
let i =0
|
||||||
|
this.tableData.forEach(data=>{
|
||||||
|
data.tableTitleSE = ++i
|
||||||
|
tempData.forEach(value=>{
|
||||||
|
if( value.tableProp === data.tableProp){
|
||||||
|
value.tableTitleSE = data.tableTitleSE
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
for (let i = 0; i <tempData.length - 1; i++) {
|
||||||
|
for (let j = 0; j < tempData.length - 1 - i; j++) {
|
||||||
|
if (tempData[j].tableTitleSE > tempData[j + 1].tableTitleSE) {
|
||||||
|
let temp = tempData[j];
|
||||||
|
tempData[j] = tempData[j + 1];
|
||||||
|
tempData[j + 1] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const params={
|
||||||
|
tableName:"bom",
|
||||||
|
configure:{
|
||||||
|
headerList:tempData,
|
||||||
|
List:this.tableData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// this.propThis.realList = []
|
||||||
|
this.$emit("fathers", params);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,790 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="main">
|
||||||
|
<query-params
|
||||||
|
ref="query"
|
||||||
|
:form="queryFormConfig"
|
||||||
|
@handleQuery="handleQuery"
|
||||||
|
@getTableData="getTableData"
|
||||||
|
@resetQuery="resetQuery"
|
||||||
|
>
|
||||||
|
</query-params>
|
||||||
|
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="add"
|
||||||
|
v-hasPermi="['customer_add']"
|
||||||
|
>新增</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="success"
|
||||||
|
icon="el-icon-edit"
|
||||||
|
size="mini"
|
||||||
|
:disabled="buttonEnable"
|
||||||
|
@click="handleUpdate"
|
||||||
|
v-hasPermi="['customer_handleUpdate']"
|
||||||
|
>修改</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
size="mini"
|
||||||
|
:disabled="buttonEnable"
|
||||||
|
@click="handleDelete"
|
||||||
|
v-hasPermi="['customer_handleDelete']"
|
||||||
|
>删除</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="info"
|
||||||
|
icon="el-icon-upload2"
|
||||||
|
size="mini"
|
||||||
|
@click="handleImport"
|
||||||
|
v-hasPermi="['customer_handleImport']"
|
||||||
|
>导入</el-button>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
|
||||||
|
<el-col v-loading="handleExportLoading" element-loading-spinner="el-icon-loading" :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="el-icon-download"
|
||||||
|
size="mini"
|
||||||
|
@click="handleExport"
|
||||||
|
v-hasPermi="['customer_handleExport']"
|
||||||
|
>
|
||||||
|
导出
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="handleAddSerial"
|
||||||
|
:disabled="buttonEnable"
|
||||||
|
v-hasPermi="['customer_addSerial']"
|
||||||
|
>新增序列号</el-button>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<head-configs
|
||||||
|
ref="test"
|
||||||
|
style="margin-right:5px;"
|
||||||
|
@fathers="fathers"
|
||||||
|
:propThis="propThis">
|
||||||
|
</head-configs>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-row :gutter="10" style="margin: 10px 0px;" class="mb8" v-if="isSortShow">
|
||||||
|
<el-col>
|
||||||
|
<el-select
|
||||||
|
ref="select"
|
||||||
|
@click.native="notSelect"
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="seqence"
|
||||||
|
:multiple="true"
|
||||||
|
placeholder=""
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in seqenceOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
@sort-change="sortChange"
|
||||||
|
@header-dragend="headerDragend"
|
||||||
|
v-if="indexShow"
|
||||||
|
:row-key="getRowKeys"
|
||||||
|
v-loading="loading"
|
||||||
|
highlight-current-row
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:data="tableData"
|
||||||
|
:height="tableHeight"
|
||||||
|
border
|
||||||
|
ref="tableDataRef"
|
||||||
|
class="tableStyle">
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
type="index"
|
||||||
|
label="序号"
|
||||||
|
width="50">
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
v-for="(item, index) in realList"
|
||||||
|
:sortable="item.notSort == true ? false : `custom`"
|
||||||
|
:prop="item.tableProp"
|
||||||
|
:key="index"
|
||||||
|
:align="item.align"
|
||||||
|
header-align="center"
|
||||||
|
:min-width="item.width"
|
||||||
|
:label="item.tableTitle"
|
||||||
|
:show-overflow-tooltip="item.show_overflow_tooltip"
|
||||||
|
></el-table-column>
|
||||||
|
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
style="margin-top: 10px;height: 20px"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange2"
|
||||||
|
:current-page="queryParams.pageNo"
|
||||||
|
:page-sizes="[10, 20, 50, 100,200,500,1000]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="total">
|
||||||
|
</el-pagination>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <edit v-if="editNow" ref="edit" :propThis="propThis"></edit>-->
|
||||||
|
</div>
|
||||||
|
<!-- 用户导入对话框 -->
|
||||||
|
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
|
||||||
|
<el-upload
|
||||||
|
ref="upload"
|
||||||
|
:limit="1"
|
||||||
|
accept=".xlsx, .xls"
|
||||||
|
:headers="uploadHeaders"
|
||||||
|
:action="upload.url"
|
||||||
|
:on-progress="handleFileUploadProgress"
|
||||||
|
:on-success="handleFileSuccess"
|
||||||
|
:auto-upload="false"
|
||||||
|
drag>
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">
|
||||||
|
将文件拖到此处,或
|
||||||
|
<em>点击上传</em>
|
||||||
|
</div>
|
||||||
|
<div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
|
||||||
|
|
||||||
|
<div class="el-upload__tip" style="color:red" slot="tip">
|
||||||
|
<el-link type="success" @click.prevent="down">下载模板</el-link>
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
||||||
|
<el-button @click="upload.open = false">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import edit from '@/views/mes/BasicData/customer/edit'
|
||||||
|
import { getToken } from '@/utils/auth'
|
||||||
|
import editSerial from './editSerial'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'customer',
|
||||||
|
computed: {
|
||||||
|
queryFormConfig() {
|
||||||
|
return {
|
||||||
|
controlList: [
|
||||||
|
{
|
||||||
|
key: "customerName",
|
||||||
|
label: "客户名称",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入",
|
||||||
|
prop: "customerName",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "customerCode",
|
||||||
|
label: "客户编码",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入",
|
||||||
|
prop: "customerCode",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
config: {
|
||||||
|
//零散的配置参数
|
||||||
|
hasAdvQuery: false, //有无高级查询
|
||||||
|
storageMode:true,//记忆模式,开启后每次查询会存储到localstorage中,存储名为下面的storageKey
|
||||||
|
storageKey:"baCustomer",
|
||||||
|
propThis: this, //this
|
||||||
|
preFixWidthClass: "width_0100", //前置框的宽度calss,不写则为默认100
|
||||||
|
marginWidthClass: "width_0180", //空白选择框的宽度calss,不写则为默认180
|
||||||
|
},
|
||||||
|
defaultList: [
|
||||||
|
//默认展示的属性,跟controList里面的key相对应
|
||||||
|
"customerName", "customerCode"
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted(){
|
||||||
|
let tempList = this.$headerConfig.getList("baCustomer");
|
||||||
|
this.seqenceOptions=[]
|
||||||
|
tempList.forEach((data, index) => {
|
||||||
|
if (data.notSort) return;
|
||||||
|
let temp = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
temp.value = data.tableProp.replace("Show", "") + " ascending";
|
||||||
|
temp.label = data.tableTitle + " 升序";
|
||||||
|
|
||||||
|
this.seqenceOptions.push(temp);
|
||||||
|
|
||||||
|
let tempD = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
tempD.value = data.tableProp.replace("Show", "") + " descending";
|
||||||
|
tempD.label = data.tableTitle + " 降序";
|
||||||
|
|
||||||
|
this.seqenceOptions.push(tempD);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.uploadHeaders={'Authorization' : 'Bearer ' + getToken()}
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.tableHeight =
|
||||||
|
window.innerHeight - this.$refs.query.offsetHeight - 240;
|
||||||
|
// 监听窗口大小变化
|
||||||
|
let self = this;
|
||||||
|
window.onresize = function () {
|
||||||
|
self.tableHeight =
|
||||||
|
window.innerHeight - self.$refs.query.offsetHeight - 230;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
this.getCustomerList();
|
||||||
|
const params = {
|
||||||
|
tableName: "baCustomer",
|
||||||
|
};
|
||||||
|
this.$headerConfig.getRealList(params).then((_data) => {
|
||||||
|
let data=_data.config?_data.data:_data
|
||||||
|
console.log(data,'data')
|
||||||
|
if (data.data !== null) {
|
||||||
|
let temp = JSON.parse(data.data);
|
||||||
|
this.realList = temp.headerList;
|
||||||
|
|
||||||
|
let withAll = 0;
|
||||||
|
let lieAll = 0;
|
||||||
|
|
||||||
|
this.realList.forEach((data) => {
|
||||||
|
withAll += parseInt(data.width);
|
||||||
|
lieAll++;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (withAll <= 1400) {
|
||||||
|
this.realList.forEach((data) => {
|
||||||
|
data.width = undefined;
|
||||||
|
// console.log(data.width)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.List = temp.List;
|
||||||
|
} else {
|
||||||
|
this.List = this.$headerConfig.getList("baCustomer");
|
||||||
|
this.realList = this.List;
|
||||||
|
let temp = {
|
||||||
|
headerList: this.realList,
|
||||||
|
List: this.List,
|
||||||
|
};
|
||||||
|
const params = {
|
||||||
|
tableName: "baCustomer",
|
||||||
|
configure: JSON.stringify(temp),
|
||||||
|
};
|
||||||
|
this.$headerConfig.updateRealList(params).then((value) => {
|
||||||
|
console.log(value)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.indexShow = true;
|
||||||
|
});
|
||||||
|
this.$refs.query.init()
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
uploadHeaders:null,
|
||||||
|
seqence:[],
|
||||||
|
seqenceOptions: [],
|
||||||
|
|
||||||
|
getRowKeys: (row) => {//获取当前行id
|
||||||
|
// console.log(row)
|
||||||
|
return row.id //这里看这一行中需要根据哪个属性值是id
|
||||||
|
},
|
||||||
|
upload: {
|
||||||
|
// 是否显示弹出层(用户导入)
|
||||||
|
open: false,
|
||||||
|
// 弹出层标题(用户导入)
|
||||||
|
title: '',
|
||||||
|
// 是否禁用上传
|
||||||
|
isUploading: false,
|
||||||
|
// 是否更新已经存在的用户数据
|
||||||
|
updateSupport: 0,
|
||||||
|
// 设置上传的请求头部
|
||||||
|
// 上传的地址
|
||||||
|
url:[process.env.VUE_APP_BASE_API]+'/basic/basic/baCustomer/importExcel'
|
||||||
|
},
|
||||||
|
currentRow: null,
|
||||||
|
indexShow: false,
|
||||||
|
handleExportLoading: false,
|
||||||
|
realList: [],
|
||||||
|
fathersStatus:0,
|
||||||
|
List: [],
|
||||||
|
propThis: this,
|
||||||
|
tableName: 'baCustomer',
|
||||||
|
buttonEnable: true,
|
||||||
|
editNow: false,
|
||||||
|
tableHeight: 0,
|
||||||
|
queryParams: {
|
||||||
|
customerName: null,
|
||||||
|
customerCode: null,
|
||||||
|
status: null,
|
||||||
|
type: null,
|
||||||
|
checked: null,
|
||||||
|
},
|
||||||
|
childrenList: [],
|
||||||
|
tableData: [],
|
||||||
|
loading: false,
|
||||||
|
isAdd: null,
|
||||||
|
sonListLoading: false,
|
||||||
|
pageSize: 50,
|
||||||
|
pageNo: null,
|
||||||
|
total: null,
|
||||||
|
isSortShow: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
notSelect() {
|
||||||
|
this.$refs.select.blur();
|
||||||
|
},
|
||||||
|
|
||||||
|
sortChange({ column, prop, order }) {
|
||||||
|
console.log(prop);
|
||||||
|
let sTemp = {
|
||||||
|
value: null,
|
||||||
|
label: null,
|
||||||
|
};
|
||||||
|
let value = prop.replace("Show", "") + " " + order;
|
||||||
|
let judgeValue = value.split(" ");
|
||||||
|
// this.seqence.push(value)
|
||||||
|
if (this.seqence.length === 0) {
|
||||||
|
this.seqence.push(value);
|
||||||
|
console.log(this.seqence);
|
||||||
|
} else {
|
||||||
|
for (let i = 0; i < this.seqence.length; i++) {
|
||||||
|
let judgeSeqence = this.seqence[i].split(" ");
|
||||||
|
if (judgeValue[0] === judgeSeqence[0]) {
|
||||||
|
if (judgeValue[1] === "null") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.seqence.splice(i, 1, value);
|
||||||
|
console.log(this.seqence);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (i + 1 === this.seqence.length) {
|
||||||
|
this.seqence.push(value);
|
||||||
|
console.log(this.seqence);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
headerDragend(newWidth, oldWidth, column, event){
|
||||||
|
// realList
|
||||||
|
this.realList.forEach(value => {
|
||||||
|
if (column.property == value.tableProp) {
|
||||||
|
value.width=newWidth
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.$refs.test.init();
|
||||||
|
setTimeout( ()=>{
|
||||||
|
this.$refs.test.show();
|
||||||
|
}, 1000);
|
||||||
|
},
|
||||||
|
|
||||||
|
fathers(data) {
|
||||||
|
this.List = data.configure.List
|
||||||
|
data.configure.List.forEach(value=>{
|
||||||
|
this.realList.forEach(real=>{
|
||||||
|
if (value.tableProp == real.tableProp) {
|
||||||
|
value.width=real.width;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
data.configure.headerList.forEach(value=>{
|
||||||
|
this.realList.forEach(real=>{
|
||||||
|
if (value.tableProp == real.tableProp) {
|
||||||
|
value.width=real.width;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
if (data.configure.headerList.length <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const params={
|
||||||
|
tableName:"baCustomer",
|
||||||
|
configure:JSON.stringify(data.configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.realList = data.configure.headerList;
|
||||||
|
let withAll = 0
|
||||||
|
let lieAll = 0
|
||||||
|
this.realList.forEach(data => {
|
||||||
|
withAll += parseInt(data.width)
|
||||||
|
lieAll++
|
||||||
|
})
|
||||||
|
if (withAll <= 1400) {
|
||||||
|
this.realList.forEach(data => {
|
||||||
|
data.width = undefined
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.$headerConfig.updateRealList(params).then(value=>{
|
||||||
|
if(this.fathersStatus==0){
|
||||||
|
this.fathersStatus=1;
|
||||||
|
}else{
|
||||||
|
if(value.status=='200'){
|
||||||
|
this.indexShow=true
|
||||||
|
// this.$message({
|
||||||
|
// message: '自定义列宽保存成功',
|
||||||
|
// type: 'success'
|
||||||
|
// });
|
||||||
|
}else{
|
||||||
|
this.$message({
|
||||||
|
message: '自定义列宽保存失败',
|
||||||
|
type: 'error'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
handleCurrentChange2(val) {
|
||||||
|
console.log(val)
|
||||||
|
this.pageNo = val;
|
||||||
|
this.getCustomerList()
|
||||||
|
},
|
||||||
|
handleSizeChange(val){
|
||||||
|
this.pageSize = val;
|
||||||
|
this.getCustomerList();
|
||||||
|
|
||||||
|
},
|
||||||
|
getQueryParams()
|
||||||
|
{
|
||||||
|
let pageSize=this.queryParams.pageSize
|
||||||
|
let pageNo=this.queryParams.pageNo
|
||||||
|
this.queryParams=this.$refs.query.getQueryParams()//返回子组件的queryParams
|
||||||
|
this.queryParams.pageSize=pageSize
|
||||||
|
this.queryParams.pageNo=pageNo
|
||||||
|
//取得子组件的queryParams并且与原来的pagesize pageNo合并
|
||||||
|
},
|
||||||
|
getTableData(val) {
|
||||||
|
//高级查询
|
||||||
|
this.queryData = val
|
||||||
|
this.tableData=this.queryData.data
|
||||||
|
this.tableData.forEach((value) => {
|
||||||
|
value.materialNumber=value.materialCode
|
||||||
|
value.dictStatusShow = this.$dictType.getOrderWorkStatus(
|
||||||
|
value.dictStatus
|
||||||
|
);
|
||||||
|
value.dictFlowtypeShow = this.$dictType.getMaterialFlowType(
|
||||||
|
value.dictFlowtype
|
||||||
|
);
|
||||||
|
value.dictPtypeShow = this.$dictType.getOrderPtypeType(
|
||||||
|
value.dictPtype
|
||||||
|
);
|
||||||
|
|
||||||
|
value.dictPstatusShow = this.$dictType.getWorkPStatus(value.dictPstatus);//领料状态
|
||||||
|
});
|
||||||
|
this.total=this.queryData.recordsTotal
|
||||||
|
// this.getBomlList()
|
||||||
|
|
||||||
|
},
|
||||||
|
getCustomerList(){
|
||||||
|
this.loading = true
|
||||||
|
|
||||||
|
const orders = [];
|
||||||
|
this.seqence.map((val) => {
|
||||||
|
orders.push(
|
||||||
|
val.replace("ascending", "asc").replace("descending", "desc")
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const params = {
|
||||||
|
pageSize:this.pageSize,
|
||||||
|
pageNo:this.pageNo,
|
||||||
|
customerName:this.queryParams.customerName,
|
||||||
|
customerCode:this.queryParams.customerCode,
|
||||||
|
dictStatus:this.queryParams.status,
|
||||||
|
dictType:this.queryParams.type,
|
||||||
|
currentRevision:this.queryParams.checked,
|
||||||
|
orders:orders,
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$customer.getCustomer(params).then(data=>{
|
||||||
|
if(data.data.code===200){
|
||||||
|
this.tableData = data.data.data.data
|
||||||
|
this.total = data.data.data.recordsTotal
|
||||||
|
}
|
||||||
|
this.setCurrent()
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
setCurrent(row) {
|
||||||
|
if(this.currentRow!==null){
|
||||||
|
this.tableData.forEach((value,index)=>{
|
||||||
|
if(this.currentRow.id===value.id){
|
||||||
|
this.$refs.tableDataRef.setCurrentRow(this.tableData[index]);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleQuery() {
|
||||||
|
this.getQueryParams()
|
||||||
|
this.queryParams.pageNo = 1;
|
||||||
|
this.getCustomerList();
|
||||||
|
},
|
||||||
|
resetQuery(){
|
||||||
|
this.queryParams={};
|
||||||
|
this.getCustomerList();
|
||||||
|
},
|
||||||
|
handleUpdate(row){
|
||||||
|
|
||||||
|
this.isAdd = false
|
||||||
|
// this.$refs.edit.init(row,true)
|
||||||
|
this.$layer.iframe({
|
||||||
|
|
||||||
|
shadeClose: false,
|
||||||
|
area:['800px','350px'],
|
||||||
|
content: {
|
||||||
|
content: edit, //传递的组件对象
|
||||||
|
parent: this,//当前的vue对象
|
||||||
|
shadeClose: false,
|
||||||
|
data:this.currentRow,
|
||||||
|
},
|
||||||
|
title: '编辑'
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
handleDelete(){
|
||||||
|
this.$confirm('是否删除?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
const params={
|
||||||
|
id:this.currentRow.id
|
||||||
|
}
|
||||||
|
this.$customer.deleteCustomer(params).then(data=>{
|
||||||
|
if(data.data.code===200)
|
||||||
|
this.$message({
|
||||||
|
message: '删除成功',
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
this.getCustomerList();
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
handleImport(){
|
||||||
|
this.upload.title = 'Customer导入'
|
||||||
|
this.upload.open = true
|
||||||
|
},
|
||||||
|
|
||||||
|
down() {
|
||||||
|
window.location.href = './../down/customer.xlsx'
|
||||||
|
// 客户信息上传模板
|
||||||
|
},
|
||||||
|
// /** 下载模板操作 */
|
||||||
|
// importTemplate() {
|
||||||
|
// importTemplate().then(response => {
|
||||||
|
// this.download(response.msg)
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// 文件上传中处理
|
||||||
|
handleFileUploadProgress(event, file, fileList) {
|
||||||
|
this.upload.isUploading = true
|
||||||
|
},
|
||||||
|
// 文件上传成功处理
|
||||||
|
handleFileSuccess(response, file, fileList) {
|
||||||
|
this.upload.open = false
|
||||||
|
this.upload.isUploading = false
|
||||||
|
this.$refs.upload.clearFiles()
|
||||||
|
this.$alert(response.data, '导入结果', { dangerouslyUseHTMLString: true })
|
||||||
|
this.getCustomerList()
|
||||||
|
},
|
||||||
|
// 提交上传文件
|
||||||
|
submitFileForm() {
|
||||||
|
this.$refs.upload.submit()
|
||||||
|
},
|
||||||
|
|
||||||
|
handleExport(){
|
||||||
|
this.handleExportLoading = true
|
||||||
|
const params={
|
||||||
|
customerName:this.queryParams.customerName,
|
||||||
|
// dictStatus:this.queryParams.status,
|
||||||
|
// dictType:this.queryParams.type,
|
||||||
|
}
|
||||||
|
this.$customer.exportExcel(params).then(data=>{
|
||||||
|
this.handleExportLoading = false
|
||||||
|
this.download(data.data)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
download(data, fileName) {
|
||||||
|
// 文件导出
|
||||||
|
let url = window.URL.createObjectURL(new Blob([data]));
|
||||||
|
let link = document.createElement('a');
|
||||||
|
link.style.display = 'none';
|
||||||
|
link.href = url;
|
||||||
|
link.setAttribute('download', "customer.xlsx");
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
link.remove();
|
||||||
|
},
|
||||||
|
handleCurrentChange(val){
|
||||||
|
this.currentRow = val;
|
||||||
|
if(val===null){
|
||||||
|
this.buttonEnable = true
|
||||||
|
}else {
|
||||||
|
this.buttonEnable = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
add() {
|
||||||
|
let row = null
|
||||||
|
this.isAdd = true
|
||||||
|
// this.$refs.edit.init(row,true)
|
||||||
|
this.$layer.iframe({
|
||||||
|
|
||||||
|
shadeClose: false,
|
||||||
|
area:['800px','350px'],
|
||||||
|
content: {
|
||||||
|
content: edit, //传递的组件对象
|
||||||
|
parent: this,//当前的vue对象
|
||||||
|
shadeClose: false,
|
||||||
|
data:row
|
||||||
|
},
|
||||||
|
title: '新增'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleAddSerial() {
|
||||||
|
let row = this.currentRow
|
||||||
|
this.$layer.iframe({
|
||||||
|
shadeClose: false,
|
||||||
|
area:['800px','350px'],
|
||||||
|
content: {
|
||||||
|
content: editSerial, //传递的组件对象
|
||||||
|
parent: this,//当前的vue对象
|
||||||
|
shadeClose: false,
|
||||||
|
data: row
|
||||||
|
},
|
||||||
|
title: '序列号规则'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
seqence: function () {
|
||||||
|
this.getCustomerList();
|
||||||
|
var oldIsSortShow = this.isSortShow
|
||||||
|
//判断是否显示排序条件
|
||||||
|
if(this.seqence.length > 0 ){
|
||||||
|
this.isSortShow = true
|
||||||
|
}else{
|
||||||
|
this.isSortShow = false
|
||||||
|
}
|
||||||
|
//判断table高度
|
||||||
|
if(oldIsSortShow != this.isSortShow){
|
||||||
|
if (this.isSortShow) {
|
||||||
|
this.tableHeight = this.tableHeight - 47;
|
||||||
|
} else {
|
||||||
|
this.tableHeight = this.tableHeight + 47;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.el-table th.gutter {
|
||||||
|
display: table-cell !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-form-item {
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .vue-treeselect__control {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-divider {
|
||||||
|
margin: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-table__body tr.current-row > td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-table >>> tbody tr:hover > td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
}
|
||||||
|
.mb8 >>> .el-select .el-input__inner {
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb8 >>> .el-select .el-input__inner {
|
||||||
|
border: 0px;
|
||||||
|
padding-right: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sortSeq >>> .el-input__suffix-inner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
>>> .el-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-divider {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>> .el-table .el-table__header-wrapper th {
|
||||||
|
padding: 5px 0;
|
||||||
|
}
|
||||||
|
>>> .vue-treeselect__control {
|
||||||
|
height: 30px !important;
|
||||||
|
line-height: 30px !important;
|
||||||
|
}
|
||||||
|
>>> .vue-treeselect--single .vue-treeselect__input-container {
|
||||||
|
height: 30px !important;
|
||||||
|
line-height: 30px !important;
|
||||||
|
}
|
||||||
|
// >>> .el-input-group__append{
|
||||||
|
// padding: 5px;
|
||||||
|
// }
|
||||||
|
>>> .el-input-group__append .el-select,
|
||||||
|
.el-input-group__append .el-button,
|
||||||
|
.el-input-group__prepend .el-select,
|
||||||
|
.el-input-group__prepend .el-button {
|
||||||
|
margin-left: -28px !important;
|
||||||
|
margin-right: -33px !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 405 B |
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
|
||||||
|
<span ng-controller="KisBpmFieldsCtrl">
|
||||||
|
</span>
|
@ -0,0 +1,400 @@
|
|||||||
|
<template>
|
||||||
|
<!-- 选择产品信息 -->
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form
|
||||||
|
:model="queryParams"
|
||||||
|
ref="queryForm"
|
||||||
|
:inline="true"
|
||||||
|
label-width="68px"
|
||||||
|
>
|
||||||
|
<el-form-item label="物料编码">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.materialCode"
|
||||||
|
placeholder="物料编码"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 130px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="产品名称">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.materialName"
|
||||||
|
placeholder="产品名称"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 130px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="规格型号">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.materialSpec"
|
||||||
|
placeholder="规格型号"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 130px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="物料类型">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.materialTypeName"
|
||||||
|
placeholder="物料类型"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="margin-bottom: 1px; width: 12.81rem !important"
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
slot="append"
|
||||||
|
icon="el-icon-search"
|
||||||
|
@click="selectMaterialType"
|
||||||
|
></el-button>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
size="mini"
|
||||||
|
@click="handleQuery"
|
||||||
|
>搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
lazy
|
||||||
|
@row-click="singleClick"
|
||||||
|
border
|
||||||
|
:expand-row-keys="expands"
|
||||||
|
:row-key="getRowKeys"
|
||||||
|
@expand-change="rowExpand"
|
||||||
|
:data="materialList"
|
||||||
|
@row-dblclick="handleDbClick"
|
||||||
|
ref="list"
|
||||||
|
height="400px"
|
||||||
|
>
|
||||||
|
<el-table-column type="expand">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-table
|
||||||
|
@row-dblclick="handleDbClick"
|
||||||
|
style="width: 95%"
|
||||||
|
class="two-list"
|
||||||
|
v-loading="subLoading"
|
||||||
|
:data="childrenList"
|
||||||
|
>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
label="替代物料编码"
|
||||||
|
align="center"
|
||||||
|
width="auto"
|
||||||
|
prop="alternateCode"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
label="替代物料名称"
|
||||||
|
align="center"
|
||||||
|
width="auto"
|
||||||
|
prop="alternateName"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<!-- <el-table-column
|
||||||
|
label="替代规格型号"
|
||||||
|
align="center"
|
||||||
|
width="250"
|
||||||
|
prop="materialSpec"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/> -->
|
||||||
|
<el-table-column
|
||||||
|
label="物料类型代码"
|
||||||
|
align="center"
|
||||||
|
prop="materialTypeCode"
|
||||||
|
width="auto"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="物料类型名称"
|
||||||
|
align="center"
|
||||||
|
prop="materialTypeName"
|
||||||
|
width="auto"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<!-- <el-table-column
|
||||||
|
label="批次数量"
|
||||||
|
align="center"
|
||||||
|
width="250"
|
||||||
|
prop="lotSize"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/> -->
|
||||||
|
<!-- <el-table-column
|
||||||
|
label="BOM"
|
||||||
|
align="center"
|
||||||
|
prop="bomName"
|
||||||
|
width="120"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/> -->
|
||||||
|
<!-- <el-table-column
|
||||||
|
label="工艺路线"
|
||||||
|
align="center"
|
||||||
|
prop="routeName"
|
||||||
|
width="120"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/> -->
|
||||||
|
</el-table>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column v-if="bomFirst"
|
||||||
|
label="BOM"
|
||||||
|
align="center"
|
||||||
|
prop="bomName"
|
||||||
|
width="120"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="物料编码"
|
||||||
|
align="center"
|
||||||
|
width="250"
|
||||||
|
prop="materialCode"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="物料名称"
|
||||||
|
align="center"
|
||||||
|
width="250"
|
||||||
|
prop="materialName"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="规格型号"
|
||||||
|
align="center"
|
||||||
|
prop="materialSpec"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<!-- <el-table-column-->
|
||||||
|
<!-- label="物料类型代码"-->
|
||||||
|
<!-- align="center"-->
|
||||||
|
<!-- prop="materialTypeCode"-->
|
||||||
|
<!-- width="230"-->
|
||||||
|
<!-- :show-overflow-tooltip="true"-->
|
||||||
|
<!-- />-->
|
||||||
|
<el-table-column
|
||||||
|
label="物料类型名称"
|
||||||
|
align="center"
|
||||||
|
prop="materialTypeName"
|
||||||
|
width="230"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<!--
|
||||||
|
<el-table-column
|
||||||
|
label="批次数量"
|
||||||
|
align="center"
|
||||||
|
width="250"
|
||||||
|
prop="lotSize"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column v-if="!bomFirst"
|
||||||
|
label="BOM"
|
||||||
|
align="center"
|
||||||
|
prop="bomName"
|
||||||
|
width="120"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="工艺路线"
|
||||||
|
align="center"
|
||||||
|
prop="routeName"
|
||||||
|
width="120"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
/> -->
|
||||||
|
</el-table>
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNo"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
<!-- <order-prod-form :propThis="propsThis" ref="orderForm"></order-prod-form>-->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import selectMaterialTypeTemp from "./../../../BasicData/materiel/selectMaterialType";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "orderProd",
|
||||||
|
props: {
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
lydata: {
|
||||||
|
default: () => {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
bomFirst:{
|
||||||
|
//是否把BOM放在第一个字段
|
||||||
|
type:Boolean,
|
||||||
|
default: () => {
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
subLoading: false,
|
||||||
|
childrenList: [],
|
||||||
|
|
||||||
|
expands: [], //只展开一行放入当前行id
|
||||||
|
getRowKeys: (row) => {
|
||||||
|
//获取当前行id
|
||||||
|
// console.log(row)
|
||||||
|
return row.id; //这里看这一行中需要根据哪个属性值是id
|
||||||
|
},
|
||||||
|
loading: false,
|
||||||
|
total: 0,
|
||||||
|
materialList: [],
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 50,
|
||||||
|
materialCode: null,
|
||||||
|
code: undefined,
|
||||||
|
name: undefined,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {},
|
||||||
|
mounted() {
|
||||||
|
console.log(this.bomFirst,'0923')
|
||||||
|
if (this.lydata.length > 0) {
|
||||||
|
console.log(this.lydata[this.lydata.length - 1]);
|
||||||
|
this.queryParams.materialCode =
|
||||||
|
this.lydata[this.lydata.length - 1].materialCode;
|
||||||
|
}
|
||||||
|
this.initData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
selectMaterialType() {
|
||||||
|
this.$layer.iframe({
|
||||||
|
shadeClose: false,
|
||||||
|
content: {
|
||||||
|
content: selectMaterialTypeTemp, //传递的组件对象
|
||||||
|
parent: this, //当前的vue对象
|
||||||
|
shadeClose: false,
|
||||||
|
},
|
||||||
|
area: [this.g_const.dialogWidthMiddle, "600px"],
|
||||||
|
|
||||||
|
title: "选择物料类型",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getSelectMType(row) {
|
||||||
|
this.$set(this.queryParams, "materialTypeName", row.materialTypeName);
|
||||||
|
this.$set(this.queryParams, "materialTypeId", row.id);
|
||||||
|
this.$set(this.queryParams, "materialTypeCode", row.materialTypeCode);
|
||||||
|
},
|
||||||
|
rowExpand(row, rowList) {
|
||||||
|
this.$refs.list.setCurrentRow(row);
|
||||||
|
|
||||||
|
this.childrenList = [];
|
||||||
|
this.subLoading = true;
|
||||||
|
let that = this;
|
||||||
|
console.log("进入", rowList.length);
|
||||||
|
|
||||||
|
if (rowList.length) {
|
||||||
|
that.expands = [];
|
||||||
|
if (row) {
|
||||||
|
that.expands.push(row.id);
|
||||||
|
}
|
||||||
|
this.getChildrenList(row.materialId || row.id);
|
||||||
|
} else {
|
||||||
|
that.expands = [];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getChildrenList(id) {
|
||||||
|
this.$materiel
|
||||||
|
.getMaterialAlternateList({ materialId: id })
|
||||||
|
.then((_data) => {
|
||||||
|
let data = _data.config ? _data.data : _data;
|
||||||
|
console.log("s数据", data);
|
||||||
|
this.childrenList = data.data;
|
||||||
|
|
||||||
|
console.log("点击的数据", this.childrenList);
|
||||||
|
this.subLoading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
//初始化表格
|
||||||
|
initData() {
|
||||||
|
// this.getList();
|
||||||
|
this.getListInBom()
|
||||||
|
},
|
||||||
|
handleDbClick(row, event, column) {
|
||||||
|
if (this.$parent && this.$parent.getSelectMaterial) {
|
||||||
|
this.$parent.getSelectMaterial(row);
|
||||||
|
this.$layer.close(this.layerid);
|
||||||
|
} //如果是vue-layer
|
||||||
|
else {
|
||||||
|
this.$emit("getSelectMaterial", row);
|
||||||
|
} //如果是el-dialog对话框
|
||||||
|
},
|
||||||
|
/** 查询bom表中的替代料 */
|
||||||
|
async getListInBom() {
|
||||||
|
console.log(this.lydata.materialId, '查询bom表中的替代料')
|
||||||
|
// this.lydata.materialId = 49743
|
||||||
|
if (this.lydata.materialId) {
|
||||||
|
const res = await this.$plan.selectMaterialNumberInboom({ materialId: this.lydata.materialId })
|
||||||
|
const data = res.data.data
|
||||||
|
console.log(data, 'bom表中的替代料')
|
||||||
|
this.total = data.length
|
||||||
|
this.materialList = data
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/** 查询订单列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = false;
|
||||||
|
this.$plan.selectMaterialNumber(this.queryParams).then((_data) => {
|
||||||
|
let resp = _data.config ? _data.data : _data;
|
||||||
|
console.log(resp, "order-prod-select-material getlist");
|
||||||
|
this.total = resp.data.recordsTotal;
|
||||||
|
this.materialList = resp.data.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNo = 1;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.dateRange = [];
|
||||||
|
this.resetForm("queryForm");
|
||||||
|
this.handleQuery();
|
||||||
|
},
|
||||||
|
// 多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.rows = selection;
|
||||||
|
this.single = selection.length != 1;
|
||||||
|
this.multiple = !selection.length;
|
||||||
|
},
|
||||||
|
singleClick(val) {
|
||||||
|
console.log("vvvv", val);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
>>> .el-table {
|
||||||
|
width: 1050px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.14">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/apache/httpcomponents/httpcore-nio/4.4.14/httpcore-nio-4.4.14.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/apache/httpcomponents/httpcore-nio/4.4.14/httpcore-nio-4.4.14-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/apache/httpcomponents/httpcore-nio/4.4.14/httpcore-nio-4.4.14-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,9 @@
|
|||||||
|
define("ace/snippets/autohotkey",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="",t.scope="autohotkey"});
|
||||||
|
(function() {
|
||||||
|
window.require(["ace/snippets/autohotkey"], function(m) {
|
||||||
|
if (typeof module == "object" && typeof exports == "object" && module) {
|
||||||
|
module.exports = m;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
@ -0,0 +1,290 @@
|
|||||||
|
module.exports = {
|
||||||
|
tableName: "pickBill",
|
||||||
|
headerList: [{
|
||||||
|
tableTitle: "领料单号",
|
||||||
|
tableProp: "pickBillNumber",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 1,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "工单编号",
|
||||||
|
tableProp: "orderWorkNumbers",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 2,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "订单编号",
|
||||||
|
tableProp: "orderProdNumbers",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 3,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "code",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 30,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料名称",
|
||||||
|
tableProp: "name",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 31,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料规格",
|
||||||
|
tableProp: "spec",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 32,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "类型",
|
||||||
|
tableProp: "dictTypeShow",
|
||||||
|
width: "80",
|
||||||
|
tableTitleSE: 4,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "状态",
|
||||||
|
tableProp: "dictStatusShow",
|
||||||
|
width: "80",
|
||||||
|
tableTitleSE: 5,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 6,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料名称",
|
||||||
|
tableProp: "materialName",
|
||||||
|
width: "200",
|
||||||
|
tableTitleSE: 7,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "规格型号",
|
||||||
|
tableProp: "materialSpec",
|
||||||
|
width: "200",
|
||||||
|
tableTitleSE: 8,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料单位",
|
||||||
|
tableProp: "materialUnit",
|
||||||
|
width: "100",
|
||||||
|
tableTitleSE: 9,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "单台用量",
|
||||||
|
tableProp: "assemblyQty",
|
||||||
|
width: "100",
|
||||||
|
tableTitleSE: 10,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "计划数量",
|
||||||
|
tableProp: "planQty",
|
||||||
|
width: "100",
|
||||||
|
tableTitleSE: 11,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "实领数量",
|
||||||
|
tableProp: "doneQty",
|
||||||
|
width: "100",
|
||||||
|
tableTitleSE: 12,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "实退数量",
|
||||||
|
tableProp: "returnQty",
|
||||||
|
width: "100",
|
||||||
|
tableTitleSE: 13,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "实补数量",
|
||||||
|
tableProp: "replenishQty",
|
||||||
|
width: "100",
|
||||||
|
tableTitleSE: 14,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "源库区代码",
|
||||||
|
tableProp: "sourceWarehouseCode",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 15,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "源库区名称",
|
||||||
|
tableProp: "sourceWarehouseName",
|
||||||
|
width: "200",
|
||||||
|
tableTitleSE: 16,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "目标库区代码",
|
||||||
|
tableProp: "targetWarehouseCode",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 17,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "目标库区名称",
|
||||||
|
tableProp: "targetWarehouseName",
|
||||||
|
width: "200",
|
||||||
|
tableTitleSE: 18,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "ERP对应单据号",
|
||||||
|
tableProp: "erpNumber",
|
||||||
|
width: "200",
|
||||||
|
tableTitleSE: 19,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "ERP同步状态",
|
||||||
|
tableProp: "dictErpStatusShow",
|
||||||
|
width: "150",
|
||||||
|
tableTitleSE: 20,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "ERP同步时间",
|
||||||
|
tableProp: "erpSyncTime",
|
||||||
|
width: "170",
|
||||||
|
tableTitleSE: 21,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "备注",
|
||||||
|
tableProp: "memo",
|
||||||
|
width: "170",
|
||||||
|
tableTitleSE: 43,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "溯源需求",
|
||||||
|
tableProp: "requirement",
|
||||||
|
width: "170",
|
||||||
|
tableTitleSE: 44,
|
||||||
|
align: "center",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "创建人",
|
||||||
|
width: "130",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
align: "center",
|
||||||
|
tableProp: "createdBy",
|
||||||
|
tableTitleSE: 22,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "创建时间",
|
||||||
|
width: "170",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
align: "center",
|
||||||
|
tableProp: "createdDt",
|
||||||
|
tableTitleSE: 23,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "修改人",
|
||||||
|
width: "130",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
align: "center",
|
||||||
|
tableProp: "updatedBy",
|
||||||
|
tableTitleSE: 24,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "修改时间",
|
||||||
|
width: "170",
|
||||||
|
show_overflow_tooltip: true,
|
||||||
|
align: "center",
|
||||||
|
tableProp: "updatedDt",
|
||||||
|
tableTitleSE: 25,
|
||||||
|
notSort: true,
|
||||||
|
isItem: true
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,555 @@
|
|||||||
|
package com.cmeim.system.service.impl;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.cmeim.system.api.domain.SysUserRole;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import com.cmeim.common.core.constant.UserConstants;
|
||||||
|
import com.cmeim.common.core.exception.CustomException;
|
||||||
|
import com.cmeim.common.core.utils.SecurityUtils;
|
||||||
|
import com.cmeim.common.core.utils.StringUtils;
|
||||||
|
import com.cmeim.common.datascope.annotation.DataScope;
|
||||||
|
import com.cmeim.system.api.domain.SysRole;
|
||||||
|
import com.cmeim.system.api.domain.SysUser;
|
||||||
|
import com.cmeim.system.domain.SysPost;
|
||||||
|
import com.cmeim.system.domain.SysUserPost;
|
||||||
|
import com.cmeim.system.mapper.SysPostMapper;
|
||||||
|
import com.cmeim.system.mapper.SysRoleMapper;
|
||||||
|
import com.cmeim.system.mapper.SysUserMapper;
|
||||||
|
import com.cmeim.system.mapper.SysUserPostMapper;
|
||||||
|
import com.cmeim.system.mapper.SysUserRoleMapper;
|
||||||
|
import com.cmeim.system.service.ISysConfigService;
|
||||||
|
import com.cmeim.system.service.ISysUserService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户 业务层处理
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class SysUserServiceImpl implements ISysUserService
|
||||||
|
{
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysUserMapper userMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysRoleMapper roleMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysPostMapper postMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysUserRoleMapper userRoleMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysUserPostMapper userPostMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysConfigService configService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据条件分页查询用户列表
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 用户信息集合信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@DataScope(deptAlias = "d", userAlias = "u")
|
||||||
|
public List<SysUser> selectUserList(SysUser user)
|
||||||
|
{
|
||||||
|
return userMapper.selectUserList(user);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<SysUser> specialList(String specialCode)
|
||||||
|
{
|
||||||
|
return userMapper.specialList(specialCode);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 通过用户名查询用户
|
||||||
|
*
|
||||||
|
* @param userName 用户名
|
||||||
|
* @return 用户对象信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public SysUser selectUserByUserName(String userName)
|
||||||
|
{
|
||||||
|
return userMapper.selectUserByUserName(userName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过用户昵称查询用户
|
||||||
|
*
|
||||||
|
* @param nickName 用户昵称
|
||||||
|
* @return 用户对象信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public SysUser selectUserByNickName(String nickName)
|
||||||
|
{
|
||||||
|
return userMapper.selectUserByNickName(nickName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过用户ID查询用户
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @return 用户对象信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public SysUser selectUserById(Long userId)
|
||||||
|
{
|
||||||
|
return userMapper.selectUserById(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysUser> selectUserByIdIn(ArrayList<Long> userId) {
|
||||||
|
return userMapper.selectUserByIdIn(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysUserRole> findUserByRoleId(Long roleId) {
|
||||||
|
return userRoleMapper.findUserByRoleId(roleId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询用户所属角色组
|
||||||
|
*
|
||||||
|
* @param userName 用户名
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String selectUserRoleGroup(String userName)
|
||||||
|
{
|
||||||
|
List<SysRole> list = roleMapper.selectRolesByUserName(userName);
|
||||||
|
StringBuffer idsStr = new StringBuffer();
|
||||||
|
for (SysRole role : list)
|
||||||
|
{
|
||||||
|
idsStr.append(role.getRoleName()).append(",");
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(idsStr.toString()))
|
||||||
|
{
|
||||||
|
return idsStr.substring(0, idsStr.length() - 1);
|
||||||
|
}
|
||||||
|
return idsStr.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询用户所属岗位组
|
||||||
|
*
|
||||||
|
* @param userName 用户名
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String selectUserPostGroup(String userName)
|
||||||
|
{
|
||||||
|
List<SysPost> list = postMapper.selectPostsByUserName(userName);
|
||||||
|
StringBuffer idsStr = new StringBuffer();
|
||||||
|
for (SysPost post : list)
|
||||||
|
{
|
||||||
|
idsStr.append(post.getPostName()).append(",");
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(idsStr.toString()))
|
||||||
|
{
|
||||||
|
return idsStr.substring(0, idsStr.length() - 1);
|
||||||
|
}
|
||||||
|
return idsStr.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验用户名称是否唯一
|
||||||
|
*
|
||||||
|
* @param userName 用户名称
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String checkUserNameUnique(String userName)
|
||||||
|
{
|
||||||
|
int count = userMapper.checkUserNameUnique(userName);
|
||||||
|
if (count > 0)
|
||||||
|
{
|
||||||
|
return UserConstants.NOT_UNIQUE;
|
||||||
|
}
|
||||||
|
return UserConstants.UNIQUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验用户名称是否唯一
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String checkPhoneUnique(SysUser user)
|
||||||
|
{
|
||||||
|
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
|
||||||
|
SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
|
||||||
|
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
|
||||||
|
{
|
||||||
|
return UserConstants.NOT_UNIQUE;
|
||||||
|
}
|
||||||
|
return UserConstants.UNIQUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验email是否唯一
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String checkEmailUnique(SysUser user)
|
||||||
|
{
|
||||||
|
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
|
||||||
|
SysUser info = userMapper.checkEmailUnique(user.getEmail());
|
||||||
|
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
|
||||||
|
{
|
||||||
|
return UserConstants.NOT_UNIQUE;
|
||||||
|
}
|
||||||
|
return UserConstants.UNIQUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验用户是否允许操作
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void checkUserAllowed(SysUser user)
|
||||||
|
{
|
||||||
|
if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin())
|
||||||
|
{
|
||||||
|
throw new CustomException("不允许操作超级管理员用户");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增保存用户信息
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public int insertUser(SysUser user)
|
||||||
|
{
|
||||||
|
// 新增用户信息
|
||||||
|
int rows = userMapper.insertUser(user);
|
||||||
|
// 新增用户岗位关联
|
||||||
|
insertUserPost(user);
|
||||||
|
// 新增用户与角色管理
|
||||||
|
insertUserRole(user);
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增保存用户角色关联
|
||||||
|
*
|
||||||
|
* @param userId 用户id
|
||||||
|
* @param roleId 角色id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public int insertUserRole(Long roleId , Long userId)
|
||||||
|
{
|
||||||
|
// 新增用户信息
|
||||||
|
int rows = userMapper.insertUserRole(roleId , userId);
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改保存用户信息
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public int updateUser(SysUser user)
|
||||||
|
{
|
||||||
|
Long userId = user.getUserId();
|
||||||
|
// 删除用户与角色关联
|
||||||
|
userRoleMapper.deleteUserRoleByUserId(userId);
|
||||||
|
// 新增用户与角色管理
|
||||||
|
insertUserRole(user);
|
||||||
|
// 删除用户与岗位关联
|
||||||
|
userPostMapper.deleteUserPostByUserId(userId);
|
||||||
|
// 新增用户与岗位管理
|
||||||
|
insertUserPost(user);
|
||||||
|
return userMapper.updateUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改保存用户cid
|
||||||
|
*
|
||||||
|
* @param userId,cid
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public int updateCid(Long userId, String cid)
|
||||||
|
{
|
||||||
|
|
||||||
|
return userMapper.updateCid(userId, cid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改用户状态
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int updateUserStatus(SysUser user)
|
||||||
|
{
|
||||||
|
return userMapper.updateUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改用户基本信息
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int updateUserProfile(SysUser user)
|
||||||
|
{
|
||||||
|
return userMapper.updateUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改用户头像
|
||||||
|
*
|
||||||
|
* @param userName 用户名
|
||||||
|
* @param avatar 头像地址
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean updateUserAvatar(String userName, String avatar)
|
||||||
|
{
|
||||||
|
return userMapper.updateUserAvatar(userName, avatar) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置用户密码
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int resetPwd(SysUser user)
|
||||||
|
{
|
||||||
|
return userMapper.updateUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置用户密码
|
||||||
|
*
|
||||||
|
* @param userName 用户名
|
||||||
|
* @param password 密码
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int resetUserPwd(String userName, String password)
|
||||||
|
{
|
||||||
|
return userMapper.resetUserPwd(userName, password);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增用户角色信息
|
||||||
|
*
|
||||||
|
* @param user 用户对象
|
||||||
|
*/
|
||||||
|
public void insertUserRole(SysUser user)
|
||||||
|
{
|
||||||
|
Long[] roles = user.getRoleIds();
|
||||||
|
if (StringUtils.isNotNull(roles))
|
||||||
|
{
|
||||||
|
// 新增用户与角色管理
|
||||||
|
List<SysUserRole> list = new ArrayList<SysUserRole>();
|
||||||
|
for (Long roleId : roles)
|
||||||
|
{
|
||||||
|
SysUserRole ur = new SysUserRole();
|
||||||
|
ur.setUserId(user.getUserId());
|
||||||
|
ur.setRoleId(roleId);
|
||||||
|
list.add(ur);
|
||||||
|
}
|
||||||
|
if (list.size() > 0)
|
||||||
|
{
|
||||||
|
userRoleMapper.batchUserRole(list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增用户岗位信息
|
||||||
|
*
|
||||||
|
* @param user 用户对象
|
||||||
|
*/
|
||||||
|
public void insertUserPost(SysUser user)
|
||||||
|
{
|
||||||
|
Long[] posts = user.getPostIds();
|
||||||
|
if (StringUtils.isNotNull(posts))
|
||||||
|
{
|
||||||
|
// 新增用户与岗位管理
|
||||||
|
List<SysUserPost> list = new ArrayList<SysUserPost>();
|
||||||
|
for (Long postId : posts)
|
||||||
|
{
|
||||||
|
SysUserPost up = new SysUserPost();
|
||||||
|
up.setUserId(user.getUserId());
|
||||||
|
up.setPostId(postId);
|
||||||
|
list.add(up);
|
||||||
|
}
|
||||||
|
if (list.size() > 0)
|
||||||
|
{
|
||||||
|
userPostMapper.batchUserPost(list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过用户ID删除用户
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public int deleteUserById(Long userId)
|
||||||
|
{
|
||||||
|
// 删除用户与角色关联
|
||||||
|
userRoleMapper.deleteUserRoleByUserId(userId);
|
||||||
|
// 删除用户与岗位表
|
||||||
|
userPostMapper.deleteUserPostByUserId(userId);
|
||||||
|
return userMapper.deleteUserById(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过用户ID删除用户角色关联表
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public int deleteUserRoleById(Long userId)
|
||||||
|
{
|
||||||
|
// 删除用户与角色关联
|
||||||
|
return userRoleMapper.deleteUserRoleByUserId(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过用户ID删除用户角色关联表
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public int deleteUserRole(Long userId,Long roleId)
|
||||||
|
{
|
||||||
|
// 删除用户与角色关联
|
||||||
|
return userRoleMapper.deleteUserRoleByRoleAndUser(userId,roleId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除用户信息
|
||||||
|
*
|
||||||
|
* @param userIds 需要删除的用户ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public int deleteUserByIds(Long[] userIds)
|
||||||
|
{
|
||||||
|
for (Long userId : userIds)
|
||||||
|
{
|
||||||
|
checkUserAllowed(new SysUser(userId));
|
||||||
|
}
|
||||||
|
// 删除用户与角色关联
|
||||||
|
userRoleMapper.deleteUserRole(userIds);
|
||||||
|
// 删除用户与岗位关联
|
||||||
|
userPostMapper.deleteUserPost(userIds);
|
||||||
|
return userMapper.deleteUserByIds(userIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入用户数据
|
||||||
|
*
|
||||||
|
* @param userList 用户数据列表
|
||||||
|
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
|
||||||
|
* @param operName 操作用户
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName)
|
||||||
|
{
|
||||||
|
if (StringUtils.isNull(userList) || userList.size() == 0)
|
||||||
|
{
|
||||||
|
throw new CustomException("导入用户数据不能为空!");
|
||||||
|
}
|
||||||
|
int successNum = 0;
|
||||||
|
int failureNum = 0;
|
||||||
|
StringBuilder successMsg = new StringBuilder();
|
||||||
|
StringBuilder failureMsg = new StringBuilder();
|
||||||
|
String password = configService.selectConfigByKey("sys.user.initPassword");
|
||||||
|
for (SysUser user : userList)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 验证是否存在这个用户
|
||||||
|
SysUser u = userMapper.selectUserByUserName(user.getUserName());
|
||||||
|
if (StringUtils.isNull(u))
|
||||||
|
{
|
||||||
|
user.setPassword(SecurityUtils.encryptPassword(password));
|
||||||
|
user.setCreateBy(operName);
|
||||||
|
this.insertUser(user);
|
||||||
|
successNum++;
|
||||||
|
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
|
||||||
|
}
|
||||||
|
else if (isUpdateSupport)
|
||||||
|
{
|
||||||
|
user.setUpdateBy(operName);
|
||||||
|
this.updateUser(user);
|
||||||
|
successNum++;
|
||||||
|
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 更新成功");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
failureNum++;
|
||||||
|
failureMsg.append("<br/>" + failureNum + "、账号 " + user.getUserName() + " 已存在");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
failureNum++;
|
||||||
|
String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
|
||||||
|
failureMsg.append(msg + e.getMessage());
|
||||||
|
log.error(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (failureNum > 0)
|
||||||
|
{
|
||||||
|
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
||||||
|
throw new CustomException(failureMsg.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
|
||||||
|
}
|
||||||
|
return successMsg.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysUser> selectUserByUserNameIn(ArrayList<String> userName) {
|
||||||
|
return userMapper.selectUserByUserNameIn(userName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.cmeim.biz.query.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Target({ElementType.FIELD})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface FieldProps {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 隐藏
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean hide() default false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 属性名
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String value() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
* string 字符串
|
||||||
|
* date 日期
|
||||||
|
* list 集合
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
FieldType type() default FieldType.STRING;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务字段分组编码(在type=FieldType.DICT时生效)
|
||||||
|
*/
|
||||||
|
String dictCode() default "";
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
查询窗体添加步骤:
|
||||||
|
<query-params
|
||||||
|
ref="query"
|
||||||
|
:form="queryFormConfig"
|
||||||
|
@handleQuery="handleQuery"
|
||||||
|
@getTableData="getTableData"
|
||||||
|
@resetQuery="resetQuery"
|
||||||
|
>
|
||||||
|
</query-params>
|
||||||
|
首先删掉原来的查询窗体的部分
|
||||||
|
queryFormConfig为查询窗体配置,写在计算属性中,通过控制queryFormConfig的值来控制要显示的属性列表(controlList)和默认值(defaultList),详见每一行后的注释 D:\micro202201171617MONDAY\src\views\tool\example\index.vue
|
||||||
|
然后添加函数 getQueryParams()
|
||||||
|
{
|
||||||
|
let pageSize=this.queryParams.pageSize
|
||||||
|
let pageNo=this.queryParams.pageNo
|
||||||
|
this.queryParams=this.$refs.query.getQueryParams()//返回子组件的queryParams
|
||||||
|
this.queryParams.pageSize=pageSize
|
||||||
|
this.queryParams.pageNo=pageNo
|
||||||
|
//取得子组件的queryParams并且与原来的pagesize pageNo合并
|
||||||
|
},
|
||||||
|
在handleQuery里面加上一行 this.getQueryParams()//加上这一句
|
||||||
|
在mounted最后一行 加入 this.$refs.query.init()
|
||||||
|
|
||||||
|
|
||||||
|
事件:
|
||||||
|
1.
|
||||||
|
FAQ:
|
||||||
|
1.解决查询条件首次加载的刷新问题:
|
||||||
|
queryFormConfig里写 key:this.key//解决查询条件首次加载的刷新问题
|
||||||
|
vue的data里面写key:0,//解决查询条件首次加载的刷新问题
|
||||||
|
然后this.key++ //解决查询条件首次加载的刷新问题
|
||||||
|
|
||||||
|
2.change事件:在<query-params 后加入 @xxxChange=“xxxChange” xxx为对应的prop名
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
3.强制刷新:this.key++;
|
||||||
|
this.$nextTick(()=>{this.$refs.query.refresh();})
|
||||||
|
4.记忆模式:在config中有两个参数storageMode:true, storageKey用于记忆模式(//storageMode:true,//记忆模式,开启后每次查询会存储到localstorage中,存储名为storageKey)
|
||||||
|
|
@ -0,0 +1,228 @@
|
|||||||
|
<template>
|
||||||
|
<!-- wms到货单查看入库单 -->
|
||||||
|
<el-container style="margin-top: 10px;" v-loading="loading">
|
||||||
|
<!-- 添加或修改参数配置对话框 -->
|
||||||
|
<el-form ref="form" :model="form" label-width="120px" :rules="rules" align="left" style="width: 100%;">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="入库单号" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.inputBillNumber"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="送货单号" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.arriveBillNumber"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="检验单号" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.inspectBillNumber"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="仓库名称" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.warehouseName"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<!-- 第二行 -->
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="供应商名称" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.supplierName"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="部门名称" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.departmentName"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="客户名称" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.customerName"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="状态" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.dictStatusShow"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<!-- 第三行 -->
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="类型" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.dictTypeShow"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="到货备注" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.remark"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="ERP同步单据号" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.erpNumber"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="ERP同步状态" prop="">
|
||||||
|
<el-input size="mini" disabled v-model="form.dictErpStatusShow"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<!-- 第四行 -->
|
||||||
|
<el-row style="margin-bottom:-24px">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="审核人" prop="">
|
||||||
|
<el-input size="mini" disabled ></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="审核时间" prop="">
|
||||||
|
<el-input size="mini" disabled ></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<!-- 分割线 -->
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<!-- 列表头部按钮 -->
|
||||||
|
<el-row :gutter="10" style="width:99%;margin-left:0px">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="primary" icon="el-icon-plus" size="mini">打印</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<!-- 列表 -->
|
||||||
|
<el-table style="width: 99%;margin: 10px 0px 0px 5px;" height="320" border
|
||||||
|
v-loading="tableLoading" :data="detailList" ref="list">
|
||||||
|
<el-table-column align="center" type="index" label="序号" width="50"/>
|
||||||
|
<el-table-column type="selection" width="50"/>
|
||||||
|
<el-table-column label="物料编码" align="center" prop="materialCode" width="100px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="物料名称" align="center" prop="materialName" width="200px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="物料规格" align="center" prop="materialSpec" width="200px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="批次" align="center" prop="batchNo" width="150px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="状态" align="center" prop="dictStatusShow" width="150px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="完成时间" align="center" prop="completeTime" width="150px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="计划收货数量" align="center" prop="planQty" width="150px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="实际收货数量" align="center" prop="realQty" width="150px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="库区名称" align="center" prop="locationName" width="150px" :show-overflow-tooltip="true"/>
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150px" :show-overflow-tooltip="true"/>
|
||||||
|
</el-table>
|
||||||
|
<!-- 表单按钮 -->
|
||||||
|
<el-row style="margin-top:20px">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item style="float: right;margin-right: 20px">
|
||||||
|
<el-button type="primary" @click="submitForm" v-loading="saveLoading">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
</el-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
default: undefined
|
||||||
|
},
|
||||||
|
formType: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
form: {
|
||||||
|
|
||||||
|
},
|
||||||
|
rules: {},
|
||||||
|
tableLoading: false,
|
||||||
|
detailList: [],
|
||||||
|
saveLoading: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
console.log(this.row)
|
||||||
|
this.initData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//初始化
|
||||||
|
initData(){
|
||||||
|
this.loading = true
|
||||||
|
this.$inspectBill.queryInputBillByInspectBillNumber(this.row.inspectBillNumberCopy).then(res=>{
|
||||||
|
this.form = res.data.data
|
||||||
|
this.form.dictStatusShow = this.$dictType.getDictNameByCodeAndKey(
|
||||||
|
"mm_inspect_bill_status",
|
||||||
|
this.form.dictStatus
|
||||||
|
);
|
||||||
|
this.form.dictTypeShow = this.$dictType.getDictNameByCodeAndKey(
|
||||||
|
"mm_inspect_bill_type",
|
||||||
|
this.form.dictType
|
||||||
|
);
|
||||||
|
this.form.dictErpStatusShow = this.$dictType.getDictNameByCodeAndKey(
|
||||||
|
"mm_inspect_bill_statusERP",
|
||||||
|
this.form.dictErpStatus
|
||||||
|
);
|
||||||
|
|
||||||
|
this.detailList = res.data.data.items
|
||||||
|
this.detailList.forEach(item=>{
|
||||||
|
item.dictStatusShow = this.$dictType.getDictNameByCodeAndKey(
|
||||||
|
"mm_inspect_bill_status",
|
||||||
|
item.dictStatus
|
||||||
|
);
|
||||||
|
})
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//保存按钮
|
||||||
|
submitForm(){
|
||||||
|
this.cancel()
|
||||||
|
},
|
||||||
|
//取消按钮
|
||||||
|
cancel(){
|
||||||
|
//this.reset()
|
||||||
|
this.$layer.close(this.layerid)
|
||||||
|
},
|
||||||
|
// 重置表单
|
||||||
|
// reset(){
|
||||||
|
// this.form = {
|
||||||
|
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
>>>.el-table__body tr.current-row>td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-table>>>tbody tr:hover>td {
|
||||||
|
background-color: #8ac1ff !important;
|
||||||
|
}
|
||||||
|
.input_inner /deep/ .el-input__inner {
|
||||||
|
background-color: white !important;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.cmeim;
|
||||||
|
|
||||||
|
import com.cmeim.common.security.annotation.EnableCustomConfig;
|
||||||
|
import com.cmeim.common.security.annotation.EnableRyFeignClients;
|
||||||
|
import com.cmeim.common.swagger.annotation.EnableCustomSwagger2;
|
||||||
|
import org.activiti.spring.boot.SecurityAutoConfiguration;
|
||||||
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.cloud.client.SpringCloudApplication;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础模块
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@EnableCustomConfig
|
||||||
|
@EnableCustomSwagger2
|
||||||
|
@EnableRyFeignClients
|
||||||
|
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
|
||||||
|
@SpringCloudApplication
|
||||||
|
@MapperScan("com.cmeim.basic.mapper")
|
||||||
|
public class CmeImBasicApplication
|
||||||
|
{
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
SpringApplication.run(CmeImBasicApplication.class, args);
|
||||||
|
System.out.println("(♥◠‿◠)ノ゙ 基础模块启动成功 ლ(´ڡ`ლ)゙");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
define("ace/snippets/latex",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="",t.scope="latex"});
|
||||||
|
(function() {
|
||||||
|
window.require(["ace/snippets/latex"], function(m) {
|
||||||
|
if (typeof module == "object" && typeof exports == "object" && module) {
|
||||||
|
module.exports = m;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 209 B |
@ -0,0 +1,67 @@
|
|||||||
|
package com.cmeim.template.controller;
|
||||||
|
|
||||||
|
import com.cmeim.template.po.TpFormBind;
|
||||||
|
import com.cmeim.template.service.TpFormBindService;
|
||||||
|
import com.cmeim.common.core.utils.DateUtil;
|
||||||
|
import com.cmeim.common.core.web.controller.GenericController;
|
||||||
|
import com.cmeim.common.core.web.domain.Respond;
|
||||||
|
import com.cmeim.common.core.web.domain.TUserInfo;
|
||||||
|
import com.cmeim.common.core.web.page.PageVo;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板配置
|
||||||
|
*
|
||||||
|
* @author ggf
|
||||||
|
*/
|
||||||
|
@Api(value = "formBind")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("template/formBind")
|
||||||
|
public class TpFormBindController extends GenericController {
|
||||||
|
@Autowired
|
||||||
|
TpFormBindService tpFormBindService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "新增表单绑定")
|
||||||
|
@PostMapping(value = "add")
|
||||||
|
public Respond add(TpFormBind tpFormBind){
|
||||||
|
TUserInfo userInfo = getCurrentUser();
|
||||||
|
tpFormBind.setCreatedBy(userInfo.getUserName());
|
||||||
|
tpFormBind.setCreatedDt(DateUtil.getCurrentDate());
|
||||||
|
tpFormBindService.save(tpFormBind);
|
||||||
|
return buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "删除表单绑定")
|
||||||
|
@PostMapping(value = "delete")
|
||||||
|
public Respond delete(TpFormBind tpFormBind){
|
||||||
|
tpFormBindService.delete(tpFormBind);
|
||||||
|
return buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改表单绑定")
|
||||||
|
@PutMapping(value = "update")
|
||||||
|
public Respond update(TpFormBind tpFormBind){
|
||||||
|
TUserInfo userInfo = getCurrentUser();
|
||||||
|
tpFormBind.setUpdatedBy(userInfo.getUserName());
|
||||||
|
tpFormBind.setUpdatedDt(DateUtil.getCurrentDate());
|
||||||
|
tpFormBindService.save(tpFormBind);
|
||||||
|
return buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取绑定信息")
|
||||||
|
@GetMapping(value = "list")
|
||||||
|
public Respond list(PageVo pv, TpFormBind tpFormBind) {
|
||||||
|
tpFormBindService.list(pv,tpFormBind,sortOrder(pv.getOrders()));
|
||||||
|
return buildSuccess(pv);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取绑定信息全部")
|
||||||
|
@GetMapping(value = "listAll")
|
||||||
|
public Respond listAll(TpFormBind tpFormBind) {
|
||||||
|
return buildSuccess(tpFormBindService.listAll(tpFormBind));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,84 @@
|
|||||||
|
// cover some element-ui styles
|
||||||
|
|
||||||
|
.el-breadcrumb__inner,
|
||||||
|
.el-breadcrumb__inner a {
|
||||||
|
font-weight: 400 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-upload {
|
||||||
|
input[type="file"] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-upload__input {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cell {
|
||||||
|
.el-tag {
|
||||||
|
margin-right: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.small-padding {
|
||||||
|
.cell {
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-width {
|
||||||
|
.el-button--mini {
|
||||||
|
padding: 7px 10px;
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-col {
|
||||||
|
.cell {
|
||||||
|
padding: 0 10px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.el-tag {
|
||||||
|
margin-right: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// to fixed https://github.com/ElemeFE/element/issues/2461
|
||||||
|
.el-dialog {
|
||||||
|
transform: none;
|
||||||
|
left: 0;
|
||||||
|
position: relative;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// refine element ui upload
|
||||||
|
.upload-container {
|
||||||
|
.el-upload {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.el-upload-dragger {
|
||||||
|
width: 100%;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// dropdown
|
||||||
|
.el-dropdown-menu {
|
||||||
|
a {
|
||||||
|
display: block
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// fix date-picker ui bug in filter-item
|
||||||
|
.el-range-editor.el-input__inner {
|
||||||
|
display: inline-flex !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// to fix el-date-picker css style
|
||||||
|
.el-range-separator {
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1579774825624" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1248" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M498.595712 482.290351 345.420077 482.290351l0 57.307194 210.477712 0L555.897789 274.196942l-57.301054 0L498.596735 482.290351zM498.595712 482.290351" p-id="1249"></path><path d="M577.685002 644.98478l379.879913 0 0 57.302077L577.685002 702.286858 577.685002 644.98478 577.685002 644.98478zM577.685002 644.98478" p-id="1250"></path><path d="M577.685002 773.764795l379.879913 0 0 57.307194L577.685002 831.071989 577.685002 773.764795 577.685002 773.764795zM577.685002 773.764795" p-id="1251"></path><path d="M577.685002 902.549927l379.879913 0 0 57.307194L577.685002 959.857121 577.685002 902.549927 577.685002 902.549927zM577.685002 902.549927" p-id="1252"></path><path d="M102.523001 382.290823c4.450359 2.615571 9.470699 3.954055 14.530948 3.954055 2.969635 0 5.952572-0.461511 8.836249-1.394766l190.809767-61.886489c15.052834-4.882194 23.297612-21.040199 18.415418-36.08894-4.882194-15.052834-21.040199-23.297612-36.093033-18.415418L175.676092 308.458257c15.994276-26.115797 35.170011-50.537 57.370639-72.743768 73.767074-73.767074 171.845857-114.388237 276.16783-114.388237 104.32095 0 202.39564 40.622186 276.16169 114.388237s114.393353 171.845857 114.393353 276.16783c0 26.427906-2.615571 52.449559-7.709589 77.780481l58.302871 0c4.464685-25.499767 6.708795-51.470255 6.708795-77.780481 0-60.449767-11.845793-119.102608-35.204803-174.336584-22.559808-53.334719-54.850236-101.226472-95.968725-142.349055-41.122583-41.122583-89.017406-73.408917-142.348032-95.968725C628.317169 75.866898 569.659211 64.021106 509.215584 64.021106c-60.448744 0-119.106702 11.845793-174.336584 35.207873-53.334719 22.559808-101.230566 54.846142-142.349055 95.968725-23.980157 23.980157-44.934398 50.278103-62.727647 78.601172l-20.738323-105.655342c-3.043313-15.527648-18.105357-25.642007-33.631982-22.599717-15.527648 3.048429-25.64303 18.105357-22.599717 33.637098l36.102243 183.932126C90.51348 371.153158 95.460142 378.13313 102.523001 382.290823L102.523001 382.290823zM102.523001 382.290823" p-id="1253"></path><path d="M126.020158 587.9416 67.768453 587.9416c5.759167 33.679054 15.368012 66.544579 28.789697 98.278327 22.559808 53.333696 54.850236 101.225449 95.971795 142.348032 41.122583 41.122583 89.014336 73.408917 142.349055 95.968725 54.112432 22.88829 111.517863 34.71157 170.668031 35.18229L505.547031 902.395408c-102.94972-0.941442-199.594851-41.445948-272.499277-114.349351C177.545672 732.543975 140.810003 663.275355 126.020158 587.9416L126.020158 587.9416zM126.020158 587.9416" p-id="1254"></path></svg>
|
After Width: | Height: | Size: 2.8 KiB |
1031
.svn/pristine/04/0428f7d22203d6279ffd40acca923bb65eef6f60.svn-base
Normal file
1031
.svn/pristine/04/0428f7d22203d6279ffd40acca923bb65eef6f60.svn-base
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: jakarta.transaction:jakarta.transaction-api:1.3.3">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/jakarta/transaction/jakarta.transaction-api/1.3.3/jakarta.transaction-api-1.3.3.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/jakarta/transaction/jakarta.transaction-api/1.3.3/jakarta.transaction-api-1.3.3-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../server/maven/repository/jakarta/transaction/jakarta.transaction-api/1.3.3/jakarta.transaction-api-1.3.3-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,110 @@
|
|||||||
|
module.exports= {
|
||||||
|
tableName: "pickBillList",
|
||||||
|
headerList: [
|
||||||
|
{
|
||||||
|
tableTitle: "领料单号",
|
||||||
|
width:"200",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "pickBillNumber",
|
||||||
|
tableTitleSE: 1,
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "工单编号集合",
|
||||||
|
width:"200",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "orderWorkNumbers",
|
||||||
|
tableTitleSE: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "工单Id集合",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "orderWorkIds",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "状态",
|
||||||
|
width:"100",
|
||||||
|
tableProp: "dictStatusShow",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "类型",
|
||||||
|
width:"100",
|
||||||
|
tableProp: "dictTypeShow",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "ERP同步状态",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "dictErpStatus",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "ERP同步时间",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "erpSyncTime",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "图片确认状态",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "pictureConfirm",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "内部检验号",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "zinin",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "创建人",
|
||||||
|
width:"100",
|
||||||
|
tableProp: "createdBy",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "创建时间",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "createdDt",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "更新人",
|
||||||
|
width:"100",
|
||||||
|
tableProp: "updatedBy",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "更新时间",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "updatedDt",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 13
|
||||||
|
},
|
||||||
|
|
||||||
|
]}
|
@ -0,0 +1,185 @@
|
|||||||
|
package com.cmeim.stock.po;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "order_info")
|
||||||
|
public class OrderInfo implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* null
|
||||||
|
*/
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||||
|
@Column(name = "id")
|
||||||
|
@ApiParam(value = "null")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生产任务单
|
||||||
|
*/
|
||||||
|
@Column(name = "production_task")
|
||||||
|
@ApiParam(value = "生产任务单")
|
||||||
|
private String productionTask;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单据状态(5-已录入、10-部分入库、15-全部入库)
|
||||||
|
*/
|
||||||
|
@Column(name = "order_status")
|
||||||
|
@ApiParam(value = "单据状态(5-已录入、10-部分入库、15-全部入库)")
|
||||||
|
private Integer orderStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销售订单
|
||||||
|
*/
|
||||||
|
@Column(name = "sale_order")
|
||||||
|
@ApiParam(value = "销售订单")
|
||||||
|
private String saleOrder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
@Column(name = "material_code")
|
||||||
|
@ApiParam(value = "物料编码")
|
||||||
|
private String materialCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料名称
|
||||||
|
*/
|
||||||
|
@Column(name = "material_name")
|
||||||
|
@ApiParam(value = "物料名称")
|
||||||
|
private String materialName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料规格
|
||||||
|
*/
|
||||||
|
@Column(name = "material_spec")
|
||||||
|
@ApiParam(value = "物料规格")
|
||||||
|
private String materialSpec;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划完工日期
|
||||||
|
*/
|
||||||
|
@Column(name = "planned_completion_date")
|
||||||
|
@ApiParam(value = "计划完工日期")
|
||||||
|
private String plannedCompletionDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划数量
|
||||||
|
*/
|
||||||
|
@Column(name = "plan_qty")
|
||||||
|
@ApiParam(value = "计划数量")
|
||||||
|
private Integer planQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已入库数
|
||||||
|
*/
|
||||||
|
@Column(name = "in_qty")
|
||||||
|
@ApiParam(value = "已入库数")
|
||||||
|
private Integer inQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库中数量
|
||||||
|
*/
|
||||||
|
@Column(name = "ongoing_qty")
|
||||||
|
@ApiParam(value = "入库中数量")
|
||||||
|
private Integer ongoingQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库数量
|
||||||
|
*/
|
||||||
|
@Column(name = "out_qty")
|
||||||
|
@ApiParam(value = "出库数量")
|
||||||
|
private Integer outQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待校验数
|
||||||
|
*/
|
||||||
|
@Column(name = "wait_check_qty")
|
||||||
|
@ApiParam(value = "待校验数")
|
||||||
|
private Integer waitCheckQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已校验数
|
||||||
|
*/
|
||||||
|
@Column(name = "finish_check_qty")
|
||||||
|
@ApiParam(value = "已校验数")
|
||||||
|
private Integer finishCheckQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验中数
|
||||||
|
*/
|
||||||
|
@Column(name = "check_qty")
|
||||||
|
@ApiParam(value = "校验中数")
|
||||||
|
private Integer checkQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人
|
||||||
|
*/
|
||||||
|
@Column(name = "created_by")
|
||||||
|
@ApiParam(value = "创建人")
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(name = "created_dt")
|
||||||
|
@ApiParam(value = "创建时间")
|
||||||
|
private String createdDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新人
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_by")
|
||||||
|
@ApiParam(value = "更新人")
|
||||||
|
private String updatedBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
|
@Column(name = "updated_dt")
|
||||||
|
@ApiParam(value = "更新时间")
|
||||||
|
private String updatedDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成品区已入库数
|
||||||
|
*/
|
||||||
|
@Column(name = "product_in_qty")
|
||||||
|
@ApiParam(value = "成品区已入库数")
|
||||||
|
private Integer productInQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成品区入库中数量
|
||||||
|
*/
|
||||||
|
@Column(name = "product_ongoing_qty")
|
||||||
|
@ApiParam(value = "成品区入库中数量")
|
||||||
|
private Integer productOngoingQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成品区出库数量
|
||||||
|
*/
|
||||||
|
@Column(name = "product_out_qty")
|
||||||
|
@ApiParam(value = "成品区出库数量")
|
||||||
|
private Integer productOutQty;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
@ApiParam(value = "计划完工日期-开始")
|
||||||
|
private String plannedCompletionDateStart;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
@ApiParam(value = "计划完工日期-结束")
|
||||||
|
private String plannedCompletionDateEnd;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
@ApiParam("单据状态集合")
|
||||||
|
private Integer[] orderStatusArr;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
@ApiParam("排序")
|
||||||
|
private String[] orders;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
<span ng-if="!property.noValue">{{'PROPERTY.FIELDS' | translate:property.value.fields}}</span>
|
||||||
|
<span ng-if="property.noValue">{{'PROPERTY.FIELDS.EMPTY' | translate}}</span>
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: com.netflix.ribbon:ribbon-transport:2.3.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/netflix/ribbon/ribbon-transport/2.3.0/ribbon-transport-2.3.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/netflix/ribbon/ribbon-transport/2.3.0/ribbon-transport-2.3.0-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/../../../server/maven/repository/com/netflix/ribbon/ribbon-transport/2.3.0/ribbon-transport-2.3.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,144 @@
|
|||||||
|
module.exports= {
|
||||||
|
tableName: "stockCaution",
|
||||||
|
headerList: [
|
||||||
|
{
|
||||||
|
tableTitle: "物料编码",
|
||||||
|
width:"230",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "materialCode",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "物料名称",
|
||||||
|
width:"230",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "materialName",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "目标库区代码",
|
||||||
|
width:"230",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "warehouseCode",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "目标库区名称",
|
||||||
|
width:"230",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "warehouseName",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "安全库存",
|
||||||
|
width:"100",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "cautionQty",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "最高库存",
|
||||||
|
width:"100",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "maxQty",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "来源库区名称",
|
||||||
|
width:"230",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "fromName",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "来源库区代码",
|
||||||
|
width:"230",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "fromCode",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "库龄",
|
||||||
|
width:"100",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "cautionDays",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "单位",
|
||||||
|
width:"100",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "unitOfMeasure",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "操作",
|
||||||
|
width:"100",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "button",
|
||||||
|
HeaderType:'button',
|
||||||
|
tableTitleSE: 11
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
tableTitle: "创建人",
|
||||||
|
width:"80",
|
||||||
|
tableProp: "createdBy",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "创建时间",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "createdDt",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 13
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "更新人",
|
||||||
|
width:"80",
|
||||||
|
tableProp: "updatedBy",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "更新时间",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "updatedDt",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
HeaderType:'normal',
|
||||||
|
tableTitleSE: 15
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
]}
|
Binary file not shown.
After Width: | Height: | Size: 273 B |
@ -0,0 +1,79 @@
|
|||||||
|
module.exports={
|
||||||
|
tableName:"repair",
|
||||||
|
headerList:[
|
||||||
|
{
|
||||||
|
tableTitle: "维修代码",
|
||||||
|
width:"230",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "repairCode",
|
||||||
|
tableTitleSE: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "维修描述",
|
||||||
|
width:"200",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "repairText",
|
||||||
|
tableTitleSE: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "维修类型",
|
||||||
|
width:"160",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "dictTypeShow",
|
||||||
|
tableTitleSE: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "是否启用",
|
||||||
|
width:"100",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "repairEnabledShow",
|
||||||
|
tableTitleSE: 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "工作中心名称",
|
||||||
|
width:"160",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableProp: "workCenterName",
|
||||||
|
tableTitleSE: 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "创建人",
|
||||||
|
width:"100",
|
||||||
|
tableProp: "createdBy",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "创建时间",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "createdDt",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "更新人",
|
||||||
|
width:"100",
|
||||||
|
tableProp: "updatedBy",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tableTitle: "更新时间",
|
||||||
|
width:"200",
|
||||||
|
tableProp: "updatedDt",
|
||||||
|
show_overflow_tooltip:true,
|
||||||
|
align:"center",
|
||||||
|
tableTitleSE: 9
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
]}
|
@ -0,0 +1,19 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.4.2 - 2014-10-21
|
||||||
|
* http://github.com/angular-translate/angular-translate
|
||||||
|
* Copyright (c) 2014 ; Licensed MIT
|
||||||
|
*/
|
||||||
|
angular.module('pascalprecht.translate').factory('$translateCookieStorage', [
|
||||||
|
'$cookieStore',
|
||||||
|
function ($cookieStore) {
|
||||||
|
var $translateCookieStorage = {
|
||||||
|
get: function (name) {
|
||||||
|
return $cookieStore.get(name);
|
||||||
|
},
|
||||||
|
set: function (name, value) {
|
||||||
|
$cookieStore.put(name, value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return $translateCookieStorage;
|
||||||
|
}
|
||||||
|
]);
|
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.4.2 - 2014-10-21
|
||||||
|
* http://github.com/angular-translate/angular-translate
|
||||||
|
* Copyright (c) 2014 ; Licensed MIT
|
||||||
|
*/
|
||||||
|
angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader",["$q","$http",function(a,b){return function(c){if(!c||!angular.isString(c.prefix)||!angular.isString(c.suffix))throw new Error("Couldn't load static files, no prefix or suffix specified!");var d=a.defer();return b(angular.extend({url:[c.prefix,c.key,c.suffix].join(""),method:"GET",params:""},c.$http)).success(function(a){d.resolve(a)}).error(function(){d.reject(c.key)}),d.promise}}]);
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.cmeim.basic.query.entity;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Query {
|
||||||
|
|
||||||
|
private String value;
|
||||||
|
private String text;
|
||||||
|
private String clazz;
|
||||||
|
private String alias;
|
||||||
|
private String type;
|
||||||
|
private String dictCode;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,194 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<form-generate ref="formgenerate" :lydata="lydata">
|
||||||
|
</form-generate>
|
||||||
|
<el-divider content-position="">上传质检报告</el-divider>
|
||||||
|
|
||||||
|
|
||||||
|
<el-row style="margin-left: 200px;text-align: center ;width:300px">
|
||||||
|
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
ref="upload"
|
||||||
|
:headers="uploadHeaders"
|
||||||
|
:action="uploadurl"
|
||||||
|
:on-preview="handlePreview"
|
||||||
|
:on-remove="handleRemove"
|
||||||
|
:file-list="fileList"
|
||||||
|
:on-success="onSuccess"
|
||||||
|
:auto-upload="false"
|
||||||
|
>
|
||||||
|
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
|
||||||
|
</el-upload>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
|
<el-row style="text-align: right ;margin-right: 10vw;margin-top: 10px">
|
||||||
|
<el-button type="primary" @click="handleSubmit">提交数据</el-button>
|
||||||
|
<el-button type="primary" @click="handleReset">返回</el-button>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import formGenerate from './formGenerate'
|
||||||
|
import { getToken } from '@/utils/auth'
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
layerid: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
lydata: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
name: 'check',
|
||||||
|
components: {
|
||||||
|
formGenerate
|
||||||
|
},
|
||||||
|
data: function() {
|
||||||
|
return {
|
||||||
|
fileLsit:[],
|
||||||
|
uploadHeaders:{},
|
||||||
|
uploadurl:[process.env.VUE_APP_BASE_API]+"/exec/exec/frock/Frockupload",
|
||||||
|
fileList: []//name ,url
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,
|
||||||
|
mounted() {
|
||||||
|
this.uploadHeaders={'Authorization' : 'Bearer ' + getToken()}
|
||||||
|
|
||||||
|
if(this.lydata.filejson && this.lydata.filejson.length>0){
|
||||||
|
this.fileList=JSON.parse(this.lydata.filejson)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
//文件控件---------------start----》
|
||||||
|
submitUpload() {
|
||||||
|
this.$refs.upload.submit()
|
||||||
|
},
|
||||||
|
handleRemove(file, fileList) {
|
||||||
|
console.log(file, fileList)
|
||||||
|
},
|
||||||
|
handlePreview(file) {
|
||||||
|
console.log(file)
|
||||||
|
if(file.response.data[0].url.length>0)
|
||||||
|
window.open(file.response.data[0].url)
|
||||||
|
},
|
||||||
|
|
||||||
|
onSuccess(response, file, fileList){
|
||||||
|
console.log("response",response)
|
||||||
|
console.log("file",file)
|
||||||
|
console.log("fileList",fileList)
|
||||||
|
|
||||||
|
if(response.code==200){
|
||||||
|
this.lydata.filejson=JSON.stringify(fileList);
|
||||||
|
}else {
|
||||||
|
this.$message.error("文件上传失败=》"+response.msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
this.lydata.pStutas=1//记录确认后状态,用于待确认功能 //已质检
|
||||||
|
this.lydata.dictFrockStutas=8//带确认检验
|
||||||
|
console.log( "提交数据======>",this.lydata)
|
||||||
|
// 加字段存报告文档信息
|
||||||
|
this.$frockApi.save(this.lydata).then((res) => {
|
||||||
|
console.log("质检==》",res)
|
||||||
|
if(res.status==200){
|
||||||
|
this.$parent.getData();
|
||||||
|
this.$layer.close(this.layerid)
|
||||||
|
this.$message.success("提交成功")
|
||||||
|
}else{
|
||||||
|
this.$message.error("数据提交异常===》",res.data.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
//文件控件------------------end-》
|
||||||
|
async handleSubmit() {
|
||||||
|
let params = {}
|
||||||
|
console.log(this.lydata)
|
||||||
|
console.log(this.lydata.doType)
|
||||||
|
if(this.lydata.doType=='check'){
|
||||||
|
this.$refs.upload.submit()//存在文件上传异步问题,在成功回调函数中调用接口
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.lydata.doType=='got'){
|
||||||
|
|
||||||
|
this.lydata.pStutas=5//记录确认后状态,用于待确认功能 //闲置
|
||||||
|
this.lydata.dictFrockStutas=4//已领用
|
||||||
|
this.lydata.Stutas='已领用'//参数是Stutas
|
||||||
|
this.$frockApi.changeStutas(this.lydata).then((res)=>{
|
||||||
|
console.log(res)
|
||||||
|
this.$parent.getData();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.lydata.doType=='returnF'){
|
||||||
|
this.lydata.pStutas=5//记录确认后状态,用于待确认功能 //闲置
|
||||||
|
this.lydata.dictFrockStutas=5//闲置
|
||||||
|
this.lydata.Stutas='闲置'//参数是Stutas
|
||||||
|
this.$frockApi.changeStutas(this.lydata).then((res)=>{
|
||||||
|
console.log(res)
|
||||||
|
this.$parent.getData();
|
||||||
|
})
|
||||||
|
// 把当前值转移到上次使用值
|
||||||
|
await this.$refs.formgenerate.moveCurrentToLast()
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.lydata.doType=='suerF'){
|
||||||
|
// this.lydata.pStutas=5//记录确认后状态,用于待确认功能
|
||||||
|
this.lydata.dictFrockStutas=this.lydata.pstutas
|
||||||
|
this.lydata.Stutas= this.$dictType.getExFrockStatus(this.lydata.pstutas) //参数是Stutas
|
||||||
|
|
||||||
|
this.$frockApi.changeStutas(this.lydata).then((res)=>{
|
||||||
|
console.log(res)
|
||||||
|
this.$parent.getData();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
let typeName;
|
||||||
|
switch (this.lydata.doType) {
|
||||||
|
case 'suerF':
|
||||||
|
typeName = '确认'
|
||||||
|
break
|
||||||
|
case 'got':
|
||||||
|
typeName = '取用'
|
||||||
|
break
|
||||||
|
case 'returnF':
|
||||||
|
typeName = '归还'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
console.log(typeName, '---')
|
||||||
|
//模板提交
|
||||||
|
this.$refs.formgenerate.handleSubmit(typeName);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
this.$layer.close(this.layerid)
|
||||||
|
},
|
||||||
|
handleReset() {
|
||||||
|
//重置下表单设置组件 这个显示按钮的变量
|
||||||
|
|
||||||
|
if (this.isOperate = true) {
|
||||||
|
this.lydata.isOperate = undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$layer.close(this.layerid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user