refactor(controller): 移除冗余的service注入,使用BeanContext统一管理

feat(sales-order): 补充SalesOrderVo缺失字段并完善相关功能
feat(sales-order): 添加客户、税率等字段到销售订单界面
refactor(tab-skin): 重构TabSkin基类,统一bean获取方式
fix(fxml): 修正controller包路径和字段绑定
feat(repository): 添加findAllByOrder方法优化查询
This commit is contained in:
2025-10-15 00:40:02 +08:00
parent 1c1ff678a5
commit d2e0dc4555
25 changed files with 485 additions and 137 deletions

View File

@@ -10,6 +10,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import com.ecep.contract.util.BeanContext;
import com.ecep.contract.util.DefaultBeanContext;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.FxmlUtils;
import com.ecep.contract.vo.EmployeeVo;
@@ -51,7 +52,7 @@ public class BaseController implements BeanContext {
}
public static <T extends BaseController> CompletableFuture<Void> show(Class<T> clz, Window owner,
Consumer<T> consumer) {
Consumer<T> consumer) {
String key = clz.getName();
if (toFront(key)) {
return null;
@@ -188,20 +189,13 @@ public class BaseController implements BeanContext {
public Label rightStatusLabel;
private EmployeeVo currentUser;
private HashMap<Class<?>, Object> cachedBeans = new HashMap<>();
private BeanContext beanContext = new DefaultBeanContext();
public <T> T getBean(Class<T> requiredType) throws BeansException {
return SpringApp.getBean(requiredType);
return beanContext.getBean(requiredType);
}
@SuppressWarnings("unchecked")
public <T> T getCachedBean(Class<T> requiredType) throws BeansException {
Object object = cachedBeans.get(requiredType);
if (object == null) {
object = getBean(requiredType);
cachedBeans.put(requiredType, object);
}
return (T) object;
return beanContext.getCachedBean(requiredType);
}
public SysConfService getConfService() {

View File

@@ -1,19 +1,17 @@
package com.ecep.contract.controller.tab;
package com.ecep.contract.controller.contract;
import java.time.LocalDateTime;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.contract.AbstContractTableTabSkin;
import com.ecep.contract.controller.contract.ContractWindowController;
import com.ecep.contract.controller.vendor.purchase.order.PurchaseOrderWindowController;
import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.PurchaseOrdersService;
import com.ecep.contract.vm.PurchaseOrderViewModel;
import com.ecep.contract.vo.PurchaseOrderVo;
import com.ecep.contract.controller.table.cell.CompanyTableCell;
import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell;
import javafx.scene.control.MenuItem;

View File

@@ -1,15 +1,16 @@
package com.ecep.contract.controller.tab;
package com.ecep.contract.controller.contract;
import java.time.LocalDate;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.cell.CompanyTableCell;
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.contract.AbstContractTableTabSkin;
import com.ecep.contract.controller.contract.ContractWindowController;
import com.ecep.contract.controller.contract.sale_order.SalesOrderWindowController;
import com.ecep.contract.controller.table.cell.LocalDateFieldTableCell;
import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.SaleOrdersService;
import com.ecep.contract.vm.SalesOrderViewModel;
@@ -32,6 +33,8 @@ public class ContractTabSkinSaleOrders
@Setter
private SaleOrdersService saleOrdersService;
private CompanyService companyService;
@Setter
private EmployeeStringConverter employeeStringConverter;
@@ -51,6 +54,20 @@ public class ContractTabSkinSaleOrders
*/
public TableColumn<SalesOrderViewModel, Integer> verifierColumn;
public TableColumn<SalesOrderViewModel, LocalDate> verifierDateColumn;
public TableColumn<SalesOrderViewModel, Number> refIdColumn;
public TableColumn<SalesOrderViewModel, Number> taxRateColumn;
public TableColumn<SalesOrderViewModel, Integer> customerColumn;
public TableColumn<SalesOrderViewModel, String> customerAddressColumn;
/**
* 修改人, Employee
*/
public TableColumn<SalesOrderViewModel, Integer> modifierColumn;
public TableColumn<SalesOrderViewModel, LocalDate> modifierDateColumn;
/**
* 关闭人, Employee
*/
public TableColumn<SalesOrderViewModel, Integer> closerColumn;
public TableColumn<SalesOrderViewModel, LocalDate> closerDateColumn;
public TableColumn<SalesOrderViewModel, String> descriptionColumn;
public MenuItem subContractTable_menu_refresh;
public TextField contractSearchKeyField;
@@ -93,16 +110,30 @@ public class ContractTabSkinSaleOrders
idColumn.setCellValueFactory(param -> param.getValue().getId());
codeColumn.setCellValueFactory(param -> param.getValue().getCode());
employeeColumn.setCellValueFactory(param -> param.getValue().getEmployee());
employeeColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
employeeColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
makerColumn.setCellValueFactory(param -> param.getValue().getMaker());
makerColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
makerColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
makerDateColumn.setCellValueFactory(param -> param.getValue().getMakerDate());
makerDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn());
verifierColumn.setCellValueFactory(param -> param.getValue().getVerifier());
verifierColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
verifierColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
verifierDateColumn.setCellValueFactory(param -> param.getValue().getVerifierDate());
verifierDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn());
// 设置新增字段的单元格值工厂和工厂类
refIdColumn.setCellValueFactory(param -> param.getValue().getRefId());
taxRateColumn.setCellValueFactory(param -> param.getValue().getTaxRate());
customerColumn.setCellValueFactory(param -> param.getValue().getCustomer());
customerColumn.setCellFactory(CompanyTableCell.forTableColumn(getCompanyService()));
customerAddressColumn.setCellValueFactory(param -> param.getValue().getCustomerAddress());
modifierColumn.setCellValueFactory(param -> param.getValue().getModifier());
modifierColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
modifierDateColumn.setCellValueFactory(param -> param.getValue().getModifierDate());
modifierDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn());
closerColumn.setCellValueFactory(param -> param.getValue().getCloser());
closerColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
closerDateColumn.setCellValueFactory(param -> param.getValue().getCloserDate());
closerDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn());
descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription());
super.initializeTab();
@@ -113,17 +144,17 @@ public class ContractTabSkinSaleOrders
SalesOrderWindowController.show(item, getTableView().getScene().getWindow());
}
private EmployeeStringConverter getEmployeeStringConverter() {
if (employeeStringConverter == null) {
employeeStringConverter = getBean(EmployeeStringConverter.class);
}
return employeeStringConverter;
}
SaleOrdersService getSaleOrdersService() {
if (saleOrdersService == null) {
saleOrdersService = getBean(SaleOrdersService.class);
}
return saleOrdersService;
}
CompanyService getCompanyService() {
if (companyService == null) {
companyService = getBean(CompanyService.class);
}
return companyService;
}
}

