mirror of
https://gitee.com/willfree/minoaClientWindows_gradle.git
synced 2026-10-05 01:15:44 +08:00
增加了报销审批模块;邮件地址加了后缀要求(xx@pkusz.edu.cn)
This commit is contained in:
1 parent
c2ffefa3fd
commit
f1ea3d7567
58 files changed
+2747
-258
No files matched your search
Generated
+562
-232
@@ -6,7 +6,28 @@
|
||||
</artifacts-to-build>
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="f2ca1002-1ec5-49f3-ab6f-fb7dec9c9e4d" name="Default Changelist" comment="" />
|
||||
<list default="true" id="f2ca1002-1ec5-49f3-ab6f-fb7dec9c9e4d" name="Default Changelist" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/Main.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/Main.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$1.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$2.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$3.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$4.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$4.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$5.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$5.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$6.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$6.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$7.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$7.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$8.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$8.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/HomeListController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/HomeListController.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/SingleEmailDetailsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/SingleEmailDetailsController.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/WrittenEmailController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/WrittenEmailController.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/fxml/home/HomeListOverview.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/home/HomeListOverview.fxml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/fxml/mine/MyEmailOverview.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/mine/MyEmailOverview.fxml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/fxml/mine/SingleEmailDetails.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/mine/SingleEmailDetails.fxml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/fxml/mine/WrittenEmailDetails.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/mine/WrittenEmailDetails.fxml" afterDir="false" />
|
||||
</list>
|
||||
<ignored path="$PROJECT_DIR$/out/" />
|
||||
<ignored path="$PROJECT_DIR$/.gradle/" />
|
||||
<ignored path="$PROJECT_DIR$/build/" />
|
||||
@@ -80,22 +101,23 @@
|
||||
<session id="-17715935">
|
||||
<usages-collector id="statistics.lifecycle.project">
|
||||
<counts>
|
||||
<entry key="project.closed" value="4" />
|
||||
<entry key="project.open.time.18" value="1" />
|
||||
<entry key="project.closed" value="7" />
|
||||
<entry key="project.open.time.18" value="2" />
|
||||
<entry key="project.open.time.19" value="1" />
|
||||
<entry key="project.open.time.2" value="1" />
|
||||
<entry key="project.open.time.20" value="1" />
|
||||
<entry key="project.open.time.20" value="3" />
|
||||
<entry key="project.open.time.24" value="1" />
|
||||
<entry key="project.open.time.3" value="1" />
|
||||
<entry key="project.opened" value="5" />
|
||||
<entry key="project.opened" value="9" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.extensions.open">
|
||||
<counts>
|
||||
<entry key="MF" value="1" />
|
||||
<entry key="css" value="12" />
|
||||
<entry key="fxml" value="10" />
|
||||
<entry key="css" value="14" />
|
||||
<entry key="fxml" value="20" />
|
||||
<entry key="gradle" value="5" />
|
||||
<entry key="java" value="64" />
|
||||
<entry key="java" value="94" />
|
||||
<entry key="png" value="4" />
|
||||
<entry key="txt" value="2" />
|
||||
<entry key="xml" value="1" />
|
||||
@@ -103,29 +125,31 @@
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.types.open">
|
||||
<counts>
|
||||
<entry key="CSS" value="12" />
|
||||
<entry key="CSS" value="14" />
|
||||
<entry key="Groovy" value="5" />
|
||||
<entry key="Image" value="4" />
|
||||
<entry key="JAVA" value="64" />
|
||||
<entry key="JAVA" value="94" />
|
||||
<entry key="Manifest" value="1" />
|
||||
<entry key="PLAIN_TEXT" value="2" />
|
||||
<entry key="XML" value="11" />
|
||||
<entry key="XML" value="21" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.extensions.edit">
|
||||
<counts>
|
||||
<entry key="MF" value="92" />
|
||||
<entry key="fxml" value="4" />
|
||||
<entry key="gradle" value="366" />
|
||||
<entry key="java" value="740" />
|
||||
<entry key="java" value="5971" />
|
||||
<entry key="txt" value="89" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.types.edit">
|
||||
<counts>
|
||||
<entry key="Groovy" value="366" />
|
||||
<entry key="JAVA" value="740" />
|
||||
<entry key="JAVA" value="5971" />
|
||||
<entry key="Manifest" value="92" />
|
||||
<entry key="PLAIN_TEXT" value="89" />
|
||||
<entry key="XML" value="4" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
</session>
|
||||
@@ -135,20 +159,66 @@
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/Main.java">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyEmailController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="2" column="3" selection-start-line="2" selection-start-column="3" selection-end-line="2" selection-end-column="3" />
|
||||
<state relative-caret-position="-13">
|
||||
<caret line="120" column="9" lean-forward="true" selection-start-line="120" selection-start-column="9" selection-end-line="120" selection-end-column="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/message/MessageListController.java">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/DealSingleReimbursement.fxml">
|
||||
<provider editor-type-id="JavaFX-Scene-Builder" />
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/DealSingleReimbursementController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="475">
|
||||
<caret line="29" column="31" selection-start-line="29" selection-start-column="31" selection-end-line="29" selection-end-column="31" />
|
||||
<state relative-caret-position="294">
|
||||
<caret line="238" column="49" lean-forward="true" selection-start-line="238" selection-start-column="49" selection-end-line="238" selection-end-column="49" />
|
||||
<folding>
|
||||
<element signature="e#975#976#0" expanded="true" />
|
||||
<element signature="e#999#1000#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="125">
|
||||
<caret line="470" column="40" lean-forward="true" selection-start-line="470" selection-start-column="40" selection-end-line="470" selection-end-column="40" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/ReimbursementDealController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="169">
|
||||
<caret line="41" column="50" lean-forward="true" selection-start-line="41" selection-start-column="50" selection-end-line="41" selection-end-column="50" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="219">
|
||||
<caret line="369" column="29" lean-forward="true" selection-start-line="369" selection-start-column="29" selection-end-line="369" selection-end-column="29" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -156,8 +226,36 @@
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MineListController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="625">
|
||||
<caret line="30" column="67" selection-start-line="30" selection-start-column="67" selection-end-line="30" selection-end-column="67" />
|
||||
<state relative-caret-position="50">
|
||||
<caret line="37" column="4" lean-forward="true" selection-start-line="37" selection-start-column="4" selection-end-line="37" selection-end-column="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/WrittenEmailController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="181" selection-start-line="181" selection-end-line="187" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#3210#3211#0" expanded="true" />
|
||||
<element signature="e#3227#3228#0" expanded="true" />
|
||||
<element signature="e#4638#4639#0" expanded="true" />
|
||||
<element signature="e#4669#4670#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/SingleEmailDetailsController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="219">
|
||||
<caret line="56" column="43" selection-start-line="56" selection-start-column="43" selection-end-line="56" selection-end-column="43" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -168,6 +266,7 @@
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Class" />
|
||||
<option value="FxmlFile" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -175,6 +274,20 @@
|
||||
<findStrings>
|
||||
<find>controller</find>
|
||||
<find>view/</find>
|
||||
<find>reimbu</find>
|
||||
<find>email</find>
|
||||
<find>home</find>
|
||||
<find>ini</find>
|
||||
<find>时间</find>
|
||||
<find>联系人</find>
|
||||
<find>han</find>
|
||||
<find>switch</find>
|
||||
<find>reimbursementFileListItem</find>
|
||||
<find>ReimbursementListItem</find>
|
||||
<find>客户端</find>
|
||||
<find>exit</find>
|
||||
<find>show</find>
|
||||
<find>弹窗</find>
|
||||
</findStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
@@ -607,13 +720,26 @@
|
||||
<option value="$PROJECT_DIR$/ReadMe.txt" />
|
||||
<option value="$PROJECT_DIR$/META-INF/MANIFEST.MF" />
|
||||
<option value="$PROJECT_DIR$/build.gradle" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/HomeListController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MineListController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/NavigationBarController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/message/MessageListController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/Main.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/resources/fxml/home/ReimbursementApplyOverview.fxml" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/model/Reimbursement.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/resources/fxml/home/SingleReimbursementDetails.fxml" />
|
||||
<option value="$PROJECT_DIR$/src/main/resources/fxml/home/WrittenReimbursementDetails.fxml" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/SingleReimbursementDetailsController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/WrittenReimbursementController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/resources/fxml/home/ReimbursementDealOverview.fxml" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/ReimbursementApplyController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/HomeListController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/WrittenEmailController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/SingleEmailDetailsController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/ReimbursementDealController.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/DealSingleReimbursementController.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -629,7 +755,7 @@
|
||||
<select />
|
||||
</treeState>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="1">
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="-8" />
|
||||
<option name="y" value="-8" />
|
||||
<option name="width" value="1386" />
|
||||
@@ -680,8 +806,6 @@
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="AndroidView" />
|
||||
<pane id="Scope" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
@@ -690,16 +814,136 @@
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="minoa" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="minoa" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="dataRequestInterface" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="minoa" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="view" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="minoa" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="view" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="home" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="minoa" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="view" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="login" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="minoa" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="view" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="mine" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="minoa" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="view" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="mine" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="SingleEmailDetailsController.java" type="529ef68f:ClassesTreeStructureProvider$PsiClassOwnerTreeNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="fxml" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="fxml" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="home" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="fxml" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="mine" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="AndroidView" />
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="SearchEverywhereHistoryKey" value="file	ACTION	ChangeFileEncodingAction" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1581787943272" />
|
||||
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1582214408068" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/lib/sqlite-jdbc-3.30.1.jar" />
|
||||
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
|
||||
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
||||
@@ -710,10 +954,14 @@
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="E:\MyCode\newEclipseWorkspace\Demo_gradle_javafx11_01\src\main\resources\fxml\home" />
|
||||
<recent name="E:\MyCode\newEclipseWorkspace\Demo_gradle_javafx11_01\ndn" />
|
||||
<recent name="E:\MyCode\newEclipseWorkspace\Demo_gradle_javafx11_01\EXE" />
|
||||
<recent name="E:\MyCode\newEclipseWorkspace\Demo_gradle_javafx11_01\src\main\java" />
|
||||
<recent name="E:\MyCode\newEclipseWorkspace\Demo_gradle_javafx11_01" />
|
||||
<recent name="E:\MyCode\newEclipseWorkspace\Demo_gradle_javafx11_01\lib" />
|
||||
</key>
|
||||
<key name="CopyClassDialog.RECENTS_KEY">
|
||||
<recent name="cn.minoa.view.home" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="E:\MyCode\newEclipseWorkspace\Demo_gradle_javafx11_01\src\main\resources\fxml" />
|
||||
@@ -735,7 +983,7 @@
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Gradle.Demo_gradle_javafx11_01 [jar]">
|
||||
<component name="RunManager" selected="Application.Main">
|
||||
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="cn.minoa.Main" />
|
||||
<module name="Demo_gradle_javafx11_01_main" />
|
||||
@@ -847,18 +1095,21 @@
|
||||
<workItem from="1581696923134" duration="9052000" />
|
||||
<workItem from="1581750395591" duration="9823000" />
|
||||
<workItem from="1581766015797" duration="8050000" />
|
||||
<workItem from="1581787475946" duration="433000" />
|
||||
<workItem from="1581787475946" duration="766000" />
|
||||
<workItem from="1581859383332" duration="9170000" />
|
||||
<workItem from="1582094850998" duration="13191000" />
|
||||
<workItem from="1582175443289" duration="2661000" />
|
||||
<workItem from="1582199584649" duration="14818000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="35050000" />
|
||||
<option name="totallyTimeSpent" value="75223000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="1386" height="788" extended-state="1" />
|
||||
<editor active="true" />
|
||||
<frame x="-8" y="-8" width="1382" height="744" extended-state="6" />
|
||||
<layout>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.4977029" visible="true" weight="0.27978885" />
|
||||
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.4977029" visible="true" weight="0.31694403" />
|
||||
<window_info id="Structure" order="1" sideWeight="0.5022971" side_tool="true" weight="0.30542988" />
|
||||
<window_info id="Designer" order="2" />
|
||||
<window_info id="Image Layers" order="3" />
|
||||
@@ -867,7 +1118,7 @@
|
||||
<window_info id="Capture Tool" order="6" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" weight="0.32874617" />
|
||||
<window_info anchor="bottom" id="Run" order="2" weight="0.29096478" />
|
||||
<window_info anchor="bottom" id="Run" order="2" weight="0.31198686" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
@@ -884,11 +1135,43 @@
|
||||
<window_info anchor="right" id="Palette" order="3" />
|
||||
<window_info anchor="right" id="Capture Analysis" order="4" />
|
||||
<window_info anchor="right" id="Maven Projects" order="5" weight="0.3295626" />
|
||||
<window_info anchor="right" id="Gradle" order="6" visible="true" weight="0.3295626" />
|
||||
<window_info anchor="right" id="Gradle" order="6" weight="0.073373675" />
|
||||
<window_info anchor="right" id="Database" order="7" weight="0.3295626" />
|
||||
<window_info anchor="right" id="Palette	" order="8" />
|
||||
<window_info anchor="right" id="Theme Preview" order="9" />
|
||||
</layout>
|
||||
<layout-to-restore>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.4977029" visible="true" weight="0.23524962" />
|
||||
<window_info id="Structure" order="1" sideWeight="0.5022971" side_tool="true" weight="0.30542988" />
|
||||
<window_info id="Designer" order="2" />
|
||||
<window_info id="Image Layers" order="3" />
|
||||
<window_info id="UI Designer" order="4" />
|
||||
<window_info id="Favorites" order="5" sideWeight="0.5022971" side_tool="true" weight="0.30542988" />
|
||||
<window_info id="Capture Tool" order="6" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" weight="0.32874617" />
|
||||
<window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.31198686" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Build" order="7" weight="0.32874617" />
|
||||
<window_info anchor="bottom" id="Terminal" order="8" />
|
||||
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Messages" order="10" weight="0.58039814" />
|
||||
<window_info anchor="bottom" id="Database Changes" order="11" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="Version Control" order="12" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.14630468" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
<window_info anchor="right" id="Palette" order="3" />
|
||||
<window_info anchor="right" id="Capture Analysis" order="4" />
|
||||
<window_info anchor="right" id="Maven Projects" order="5" weight="0.3295626" />
|
||||
<window_info anchor="right" id="Gradle" order="6" visible="true" weight="0.073373675" />
|
||||
<window_info anchor="right" id="Database" order="7" weight="0.3295626" />
|
||||
<window_info anchor="right" id="Palette	" order="8" />
|
||||
<window_info anchor="right" id="Theme Preview" order="9" />
|
||||
</layout-to-restore>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="1" />
|
||||
@@ -901,126 +1184,6 @@
|
||||
<option name="FILTER_TARGETS" value="false" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/model/Person.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="2" lean-forward="true" selection-start-line="2" selection-end-line="2" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/model/SingleMessage.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="2" lean-forward="true" selection-start-line="2" selection-end-line="2" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/model/SingleNotice.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="275">
|
||||
<caret line="11" column="38" selection-start-line="11" selection-start-column="38" selection-end-line="11" selection-end-column="38" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/util/DateUtil.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="4" column="47" lean-forward="true" selection-start-line="4" selection-start-column="47" selection-end-line="4" selection-end-column="47" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/util/LocalDateAdapter.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="100">
|
||||
<caret line="4" lean-forward="true" selection-start-line="4" selection-end-line="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/util/Tool.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="339">
|
||||
<caret line="54" lean-forward="true" selection-start-line="54" selection-end-line="54" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/HomeList.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="25">
|
||||
<caret line="1" column="20" selection-start-line="1" selection-start-column="20" selection-end-line="1" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/HomeListOverview.fxml">
|
||||
<provider editor-type-id="JavaFX-Scene-Builder" />
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="309">
|
||||
<caret line="70" column="10" lean-forward="true" selection-start-line="70" selection-start-column="10" selection-end-line="70" selection-end-column="10" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/login/Login.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="2" column="29" selection-start-line="2" selection-start-column="29" selection-end-line="2" selection-end-column="29" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/login/Register.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="2" column="29" selection-start-line="2" selection-start-column="29" selection-end-line="2" selection-end-column="29" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/message/ChatBox.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="2" column="27" selection-start-line="2" selection-start-column="27" selection-end-line="2" selection-end-column="27" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/message/ChatBox_Version1.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="175">
|
||||
<caret line="7" column="30" selection-start-line="7" selection-start-column="30" selection-end-line="7" selection-end-column="30" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/RegisterOverviewController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="225">
|
||||
<caret line="11" column="30" lean-forward="true" selection-start-line="11" selection-start-column="30" selection-end-line="11" selection-end-column="30" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/message/ChatBoxController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="129">
|
||||
<caret line="257" column="6" selection-start-line="257" selection-start-column="6" selection-end-line="257" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/message/ChatBoxController_Version1.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="86">
|
||||
<caret line="117" column="4" lean-forward="true" selection-start-line="117" selection-start-column="4" selection-end-line="117" selection-end-column="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/message/MessageList.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="25">
|
||||
<caret line="1" column="2" lean-forward="true" selection-start-line="1" selection-start-column="2" selection-end-line="1" selection-end-column="2" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/HeadPhotoAboutMeController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="7" column="26" lean-forward="true" selection-start-line="7" selection-start-column="26" selection-end-line="7" selection-end-column="26" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/mine/MineList.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
@@ -1049,13 +1212,6 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyEmailController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="212">
|
||||
<caret line="238" column="13" lean-forward="true" selection-start-line="238" selection-start-column="13" selection-end-line="238" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/mine/MyNotice.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
@@ -1063,27 +1219,6 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyNoticeController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="7" lean-forward="true" selection-start-line="7" selection-end-line="7" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/NewFolderDialogController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="3" column="24" lean-forward="true" selection-start-line="3" selection-start-column="24" selection-end-line="3" selection-end-column="24" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/SingleEmailDetailsController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="87">
|
||||
<caret line="149" lean-forward="true" selection-start-line="149" selection-end-line="149" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/mine/SingleNoticeDetails.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="339">
|
||||
@@ -1129,13 +1264,6 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/WrittenEmailController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="975">
|
||||
<caret line="65" column="16" selection-start-line="65" selection-start-column="16" selection-end-line="65" selection-end-column="16" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/WrittenNoticeController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="175">
|
||||
@@ -1168,30 +1296,6 @@
|
||||
<entry file="file://$PROJECT_DIR$/resources/images/logo_mini.png">
|
||||
<provider selected="true" editor-type-id="images" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="60">
|
||||
<caret line="45" column="37" lean-forward="true" selection-start-line="45" selection-start-column="37" selection-end-line="45" selection-end-column="37" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="56">
|
||||
<caret line="126" lean-forward="true" selection-start-line="126" selection-end-line="126" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/HomeListController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="25">
|
||||
<caret line="2" column="24" lean-forward="true" selection-start-line="2" selection-start-column="24" selection-end-line="2" selection-end-column="24" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/images/mImage/left.png">
|
||||
<provider selected="true" editor-type-id="images" />
|
||||
</entry>
|
||||
@@ -1209,20 +1313,6 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/message/MessageListController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="475">
|
||||
<caret line="29" column="31" selection-start-line="29" selection-start-column="31" selection-end-line="29" selection-end-column="31" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MineListController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="625">
|
||||
<caret line="30" column="67" selection-start-line="30" selection-start-column="67" selection-end-line="30" selection-end-column="67" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/NavigationBarController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="314">
|
||||
@@ -1230,10 +1320,250 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/creatNDNKey.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="553">
|
||||
<caret line="36" lean-forward="true" selection-start-line="36" selection-end-line="36" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/message/MessageListController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="475">
|
||||
<caret line="29" column="31" selection-start-line="29" selection-start-column="31" selection-end-line="29" selection-end-column="31" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/DataCacheQueue.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="125">
|
||||
<caret line="6" column="29" lean-forward="true" selection-start-line="6" selection-start-column="29" selection-end-line="6" selection-end-column="29" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/Main.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="3" selection-start-line="3" selection-end-line="3" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/ReimbursementApplyOverview.fxml">
|
||||
<provider editor-type-id="JavaFX-Scene-Builder" />
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="200">
|
||||
<caret line="8" selection-start-line="8" selection-end-line="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/ReimbursementApply.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="250">
|
||||
<caret line="10" column="8" selection-start-line="10" selection-start-column="8" selection-end-line="10" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/NewFolderDialogController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="925">
|
||||
<caret line="44" selection-start-line="44" selection-end-line="44" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/model/Reimbursement.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret lean-forward="true" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#1930#1931#0" expanded="true" />
|
||||
<element signature="e#1971#1972#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="53">
|
||||
<caret line="970" lean-forward="true" selection-start-line="970" selection-end-line="970" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/model/Email.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="509">
|
||||
<caret line="30" lean-forward="true" selection-start-line="30" selection-end-line="30" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyNoticeController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="509">
|
||||
<caret line="66" selection-start-line="66" selection-end-line="66" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/WrittenReimbursementDetails.fxml">
|
||||
<provider editor-type-id="JavaFX-Scene-Builder" />
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="164">
|
||||
<caret line="23" column="127" lean-forward="true" selection-start-line="23" selection-start-column="127" selection-end-line="23" selection-end-column="127" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/ReimbursementDeal.css">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="275">
|
||||
<caret line="11" column="3" lean-forward="true" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="3" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/ReimbursementDealOverview.fxml">
|
||||
<provider editor-type-id="JavaFX-Scene-Builder" />
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="250">
|
||||
<caret line="10" column="45" lean-forward="true" selection-start-line="10" selection-start-column="45" selection-end-line="10" selection-end-column="45" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/HomeListController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="116">
|
||||
<caret line="51" selection-start-line="51" selection-end-line="51" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/ReimbursementApplyController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="238">
|
||||
<caret line="122" column="22" lean-forward="true" selection-start-line="122" selection-start-column="22" selection-end-line="122" selection-end-column="22" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#3904#3905#0" expanded="true" />
|
||||
<element signature="e#3960#3961#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/SingleReimbursementDetails.fxml">
|
||||
<provider editor-type-id="JavaFX-Scene-Builder" />
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="313">
|
||||
<caret line="20" column="23" selection-start-line="20" selection-start-column="23" selection-end-line="20" selection-end-column="23" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/SingleReimbursementDetailsController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="25">
|
||||
<caret line="112" column="35" lean-forward="true" selection-start-line="112" selection-start-column="35" selection-end-line="112" selection-end-column="35" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MineListController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="50">
|
||||
<caret line="2" column="3" selection-start-line="2" selection-start-column="3" selection-end-line="2" selection-end-column="3" />
|
||||
<caret line="37" column="4" lean-forward="true" selection-start-line="37" selection-start-column="4" selection-end-line="37" selection-end-column="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/SingleEmailDetailsController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="219">
|
||||
<caret line="56" column="43" selection-start-line="56" selection-start-column="43" selection-end-line="56" selection-end-column="43" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/WrittenReimbursementController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="200">
|
||||
<caret line="56" column="5" lean-forward="true" selection-start-line="56" selection-start-column="5" selection-end-line="56" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#1683#1684#0" expanded="true" />
|
||||
<element signature="e#1723#1724#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/home/DealSingleReimbursement.fxml">
|
||||
<provider editor-type-id="JavaFX-Scene-Builder" />
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyEmailController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-13">
|
||||
<caret line="120" column="9" lean-forward="true" selection-start-line="120" selection-start-column="9" selection-end-line="120" selection-end-column="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/WrittenEmailController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="181" selection-start-line="181" selection-end-line="187" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#3210#3211#0" expanded="true" />
|
||||
<element signature="e#3227#3228#0" expanded="true" />
|
||||
<element signature="e#4638#4639#0" expanded="true" />
|
||||
<element signature="e#4669#4670#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="125">
|
||||
<caret line="470" column="40" lean-forward="true" selection-start-line="470" selection-start-column="40" selection-end-line="470" selection-end-column="40" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/ReimbursementDealController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="169">
|
||||
<caret line="41" column="50" lean-forward="true" selection-start-line="41" selection-start-column="50" selection-end-line="41" selection-end-column="50" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="219">
|
||||
<caret line="369" column="29" lean-forward="true" selection-start-line="369" selection-start-column="29" selection-end-line="369" selection-end-column="29" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/home/DealSingleReimbursementController.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="294">
|
||||
<caret line="238" column="49" lean-forward="true" selection-start-line="238" selection-start-column="49" selection-end-line="238" selection-end-column="49" />
|
||||
<folding>
|
||||
<element signature="e#975#976#0" expanded="true" />
|
||||
<element signature="e#999#1000#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
||||
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" stylesheets="@ReimbursementDeal.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.DealSingleReimbursementController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="避免聚焦" />
|
||||
<Text layoutX="65.0" layoutY="65.0" strokeType="OUTSIDE" strokeWidth="0.0" text="申报人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text layoutX="36.0" layoutY="73.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审核人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="60.0" />
|
||||
<Text layoutX="30.0" layoutY="90.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审批状态:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="100.0" />
|
||||
<Text layoutX="30.0" layoutY="118.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销金额:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="140.0" />
|
||||
<Text layoutX="42.0" layoutY="160.0" strokeType="OUTSIDE" strokeWidth="0.0" text="单据张数:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="180.0" />
|
||||
<Text layoutX="30.0" layoutY="199.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销内容:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="220.0" />
|
||||
<Text layoutX="18.0" layoutY="219.0" strokeType="OUTSIDE" strokeWidth="0.0" text="费用详细:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="260.0" />
|
||||
<Text fx:id="reimFilesTitleText" layoutX="42.0" layoutY="243.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销凭证:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="400.0" />
|
||||
<TextArea fx:id="detailTextArea" layoutX="135.0" layoutY="220.0" prefHeight="200.0" prefWidth="200.0" wrapText="true" AnchorPane.bottomAnchor="210.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="285.0" />
|
||||
<Text fx:id="senderText" layoutX="105.0" layoutY="32.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text fx:id="receiverText" layoutX="100.0" layoutY="72.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="60.0" />
|
||||
<Text fx:id="processText" layoutX="170.0" layoutY="112.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="100.0" />
|
||||
<Text fx:id="moneyText" layoutX="100.0" layoutY="145.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="140.0" />
|
||||
<Text fx:id="numberText" layoutX="100.0" layoutY="185.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="180.0" />
|
||||
<Text fx:id="contentText" layoutX="100.0" layoutY="232.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="220.0" />
|
||||
<ListView fx:id="reimFiles" layoutX="112.0" layoutY="386.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="420.0" />
|
||||
<Button layoutX="417.0" layoutY="563.0" mnemonicParsing="false" onAction="#exit" text="取消" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="20.0" />
|
||||
<Button layoutX="271.0" layoutY="562.0" mnemonicParsing="false" onAction="#passReim" text="通过报销" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="175.0" />
|
||||
<Button layoutX="351.0" layoutY="562.0" mnemonicParsing="false" onAction="#vetoReim" text="否决报销" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="85.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -13,10 +13,10 @@
|
||||
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="7.0">
|
||||
<children>
|
||||
<ImageView fx:id="reimbursement" fitHeight="35.0" fitWidth="35.0" layoutX="45.0" layoutY="124.0" pickOnBounds="true" preserveRatio="true" />
|
||||
<Label layoutX="10.0" layoutY="10.0" prefHeight="35.0" text="报销" />
|
||||
<Label layoutX="10.0" layoutY="10.0" prefHeight="35.0" text="报销申请" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Button mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
<Button mnemonicParsing="false" onAction="#showReimApplyView" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<AnchorPane layoutX="40.0" layoutY="40.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="80.0">
|
||||
@@ -24,10 +24,10 @@
|
||||
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="7.0">
|
||||
<children>
|
||||
<ImageView fx:id="entry_examination" fitHeight="35.0" fitWidth="35.0" layoutX="45.0" layoutY="124.0" pickOnBounds="true" preserveRatio="true" />
|
||||
<Label layoutX="10.0" layoutY="10.0" prefHeight="35.0" text="入职审批" />
|
||||
<Label layoutX="10.0" layoutY="10.0" prefHeight="35.0" text="报销审批" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Button mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
<Button mnemonicParsing="false" onAction="#showReimDealView" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<AnchorPane layoutX="30.0" layoutY="30.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="130.0">
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
/*list样式
|
||||
* */
|
||||
.list-cell:empty {
|
||||
-fx-background-color: white;
|
||||
}
|
||||
/*页面底色
|
||||
*/
|
||||
#upPane{
|
||||
-fx-background-color:#E8F2FE;
|
||||
}
|
||||
/*文件图标样式
|
||||
*/
|
||||
.head{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-background-color: rgba(255,255,255,0);
|
||||
-fx-background-image: url("file:resources/images/headPhotos/default.png");
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
.head:hover{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
.head:pressed{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<AnchorPane prefHeight="638.0" prefWidth="548.0" stylesheets="@ReimbursementApply.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.ReimbursementApplyController">
|
||||
<children>
|
||||
<ListView fx:id="reimbursementList" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="120.0" />
|
||||
<AnchorPane fx:id="upPane" prefHeight="55.0" prefWidth="548.0">
|
||||
<children>
|
||||
<Text fill="#370b5b" strokeType="OUTSIDE" strokeWidth="0.0" text="报销申请" textAlignment="CENTER" AnchorPane.leftAnchor="25.0" AnchorPane.topAnchor="15.0">
|
||||
<font>
|
||||
<Font name="Arial Black" size="18.0" />
|
||||
</font>
|
||||
</Text>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<Text layoutX="45.0" layoutY="96.0" strokeType="OUTSIDE" strokeWidth="0.0" text="我发起的" underline="true" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="72.0" />
|
||||
<Text layoutX="96.0" layoutY="96.0" strokeType="OUTSIDE" strokeWidth="0.0" text="我审批的" underline="true" AnchorPane.leftAnchor="122.0" AnchorPane.topAnchor="72.0" />
|
||||
<Button layoutX="39.0" layoutY="64.0" mnemonicParsing="false" onAction="#switchToSendBox" opacity="0.0" prefWidth="60.0" AnchorPane.leftAnchor="43.0" AnchorPane.topAnchor="68.0" />
|
||||
<Button mnemonicParsing="false" onAction="#switchToRecvBox" opacity="0.0" prefWidth="60.0" AnchorPane.leftAnchor="115.0" AnchorPane.topAnchor="68.0" />
|
||||
<Text fx:id="listTitleText" strokeType="OUTSIDE" strokeWidth="0.0" text="xxxx审批列表" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="105.0" />
|
||||
<Button layoutX="443.0" layoutY="586.0" mnemonicParsing="false" onAction="#handleWritter" text="申请报销" AnchorPane.bottomAnchor="30.0" AnchorPane.rightAnchor="60.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -0,0 +1,46 @@
|
||||
/*list样式
|
||||
* */
|
||||
.list-cell:empty {
|
||||
-fx-background-color: white;
|
||||
}
|
||||
/*页面底色
|
||||
*/
|
||||
#upPane{
|
||||
-fx-background-color:#E8F2FE;
|
||||
}
|
||||
/*文件图标样式
|
||||
*/
|
||||
.head{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-background-color: rgba(255,255,255,0);
|
||||
-fx-background-image: url("file:resources/images/headPhotos/default.png");
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
.head:hover{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
.head:pressed{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
|
||||
<AnchorPane prefHeight="638.0" prefWidth="548.0" stylesheets="@ReimbursementDeal.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.ReimbursementDealController">
|
||||
<children>
|
||||
<AnchorPane fx:id="upPane" prefHeight="55.0" prefWidth="548.0">
|
||||
<children>
|
||||
<Text fill="#370b5b" strokeType="OUTSIDE" strokeWidth="0.0" text="报销审批" AnchorPane.leftAnchor="25.0" AnchorPane.topAnchor="15.0">
|
||||
<font>
|
||||
<Font name="Arial Black" size="18.0" />
|
||||
</font>
|
||||
</Text>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<Text layoutX="41.0" layoutY="99.0" strokeType="OUTSIDE" strokeWidth="0.0" text="我收到的报销待审批列表" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="100.0" />
|
||||
<ListView fx:id="reimbursementList" layoutX="60.0" layoutY="119.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="120.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" stylesheets="@ReimbursementDeal.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.SingleReimbursementDetailsController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="避免聚焦" />
|
||||
<Text layoutX="65.0" layoutY="65.0" strokeType="OUTSIDE" strokeWidth="0.0" text="申报人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text layoutX="36.0" layoutY="73.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审核人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="60.0" />
|
||||
<Text layoutX="30.0" layoutY="90.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审批状态:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="100.0" />
|
||||
<Text layoutX="30.0" layoutY="118.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销金额:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="140.0" />
|
||||
<Text layoutX="42.0" layoutY="160.0" strokeType="OUTSIDE" strokeWidth="0.0" text="单据张数:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="180.0" />
|
||||
<Text layoutX="30.0" layoutY="199.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销内容:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="220.0" />
|
||||
<Text layoutX="18.0" layoutY="219.0" strokeType="OUTSIDE" strokeWidth="0.0" text="费用详细:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="260.0" />
|
||||
<Text fx:id="reimFilesTitleText" layoutX="42.0" layoutY="243.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销凭证:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="400.0" />
|
||||
<TextArea fx:id="detailTextArea" layoutX="135.0" layoutY="220.0" prefHeight="200.0" prefWidth="200.0" wrapText="true" AnchorPane.bottomAnchor="210.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="285.0" />
|
||||
<Text fx:id="senderText" layoutX="105.0" layoutY="32.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text fx:id="receiverText" layoutX="100.0" layoutY="72.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="60.0" />
|
||||
<Text fx:id="processText" layoutX="170.0" layoutY="112.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="100.0" />
|
||||
<Text fx:id="moneyText" layoutX="100.0" layoutY="145.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="140.0" />
|
||||
<Text fx:id="numberText" layoutX="100.0" layoutY="185.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="180.0" />
|
||||
<Text fx:id="contentText" layoutX="100.0" layoutY="232.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="220.0" />
|
||||
<ListView fx:id="reimFiles" layoutX="112.0" layoutY="386.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="420.0" />
|
||||
<Button layoutX="417.0" layoutY="563.0" mnemonicParsing="false" onAction="#exit" text="OK" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="20.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.WrittenReimbursementController">
|
||||
<children>
|
||||
<Text layoutX="58.0" layoutY="54.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审核人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text layoutX="30.0" layoutY="87.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销金额:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="70.0" />
|
||||
<Text layoutX="42.0" layoutY="133.0" strokeType="OUTSIDE" strokeWidth="0.0" text="单据张数:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="120.0" />
|
||||
<Text layoutX="66.0" layoutY="195.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销内容:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="170.0" />
|
||||
<Text layoutX="48.0" layoutY="239.0" strokeType="OUTSIDE" strokeWidth="0.0" text="费用详细:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="220.0" />
|
||||
<Text layoutX="42.0" layoutY="289.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销凭证:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="360.0" />
|
||||
<TextArea fx:id="detailArea" layoutX="90.0" layoutY="120.0" prefHeight="200.0" prefWidth="200.0" wrapText="true" AnchorPane.bottomAnchor="250.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="245.0" />
|
||||
<ListView fx:id="reimbursementFiles" layoutX="108.0" layoutY="360.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="380.0" />
|
||||
<Button layoutX="209.0" layoutY="550.0" mnemonicParsing="false" onAction="#addFilesToReimbursement" text="添加附件" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="185.0" />
|
||||
<Button layoutX="352.0" layoutY="567.0" mnemonicParsing="false" onAction="#exit" text="取消" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="120.0" />
|
||||
<Button layoutX="410.0" layoutY="567.0" mnemonicParsing="false" onAction="#handleSendReimbursement" text="发送" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="55.0" />
|
||||
<TextField fx:id="receiverField" layoutX="106.0" layoutY="16.0" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="16.0" />
|
||||
<TextField fx:id="moneyField" layoutX="106.0" layoutY="66.0" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="66.0" />
|
||||
<TextField fx:id="numberField" layoutX="106.0" layoutY="116.0" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="116.0" />
|
||||
<TextField fx:id="contentField" layoutX="106.0" layoutY="166.0" AnchorPane.leftAnchor="100.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="166.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -20,7 +20,7 @@
|
||||
<ListView fx:id="emailList" layoutX="135.0" layoutY="141.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="120.0" />
|
||||
<Button layoutX="424.0" layoutY="601.0" mnemonicParsing="false" onAction="#handleWritter" text="写信" AnchorPane.bottomAnchor="30.0" AnchorPane.rightAnchor="60.0" />
|
||||
<Text layoutX="50.0" layoutY="85.0" onDragEntered="#switchToRecvBox" strokeType="OUTSIDE" strokeWidth="0.0" text="收件箱" underline="true" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="72.0" />
|
||||
<Text layoutX="120.0" layoutY="84.0" onDragEntered="#switchToSendBox" strokeType="OUTSIDE" strokeWidth="0.0" text="发件箱" underline="true" />
|
||||
<Text layoutX="120.0" layoutY="84.0" onDragEntered="#switchToSendBox" strokeType="OUTSIDE" strokeWidth="0.0" text="发件箱" underline="true" AnchorPane.leftAnchor="120.0" AnchorPane.topAnchor="72.0" />
|
||||
<Text fx:id="listTitleText" layoutX="249.0" layoutY="117.0" strokeType="OUTSIDE" strokeWidth="0.0" text="xx列表" textAlignment="CENTER" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="105.0" />
|
||||
<Button layoutX="41.0" layoutY="87.0" mnemonicParsing="false" onAction="#switchToRecvBox" opacity="0.0" prefWidth="50.0" text="R" AnchorPane.leftAnchor="42.0" AnchorPane.topAnchor="68.0" />
|
||||
<Button layoutX="222.0" layoutY="76.0" mnemonicParsing="false" onAction="#switchToSendBox" opacity="0.0" prefWidth="50.0" text="S" AnchorPane.leftAnchor="115.0" AnchorPane.topAnchor="68.0" />
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.mine.SingleEmailDetailsController">
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" stylesheets="@../home/ReimbursementDeal.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.mine.SingleEmailDetailsController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="透明=>避免自动聚焦" />
|
||||
<Text layoutX="30.0" layoutY="33.0" strokeType="OUTSIDE" strokeWidth="0.0" text="来自:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.mine.WrittenEmailController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="避免聚焦" />
|
||||
<Text layoutX="54.0" layoutY="49.0" strokeType="OUTSIDE" strokeWidth="0.0" text="收件人:" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="50.0" />
|
||||
<Text layoutX="54.0" layoutY="106.0" strokeType="OUTSIDE" strokeWidth="0.0" text="主题:" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="90.0" />
|
||||
<Text layoutX="54.0" layoutY="185.0" strokeType="OUTSIDE" strokeWidth="0.0" text="正文:" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="130.0" />
|
||||
|
||||
@@ -8,14 +8,9 @@ import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import cn.minoa.dataRequestInterface.MinoaDataAPI;
|
||||
import cn.minoa.model.Email;
|
||||
import cn.minoa.model.Loginer;
|
||||
import cn.minoa.model.NotReadMessageList;
|
||||
import cn.minoa.model.Person;
|
||||
import cn.minoa.model.SingleMessage;
|
||||
import cn.minoa.model.SingleNotice;
|
||||
import cn.minoa.model.*;
|
||||
import cn.minoa.view.NavigationBarController;
|
||||
import cn.minoa.view.home.HomeListController;
|
||||
import cn.minoa.view.home.*;
|
||||
import cn.minoa.view.login.LoginOverviewController;
|
||||
import cn.minoa.view.login.RegisterOverviewController;
|
||||
import cn.minoa.view.message.ChatBoxController;
|
||||
@@ -71,6 +66,8 @@ public class MainApp extends Application {
|
||||
private final String MAIN_EMAILPANE;
|
||||
private final String MAIN_CLOUDFILEPANE;
|
||||
private final String MAIN_ABOUTMINEPANE;
|
||||
private final String MAIN_REIMPANE;
|
||||
private final String MAIN_REIMDEALPANE;
|
||||
|
||||
// 判断联系人列表是否已经被完整加载的锁(保证刷新小红点的时候联系人列表已经产生)
|
||||
private boolean contactListFinished;
|
||||
@@ -121,6 +118,7 @@ public class MainApp extends Application {
|
||||
fileServerBinPath = "/";
|
||||
sharedFileServerPath = "/share/";
|
||||
// userHeadPhotoBinPath = "E:\\MyCode\\newEclipseWorkspace\\minoa_client_windows_JavaFX11\\resources\\images\\headPhotos\\";
|
||||
System.out.println("客户端根目录:"+getClientPath());
|
||||
userHeadPhotoBinPath = getClientPath() + "\\resources\\images\\headPhotos\\";
|
||||
// System.out.println(userHeadPhotoBinPath);
|
||||
sliceSize = 7000;
|
||||
@@ -137,6 +135,8 @@ public class MainApp extends Application {
|
||||
MAIN_EMAILPANE = "MAIN_EMAILPANE";
|
||||
MAIN_CLOUDFILEPANE = "MAIN_CLOUDFILEPANE";
|
||||
MAIN_ABOUTMINEPANE = "MAIN_ABOUTMINEPANE";
|
||||
MAIN_REIMPANE = "MAIN_REIMPANE";
|
||||
MAIN_REIMDEALPANE = "MAIN_REIMDEALPANE";
|
||||
// 记录字符串
|
||||
currentSecondPane = SECOND_NULLPANE;
|
||||
currentMainPane = MAIN_NULLPANE;
|
||||
@@ -158,7 +158,7 @@ public class MainApp extends Application {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println("客户端根目录:" + path);
|
||||
// System.out.println("客户端根目录:" + path);
|
||||
return path;
|
||||
}
|
||||
|
||||
@@ -405,6 +405,143 @@ public class MainApp extends Application {
|
||||
currentSecondPane = SECOND_HOMEPANE;
|
||||
}
|
||||
|
||||
// 设为报销申请
|
||||
public void showReimbursementOverview() throws IOException {
|
||||
// 加载FXMLLoader
|
||||
FXMLLoader loader = new FXMLLoader();
|
||||
loader.setLocation(MainApp.class.getClassLoader().getResource("fxml/home/ReimbursementApplyOverview.fxml"));
|
||||
|
||||
// 修改主面板内容
|
||||
barController.skipMainContextView(loader);
|
||||
|
||||
// 设置对应的控制器
|
||||
ReimbursementApplyController reimbursementApplyController = loader.getController();
|
||||
reimbursementApplyController.setMainApp(this);
|
||||
|
||||
currentMainPane = MAIN_REIMPANE;
|
||||
}
|
||||
|
||||
// 重新加载我的报销【我申报的和我审核的】
|
||||
public void reloadReimbursementOverview(String controlString) throws IOException {
|
||||
// 加载FXMLLoader
|
||||
FXMLLoader loader = new FXMLLoader();
|
||||
loader.setLocation(MainApp.class.getClassLoader().getResource("fxml/home/ReimbursementApplyOverview.fxml"));
|
||||
|
||||
// 修改主面板内容
|
||||
barController.skipMainContextView(loader);
|
||||
|
||||
// 设置对应的控制器
|
||||
ReimbursementApplyController reimbursementApplyController = loader.getController();
|
||||
reimbursementApplyController.setMainApp(this, controlString);
|
||||
|
||||
currentMainPane = MAIN_REIMPANE;
|
||||
}
|
||||
|
||||
// 展示某条报销的详细信息
|
||||
public void showReimbursementDetailsDialog(Reimbursement reimbursement) {
|
||||
try {
|
||||
// Load the fxml file and create a new stage for the popup dialog.
|
||||
FXMLLoader loader = new FXMLLoader();
|
||||
loader.setLocation(MainApp.class.getClassLoader().getResource("fxml/home/SingleReimbursementDetails.fxml"));
|
||||
AnchorPane page = (AnchorPane) loader.load();
|
||||
|
||||
// Create the dialog Stage.
|
||||
Stage dialogStage = new Stage();
|
||||
dialogStage.initStyle(StageStyle.TRANSPARENT);
|
||||
dialogStage.setTitle("报销");
|
||||
dialogStage.initModality(Modality.WINDOW_MODAL);
|
||||
dialogStage.initOwner(primaryStage);
|
||||
Scene scene = new Scene(page);
|
||||
dialogStage.setScene(scene);
|
||||
|
||||
// Set the controller.
|
||||
SingleReimbursementDetailsController controller = loader.getController();
|
||||
controller.setDialogStage(dialogStage);
|
||||
controller.setMainApp(this);
|
||||
controller.setReimInfo(reimbursement);
|
||||
|
||||
// Show the dialog and wait until the user closes it
|
||||
dialogStage.showAndWait();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 审核某条报销
|
||||
public void dealReimbursementDetailsDialog(Reimbursement reimbursement) {
|
||||
try {
|
||||
// Load the fxml file and create a new stage for the popup dialog.
|
||||
FXMLLoader loader = new FXMLLoader();
|
||||
loader.setLocation(MainApp.class.getClassLoader().getResource("fxml/home/DealSingleReimbursement.fxml"));
|
||||
AnchorPane page = (AnchorPane) loader.load();
|
||||
|
||||
// Create the dialog Stage.
|
||||
Stage dialogStage = new Stage();
|
||||
dialogStage.initStyle(StageStyle.TRANSPARENT);
|
||||
dialogStage.setTitle("审核报销");
|
||||
dialogStage.initModality(Modality.WINDOW_MODAL);
|
||||
dialogStage.initOwner(primaryStage);
|
||||
Scene scene = new Scene(page);
|
||||
dialogStage.setScene(scene);
|
||||
|
||||
// Set the controller.
|
||||
DealSingleReimbursementController controller = loader.getController();
|
||||
controller.setDialogStage(dialogStage);
|
||||
controller.setMainApp(this);
|
||||
controller.setReimInfo(reimbursement);
|
||||
|
||||
// Show the dialog and wait until the user closes it
|
||||
dialogStage.showAndWait();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 展示编辑报销界面
|
||||
public void showWritterReimbursementDialog() {
|
||||
try {
|
||||
// Load the fxml file and create a new stage for the popup dialog.
|
||||
FXMLLoader loader = new FXMLLoader();
|
||||
loader.setLocation(MainApp.class.getClassLoader().getResource("fxml/home/WrittenReimbursementDetails.fxml"));
|
||||
AnchorPane page = (AnchorPane) loader.load();
|
||||
|
||||
// Create the dialog Stage.
|
||||
Stage dialogStage = new Stage();
|
||||
dialogStage.initStyle(StageStyle.TRANSPARENT);
|
||||
dialogStage.setTitle("报销申请");
|
||||
dialogStage.initModality(Modality.WINDOW_MODAL);
|
||||
dialogStage.initOwner(primaryStage);
|
||||
Scene scene = new Scene(page);
|
||||
dialogStage.setScene(scene);
|
||||
|
||||
// Set the controller.
|
||||
WrittenReimbursementController controller = loader.getController();
|
||||
controller.setStage(dialogStage);
|
||||
controller.setMainApp(this);
|
||||
|
||||
// Show the dialog and wait until the user closes it
|
||||
dialogStage.showAndWait();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 设为报销审核
|
||||
public void showReimbursementDealOverview() throws IOException {
|
||||
// 加载FXMLLoader
|
||||
FXMLLoader loader = new FXMLLoader();
|
||||
loader.setLocation(MainApp.class.getClassLoader().getResource("fxml/home/ReimbursementDealOverview.fxml"));
|
||||
|
||||
// 修改主面板内容
|
||||
barController.skipMainContextView(loader);
|
||||
|
||||
// 设置对应的控制器
|
||||
ReimbursementDealController controller = loader.getController();
|
||||
controller.setMainApp(this);
|
||||
|
||||
currentMainPane = MAIN_REIMDEALPANE;
|
||||
}
|
||||
|
||||
// 二级导航栏设为联系人列表页
|
||||
public void showMessageListOverview() throws IOException {
|
||||
contactListFinished = false;
|
||||
|
||||
@@ -27,8 +27,8 @@ import net.named_data.jndn.util.Blob;
|
||||
public class MinoaDataAPI {
|
||||
static private String keyChainNameString = "/wefree";
|
||||
static private String minoaServerIpString = "121.15.171.89";
|
||||
// static private String pidDbPathString = "E:\\MyCode\\newEclipseWorkspace\\minoa_client_windows_JavaFX11";
|
||||
static private String pidDbPathString = "";
|
||||
private String pidDbPathString;
|
||||
// static private String pidDbPathString = "";
|
||||
static private String globalPrefixString = "/ndn/edu/pkusz/OA";
|
||||
|
||||
KeyChain keyChain;
|
||||
@@ -41,6 +41,7 @@ public class MinoaDataAPI {
|
||||
this.face = new Face(minoaServerIpString);
|
||||
this.dataCacheQueue = new DataCacheQueue();
|
||||
this.mainApp = mainApp;
|
||||
pidDbPathString=mainApp.getClientPath()+"\\ndn";
|
||||
runFace();
|
||||
try {
|
||||
// 密钥“黑盒”
|
||||
@@ -366,6 +367,9 @@ public class MinoaDataAPI {
|
||||
case "/getDataSlice":
|
||||
requestStr = orderInfo.getJsonString();
|
||||
break;
|
||||
case "/dealApproval":
|
||||
requestStr = orderInfo.getJsonString();
|
||||
break;
|
||||
default:
|
||||
requestStr = "*wrong command string*";
|
||||
break;
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
package cn.minoa.model;
|
||||
//报销类
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import javafx.beans.property.*;
|
||||
|
||||
public class Reimbursement {
|
||||
// 报销发起方
|
||||
private StringProperty sender;
|
||||
// 报销审批方
|
||||
private StringProperty receiver;
|
||||
// 报销编号
|
||||
private IntegerProperty id;
|
||||
// 报销状态
|
||||
private IntegerProperty process;
|
||||
//报销日期
|
||||
private LongProperty date;
|
||||
// 报销内容
|
||||
private StringProperty content;
|
||||
// 报销单据张数
|
||||
private IntegerProperty number;
|
||||
//报销总价值
|
||||
private DoubleProperty totalMoney;
|
||||
//报销费用详细
|
||||
private StringProperty detail;
|
||||
// 报销中的附件列表
|
||||
public List<String> files;
|
||||
|
||||
public Reimbursement() {
|
||||
// TODO Auto-generated constructor stub
|
||||
detail = new SimpleStringProperty();
|
||||
totalMoney=new SimpleDoubleProperty();
|
||||
number = new SimpleIntegerProperty();
|
||||
date =new SimpleLongProperty();
|
||||
process=new SimpleIntegerProperty();
|
||||
content = new SimpleStringProperty();
|
||||
sender = new SimpleStringProperty();
|
||||
receiver = new SimpleStringProperty();
|
||||
id = new SimpleIntegerProperty();
|
||||
files=new LinkedList<String>();
|
||||
}
|
||||
|
||||
// id
|
||||
public void setId(Integer id) {
|
||||
this.id.set(id);
|
||||
}
|
||||
public Integer getId() {
|
||||
return this.id.get();
|
||||
}
|
||||
public IntegerProperty idProperty() {
|
||||
return id;
|
||||
}
|
||||
|
||||
// sender
|
||||
public void setSender(String sender) {
|
||||
this.sender.set(sender);
|
||||
}
|
||||
|
||||
public String getSender() {
|
||||
return this.sender.get();
|
||||
}
|
||||
|
||||
public StringProperty senderProperty() {
|
||||
return sender;
|
||||
}
|
||||
|
||||
// receiver
|
||||
public void setReceiver(String receiver) {
|
||||
this.receiver.set(receiver);
|
||||
}
|
||||
|
||||
public String getReceiver() {
|
||||
return this.receiver.get();
|
||||
}
|
||||
|
||||
public StringProperty receiverProperty() {
|
||||
return receiver;
|
||||
}
|
||||
|
||||
//process
|
||||
public void setProcess(Integer process){
|
||||
this.process.set(process);
|
||||
}
|
||||
|
||||
public Integer getProcess(){
|
||||
return process.get();
|
||||
}
|
||||
|
||||
public IntegerProperty processProperty(){
|
||||
return process;
|
||||
}
|
||||
|
||||
//date
|
||||
public void setDate(Long date){
|
||||
this.date.set(date);
|
||||
}
|
||||
|
||||
public Long getDate(){
|
||||
return date.get();
|
||||
}
|
||||
|
||||
public LongProperty dateProperty(){
|
||||
return date;
|
||||
}
|
||||
|
||||
//number
|
||||
public void setNumber(Integer number){
|
||||
this.number.set(number);
|
||||
}
|
||||
|
||||
public Integer getNumber(){
|
||||
return number.get();
|
||||
}
|
||||
|
||||
public IntegerProperty numberProperty(){
|
||||
return number;
|
||||
}
|
||||
|
||||
//totalMoney
|
||||
public void setTotalMoney(Double totalMoney){
|
||||
this.totalMoney.set(totalMoney);
|
||||
}
|
||||
|
||||
public Double getTotalMoney(){
|
||||
return totalMoney.get();
|
||||
}
|
||||
|
||||
public DoubleProperty totalMoneyProperty(){
|
||||
return totalMoney;
|
||||
}
|
||||
|
||||
// detail
|
||||
public void setDetail(String detail) {
|
||||
this.detail.set(detail);
|
||||
}
|
||||
|
||||
public String getDetail() {
|
||||
return detail.get();
|
||||
}
|
||||
|
||||
public StringProperty detailProperty() {
|
||||
return detail;
|
||||
}
|
||||
|
||||
// content
|
||||
public void setContent(String content) {
|
||||
this.content.set(content);
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content.get();
|
||||
}
|
||||
|
||||
public StringProperty contentProperty() {
|
||||
return content;
|
||||
}
|
||||
|
||||
// 获取附件文件数目
|
||||
public Integer getFilesNumber() {
|
||||
return files.size();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,247 @@
|
||||
package cn.minoa.view.home;
|
||||
|
||||
import cn.minoa.MainApp;
|
||||
import cn.minoa.dataRequestInterface.OrderInfo;
|
||||
import cn.minoa.dataRequestInterface.ResponseData;
|
||||
import cn.minoa.model.Email;
|
||||
import cn.minoa.model.Reimbursement;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.ListView;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.text.Text;
|
||||
import javafx.stage.DirectoryChooser;
|
||||
import javafx.stage.Stage;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class DealSingleReimbursementController {
|
||||
private MainApp mainApp;
|
||||
private Stage dialogStage;
|
||||
private Integer aprovalId;
|
||||
|
||||
@FXML
|
||||
private Text senderText;
|
||||
@FXML
|
||||
private Text receiverText;
|
||||
@FXML
|
||||
private Text processText;
|
||||
@FXML
|
||||
private Text moneyText;
|
||||
@FXML
|
||||
private Text numberText;
|
||||
@FXML
|
||||
private Text contentText;
|
||||
@FXML
|
||||
private TextArea detailTextArea;
|
||||
|
||||
@FXML
|
||||
private Text reimFilesTitleText;
|
||||
@FXML
|
||||
private ListView<Pane> reimFiles;
|
||||
|
||||
public DealSingleReimbursementController(){
|
||||
aprovalId=0;
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void initialize() {
|
||||
// 在fxml被载入时候被自动调用
|
||||
// 监听选择的改变
|
||||
reimFiles.getSelectionModel().selectedItemProperty()
|
||||
.addListener((observable, oldValue, newValue) -> downloadReimFile(newValue.getId()));
|
||||
}
|
||||
|
||||
/*
|
||||
* @param mainApp
|
||||
*/
|
||||
public void setMainApp(MainApp mainApp) {
|
||||
this.mainApp = mainApp;
|
||||
}
|
||||
|
||||
public void setReimInfo(Reimbursement reimbursement) {
|
||||
senderText.setText(reimbursement.getSender());
|
||||
receiverText.setText(reimbursement.getReceiver());
|
||||
processText.setText(reimbursement.getProcess().toString());
|
||||
moneyText.setText(reimbursement.getTotalMoney().toString());
|
||||
numberText.setText(reimbursement.getNumber().toString());
|
||||
contentText.setText(reimbursement.getContent());
|
||||
detailTextArea.setText(reimbursement.getDetail());
|
||||
aprovalId=reimbursement.getId();
|
||||
// 如果邮件带有附件,将其显示到前端
|
||||
showReimFiles(reimbursement);
|
||||
}
|
||||
|
||||
private void showReimFiles(Reimbursement reimbursement) {
|
||||
if (reimbursement.getFilesNumber() == 0) {
|
||||
// 没有文件,隐藏附件列表
|
||||
// ...
|
||||
reimFilesTitleText.setText("报销凭证【当前报销申请无附加凭证】");
|
||||
} else {
|
||||
// 有文件,展示到前端
|
||||
for (int i = 0; i < reimbursement.getFilesNumber(); i++) {
|
||||
reimFiles.getItems().add(new reimbursementFileListItem(reimbursement.files.get(i)).getPaneItem());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//从服务器下载选中的附件到指定的本地文件夹下
|
||||
private void downloadReimFile(String pathfilename) {
|
||||
//选择要下载到的文件夹
|
||||
String localDirString=mainApp.fileLocalPath;
|
||||
DirectoryChooser directoryChooser=new DirectoryChooser();
|
||||
directoryChooser.setTitle("选择要下载到的本地文件夹");
|
||||
Stage selectFileStage = new Stage();
|
||||
File file = directoryChooser.showDialog(selectFileStage);
|
||||
if (file != null) {
|
||||
//文件不为空,且不是文件夹
|
||||
if(file.isDirectory()) {
|
||||
localDirString=file.getPath()+"\\";
|
||||
System.out.println("选中的文件夹为:"+localDirString);
|
||||
}else {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("选中类型错误");
|
||||
alert.setHeaderText("你的选中类型错误");
|
||||
alert.setContentText("请确保你选中的是一个文件夹而不是一个文件。");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}else{
|
||||
return ;
|
||||
}
|
||||
|
||||
System.out.println("开始下载... :"+pathfilename);
|
||||
int flag=mainApp.downloadFileByPathfilename(pathfilename,localDirString);
|
||||
if(flag==0) {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("下载成功");
|
||||
alert.setHeaderText("下载文件成功");
|
||||
alert.setContentText("您请求的文件数据已经被全部下载到本地,"
|
||||
+ "如有发现打开异常或数据内容并非所求,说明出现了服务器数据请求问题。"
|
||||
+ "您的文件保存位置为:"+localDirString);
|
||||
alert.showAndWait();
|
||||
}else {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("下载失败");
|
||||
alert.setHeaderText("下载文件失败");
|
||||
alert.setContentText("本地文件数据写入失败,请检查是否有权限访问默认存储位置。"
|
||||
+ "您的文件默认保存位置为:"+localDirString);
|
||||
alert.showAndWait();
|
||||
}
|
||||
}
|
||||
|
||||
public void setDialogStage(Stage stage) {
|
||||
this.dialogStage = stage;
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void exit() {
|
||||
this.dialogStage.close();
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void passReim(){
|
||||
//通过报销
|
||||
//否决报销
|
||||
Integer r=makeReim(1);
|
||||
if(r==0){
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("通过报销成功");
|
||||
alert.setHeaderText("已通过该报销申请");
|
||||
alert.setContentText("已通过该报销申请,报销的ID为:"+aprovalId);
|
||||
alert.showAndWait();
|
||||
exit();
|
||||
}else{
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("通过报销失败");
|
||||
alert.setHeaderText("通过该报销申请失败");
|
||||
alert.setContentText("由于未知原因,不能通过该报销申请,报销的ID为:"+aprovalId);
|
||||
alert.showAndWait();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void vetoReim(){
|
||||
//否决报销
|
||||
Integer r=makeReim(0);
|
||||
if(r==0){
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("否决报销成功");
|
||||
alert.setHeaderText("已否决该报销申请");
|
||||
alert.setContentText("已否决该报销申请,报销的ID为:"+aprovalId);
|
||||
alert.showAndWait();
|
||||
exit();
|
||||
}else{
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("否决报销失败");
|
||||
alert.setHeaderText("否决该报销申请失败");
|
||||
alert.setContentText("由于未知原因,不能否决该报销申请,报销的ID为:"+aprovalId);
|
||||
alert.showAndWait();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
//审核报销:0不通过,1通过
|
||||
private Integer makeReim(Integer rstCode){
|
||||
if(aprovalId==0){
|
||||
return -1;
|
||||
}
|
||||
// 请求数据
|
||||
OrderInfo orderInfo = new OrderInfo();
|
||||
ResponseData responseData = new ResponseData();
|
||||
Long seqLong = mainApp.getNewDataReqId();
|
||||
orderInfo.setSeq(seqLong);
|
||||
orderInfo.setJsonString(getDealApproval(aprovalId,rstCode));
|
||||
mainApp.minoaDataAPI.executeOrder("/dealApproval", orderInfo);
|
||||
responseData = mainApp.minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
|
||||
JSONObject jsonObject = responseData.praseRequestData();
|
||||
responseData.printSelf();
|
||||
// 解析数据
|
||||
Integer codeInteger = null;
|
||||
try {
|
||||
codeInteger = jsonObject.getInt("code");
|
||||
} catch (JSONException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (codeInteger == 200) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// 审核报销命令: 0表示不通过,1表示通过
|
||||
private String getDealApproval(Integer aprId,Integer rstCode) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
String commandString = "/dealApproval";
|
||||
String usernameString = mainApp.loginer.getUserName();
|
||||
String uuidString = mainApp.loginer.getUuid();
|
||||
Integer approvalIdInteger = aprId;
|
||||
Integer approvalRstInteger = rstCode;
|
||||
try {
|
||||
jsonObject.put("command", commandString);
|
||||
jsonObject.put("username", usernameString);
|
||||
jsonObject.put("uuid", uuidString);
|
||||
jsonObject.put("approvalId", approvalIdInteger);
|
||||
jsonObject.put("approvalRst", approvalRstInteger);
|
||||
jsonObject.put("reason","no reason");
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
System.out.println("exception: " + e.getMessage());
|
||||
}
|
||||
return jsonObject.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import javafx.fxml.FXML;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class HomeListController {
|
||||
@SuppressWarnings("unused")
|
||||
@@ -40,4 +41,14 @@ public class HomeListController {
|
||||
public void setMainApp(MainApp mainApp) {
|
||||
this.mainApp = mainApp;
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void showReimApplyView() throws IOException {
|
||||
mainApp.showReimbursementOverview();
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void showReimDealView() throws IOException {
|
||||
mainApp.showReimbursementDealOverview();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,344 @@
|
||||
package cn.minoa.view.home;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import cn.minoa.model.Reimbursement;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import cn.minoa.MainApp;
|
||||
import cn.minoa.dataRequestInterface.OrderInfo;
|
||||
import cn.minoa.dataRequestInterface.ResponseData;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ListView;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.text.Text;
|
||||
|
||||
public class ReimbursementApplyController {
|
||||
private MainApp mainApp;
|
||||
private List<Reimbursement> reimbursementInfoList;
|
||||
private final String CONTROLSTRING_SEND;//表示“我发起的”
|
||||
private final String CONTROLSTRING_RECEIVE;//表示“我审批的”
|
||||
|
||||
@FXML
|
||||
private Text listTitleText;
|
||||
@FXML
|
||||
private ListView<Pane> reimbursementList;
|
||||
|
||||
public ReimbursementApplyController() {
|
||||
// TODO Auto-generated constructor stub
|
||||
reimbursementInfoList = new LinkedList<Reimbursement>();
|
||||
CONTROLSTRING_RECEIVE = "R";
|
||||
CONTROLSTRING_SEND = "S";
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void initialize() {
|
||||
// 在fxml被载入时候被自动调用
|
||||
// 监听选择的改变
|
||||
reimbursementList.getSelectionModel().selectedItemProperty()
|
||||
.addListener((observable, oldValue, newValue) -> showReimbursementDetails(Integer.parseInt(newValue.getId())));
|
||||
}
|
||||
|
||||
/*
|
||||
* @param mainApp
|
||||
*/
|
||||
public void setMainApp(MainApp mainApp) {
|
||||
// 被mainApp调用
|
||||
this.mainApp = mainApp;
|
||||
// 缺省标题
|
||||
listTitleText.setText("我申报的报销列表");
|
||||
// 初始化list
|
||||
getReimbursement(0);
|
||||
// 反应到前端
|
||||
for (int i = 0; i < reimbursementInfoList.size(); i++) {
|
||||
reimbursementList.getItems().add(new ReimbursementListItem(reimbursementInfoList.get(i)).getPaneItem());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @param mainApp
|
||||
*/
|
||||
public void setMainApp(MainApp mainApp, String controlString) {
|
||||
// 被mainApp调用
|
||||
this.mainApp = mainApp;
|
||||
if (controlString.equals(CONTROLSTRING_RECEIVE)) {
|
||||
// 缺省标题
|
||||
listTitleText.setText("我审核的报销列表");
|
||||
// 初始化list
|
||||
getReimbursement(1);
|
||||
// 反应到前端
|
||||
for (int i = 0; i < reimbursementInfoList.size(); i++) {
|
||||
reimbursementList.getItems().add(new ReimbursementListItem(reimbursementInfoList.get(i)).getPaneItem());
|
||||
}
|
||||
} else {
|
||||
// 缺省标题
|
||||
listTitleText.setText("我申报的报销列表");
|
||||
// 初始化list
|
||||
getReimbursement(0);
|
||||
// 反应到前端
|
||||
for (int i = 0; i < reimbursementInfoList.size(); i++) {
|
||||
reimbursementList.getItems().add(new ReimbursementListItem(reimbursementInfoList.get(i)).getPaneItem());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 切换成我审批的报销审批
|
||||
@FXML
|
||||
private void switchToSendBox() {
|
||||
try {
|
||||
mainApp.reloadReimbursementOverview(CONTROLSTRING_SEND);
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 切换成我发出的报销审批
|
||||
@FXML
|
||||
private void switchToRecvBox() {
|
||||
try {
|
||||
mainApp.reloadReimbursementOverview(CONTROLSTRING_RECEIVE);
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 展示报销的详细信息的弹窗
|
||||
private void showReimbursementDetails(Integer paneId) {
|
||||
// 在当前数据结构中找到这个emailId对应的邮件
|
||||
Reimbursement reimbursement = new Reimbursement();
|
||||
for (int i = 0; i < reimbursementInfoList.size(); i++) {
|
||||
reimbursement = reimbursementInfoList.get(i);
|
||||
if (reimbursement.getId() == paneId) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 传递给主函数
|
||||
mainApp.showReimbursementDetailsDialog(reimbursement);
|
||||
}
|
||||
|
||||
// 申请报销弹窗
|
||||
@FXML
|
||||
private void handleWritter() {
|
||||
mainApp.showWritterReimbursementDialog();
|
||||
}
|
||||
|
||||
// 发送数据请求请求发送给登录者的报销列表
|
||||
private Integer getReimbursement(Integer queryCode) {
|
||||
// 请求数据
|
||||
OrderInfo orderInfo = new OrderInfo();
|
||||
ResponseData responseData = new ResponseData();
|
||||
Long seqLong = mainApp.getNewDataReqId();
|
||||
orderInfo.setSeq(seqLong);
|
||||
orderInfo.setJsonString(getGetApproval(queryCode));
|
||||
mainApp.minoaDataAPI.executeOrder("/getApproval", orderInfo);
|
||||
responseData = mainApp.minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
|
||||
JSONObject jsonObject = responseData.praseRequestData();
|
||||
responseData.printSelf();
|
||||
// 解析数据
|
||||
Integer codeInteger = null;
|
||||
try {
|
||||
codeInteger = jsonObject.getInt("code");
|
||||
} catch (JSONException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (codeInteger == 200) {
|
||||
String dataString;
|
||||
try {
|
||||
dataString = jsonObject.getString("data");
|
||||
if ((dataString.equals("")) || (dataString.equals("null"))) {
|
||||
reimbursementInfoList.clear();
|
||||
return 0;
|
||||
}
|
||||
reimbursementInfoList.clear();
|
||||
JSONArray dataJsonArray = new JSONArray(dataString);
|
||||
String reimbursementCacheString;
|
||||
JSONObject reimbursementCacheJsonObject;
|
||||
// 遍历每个邮件信息
|
||||
for (int i = 0; i < dataJsonArray.length(); i++) {
|
||||
reimbursementCacheString = dataJsonArray.getString(i);
|
||||
reimbursementCacheJsonObject = new JSONObject(reimbursementCacheString);
|
||||
Integer id = reimbursementCacheJsonObject.getInt("approvalId");
|
||||
String senderInfo = reimbursementCacheJsonObject.getString("proposer");
|
||||
// 解析发送者和接收者的姓名
|
||||
String receiverInfo = reimbursementCacheJsonObject.getString("approver");
|
||||
Integer process=reimbursementCacheJsonObject.getInt("process");
|
||||
String detailString = reimbursementCacheJsonObject.getString("detail");
|
||||
JSONObject receiverJsonObject = new JSONObject(receiverInfo);
|
||||
JSONObject senderJsonObject = new JSONObject(senderInfo);
|
||||
String sender_usernameString = senderJsonObject.getString("username");
|
||||
String receiver_usernameString = receiverJsonObject.getString("username");
|
||||
// 解析报销详细内容
|
||||
JSONObject detailJsonObject = new JSONObject(detailString);
|
||||
Long detail_date = detailJsonObject.getLong("date");
|
||||
String detail_content = detailJsonObject.getString("content");
|
||||
Integer detail_invoiceNum = detailJsonObject.getInt("invoiceNum");
|
||||
Double detail_totalMoney = detailJsonObject.getDouble("totalMoney");
|
||||
String detail_detail = detailJsonObject.getString("detail");
|
||||
//解析邮件的附件列表
|
||||
String filesString=detailJsonObject.getString("pictures");
|
||||
JSONArray filesJsonArray=new JSONArray(filesString);
|
||||
List<String> reimbursementfiles=new LinkedList<String>();
|
||||
for(int j=0;j<filesJsonArray.length();j++) {
|
||||
String onefileString=filesJsonArray.getString(j);
|
||||
reimbursementfiles.add(onefileString);
|
||||
}
|
||||
//构建一个报销对象
|
||||
Reimbursement reimbursement = new Reimbursement();
|
||||
reimbursement.setId(id);
|
||||
reimbursement.setProcess(process);
|
||||
reimbursement.setDate(detail_date);
|
||||
reimbursement.setContent(detail_content);
|
||||
reimbursement.setDetail(detail_detail);
|
||||
reimbursement.setNumber(detail_invoiceNum);
|
||||
reimbursement.setTotalMoney(detail_totalMoney);
|
||||
reimbursement.setSender(sender_usernameString);
|
||||
reimbursement.setReceiver(receiver_usernameString);
|
||||
reimbursement.files=reimbursementfiles;
|
||||
reimbursementInfoList.add(reimbursement);
|
||||
}
|
||||
return 0;
|
||||
} catch (JSONException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
return -1;
|
||||
}
|
||||
} else if(codeInteger==201){
|
||||
System.out.println("201:报销审批,请使用大数据接口获取数据");
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 获取记录命令: 0表示查询我发送的,1表示查询发送给我的
|
||||
private String getGetApproval(Integer queryCode) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
String commandString = "/getApproval";
|
||||
String usernameString = mainApp.loginer.getUserName();
|
||||
String uuidString = mainApp.loginer.getUuid();
|
||||
Integer typeCodeInteger = 2;
|
||||
Integer queryCodeInteger = queryCode;
|
||||
Integer pageNoInteger = 0; // 页编号
|
||||
Integer pageSizeInteger = 6; // 页大小
|
||||
try {
|
||||
jsonObject.put("command", commandString);
|
||||
jsonObject.put("username", usernameString);
|
||||
jsonObject.put("uuid", uuidString);
|
||||
jsonObject.put("typeCode", typeCodeInteger);
|
||||
jsonObject.put("queryCode", queryCodeInteger);
|
||||
jsonObject.put("pageNo", pageNoInteger);
|
||||
jsonObject.put("pageSize", pageSizeInteger);
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
System.out.println("exception: " + e.getMessage());
|
||||
}
|
||||
return jsonObject.toString();
|
||||
}
|
||||
}
|
||||
|
||||
class ReimbursementListItem {
|
||||
// 外部pane
|
||||
private Pane pane;
|
||||
private Integer paneWidth;
|
||||
private Integer paneHeight;
|
||||
// 头像
|
||||
private Button head;
|
||||
private Integer headLength;
|
||||
// 文本区域
|
||||
private Text text; // 显示报销发送者姓名
|
||||
private Text titleText; // 显示报销审核状态
|
||||
|
||||
private Reimbursement reimbursement;
|
||||
|
||||
// 组件位置属性
|
||||
private Integer headXInteger;
|
||||
private Integer headYInteger;
|
||||
private Integer textXInteger;
|
||||
private Integer textYInteger;
|
||||
private Integer titleTextXInteger;
|
||||
private Integer titleTextYInteger;
|
||||
|
||||
// 设置联系人头像
|
||||
private void setHeadPortrait(Button button, String username) {
|
||||
button.setStyle(
|
||||
String.format("-fx-background-image: url('file:resources/images/headPhotos/%s.png')", username));
|
||||
}
|
||||
|
||||
// 构造函数
|
||||
public ReimbursementListItem(Reimbursement reimbursement) {
|
||||
// 数据配置
|
||||
this.reimbursement = reimbursement;
|
||||
// 大小配置
|
||||
paneWidth = 200;
|
||||
paneHeight = 50;
|
||||
headLength = 35;
|
||||
// 位置配置
|
||||
headXInteger = 10;
|
||||
headYInteger = 10;
|
||||
textXInteger = 70;
|
||||
textYInteger = 28;
|
||||
titleTextXInteger = 250;
|
||||
titleTextYInteger = 28;
|
||||
|
||||
pane = new Pane();
|
||||
head = new Button();
|
||||
text = new Text();
|
||||
titleText = new Text();
|
||||
|
||||
// 最外面的pane的大小
|
||||
pane.setPrefSize(paneWidth, paneHeight);
|
||||
|
||||
// 设置头像和pane的CSS的样式标识
|
||||
head.getStyleClass().add("head");
|
||||
pane.getStyleClass().add("pane");
|
||||
|
||||
// 设置消息头像和消息文本属性
|
||||
head.setPrefSize(headLength, headLength);
|
||||
}
|
||||
|
||||
// 根据email获取pane
|
||||
public Pane getPaneItem() {
|
||||
// 头像位置
|
||||
head.setLayoutY(headYInteger);
|
||||
head.setLayoutX(headXInteger);
|
||||
// 发送人名位置
|
||||
text.setLayoutX(textXInteger);
|
||||
text.setLayoutY(textYInteger);
|
||||
// 审核状态位置
|
||||
titleText.setLayoutX(titleTextXInteger);
|
||||
titleText.setLayoutY(titleTextYInteger);
|
||||
// 头像和气泡文本内容
|
||||
text.setText(reimbursement.getSender()+"提交的报销申请");
|
||||
titleText.setText("【"+getProcessString(reimbursement.getProcess())+"】");
|
||||
setHeadPortrait(head, reimbursement.getSender());
|
||||
// 赋值子节点
|
||||
pane.getChildren().add(head);
|
||||
pane.getChildren().add(text);
|
||||
pane.getChildren().add(titleText);
|
||||
// 设置pane的id
|
||||
pane.setId(reimbursement.getId().toString());
|
||||
return pane;
|
||||
}
|
||||
//根据报销状态字节码获取报销状态
|
||||
private String getProcessString(Integer type){
|
||||
if(type==0){
|
||||
return "等待处理";
|
||||
}else if(type==1){
|
||||
return "已处理";
|
||||
}else if(type==2){
|
||||
return "审批未通过";
|
||||
}else if(type==3){
|
||||
return "审批通过";
|
||||
}else{
|
||||
return "审核进度未知";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,197 @@
|
||||
package cn.minoa.view.home;
|
||||
|
||||
import cn.minoa.MainApp;
|
||||
import cn.minoa.dataRequestInterface.OrderInfo;
|
||||
import cn.minoa.dataRequestInterface.ResponseData;
|
||||
import cn.minoa.model.Reimbursement;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.ListView;
|
||||
import javafx.scene.layout.Pane;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class ReimbursementDealController {
|
||||
private MainApp mainApp;
|
||||
private List<Reimbursement> reimbursementInfoList;
|
||||
|
||||
@FXML
|
||||
private ListView<Pane> reimbursementList;
|
||||
|
||||
public ReimbursementDealController(){
|
||||
reimbursementInfoList = new LinkedList<Reimbursement>();
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void initialize() {
|
||||
// 在fxml被载入时候被自动调用
|
||||
// 监听选择的改变
|
||||
reimbursementList.getSelectionModel().selectedItemProperty()
|
||||
.addListener((observable, oldValue, newValue) -> showReimbursementDetails(Integer.parseInt(newValue.getId())));
|
||||
}
|
||||
|
||||
// 展示报销的详细信息的弹窗
|
||||
private void showReimbursementDetails(Integer paneId) {
|
||||
// 在当前数据结构中找到这个emailId对应的邮件
|
||||
Reimbursement reimbursement = new Reimbursement();
|
||||
for (int i = 0; i < reimbursementInfoList.size(); i++) {
|
||||
reimbursement = reimbursementInfoList.get(i);
|
||||
if (reimbursement.getId() == paneId) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 传递给主函数
|
||||
mainApp.dealReimbursementDetailsDialog(reimbursement);
|
||||
}
|
||||
|
||||
//弹出一个可以选择通过审批或者拒绝通过审批的弹窗
|
||||
private void dealReimbursementDetails(Integer paneId){
|
||||
// 在当前数据结构中找到这个emailId对应的邮件
|
||||
Reimbursement reimbursement = new Reimbursement();
|
||||
for (int i = 0; i < reimbursementInfoList.size(); i++) {
|
||||
reimbursement = reimbursementInfoList.get(i);
|
||||
if (reimbursement.getId() == paneId) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
//然后发条消息将这个审批给通过或否决
|
||||
//...
|
||||
}
|
||||
|
||||
/*
|
||||
* @param mainApp
|
||||
*/
|
||||
public void setMainApp(MainApp mainApp) {
|
||||
// 被mainApp调用
|
||||
this.mainApp = mainApp;
|
||||
// 初始化list
|
||||
getReimbursement(1);
|
||||
// 反应到前端
|
||||
for (int i = 0; i < reimbursementInfoList.size(); i++) {
|
||||
reimbursementList.getItems().add(new ReimbursementListItem(reimbursementInfoList.get(i)).getPaneItem());
|
||||
}
|
||||
}
|
||||
|
||||
// 发送数据请求请求发送给登录者的报销列表
|
||||
// 0表示我发送的,1表示发送给我的
|
||||
// 要判断是否是已经被审核的,process=0表示还审核
|
||||
private Integer getReimbursement(Integer queryCode) {
|
||||
// 请求数据
|
||||
OrderInfo orderInfo = new OrderInfo();
|
||||
ResponseData responseData = new ResponseData();
|
||||
Long seqLong = mainApp.getNewDataReqId();
|
||||
orderInfo.setSeq(seqLong);
|
||||
orderInfo.setJsonString(getGetApproval(queryCode));
|
||||
mainApp.minoaDataAPI.executeOrder("/getApproval", orderInfo);
|
||||
responseData = mainApp.minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
|
||||
JSONObject jsonObject = responseData.praseRequestData();
|
||||
responseData.printSelf();
|
||||
// 解析数据
|
||||
Integer codeInteger = null;
|
||||
try {
|
||||
codeInteger = jsonObject.getInt("code");
|
||||
} catch (JSONException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (codeInteger == 200) {
|
||||
String dataString;
|
||||
try {
|
||||
dataString = jsonObject.getString("data");
|
||||
if ((dataString.equals("")) || (dataString.equals("null"))) {
|
||||
reimbursementInfoList.clear();
|
||||
return 0;
|
||||
}
|
||||
reimbursementInfoList.clear();
|
||||
JSONArray dataJsonArray = new JSONArray(dataString);
|
||||
String reimbursementCacheString;
|
||||
JSONObject reimbursementCacheJsonObject;
|
||||
// 遍历每个信息
|
||||
for (int i = 0; i < dataJsonArray.length(); i++) {
|
||||
reimbursementCacheString = dataJsonArray.getString(i);
|
||||
reimbursementCacheJsonObject = new JSONObject(reimbursementCacheString);
|
||||
Integer id = reimbursementCacheJsonObject.getInt("approvalId");
|
||||
String senderInfo = reimbursementCacheJsonObject.getString("proposer");
|
||||
// 解析发送者和接收者的姓名
|
||||
String receiverInfo = reimbursementCacheJsonObject.getString("approver");
|
||||
Integer process=reimbursementCacheJsonObject.getInt("process");
|
||||
String detailString = reimbursementCacheJsonObject.getString("detail");
|
||||
JSONObject receiverJsonObject = new JSONObject(receiverInfo);
|
||||
JSONObject senderJsonObject = new JSONObject(senderInfo);
|
||||
String sender_usernameString = senderJsonObject.getString("username");
|
||||
String receiver_usernameString = receiverJsonObject.getString("username");
|
||||
// 解析报销详细内容
|
||||
JSONObject detailJsonObject = new JSONObject(detailString);
|
||||
Long detail_date = detailJsonObject.getLong("date");
|
||||
String detail_content = detailJsonObject.getString("content");
|
||||
Integer detail_invoiceNum = detailJsonObject.getInt("invoiceNum");
|
||||
Double detail_totalMoney = detailJsonObject.getDouble("totalMoney");
|
||||
String detail_detail = detailJsonObject.getString("detail");
|
||||
//解析邮件的附件列表
|
||||
String filesString=detailJsonObject.getString("pictures");
|
||||
JSONArray filesJsonArray=new JSONArray(filesString);
|
||||
List<String> reimbursementfiles=new LinkedList<String>();
|
||||
for(int j=0;j<filesJsonArray.length();j++) {
|
||||
String onefileString=filesJsonArray.getString(j);
|
||||
reimbursementfiles.add(onefileString);
|
||||
}
|
||||
//构建一个报销对象
|
||||
Reimbursement reimbursement = new Reimbursement();
|
||||
reimbursement.setId(id);
|
||||
reimbursement.setProcess(process);
|
||||
reimbursement.setDate(detail_date);
|
||||
reimbursement.setContent(detail_content);
|
||||
reimbursement.setDetail(detail_detail);
|
||||
reimbursement.setNumber(detail_invoiceNum);
|
||||
reimbursement.setTotalMoney(detail_totalMoney);
|
||||
reimbursement.setSender(sender_usernameString);
|
||||
reimbursement.setReceiver(receiver_usernameString);
|
||||
reimbursement.files=reimbursementfiles;
|
||||
if(reimbursement.getProcess()==0){
|
||||
reimbursementInfoList.add(reimbursement);
|
||||
}else{
|
||||
//do nothing
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} catch (JSONException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
return -1;
|
||||
}
|
||||
} else if(codeInteger==201){
|
||||
System.out.println("201:报销审批,请使用大数据接口获取数据");
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 获取邮件记录命令: 0表示查询我发送的,1表示查询发送给我的
|
||||
private String getGetApproval(Integer queryCode) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
String commandString = "/getApproval";
|
||||
String usernameString = mainApp.loginer.getUserName();
|
||||
String uuidString = mainApp.loginer.getUuid();
|
||||
Integer typeCodeInteger = 2;
|
||||
Integer queryCodeInteger = queryCode;
|
||||
Integer pageNoInteger = 0; // 页编号
|
||||
Integer pageSizeInteger = 6; // 页大小
|
||||
try {
|
||||
jsonObject.put("command", commandString);
|
||||
jsonObject.put("username", usernameString);
|
||||
jsonObject.put("uuid", uuidString);
|
||||
jsonObject.put("typeCode", typeCodeInteger);
|
||||
jsonObject.put("queryCode", queryCodeInteger);
|
||||
jsonObject.put("pageNo", pageNoInteger);
|
||||
jsonObject.put("pageSize", pageSizeInteger);
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
System.out.println("exception: " + e.getMessage());
|
||||
}
|
||||
return jsonObject.toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
package cn.minoa.view.home;
|
||||
|
||||
import cn.minoa.MainApp;
|
||||
import cn.minoa.model.Reimbursement;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.ListView;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.text.Text;
|
||||
import javafx.stage.DirectoryChooser;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class SingleReimbursementDetailsController {
|
||||
private MainApp mainApp;
|
||||
private Stage dialogStage;
|
||||
|
||||
@FXML
|
||||
private Text senderText;
|
||||
@FXML
|
||||
private Text receiverText;
|
||||
@FXML
|
||||
private Text processText;
|
||||
@FXML
|
||||
private Text moneyText;
|
||||
@FXML
|
||||
private Text numberText;
|
||||
@FXML
|
||||
private Text contentText;
|
||||
@FXML
|
||||
private TextArea detailTextArea;
|
||||
|
||||
@FXML
|
||||
private Text reimFilesTitleText;
|
||||
@FXML
|
||||
private ListView<Pane> reimFiles;
|
||||
|
||||
public SingleReimbursementDetailsController(){
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void initialize() {
|
||||
// 在fxml被载入时候被自动调用
|
||||
// 监听选择的改变
|
||||
reimFiles.getSelectionModel().selectedItemProperty()
|
||||
.addListener((observable, oldValue, newValue) -> downloadReimFile(newValue.getId()));
|
||||
}
|
||||
|
||||
/*
|
||||
* @param mainApp
|
||||
*/
|
||||
public void setMainApp(MainApp mainApp) {
|
||||
this.mainApp = mainApp;
|
||||
}
|
||||
|
||||
public void setReimInfo(Reimbursement reimbursement) {
|
||||
senderText.setText(reimbursement.getSender());
|
||||
receiverText.setText(reimbursement.getReceiver());
|
||||
processText.setText(reimbursement.getProcess().toString());
|
||||
moneyText.setText(reimbursement.getTotalMoney().toString());
|
||||
numberText.setText(reimbursement.getNumber().toString());
|
||||
contentText.setText(reimbursement.getContent());
|
||||
detailTextArea.setText(reimbursement.getDetail());
|
||||
// 如果邮件带有附件,将其显示到前端
|
||||
showReimFiles(reimbursement);
|
||||
}
|
||||
|
||||
private void showReimFiles(Reimbursement reimbursement) {
|
||||
if (reimbursement.getFilesNumber() == 0) {
|
||||
// 没有文件,隐藏附件列表
|
||||
// ...
|
||||
reimFilesTitleText.setText("报销凭证【当前报销申请无附加凭证】");
|
||||
} else {
|
||||
// 有文件,展示到前端
|
||||
for (int i = 0; i < reimbursement.getFilesNumber(); i++) {
|
||||
reimFiles.getItems().add(new reimbursementFileListItem(reimbursement.files.get(i)).getPaneItem());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//从服务器下载选中的附件到指定的本地文件夹下
|
||||
private void downloadReimFile(String pathfilename) {
|
||||
//选择要下载到的文件夹
|
||||
String localDirString=mainApp.fileLocalPath;
|
||||
DirectoryChooser directoryChooser=new DirectoryChooser();
|
||||
directoryChooser.setTitle("选择要下载到的本地文件夹");
|
||||
Stage selectFileStage = new Stage();
|
||||
File file = directoryChooser.showDialog(selectFileStage);
|
||||
if (file != null) {
|
||||
//文件不为空,且不是文件夹
|
||||
if(file.isDirectory()) {
|
||||
localDirString=file.getPath()+"\\";
|
||||
System.out.println("选中的文件夹为:"+localDirString);
|
||||
}else {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("选中类型错误");
|
||||
alert.setHeaderText("你的选中类型错误");
|
||||
alert.setContentText("请确保你选中的是一个文件夹而不是一个文件。");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}else{
|
||||
return ;
|
||||
}
|
||||
|
||||
System.out.println("开始下载... :"+pathfilename);
|
||||
int flag=mainApp.downloadFileByPathfilename(pathfilename,localDirString);
|
||||
if(flag==0) {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("下载成功");
|
||||
alert.setHeaderText("下载文件成功");
|
||||
alert.setContentText("您请求的文件数据已经被全部下载到本地,"
|
||||
+ "如有发现打开异常或数据内容并非所求,说明出现了服务器数据请求问题。"
|
||||
+ "您的文件保存位置为:"+localDirString);
|
||||
alert.showAndWait();
|
||||
}else {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("下载失败");
|
||||
alert.setHeaderText("下载文件失败");
|
||||
alert.setContentText("本地文件数据写入失败,请检查是否有权限访问默认存储位置。"
|
||||
+ "您的文件默认保存位置为:"+localDirString);
|
||||
alert.showAndWait();
|
||||
}
|
||||
}
|
||||
|
||||
public void setDialogStage(Stage stage) {
|
||||
this.dialogStage = stage;
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void exit() {
|
||||
this.dialogStage.close();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,403 @@
|
||||
package cn.minoa.view.home;
|
||||
|
||||
import cn.minoa.MainApp;
|
||||
import cn.minoa.dataRequestInterface.OrderInfo;
|
||||
import cn.minoa.dataRequestInterface.ResponseData;
|
||||
import cn.minoa.model.Person;
|
||||
import cn.minoa.view.login.LoginOverviewController;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.text.Text;
|
||||
import javafx.stage.FileChooser;
|
||||
import javafx.stage.Stage;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class WrittenReimbursementController {
|
||||
|
||||
private MainApp mainApp;
|
||||
private Stage dialogStage;
|
||||
|
||||
@FXML
|
||||
private TextField receiverField;
|
||||
@FXML
|
||||
private TextField moneyField;
|
||||
@FXML
|
||||
private TextField numberField;
|
||||
@FXML
|
||||
private TextField contentField;
|
||||
@FXML
|
||||
private TextArea detailArea;
|
||||
|
||||
@FXML
|
||||
private ListView<Pane> reimbursementFiles;
|
||||
//与之对应的数据结构
|
||||
private List<String> reimbursementFilesList;
|
||||
|
||||
public WrittenReimbursementController(){
|
||||
reimbursementFilesList=new LinkedList<String>();
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void initialize() {
|
||||
// 在fxml被载入时候被自动调用
|
||||
receiverField.setPromptText("请输入一个联系人...");
|
||||
moneyField.setPromptText("请输入一个正数...");
|
||||
numberField.setPromptText("请输入一个正整数...");
|
||||
contentField.setPromptText("请输入报销类别,如:采购经费、活动经费等...");
|
||||
detailArea.setPromptText("请输入报销费用的详细描述...");
|
||||
}
|
||||
|
||||
public void setMainApp(MainApp mainApp) {
|
||||
this.mainApp = mainApp;
|
||||
}
|
||||
|
||||
public void setStage(Stage stage) {
|
||||
this.dialogStage = stage;
|
||||
}
|
||||
|
||||
/*
|
||||
* 从弹窗获取要添加的附件文件路径,将其加入到附件列表中,并显示到前端
|
||||
*/
|
||||
@FXML
|
||||
private void addFilesToReimbursement() {
|
||||
FileChooser fileChooser = new FileChooser();
|
||||
fileChooser.setTitle("选择上传文件");
|
||||
Stage selectFileStage = new Stage();
|
||||
File file = fileChooser.showOpenDialog(selectFileStage);
|
||||
if (file != null) {
|
||||
//文件不为空,且不是文件夹
|
||||
if(file.isFile()) {
|
||||
if(!isSelected(file.getAbsolutePath())) {
|
||||
reimbursementFilesList.add(file.getAbsolutePath());
|
||||
reimbursementFiles.getItems().add(new reimbursementFileListItem(file.getAbsolutePath()).getPaneItem());
|
||||
}else {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("附件添加重复");
|
||||
alert.setHeaderText("你选择的该文件已加入附件列表");
|
||||
alert.setContentText("请确保你选中的文件是未加入附件列表的文件。");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}else {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("附件类型错误");
|
||||
alert.setHeaderText("你的文件类型错误");
|
||||
alert.setContentText("请确保你选中的是一个文件而非文件夹。");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//根据文件路径判断该选中文件是否已经加入到列表中
|
||||
private boolean isSelected(String absolutePath) {
|
||||
boolean flag=false;
|
||||
//...
|
||||
return flag;
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void exit() {
|
||||
// System.out.println("关闭弹窗中...");
|
||||
this.dialogStage.close();
|
||||
}
|
||||
|
||||
//发送报销凭证
|
||||
@FXML
|
||||
private void handleSendReimbursement() {
|
||||
if(isRightContent()) {
|
||||
// 请求数据
|
||||
OrderInfo orderInfo = new OrderInfo();
|
||||
ResponseData responseData = new ResponseData();
|
||||
Long seqLong = mainApp.getNewDataReqId();
|
||||
orderInfo.setSeq(seqLong);
|
||||
orderInfo.setJsonString(getSendApproval());
|
||||
System.out.println("getSendApproval: " + orderInfo.getJsonString());
|
||||
mainApp.minoaDataAPI.executeOrder("/sendApproval", orderInfo);
|
||||
responseData = mainApp.minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
|
||||
JSONObject jsonObject = responseData.praseRequestData();
|
||||
responseData.printSelf();
|
||||
// 解析数据
|
||||
Integer codeInteger = null;
|
||||
try {
|
||||
codeInteger = jsonObject.getInt("code");
|
||||
} catch (JSONException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (codeInteger == 200) {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("发送成功");
|
||||
alert.setHeaderText("报销发送成功");
|
||||
alert.setContentText("你的报销申请已经发送给审核人。");
|
||||
alert.showAndWait();
|
||||
exit();
|
||||
}else {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("发送失败");
|
||||
alert.setHeaderText("报销发送失败");
|
||||
alert.setContentText("登录信息过期,报销发送失败,请尝试重新登录。");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//验证报销格式
|
||||
private boolean isRightContent() {
|
||||
//验证接收人是否是联系人列表中的一个
|
||||
String receiverName = receiverField.getText().trim();
|
||||
Integer flag = 0;
|
||||
ObservableList<Person> persons = mainApp.contactListData;
|
||||
for (Iterator<Person> iterator = persons.iterator(); iterator.hasNext(); ) {
|
||||
Person person = (Person) iterator.next();
|
||||
if (person.getUserName().equals(receiverName)) {
|
||||
flag++;
|
||||
}
|
||||
}
|
||||
if (flag == 0) {
|
||||
//弹窗提示
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("收件人错误");
|
||||
alert.setHeaderText("你的收件人错误");
|
||||
alert.setContentText("请确保你输入的收件人姓名是系统的实际用户。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
}
|
||||
//验证金额
|
||||
if (moneyField.getText().trim().equals("")) {
|
||||
//弹窗提示
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("报销金额错误");
|
||||
alert.setHeaderText("你的报销金额错误");
|
||||
alert.setContentText("请确保你输入的报销金额不为空。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
} else {
|
||||
try {
|
||||
Double.parseDouble(moneyField.getText());
|
||||
} catch (NumberFormatException e) {
|
||||
//弹窗提示
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("报销金额错误");
|
||||
alert.setHeaderText("你的报销金额错误");
|
||||
alert.setContentText("请确保你输入的报销金额是一个数字。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//验证金额
|
||||
if (numberField.getText().trim().equals("")) {
|
||||
//弹窗提示
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("单据张数错误");
|
||||
alert.setHeaderText("你的单据张数错误");
|
||||
alert.setContentText("请确保你输入的单据张数不为空。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
} else {
|
||||
try {
|
||||
Integer.parseInt(numberField.getText());
|
||||
} catch (NumberFormatException e) {
|
||||
//弹窗提示
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("单据张数错误");
|
||||
alert.setHeaderText("你的单据张数错误");
|
||||
alert.setContentText("请确保你输入的单据张数是一个整数。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//验证报销类别
|
||||
if (contentField.getText().trim().equals("")) {
|
||||
//弹窗提示
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("报销内容错误");
|
||||
alert.setHeaderText("你的报销内容错误");
|
||||
alert.setContentText("请确保你输入的报销内容不为空。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
}
|
||||
//验证报销详情
|
||||
if (detailArea.getText().trim().equals("")) {
|
||||
//弹窗提示
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("费用详细错误");
|
||||
alert.setHeaderText("你的费用详细错误");
|
||||
alert.setContentText("请确保你输入的费用详细不为空。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//发送报销命令
|
||||
private String getSendApproval () {
|
||||
JSONObject detailJsonObject = new JSONObject();
|
||||
String detail_detailString = detailArea.getText().trim();
|
||||
String detail_contentString = contentField.getText().trim();
|
||||
Integer detail_numberInteger = Integer.parseInt(numberField.getText().trim());
|
||||
Double detail_moneyDouble = Double.parseDouble(moneyField.getText().trim());
|
||||
String detail_approvalER=receiverField.getText().trim();
|
||||
Long detail_date=LoginOverviewController.getNowTimeStamp();
|
||||
//根据已经添加的文件附件列表制作一个arraylist
|
||||
JSONArray filesArray = new JSONArray();
|
||||
for (int i = 0; i < reimbursementFilesList.size(); i++) {
|
||||
String pathfilename = reimbursementFilesList.get(i);
|
||||
//上传该文件到服务器共享文件夹目录下
|
||||
File file = new File(pathfilename);
|
||||
mainApp.uploadFileToServerSharedFolder(file);
|
||||
//将该文件信息[服务器文件路径地址]写入邮件信息中
|
||||
String oneFile = mainApp.sharedFileServerPath + getPureFileNameFromWindows(pathfilename);
|
||||
filesArray.put(oneFile);
|
||||
}
|
||||
try {
|
||||
detailJsonObject.put("date", detail_date);
|
||||
detailJsonObject.put("content", detail_contentString);
|
||||
detailJsonObject.put("invoiceNum",detail_numberInteger);
|
||||
detailJsonObject.put("totalMoney",detail_moneyDouble);
|
||||
detailJsonObject.put("detail",detail_detailString);
|
||||
detailJsonObject.put("approvalER",detail_approvalER);
|
||||
detailJsonObject.put("pictures", filesArray);
|
||||
} catch (JSONException e1) {
|
||||
// TODO Auto-generated catch block
|
||||
e1.printStackTrace();
|
||||
}
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
String commandString = "/sendApproval";
|
||||
String usernameString = mainApp.loginer.getUserName();
|
||||
String uuidString = mainApp.loginer.getUuid();
|
||||
String approverString = receiverField.getText().trim();
|
||||
Integer typeCodeInteger = 2;
|
||||
try {
|
||||
jsonObject.put("command", commandString);
|
||||
jsonObject.put("username", usernameString);
|
||||
jsonObject.put("uuid", uuidString);
|
||||
jsonObject.put("approver", approverString);
|
||||
jsonObject.put("typeCode", typeCodeInteger);
|
||||
jsonObject.put("detail", detailJsonObject);
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
System.out.println("exception: " + e.getMessage());
|
||||
}
|
||||
return jsonObject.toString();
|
||||
}
|
||||
|
||||
// 根据包含路径的文件名获取纯文件名[windows本地]
|
||||
private String getPureFileNameFromWindows(String pathfilename) {
|
||||
// 标记最后一个/的下标
|
||||
int indexLeft = -1;
|
||||
for (int i = 0; i < pathfilename.length(); i++) {
|
||||
if (pathfilename.charAt(i) == '\\') {
|
||||
indexLeft = i;
|
||||
}
|
||||
}
|
||||
if (indexLeft == -1) {
|
||||
System.out.println("pure name[windows]: " + pathfilename);
|
||||
return pathfilename;
|
||||
} else {
|
||||
System.out.println("pure name[windows]: " + pathfilename.substring(indexLeft + 1, pathfilename.length()));
|
||||
return pathfilename.substring(indexLeft + 1, pathfilename.length());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//报销附件
|
||||
class reimbursementFileListItem {
|
||||
// 外部pane
|
||||
private Pane pane;
|
||||
private Integer paneWidth;
|
||||
private Integer paneHeight;
|
||||
// 头像
|
||||
private Button head;
|
||||
private Integer headLength;
|
||||
// 文本区域
|
||||
// public TextArea text;
|
||||
private Text text;
|
||||
// private Integer textWidth;
|
||||
// private Integer textHeight;
|
||||
|
||||
// 每个Pane代映射了一个文件[路径+文件名+@文件类型]
|
||||
String pathfilename;
|
||||
|
||||
// 组件位置属性
|
||||
private Integer headXInteger;
|
||||
private Integer headYInteger;
|
||||
private Integer textXInteger;
|
||||
private Integer textYInteger;
|
||||
|
||||
// 设置联系人头像
|
||||
private void setHeadPortrait(Button button, String filetype) {
|
||||
button.setStyle(
|
||||
String.format("-fx-background-image: url('file:resources/images/emailFileIcon/%s.png')", filetype));
|
||||
}
|
||||
|
||||
// 构造函数
|
||||
public reimbursementFileListItem(String pathfiletypename) {
|
||||
// 映射数据
|
||||
this.pathfilename = pathfiletypename;
|
||||
// 大小配置
|
||||
paneWidth = 200;
|
||||
paneHeight = 50;
|
||||
headLength = 35;
|
||||
// textWidth = 150;
|
||||
// textHeight = 25;
|
||||
// 位置配置
|
||||
headXInteger = 10;
|
||||
headYInteger = 10;
|
||||
textXInteger = 70;
|
||||
textYInteger = 28;
|
||||
|
||||
pane = new Pane();
|
||||
head = new Button();
|
||||
text = new Text();
|
||||
|
||||
// 最外面的pane的大小
|
||||
pane.setPrefSize(paneWidth, paneHeight);
|
||||
|
||||
// 设置头像和pane的CSS的样式标识
|
||||
head.getStyleClass().add("head");
|
||||
pane.getStyleClass().add("pane");
|
||||
|
||||
// 设置消息头像和消息文本属性
|
||||
head.setPrefSize(headLength, headLength);
|
||||
}
|
||||
|
||||
// 根据person获取pane
|
||||
public Pane getPaneItem() {
|
||||
String name = this.pathfilename;
|
||||
// 头像位置
|
||||
head.setLayoutY(headYInteger);
|
||||
head.setLayoutX(headXInteger);
|
||||
// text位置
|
||||
text.setLayoutX(textXInteger);
|
||||
text.setLayoutY(textYInteger);
|
||||
// 头像和气泡文本内容
|
||||
text.setText(name);
|
||||
setHeadPortrait(head, "f");
|
||||
pane.getChildren().add(head);
|
||||
pane.getChildren().add(text);
|
||||
// 设置pane的id
|
||||
pane.setId(name);
|
||||
return pane;
|
||||
}
|
||||
}
|
||||
@@ -54,8 +54,8 @@ public class SingleEmailDetailsController {
|
||||
}
|
||||
|
||||
public void setEmailInfo(Email email) {
|
||||
senderText.setText(email.getSender());
|
||||
receiverText.setText(email.getReceiver());
|
||||
senderText.setText(email.getSender()+"@pkusz.edu.cn");
|
||||
receiverText.setText(email.getReceiver()+"@pkusz.edu.cn");
|
||||
titleText.setText(email.getTitle());
|
||||
contentText.setText(email.getContent());
|
||||
// 如果邮件带有附件,将其显示到前端
|
||||
@@ -119,7 +119,9 @@ public class SingleEmailDetailsController {
|
||||
alert.setContentText("请确保你选中的是一个文件夹而不是一个文件。");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}
|
||||
}else{
|
||||
return ;
|
||||
}
|
||||
|
||||
System.out.println("开始下载... :"+pathfilename);
|
||||
int flag=mainApp.downloadFileByPathfilename(pathfilename,localDirString);
|
||||
|
||||
@@ -49,6 +49,9 @@ public class WrittenEmailController {
|
||||
@FXML
|
||||
private void initialize() {
|
||||
// 在fxml被载入时候被自动调用
|
||||
receiverField.setPromptText("请输入邮件地址(格式:昵称@pkusz.edu.cn)");
|
||||
emailTitleField.setPromptText("请输入邮件主题...");
|
||||
emailContentTextArea.setPromptText("请输入邮件内容...");
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -95,6 +98,26 @@ public class WrittenEmailController {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//判断邮件地址是否符合要求
|
||||
private boolean isRightEmailPath(String emailPath){
|
||||
//取尾部字段:@pkusz.edu.cn [length=13]
|
||||
if(emailPath.length()<=13){
|
||||
return false;
|
||||
}
|
||||
String tailPath=emailPath.substring(emailPath.length()-13);
|
||||
System.out.println("tailPath: "+tailPath);
|
||||
if(tailPath.equals("@pkusz.edu.cn")){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//取邮件地址中的昵称字段
|
||||
private String getUserInEmailPath(String emailPath){
|
||||
return emailPath.substring(0,emailPath.length()-13);
|
||||
}
|
||||
|
||||
//根据文件路径判断该选中文件是否已经加入到列表中
|
||||
private boolean isSelected(String absolutePath) {
|
||||
@@ -153,7 +176,18 @@ public class WrittenEmailController {
|
||||
//验证邮件格式
|
||||
private boolean isRightContent() {
|
||||
//验证接收人是否是联系人列表中的一个
|
||||
String receiverName=receiverField.getText().trim();
|
||||
String receiverRawName=receiverField.getText().trim();
|
||||
if(!isRightEmailPath(receiverRawName)){
|
||||
//弹窗提示
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(AlertType.WARNING);
|
||||
alert.setTitle("地址后缀错误");
|
||||
alert.setHeaderText("你的地址后缀错误");
|
||||
alert.setContentText("请确保你输入的地址后缀是@pkusz.edu.cn,并保证前面有用户名。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
}
|
||||
String receiverName=getUserInEmailPath(receiverRawName);
|
||||
Integer flag=0;
|
||||
ObservableList<Person> persons=mainApp.contactListData;
|
||||
for (Iterator<Person> iterator = persons.iterator(); iterator.hasNext();) {
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" stylesheets="@ReimbursementDeal.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.DealSingleReimbursementController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="避免聚焦" />
|
||||
<Text layoutX="65.0" layoutY="65.0" strokeType="OUTSIDE" strokeWidth="0.0" text="申报人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text layoutX="36.0" layoutY="73.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审核人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="60.0" />
|
||||
<Text layoutX="30.0" layoutY="90.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审批状态:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="100.0" />
|
||||
<Text layoutX="30.0" layoutY="118.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销金额:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="140.0" />
|
||||
<Text layoutX="42.0" layoutY="160.0" strokeType="OUTSIDE" strokeWidth="0.0" text="单据张数:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="180.0" />
|
||||
<Text layoutX="30.0" layoutY="199.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销内容:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="220.0" />
|
||||
<Text layoutX="18.0" layoutY="219.0" strokeType="OUTSIDE" strokeWidth="0.0" text="费用详细:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="260.0" />
|
||||
<Text fx:id="reimFilesTitleText" layoutX="42.0" layoutY="243.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销凭证:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="400.0" />
|
||||
<TextArea fx:id="detailTextArea" layoutX="135.0" layoutY="220.0" prefHeight="200.0" prefWidth="200.0" wrapText="true" AnchorPane.bottomAnchor="210.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="285.0" />
|
||||
<Text fx:id="senderText" layoutX="105.0" layoutY="32.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text fx:id="receiverText" layoutX="100.0" layoutY="72.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="60.0" />
|
||||
<Text fx:id="processText" layoutX="170.0" layoutY="112.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="100.0" />
|
||||
<Text fx:id="moneyText" layoutX="100.0" layoutY="145.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="140.0" />
|
||||
<Text fx:id="numberText" layoutX="100.0" layoutY="185.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="180.0" />
|
||||
<Text fx:id="contentText" layoutX="100.0" layoutY="232.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="220.0" />
|
||||
<ListView fx:id="reimFiles" layoutX="112.0" layoutY="386.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="420.0" />
|
||||
<Button layoutX="417.0" layoutY="563.0" mnemonicParsing="false" onAction="#exit" text="取消" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="20.0" />
|
||||
<Button layoutX="271.0" layoutY="562.0" mnemonicParsing="false" onAction="#passReim" text="通过报销" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="175.0" />
|
||||
<Button layoutX="351.0" layoutY="562.0" mnemonicParsing="false" onAction="#vetoReim" text="否决报销" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="85.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -13,10 +13,10 @@
|
||||
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="7.0">
|
||||
<children>
|
||||
<ImageView fx:id="reimbursement" fitHeight="35.0" fitWidth="35.0" layoutX="45.0" layoutY="124.0" pickOnBounds="true" preserveRatio="true" />
|
||||
<Label layoutX="10.0" layoutY="10.0" prefHeight="35.0" text="报销" />
|
||||
<Label layoutX="10.0" layoutY="10.0" prefHeight="35.0" text="报销申请" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Button mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
<Button mnemonicParsing="false" onAction="#showReimApplyView" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<AnchorPane layoutX="40.0" layoutY="40.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="80.0">
|
||||
@@ -24,10 +24,10 @@
|
||||
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="7.0">
|
||||
<children>
|
||||
<ImageView fx:id="entry_examination" fitHeight="35.0" fitWidth="35.0" layoutX="45.0" layoutY="124.0" pickOnBounds="true" preserveRatio="true" />
|
||||
<Label layoutX="10.0" layoutY="10.0" prefHeight="35.0" text="入职审批" />
|
||||
<Label layoutX="10.0" layoutY="10.0" prefHeight="35.0" text="报销审批" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Button mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
<Button mnemonicParsing="false" onAction="#showReimDealView" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<AnchorPane layoutX="30.0" layoutY="30.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="130.0">
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
/*list样式
|
||||
* */
|
||||
.list-cell:empty {
|
||||
-fx-background-color: white;
|
||||
}
|
||||
/*页面底色
|
||||
*/
|
||||
#upPane{
|
||||
-fx-background-color:#E8F2FE;
|
||||
}
|
||||
/*文件图标样式
|
||||
*/
|
||||
.head{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-background-color: rgba(255,255,255,0);
|
||||
-fx-background-image: url("file:resources/images/headPhotos/default.png");
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
.head:hover{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
.head:pressed{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<AnchorPane prefHeight="638.0" prefWidth="548.0" stylesheets="@ReimbursementApply.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.ReimbursementApplyController">
|
||||
<children>
|
||||
<ListView fx:id="reimbursementList" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="120.0" />
|
||||
<AnchorPane fx:id="upPane" prefHeight="55.0" prefWidth="548.0">
|
||||
<children>
|
||||
<Text fill="#370b5b" strokeType="OUTSIDE" strokeWidth="0.0" text="报销申请" textAlignment="CENTER" AnchorPane.leftAnchor="25.0" AnchorPane.topAnchor="15.0">
|
||||
<font>
|
||||
<Font name="Arial Black" size="18.0" />
|
||||
</font>
|
||||
</Text>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<Text layoutX="45.0" layoutY="96.0" strokeType="OUTSIDE" strokeWidth="0.0" text="我发起的" underline="true" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="72.0" />
|
||||
<Text layoutX="96.0" layoutY="96.0" strokeType="OUTSIDE" strokeWidth="0.0" text="我审批的" underline="true" AnchorPane.leftAnchor="122.0" AnchorPane.topAnchor="72.0" />
|
||||
<Button layoutX="39.0" layoutY="64.0" mnemonicParsing="false" onAction="#switchToSendBox" opacity="0.0" prefWidth="60.0" AnchorPane.leftAnchor="43.0" AnchorPane.topAnchor="68.0" />
|
||||
<Button mnemonicParsing="false" onAction="#switchToRecvBox" opacity="0.0" prefWidth="60.0" AnchorPane.leftAnchor="115.0" AnchorPane.topAnchor="68.0" />
|
||||
<Text fx:id="listTitleText" strokeType="OUTSIDE" strokeWidth="0.0" text="xxxx审批列表" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="105.0" />
|
||||
<Button layoutX="443.0" layoutY="586.0" mnemonicParsing="false" onAction="#handleWritter" text="申请报销" AnchorPane.bottomAnchor="30.0" AnchorPane.rightAnchor="60.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -0,0 +1,46 @@
|
||||
/*list样式
|
||||
* */
|
||||
.list-cell:empty {
|
||||
-fx-background-color: white;
|
||||
}
|
||||
/*页面底色
|
||||
*/
|
||||
#upPane{
|
||||
-fx-background-color:#E8F2FE;
|
||||
}
|
||||
/*文件图标样式
|
||||
*/
|
||||
.head{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-background-color: rgba(255,255,255,0);
|
||||
-fx-background-image: url("file:resources/images/headPhotos/default.png");
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
.head:hover{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
.head:pressed{
|
||||
-fx-background-radius: 1px;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-size: 40px 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-border-width: 1px;
|
||||
-fx-border-radius: 1px;
|
||||
-fx-border-color:transparent;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
|
||||
<AnchorPane prefHeight="638.0" prefWidth="548.0" stylesheets="@ReimbursementDeal.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.ReimbursementDealController">
|
||||
<children>
|
||||
<AnchorPane fx:id="upPane" prefHeight="55.0" prefWidth="548.0">
|
||||
<children>
|
||||
<Text fill="#370b5b" strokeType="OUTSIDE" strokeWidth="0.0" text="报销审批" AnchorPane.leftAnchor="25.0" AnchorPane.topAnchor="15.0">
|
||||
<font>
|
||||
<Font name="Arial Black" size="18.0" />
|
||||
</font>
|
||||
</Text>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<Text layoutX="41.0" layoutY="99.0" strokeType="OUTSIDE" strokeWidth="0.0" text="我收到的报销待审批列表" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="100.0" />
|
||||
<ListView fx:id="reimbursementList" layoutX="60.0" layoutY="119.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="120.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" stylesheets="@ReimbursementDeal.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.SingleReimbursementDetailsController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="避免聚焦" />
|
||||
<Text layoutX="65.0" layoutY="65.0" strokeType="OUTSIDE" strokeWidth="0.0" text="申报人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text layoutX="36.0" layoutY="73.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审核人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="60.0" />
|
||||
<Text layoutX="30.0" layoutY="90.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审批状态:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="100.0" />
|
||||
<Text layoutX="30.0" layoutY="118.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销金额:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="140.0" />
|
||||
<Text layoutX="42.0" layoutY="160.0" strokeType="OUTSIDE" strokeWidth="0.0" text="单据张数:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="180.0" />
|
||||
<Text layoutX="30.0" layoutY="199.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销内容:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="220.0" />
|
||||
<Text layoutX="18.0" layoutY="219.0" strokeType="OUTSIDE" strokeWidth="0.0" text="费用详细:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="260.0" />
|
||||
<Text fx:id="reimFilesTitleText" layoutX="42.0" layoutY="243.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销凭证:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="400.0" />
|
||||
<TextArea fx:id="detailTextArea" layoutX="135.0" layoutY="220.0" prefHeight="200.0" prefWidth="200.0" wrapText="true" AnchorPane.bottomAnchor="210.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="285.0" />
|
||||
<Text fx:id="senderText" layoutX="105.0" layoutY="32.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text fx:id="receiverText" layoutX="100.0" layoutY="72.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="60.0" />
|
||||
<Text fx:id="processText" layoutX="170.0" layoutY="112.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="100.0" />
|
||||
<Text fx:id="moneyText" layoutX="100.0" layoutY="145.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="140.0" />
|
||||
<Text fx:id="numberText" layoutX="100.0" layoutY="185.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="180.0" />
|
||||
<Text fx:id="contentText" layoutX="100.0" layoutY="232.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="220.0" />
|
||||
<ListView fx:id="reimFiles" layoutX="112.0" layoutY="386.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="420.0" />
|
||||
<Button layoutX="417.0" layoutY="563.0" mnemonicParsing="false" onAction="#exit" text="OK" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="20.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.home.WrittenReimbursementController">
|
||||
<children>
|
||||
<Text layoutX="58.0" layoutY="54.0" strokeType="OUTSIDE" strokeWidth="0.0" text="审核人:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
|
||||
<Text layoutX="30.0" layoutY="87.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销金额:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="70.0" />
|
||||
<Text layoutX="42.0" layoutY="133.0" strokeType="OUTSIDE" strokeWidth="0.0" text="单据张数:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="120.0" />
|
||||
<Text layoutX="66.0" layoutY="195.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销内容:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="170.0" />
|
||||
<Text layoutX="48.0" layoutY="239.0" strokeType="OUTSIDE" strokeWidth="0.0" text="费用详细:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="220.0" />
|
||||
<Text layoutX="42.0" layoutY="289.0" strokeType="OUTSIDE" strokeWidth="0.0" text="报销凭证:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="360.0" />
|
||||
<TextArea fx:id="detailArea" layoutX="90.0" layoutY="120.0" prefHeight="200.0" prefWidth="200.0" wrapText="true" AnchorPane.bottomAnchor="250.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="245.0" />
|
||||
<ListView fx:id="reimbursementFiles" layoutX="108.0" layoutY="360.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="380.0" />
|
||||
<Button layoutX="209.0" layoutY="550.0" mnemonicParsing="false" onAction="#addFilesToReimbursement" text="添加附件" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="185.0" />
|
||||
<Button layoutX="352.0" layoutY="567.0" mnemonicParsing="false" onAction="#exit" text="取消" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="120.0" />
|
||||
<Button layoutX="410.0" layoutY="567.0" mnemonicParsing="false" onAction="#handleSendReimbursement" text="发送" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="55.0" />
|
||||
<TextField fx:id="receiverField" layoutX="106.0" layoutY="16.0" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="16.0" />
|
||||
<TextField fx:id="moneyField" layoutX="106.0" layoutY="66.0" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="66.0" />
|
||||
<TextField fx:id="numberField" layoutX="106.0" layoutY="116.0" AnchorPane.leftAnchor="100.0" AnchorPane.topAnchor="116.0" />
|
||||
<TextField fx:id="contentField" layoutX="106.0" layoutY="166.0" AnchorPane.leftAnchor="100.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="166.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@@ -20,7 +20,7 @@
|
||||
<ListView fx:id="emailList" layoutX="135.0" layoutY="141.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="120.0" />
|
||||
<Button layoutX="424.0" layoutY="601.0" mnemonicParsing="false" onAction="#handleWritter" text="写信" AnchorPane.bottomAnchor="30.0" AnchorPane.rightAnchor="60.0" />
|
||||
<Text layoutX="50.0" layoutY="85.0" onDragEntered="#switchToRecvBox" strokeType="OUTSIDE" strokeWidth="0.0" text="收件箱" underline="true" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="72.0" />
|
||||
<Text layoutX="120.0" layoutY="84.0" onDragEntered="#switchToSendBox" strokeType="OUTSIDE" strokeWidth="0.0" text="发件箱" underline="true" />
|
||||
<Text layoutX="120.0" layoutY="84.0" onDragEntered="#switchToSendBox" strokeType="OUTSIDE" strokeWidth="0.0" text="发件箱" underline="true" AnchorPane.leftAnchor="120.0" AnchorPane.topAnchor="72.0" />
|
||||
<Text fx:id="listTitleText" layoutX="249.0" layoutY="117.0" strokeType="OUTSIDE" strokeWidth="0.0" text="xx列表" textAlignment="CENTER" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="105.0" />
|
||||
<Button layoutX="41.0" layoutY="87.0" mnemonicParsing="false" onAction="#switchToRecvBox" opacity="0.0" prefWidth="50.0" text="R" AnchorPane.leftAnchor="42.0" AnchorPane.topAnchor="68.0" />
|
||||
<Button layoutX="222.0" layoutY="76.0" mnemonicParsing="false" onAction="#switchToSendBox" opacity="0.0" prefWidth="50.0" text="S" AnchorPane.leftAnchor="115.0" AnchorPane.topAnchor="68.0" />
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.mine.SingleEmailDetailsController">
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" stylesheets="@../home/ReimbursementDeal.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.mine.SingleEmailDetailsController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="透明=>避免自动聚焦" />
|
||||
<Text layoutX="30.0" layoutY="33.0" strokeType="OUTSIDE" strokeWidth="0.0" text="来自:" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
<AnchorPane prefHeight="600.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.mine.WrittenEmailController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="避免聚焦" />
|
||||
<Text layoutX="54.0" layoutY="49.0" strokeType="OUTSIDE" strokeWidth="0.0" text="收件人:" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="50.0" />
|
||||
<Text layoutX="54.0" layoutY="106.0" strokeType="OUTSIDE" strokeWidth="0.0" text="主题:" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="90.0" />
|
||||
<Text layoutX="54.0" layoutY="185.0" strokeType="OUTSIDE" strokeWidth="0.0" text="正文:" AnchorPane.leftAnchor="50.0" AnchorPane.topAnchor="130.0" />
|
||||
|
||||
Reference in new issue
Block a user