View File

@@ -15,8 +15,6 @@ import com.ecep.contract.controller.tab.ContractTabSkinBase;
import com.ecep.contract.controller.tab.ContractTabSkinFiles;
import com.ecep.contract.controller.tab.ContractTabSkinItemsV2;
import com.ecep.contract.controller.tab.ContractTabSkinPayPlan;
import com.ecep.contract.controller.tab.ContractTabSkinPurchaseOrders;
import com.ecep.contract.controller.tab.ContractTabSkinSaleOrders;
import com.ecep.contract.controller.tab.ContractTabSkinSubContract;
import com.ecep.contract.controller.tab.ContractTabSkinVendorBid;

View File

@@ -43,6 +43,15 @@ public class SalesOrderWindowController extends AbstEntityController<SalesOrderV
public TextField makeDateField;
public TextField makerField;
public TextArea descriptionField;
public TextField refIdField;
public TextField taxRateField;
public TextField customerField;
public TextField customerAddressField;
public TextField modifierField;
public TextField modifierDateField;
public TextField closerField;
public TextField closerDateField;
public TextField contractField;
public static void show(SalesOrderViewModel viewModel, Window window) {

View File

@@ -14,30 +14,16 @@ import lombok.Setter;
public abstract class AbstEmployeeBasedTabSkin
extends AbstEntityBasedTabSkin<EmployeeWindowController, EmployeeVo, EmployeeViewModel>
implements TabSkin {
@Setter
private PermissionService permissionService;
@Setter
private EmployeeRoleService employeeRoleService;
public AbstEmployeeBasedTabSkin(EmployeeWindowController controller) {
super(controller);
}
protected EmployeeService getEmployeeService() {
return controller.employeeService;
}
protected EmployeeRoleService getEmployeeRoleService() {
if (employeeRoleService == null) {
employeeRoleService = getBean(EmployeeRoleService.class);
}
return employeeRoleService;
return getCachedBean(EmployeeRoleService.class);
}
protected PermissionService getPermissionService() {
if (permissionService == null) {
permissionService = getBean(PermissionService.class);
}
return permissionService;
return getCachedBean(PermissionService.class);
}
}

View File

@@ -40,15 +40,8 @@ import lombok.Setter;
* 基础信息
*/
public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSkin {
@Setter
EmployeeStringConverter employeeStringConverter;
@Setter
LocalDateStringConverter localDateStringConverter;
@Setter
EmployeeService employeeService;
@Setter
private DeliverySignMethodService deliverySignMethodService;
public ProjectTabSkinBase(ProjectWindowController controller) {
super(controller);
@@ -59,10 +52,6 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk
return controller.baseInfoTab;
}
private EmployeeService getEmployeeService() {
return getBean(EmployeeService.class);
}
private ProjectTypeService getProjectTypeService() {
return getBean(ProjectTypeService.class);
}

View File

@@ -162,7 +162,6 @@ public class ProjectWindowController extends AbstEntityController<ProjectVo, Pro
private ProjectTabSkinBase createBaseTabSkin(Tab tab) {
ProjectTabSkinBase skin = new ProjectTabSkinBase(this);
skin.setLocalDateStringConverter(localDateStringConverter);
skin.setEmployeeService(employeeService);
return skin;
}

View File

@@ -7,9 +7,11 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import com.ecep.contract.controller.BaseController;
import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.util.BeanContext;
import com.ecep.contract.util.UITools;
public abstract class AbstGenericTabSkin<C extends BaseController> implements TabSkin {
public abstract class AbstGenericTabSkin<C extends BaseController> implements TabSkin, BeanContext {
private static final Logger logger = LoggerFactory.getLogger(AbstGenericTabSkin.class);
/**
* 控制器
@@ -49,4 +51,7 @@ public abstract class AbstGenericTabSkin<C extends BaseController> implements Ta
UITools.showExceptionAndWait(message, ex);
}
public EmployeeService getEmployeeService() {
return getCachedBean(EmployeeService.class);
}
}

View File

@@ -193,10 +193,13 @@ public class ContractTabSkinItemsV2
}
showInOwner(InventoryWindowController.class, InventoryViewModel.from(inventory));
});
contextMenu.getItems().addAll(showInventory);
}
public static class QuantityTableCell extends AsyncUpdateTableCell<ContractItemViewModel, Number, PurchaseOrderItemVo> {
public static Callback<TableColumn<ContractItemViewModel, Number>, TableCell<ContractItemViewModel, Number>> forTableColumn(NumberStringConverter stringConverter) {
public static class QuantityTableCell
extends AsyncUpdateTableCell<ContractItemViewModel, Number, PurchaseOrderItemVo> {
public static Callback<TableColumn<ContractItemViewModel, Number>, TableCell<ContractItemViewModel, Number>> forTableColumn(
NumberStringConverter stringConverter) {
;
return param -> new QuantityTableCell(stringConverter);
}
@@ -212,7 +215,10 @@ public class ContractTabSkinItemsV2
@Override
protected void asyncLoadAndUpdate() {
double sum = getService().findAll(ParamUtils.equal("contractItem", this.getTableRow().getItem().getId().get()), Pageable.unpaged()).stream().mapToDouble(PurchaseOrderItemVo::getQuantity).sum();
double sum = getService()
.findAll(ParamUtils.equal("contractItem", this.getTableRow().getItem().getId().get()),
Pageable.unpaged())
.stream().mapToDouble(PurchaseOrderItemVo::getQuantity).sum();
Platform.runLater(() -> setText(sum + "/" + getItem()));
}
}

View File

@@ -5,6 +5,8 @@ import java.time.LocalDate;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.controller.contract.AbstContractTableTabSkin;
import com.ecep.contract.controller.contract.ContractWindowController;
import com.ecep.contract.controller.table.cell.CompanyTableCell;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.ParamUtils;
@@ -34,6 +36,7 @@ public class ContractTabSkinSubContract
public TableColumn<ContractViewModel, LocalDate> subContractTable_inureDateColumn;
public TableColumn<ContractViewModel, LocalDate> subContractTable_orderDateColumn;
public TableColumn<ContractViewModel, LocalDate> subContractTable_varyDateColumn;
public TableColumn<ContractViewModel, Integer> subContractTable_companyColumn;
public MenuItem subContractTable_menu_refresh;
public TextField contractSearchKeyField;
public Button contractSearchBtn;
@@ -86,6 +89,8 @@ public class ContractTabSkinSubContract
subContractTable_inureDateColumn.setCellValueFactory(param -> param.getValue().getInureDate());
subContractTable_orderDateColumn.setCellValueFactory(param -> param.getValue().getOrderDate());
subContractTable_varyDateColumn.setCellValueFactory(param -> param.getValue().getVaryDate());
subContractTable_companyColumn.setCellValueFactory(param -> param.getValue().getCompany());
subContractTable_companyColumn.setCellFactory(CompanyTableCell.forTableColumn(getCachedBean(CompanyService.class)));
Platform.runLater(() -> {
getTableView().getSortOrder().add(subContractTable_codeColumn);

View File

@@ -1,13 +1,9 @@
package com.ecep.contract.controller.tab;
import java.time.LocalDateTime;
import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.SpringApp;
import com.ecep.contract.controller.contract.sale_order.SalesOrderWindowController;
import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.ContractFileService;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.SalesOrderViewModel;
import com.ecep.contract.vo.SalesOrderVo;
@@ -15,18 +11,12 @@ import com.ecep.contract.vo.SalesOrderVo;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.control.Tab;
import javafx.scene.control.TextField;
import lombok.Setter;
import javafx.util.converter.NumberStringConverter;
public class SalesOrderTabSkinBase
extends AbstEntityBasedTabSkin<SalesOrderWindowController, SalesOrderVo, SalesOrderViewModel>
implements TabSkin {
@Setter
private ContractFileService companyContactService;
@Setter
private CompanyService companyService;
private EmployeeStringConverter employeeStringConverter;
public SalesOrderTabSkinBase(SalesOrderWindowController controller) {
super(controller);
}
@@ -39,13 +29,26 @@ public class SalesOrderTabSkinBase
@Override
public void initializeTab() {
controller.codeField.textProperty().bind(viewModel.getCode());
controller.refIdField.textProperty().bindBidirectional(viewModel.getRefId(), new NumberStringConverter(getLocale()));
controller.taxRateField.textProperty().bindBidirectional(viewModel.getTaxRate(), new NumberStringConverter(getLocale()));
initializeEmployeeField(controller.employeeField, viewModel.getEmployee());
initializeEmployeeField(controller.makerField, viewModel.getMaker());
initializeEmployeeField(controller.verifierField, viewModel.getVerifier());
initializeEmployeeField(controller.modifierField, viewModel.getModifier());
initializeEmployeeField(controller.closerField, viewModel.getCloser());
initializeCompanyField(controller.customerField, viewModel.getCustomer());
controller.customerAddressField.textProperty().bindBidirectional(viewModel.getCustomerAddress());
initializeContractField(controller.contractField, viewModel.getContract());
controller.makeDateField.textProperty().bind(viewModel.getMakerDate().map(MyDateTimeUtils::format));
controller.verifierDateField.textProperty().bind(viewModel.getVerifierDate().map(MyDateTimeUtils::format));
controller.modifierDateField.textProperty().bind(viewModel.getModifierDate().map(MyDateTimeUtils::format));
controller.closerDateField.textProperty().bind(viewModel.getCloserDate().map(MyDateTimeUtils::format));
controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription());
@@ -53,29 +56,23 @@ public class SalesOrderTabSkinBase
controller.saveBtn.setOnAction(this::onSaveAction);
}
protected String localDateTimeFormatter(SimpleObjectProperty<LocalDateTime> property) {
LocalDateTime dateTime = property.get();
if (dateTime == null) {
return "";
}
return MyDateTimeUtils.format(dateTime);
}
private void initializeEmployeeField(TextField textField, SimpleObjectProperty<Integer> property) {
UITools.autoCompletion(textField, property, controller.getEmployeeService());
}
public CompanyService getCompanyService() {
if (companyService == null) {
companyService = SpringApp.getBean(CompanyService.class);
}
return companyService;
private void initializeCompanyField(TextField textField, SimpleObjectProperty<Integer> property) {
UITools.autoCompletion(textField, property, getCompanyService());
}
private void initializeContractField(TextField textField, SimpleObjectProperty<Integer> property) {
UITools.autoCompletion(textField, property, getContractService());
}
public EmployeeStringConverter getEmployeeStringConverter() {
if (employeeStringConverter == null) {
employeeStringConverter = SpringApp.getBean(EmployeeStringConverter.class);
}
return employeeStringConverter;
public CompanyService getCompanyService() {
return getCachedBean(CompanyService.class);
}
public ContractService getContractService() {
return getCachedBean(ContractService.class);
}
}

View File

@@ -3,8 +3,9 @@ package com.ecep.contract.vm;
import java.time.LocalDate;
import java.util.Objects;
import com.ecep.contract.util.NumberUtils;
import com.ecep.contract.vo.SalesOrderVo;
import javafx.beans.property.SimpleFloatProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
@@ -25,6 +26,16 @@ public class SalesOrderViewModel extends IdentityViewModel<SalesOrderVo> {
SimpleObjectProperty<LocalDate> verifierDate = new SimpleObjectProperty<>();
SimpleStringProperty description = new SimpleStringProperty();
// 添加缺失的字段
SimpleIntegerProperty refId = new SimpleIntegerProperty();
SimpleFloatProperty taxRate = new SimpleFloatProperty();
SimpleObjectProperty<Integer> customer = new SimpleObjectProperty<>();
SimpleStringProperty customerAddress = new SimpleStringProperty();
SimpleObjectProperty<Integer> modifier = new SimpleObjectProperty<>();
SimpleObjectProperty<LocalDate> modifierDate = new SimpleObjectProperty<>();
SimpleObjectProperty<Integer> closer = new SimpleObjectProperty<>();
SimpleObjectProperty<LocalDate> closerDate = new SimpleObjectProperty<>();
@Override
protected void updateFrom(SalesOrderVo v) {
getId().set(v.getId());
@@ -35,6 +46,18 @@ public class SalesOrderViewModel extends IdentityViewModel<SalesOrderVo> {
getVerifier().set(v.getVerifierId());
getMakerDate().set(v.getMakerDate());
getVerifierDate().set(v.getVerifierDate());
getDescription().set(v.getDescription());
// 更新添加的字段
getRefId().set(v.getRefId());
getTaxRate().set(v.getTaxRate());
getCustomer().set(v.getCustomerId());
getCustomerAddress().set(v.getCustomerAddress());
getModifier().set(v.getModifierId());
getModifierDate().set(v.getModifierDate());
getCloser().set(v.getCloserId());
getCloserDate().set(v.getCloserDate());
super.updateFrom(v);
}
@@ -81,6 +104,48 @@ public class SalesOrderViewModel extends IdentityViewModel<SalesOrderVo> {
v.setDescription(description.get());
modified = true;
}
// 复制添加的字段
if (!Objects.equals(refId.get(), v.getRefId())) {
v.setRefId(refId.get());
modified = true;
}
if (!NumberUtils.equals(taxRate.get(), v.getTaxRate())) {
v.setTaxRate(taxRate.get());
modified = true;
}
if (!Objects.equals(customer.get(), v.getCustomerId())) {
v.setCustomerId(customer.get());
modified = true;
}
if (!Objects.equals(customerAddress.get(), v.getCustomerAddress())) {
v.setCustomerAddress(customerAddress.get());
modified = true;
}
if (!Objects.equals(modifier.get(), v.getModifierId())) {
v.setModifierId(modifier.get());
modified = true;
}
if (!Objects.equals(modifierDate.get(), v.getModifierDate())) {
v.setModifierDate(modifierDate.get());
modified = true;
}
if (!Objects.equals(closer.get(), v.getCloserId())) {
v.setCloserId(closer.get());
modified = true;
}
if (!Objects.equals(closerDate.get(), v.getCloserDate())) {
v.setCloserDate(closerDate.get());
modified = true;
}
return modified;
}

View File

@@ -5,7 +5,7 @@
<?import javafx.scene.layout.*?>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="400.0" prefWidth="600.0"
xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.ecep.contract.controller.tab.ContractTabSkinPurchaseOrders"
fx:controller="com.ecep.contract.controller.contract.ContractTabSkinPurchaseOrders"
>
<children>
<HBox spacing="3.0">

View File

@@ -5,7 +5,7 @@
<?import javafx.scene.layout.*?>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"
xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.ecep.contract.controller.tab.ContractTabSkinSaleOrders"
fx:controller="com.ecep.contract.controller.contract.ContractTabSkinSaleOrders"
>
<children>
<HBox spacing="3.0">
@@ -23,12 +23,19 @@
<columns>
<TableColumn fx:id="idColumn" prefWidth="75.0" text="ID"/>
<TableColumn fx:id="codeColumn" prefWidth="120" text="编号"/>
<TableColumn fx:id="employeeColumn" prefWidth="120" text="编号"/>
<TableColumn fx:id="customerColumn" prefWidth="100.0" text="客户"/>
<TableColumn fx:id="customerAddressColumn" prefWidth="150.0" text="客户地址"/>
<TableColumn fx:id="taxRateColumn" prefWidth="60.0" text="税率"/>
<TableColumn fx:id="refIdColumn" prefWidth="60.0" text="RefID"/>
<TableColumn fx:id="employeeColumn" prefWidth="120" text="业务员"/>
<TableColumn fx:id="makerColumn" prefWidth="90.0" text="制单人" />
<TableColumn fx:id="makerDateColumn" prefWidth="130.0" text="制单日期"/>
<TableColumn fx:id="verifierColumn" prefWidth="70.0" text="审核人"/>
<TableColumn fx:id="verifierDateColumn" prefWidth="130.0" text="审核日期"/>
<TableColumn fx:id="modifierColumn" prefWidth="90.0" text="修改人"/>
<TableColumn fx:id="modifierDateColumn" prefWidth="130.0" text="修改日期"/>
<TableColumn fx:id="closerColumn" prefWidth="90.0" text="关闭人"/>
<TableColumn fx:id="closerDateColumn" prefWidth="130.0" text="关闭日期"/>
<TableColumn fx:id="descriptionColumn" prefWidth="180.0" text="备注"/>
</columns>
<contextMenu>

View File

@@ -3,6 +3,8 @@
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.cell.PropertyValueFactory?>
<?import com.ecep.contract.controller.table.cell.CompanyTableCell?>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"
xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.ecep.contract.controller.tab.ContractTabSkinSubContract"
@@ -24,6 +26,8 @@
<TableColumn fx:id="subContractTable_idColumn" prefWidth="75.0" text="ID"/>
<TableColumn fx:id="subContractTable_codeColumn" prefWidth="120" text="合同编号" sortType="DESCENDING"/>
<TableColumn fx:id="subContractTable_nameColumn" prefWidth="250" text="合同名称"/>
<TableColumn fx:id="subContractTable_companyColumn" prefWidth="250" text="公司">
</TableColumn>
<TableColumn fx:id="subContractTable_setupDateColumn" prefWidth="75.0" text="提交日期"/>
<TableColumn fx:id="subContractTable_inureDateColumn" prefWidth="75.0" text="生效日期"/>
<TableColumn fx:id="subContractTable_orderDateColumn" prefWidth="75.0" text="签订日期"/>

View File

@@ -28,6 +28,16 @@
minWidth="50.0" prefWidth="180.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0"
vgrow="NEVER"/>
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0"
vgrow="NEVER"/>
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0"
vgrow="NEVER"/>
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0"
vgrow="NEVER"/>
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0"
vgrow="NEVER"/>
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0"
vgrow="NEVER"/>
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0"
@@ -45,33 +55,50 @@
<Label text="订单号#"/>
<TextField fx:id="codeField" GridPane.columnIndex="1"/>
<Label text="业务员" GridPane.rowIndex="1"/>
<TextField fx:id="createdField" disable="true" promptText="yyyy-MM-dd"
GridPane.columnIndex="1" GridPane.rowIndex="3"/>
<Label text="引用ID" GridPane.columnIndex="2" GridPane.rowIndex="0"/>
<TextField fx:id="refIdField" GridPane.columnIndex="3" GridPane.rowIndex="0"/>
<Label text="合同" GridPane.rowIndex="9"/>
<TextField fx:id="contractField" GridPane.columnIndex="1" GridPane.rowIndex="9"/>
<TextField fx:id="employeeField" GridPane.columnIndex="1"
GridPane.rowIndex="1"/>
<Label text="税率" GridPane.columnIndex="2" GridPane.rowIndex="1"/>
<TextField fx:id="taxRateField" GridPane.columnIndex="3" GridPane.rowIndex="1"/>
<Label text="制单人" GridPane.rowIndex="2"/>
<Label text="制单日期" GridPane.columnIndex="2" GridPane.rowIndex="2"/>
<Label text="审核人" GridPane.rowIndex="3"/>
<Label text="审核日期" GridPane.columnIndex="2" GridPane.rowIndex="3"/>
<TextField fx:id="makerField" GridPane.columnIndex="1"
GridPane.rowIndex="2"/>
<TextField fx:id="makeDateField" GridPane.columnIndex="3"
GridPane.rowIndex="2"/>
<Label text="客户" GridPane.columnIndex="2" GridPane.rowIndex="2"/>
<TextField fx:id="customerField" GridPane.columnIndex="3" GridPane.rowIndex="2"/>
<Label text="制单日期" GridPane.rowIndex="3"/>
<TextField fx:id="makeDateField" GridPane.columnIndex="1"
GridPane.rowIndex="3"/>
<Label text="客户地址" GridPane.columnIndex="2" GridPane.rowIndex="3"/>
<TextField fx:id="customerAddressField" GridPane.columnIndex="3" GridPane.rowIndex="3"/>
<Label text="审核人" GridPane.rowIndex="4"/>
<TextField fx:id="verifierField" GridPane.columnIndex="1"
GridPane.rowIndex="3"/>
<TextField fx:id="verifierDateField" GridPane.columnIndex="3"
GridPane.rowIndex="3"/>
<Label layoutX="20.0" layoutY="28.0" text="备注" GridPane.rowIndex="4"/>
GridPane.rowIndex="4"/>
<Label text="修改人" GridPane.columnIndex="2" GridPane.rowIndex="4"/>
<TextField fx:id="modifierField" GridPane.columnIndex="3" GridPane.rowIndex="4"/>
<Label text="审核日期" GridPane.rowIndex="5"/>
<TextField fx:id="verifierDateField" GridPane.columnIndex="1"
GridPane.rowIndex="5"/>
<Label text="修改日期" GridPane.columnIndex="2" GridPane.rowIndex="5"/>
<TextField fx:id="modifierDateField" GridPane.columnIndex="3" GridPane.rowIndex="5"/>
<Label text="关闭人" GridPane.rowIndex="6"/>
<TextField fx:id="closerField" GridPane.columnIndex="1"
GridPane.rowIndex="6"/>
<Label text="关闭日期" GridPane.columnIndex="2" GridPane.rowIndex="6"/>
<TextField fx:id="closerDateField" GridPane.columnIndex="3" GridPane.rowIndex="6"/>
<Label layoutX="20.0" layoutY="28.0" text="备注" GridPane.rowIndex="7"/>
<TextArea fx:id="descriptionField" GridPane.columnIndex="1"
GridPane.columnSpan="3" GridPane.rowIndex="4"/>
GridPane.columnSpan="3" GridPane.rowIndex="7"/>
<HBox alignment="CENTER_RIGHT" spacing="5.0" GridPane.columnIndex="1"
GridPane.columnSpan="3" GridPane.rowIndex="5">
GridPane.columnSpan="3" GridPane.rowIndex="8">
<children>
<Button fx:id="saveBtn" disable="true" mnemonicParsing="false"
text="保存"/>
</children>
</HBox>
<Label fx:id="versionLabel" text="\@Version" GridPane.rowIndex="5"/>
<TextField fx:id="employeeField" GridPane.columnIndex="1"
GridPane.rowIndex="1"/>
<Label fx:id="versionLabel" text="\@Version" GridPane.rowIndex="8"/>
</children>
<VBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>