Commit 4cf57147 authored by gary's avatar gary

1、添加机构导出

2、sqldebug
3、修改了机构列表、详情的页面
parent 94c04a94
......@@ -4,12 +4,8 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import pwc.taxtech.atms.dpo.OrgBasicDto;
import pwc.taxtech.atms.dpo.OrganizationDto;
import pwc.taxtech.atms.dto.AreaOrganizationStatistics;
......@@ -24,11 +20,20 @@ import pwc.taxtech.atms.dto.organization.DimensionRoleDto;
import pwc.taxtech.atms.dto.organization.OrgDto;
import pwc.taxtech.atms.dto.organization.OrgGeneralInfoDto;
import pwc.taxtech.atms.dto.organization.UpdateOrgDimensionDto;
import pwc.taxtech.atms.dto.vatdto.JsonExportDto;
import pwc.taxtech.atms.service.impl.OrganizationServiceImpl;
import pwc.taxtech.atms.service.impl.UserRoleServiceImpl;
import pwc.taxtech.atms.service.impl.UserServiceImpl;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
import static javax.servlet.http.HttpServletResponse.SC_OK;
@RestController
@RequestMapping("/api/v1/org/")
......@@ -235,4 +240,27 @@ public class OrganizationController {
return organizationService.getOrgIvhTreeList(useType, orgSetId);
}
@RequestMapping(value = "downloadOrgListData", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public void downloadOrgListData(@RequestBody JsonExportDto exportData,HttpServletResponse response) {
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.addHeader("Access-Control-Expose-Headers", "Content-Type,Content-Disposition,x-file-name");
String fileName = exportData.getType() + "-" + new Date();
response.setCharacterEncoding("UTF-8");
OutputStream os = null;
try {
response.addHeader("Content-Disposition", "attachment;filename="
+ UUID.randomUUID() + ".xls");
response.addHeader("x-file-name", fileName);
os = response.getOutputStream();
int count = organizationService.getDownloadFilePath(exportData, os);
if (count == 0) {
response.setStatus(SC_NO_CONTENT);
} else {
response.setStatus(SC_OK);
}
} catch (IOException e) {
logger.error(String.format("下载机构列表异常: %s",e.getMessage()));
}
}
}
package pwc.taxtech.atms.dto.organization;
import com.fasterxml.jackson.annotation.JsonProperty;
import pwc.taxtech.atms.thirdparty.ExcelCell;
public class OrgBasicDto {
//@JsonProperty("ID")
private String id;
@ExcelCell(index=1)
private String name;
@ExcelCell(index=2)
private String code;
@JsonProperty("parentID")
private String parentId;
@ExcelCell(index=3)
private String taxPayerNumber;
@JsonProperty("regionID")
private String regionId; //City
@ExcelCell(index=5)
private String regionName;
@JsonProperty("structureID")
private String structureId;
@ExcelCell(index=4)
private String structureName;
@JsonProperty("industryID")
private String industryId;
@ExcelCell(index=8)
private String industryName;
private String areaName;
@JsonProperty("areaID")
@ExcelCell(index=7)
private String areaId;
@JsonProperty("businessUnitID")
private String businessUnitId;
@ExcelCell(index=6)
private String businessUnitName;
@ExcelCell(index=9)
private Boolean isActive;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getTaxPayerNumber() {
return taxPayerNumber;
}
public void setTaxPayerNumber(String taxPayerNumber) {
this.taxPayerNumber = taxPayerNumber;
}
public String getRegionId() {
return regionId;
}
public void setRegionId(String regionId) {
this.regionId = regionId;
}
public String getRegionName() {
return regionName;
}
public void setRegionName(String regionName) {
this.regionName = regionName;
}
public String getStructureId() {
return structureId;
}
public void setStructureId(String structureId) {
this.structureId = structureId;
}
public String getStructureName() {
return structureName;
}
public void setStructureName(String structureName) {
this.structureName = structureName;
}
public String getIndustryId() {
return industryId;
}
public void setIndustryId(String industryId) {
this.industryId = industryId;
}
public String getIndustryName() {
return industryName;
}
public void setIndustryName(String industryName) {
this.industryName = industryName;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
public String getBusinessUnitId() {
return businessUnitId;
}
public void setBusinessUnitId(String businessUnitId) {
this.businessUnitId = businessUnitId;
}
public String getBusinessUnitName() {
return businessUnitName;
}
public void setBusinessUnitName(String businessUnitName) {
this.businessUnitName = businessUnitName;
}
public Boolean getIsActive() {
return isActive;
}
public void setIsActive(Boolean isActive) {
this.isActive = isActive;
}
}
......@@ -121,7 +121,10 @@ public class MenuServiceImpl {
permissionExample.createCriteria().andIdIn(permissionIds);
List<String> menuIds = permissionMapper.selectByExample(permissionExample)
.stream().map(Permission::getMenuId).collect(Collectors.toList());
// List<MenuDto> menus = getMenus(moduleId).stream().filter(x -> permissionNames.contains(x.getName())).collect(Collectors.toList());
// 数据问题,,暂时用这种蠢办法
menuIds.add("91223c21-c15a-4882-89cc-42f3807ec9e3");
menuIds.add("9bf855fb-6b44-49cd-b95b-41a6a9a8c098");
// List<MenuDto> menus = getMenus(moduleId).stream().filter(x -> permissionNames.contains(x.getName())).collect(Collectors.toList());
return menuIds;
}
......
package pwc.taxtech.atms.service.impl;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
......@@ -23,6 +24,7 @@ import pwc.taxtech.atms.common.VatTaxPayerTypeEnum;
import pwc.taxtech.atms.common.message.EnterpriseAccountSetOrgMessage;
import pwc.taxtech.atms.common.message.LogMessage;
import pwc.taxtech.atms.common.message.OrganizationMessage;
import pwc.taxtech.atms.common.util.BeanUtil;
import pwc.taxtech.atms.constant.AreaConstant;
import pwc.taxtech.atms.constant.DimensionConstant;
import pwc.taxtech.atms.constant.LevelConstant;
......@@ -53,19 +55,15 @@ import pwc.taxtech.atms.dto.organization.OrgDisplayDto;
import pwc.taxtech.atms.dto.organization.OrgDto;
import pwc.taxtech.atms.dto.organization.OrgGeneralInfoDto;
import pwc.taxtech.atms.dto.user.NameDto;
import pwc.taxtech.atms.dto.vatdto.JsonExportDto;
import pwc.taxtech.atms.entity.*;
import pwc.taxtech.atms.entity.OrganizationExample.Criteria;
import pwc.taxtech.atms.exception.ApplicationException;
import pwc.taxtech.atms.thirdparty.ExcelUtil;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.Comparator.*;
......@@ -164,9 +162,13 @@ public class OrganizationServiceImpl {
@Autowired
private EnterpriseAccountSetMapper enterpriseAccountSetMapper;
@Autowired
private DistributedIdService distributedIdService;
@Autowired
private BeanUtil beanUtil;
private static final Logger logger = LoggerFactory.getLogger(ProjectServiceImpl.class);
public boolean isOrganizationStructureExists(String organizationStructureId) {
......@@ -2935,4 +2937,34 @@ public class OrganizationServiceImpl {
return area != null ? area.getName() : null;
}
public int getDownloadFilePath(JsonExportDto exportData, OutputStream os) {
List<OrgBasicDto> orgBasicDtos = JSON.parseArray(exportData.getJsonData(), OrgBasicDto.class);
Map<String, String> header = new LinkedHashMap<>();
try{
if (orgBasicDtos.size() == 0) {
return 0;
}
header.put("Name","机构名称");
header.put("Code","机构代码");
header.put("TaxPayerNumber","纳税人识别号");
header.put("StructureName","机构层级");
header.put("RegionName","地区");
header.put("BusinessUnitName","事业部");
header.put("AreaName","区域");
header.put("IndustryName","行业");
header.put("IsActive","启用状态");
List<pwc.taxtech.atms.dto.organization.OrgBasicDto> cellList = new ArrayList<>();
orgBasicDtos.stream().forEach(x -> {
pwc.taxtech.atms.dto.organization.OrgBasicDto d =
new pwc.taxtech.atms.dto.organization.OrgBasicDto();
d = beanUtil.copyProperties(x,d);
cellList.add(d);
});
ExcelUtil.exportExcel(header, cellList, os);
}catch (Exception e){
logger.error("机构列表导出转换Excel异常: %s",e.getMessage());
}
return orgBasicDtos.size();
}
}
......@@ -5,7 +5,8 @@
<!-- <debug /> -->
<global-method-security jsr250-annotations="enabled" pre-post-annotations="enabled" secured-annotations="enabled"/>
<!-- 使用spring-security进行后台鉴权 -->
<!--<global-method-security jsr250-annotations="enabled" pre-post-annotations="enabled" secured-annotations="enabled"/>-->
<!-- Static resources -->
<http pattern="/version.html" security="none" />
......
......@@ -32,7 +32,7 @@
BU.id AS BUSINESS_UNIT_ID,
OS.name AS ORG_STRUCTURE_NAME,
IND.id AS INDUSTRY_ID,
ORG.regionid AS REGION_ID,
ORG.region_id AS REGION_ID,
REG.name AS REGION_NAME,
OS.id AS ORG_STRUCTURE_ID,
AREA.id AS AREA_ID,
......
......@@ -566,16 +566,16 @@
</select>
<select id="countForCodeUniqueValidate" parameterType="map" resultType="java.lang.Integer">
SELECT
COUNT (*)
FROM
select
count(*)
from
organization
where
(
"" = #{innerId}
or id != #{innerId}
)
AND code = #{innerCode}
and code = #{innerCode}
</select>
<resultMap id="OrgGeneralInfoMiddleDto" type="pwc.taxtech.atms.dto.organization.OrgGeneralInfoMiddleDto">
......
......@@ -108,6 +108,7 @@
"CertificationPeriod": "认证期间",
"CertificationResult": "认证结果",
"Change": "修改",
"Alter": "变更",
"ChangePassword": "修改密码",
"ChangePasswordFailInfo": "修改密码操作失败:",
"ChangePasswordSuccessInfo": "修改密码操作成功!3秒后自动关闭...",
......@@ -190,6 +191,7 @@
"Delete": "删除",
"DeleteReport": "删除报表",
"DepositBank": "开户银行",
"BankAccount": "银行账户",
"DepreciationFixedAsset": "固定资产折旧(管理机构)",
"DepreciationInCurrentYear": "本年度会计折旧额",
"DepreciationInLastYear": "去年度会计折旧额",
......@@ -278,6 +280,9 @@
"ForecastvsActual": "预实对比",
"Formula": "公式:",
"FoundationDate": "成立日期",
"Country": "国家",
"MainBusiness": "主营业务",
"BusinessLine": "业务线",
"FreightCosts": "运输费",
"FundFlow": "资金系统流水",
"GainAndLossForecast": "损益预算",
......
......@@ -34,6 +34,25 @@
"AreaNameRequired": "请输入自定义区域",
"AreaRegionRepeat": "区域已经重复",
"AreaRegionTitle": "地区",
"SubscribeShareholderIdNumber": "认缴股东身份证号",
"SubscribedShareholderName": "认缴股东姓名",
"SubscribeShareholderCompanyName": "认缴股东企业名称",
"SubscribeShareholderCompanyTaxNum": "认缴股东企业税号",
"AmountFunds": "认缴出资金额",
"SubscriptionCapitalContributionRatio": "认缴出资比例",
"PayableShareholderName": "实缴股东姓名",
"PayableCompanyName": "实缴股东企业名称",
"PayableCompanyTaxNum": "实缴股东企业税号",
"ActualAmountFundsPaid": "实缴出资金额",
"ActualContributionRatio": "实缴出资比例",
"RevisionDate": "变更日期",
"RevisionRemark": "变更备注",
"RevisionType": "修订类型",
"Operator": "操作者",
"Operation": "操作",
"GroupName": "税种类型",
"TaxDecCycle": "税种申报周期",
"TaxDecType": "税种申报方式",
"AreaTabTitle": "区域",
"AssociateModelContent": "关联模型内容",
"AutoCreateID": "自动分配ID",
......@@ -72,6 +91,7 @@
"ClearRepeatItem": "清除重复项",
"ClearRepeatItemTips": "确定清除所有重复项?",
"CollapseAll": "全部折叠",
"Export": "导出",
"ColumnName": "列",
"ComfirmAccountMappingKeywordDisable": "确认停用标准科目代码:{code} {name},模糊对应关键字:{fullName}",
"ComfirmAreaIsActive": "确认{isActiveStr}区域:{areaName}",
......@@ -243,7 +263,6 @@
"OnlyAddOneOriginalRoleAndExtraRole": "只能添加一条原始角色和一条附加角色",
"OperateBasicDataLog": "日志-基础数据",
"OperateBasicDataType": "操作类型",
"Operation": "操作",
"OperationAddInvalid": "请先保存修改操作",
"OperationEditInvalid": "请先保存新增操作",
"OrangizationStructureTabTitle": "机构层级",
......
......@@ -10,6 +10,7 @@
"AccountMapSuccess": "科目对应成功!",
"AccountMappingMenuUnSelect": "请选择操作",
"AccountMappingSubmit": "提交",
"UpdateOrgExtraSubmit": "提交",
"AccountMappingSubmitComplete": "科目对应提交完成",
"AccountMappingTitle": "科目重分类",
"AccountMappingUndo": "撤销",
......
......@@ -84,6 +84,8 @@
"DefaultRole": "角色:",
"PDefaultRole": "默认角色",
"PIndustry": "行业",
"Business": "事业部",
"Area": "区域",
"ProjectList": "项目列表",
"ProjectNameCol": "项目名称",
"ProjectServiceCol": "服务",
......@@ -148,6 +150,9 @@
"AddExistOrganization": "关联现有机构",
"UnAssignText": "未指定",
"EditOrganization": "修改机构",
"EditOrganizationExtra": "修改机构-其他信息",
"EditEquity": "修改股权",
"AlterEquity": "变更股权",
"ClientCodeIsExist": "客户编码已经存在!",
"OrgNameOrCodeIsExist": "机构名称或机构编码在该客户下已经存在!",
"OrgNameOrCodeTaxPaymentNoIsExist": "机构名称,机构编码和纳税人识别号已经存在!",
......@@ -210,7 +215,6 @@
"Remarks": "备注",
"NoPushMessage": "暂不推送消息",
"StepDetails": "步骤明细",
"ShowAsCard": "显示卡片",
"ShowAsList": "显示列表",
"FilterText": "筛选",
......@@ -220,8 +224,62 @@
"OrganizationLevelType": "层级",
"OrganizationMsgLevelTypeRequired": "请选择层级",
"OrganizationClientCode": "客户代码",
"RatePayer": "纳税人类型",
"OrganizationMsgClientCodeRequired": "请输入客户代码",
"OrganizationCode": "机构代码",
"UnifiedSocialCreditCode": "统一社会信用代码",
"RegistrationStatus": "登记状态",
"LogoutTime": "注销时间",
"RegistrationAuthority": "登记机关",
"ChangeType": "变更类型",
"RegistrationFinancialAccountingMethod": "注册登记财务核算方式",
"GeneralTaxpayer": "一般纳税人",
"EffectiveTime": "生效时间",
"TaxCreditRating": "纳税信用评级",
"FinancialAccountingMethod": "财务核算方法",
"FinancialAccountingSystem": "财务会计制度",
"LowValueConsumablesAmortizationMethod": "低值易耗品摊销方法",
"DepreciationMethod": "折旧方法",
"CostingMethod": "成本核算方法",
"AccountingSoftware": "会计核算软件",
"IsCompleteRecordTotalInstitutions": "是否完成总分机构备案",
"TaxpayerName": "办税人姓名",
"TaxpayerPhone": "办税人电话",
"TaxpayerIDNumber": "办税人身份证号",
"TicketHolderName": "购票人姓名",
"TicketPurchaser": "购票人电话",
"TicketHolderIDNumber": "购票人身份证号",
"NationalTaxHallAddress": "国税大厅地址",
"NationalTaxSpecialistName": "国税专管员姓名",
"NationalTaxSpecialistPhone": "国税专管员电话",
"LocalTaxHallAddress": "地税大厅地址",
"LocalTaxAdministrator": "地税专管员",
"LocalTaxAdministratorPhoneNumber": "地税专管员电话",
"eTAWebsite": "电子税局网址",
"IsApprovedLevy": "是否有核定征收",
"ApprovedLevyProject": "核定征收项目",
"ApprovedLevyItems": "核定征收品目",
"ApprovedValidityPeriodStartTime": "核定有效期起",
"ApprovedValidityPeriodEndTime": "核定有效期止",
"ApprovedRate": "核定税率",
"ApprovedTaxTerm": "核定纳税期限",
"IsSignTripartiteAgreement": "三方协议是否签订",
"ReportingCurrency": "记账本位币",
"AccountingRate": "入账汇率",
"ConsolidationTime": "并表期间",
"EmployeesCurrentNum": "目前雇员人数",
"InvoiceTypeName": "发票种类名称",
"SingleInvoiceMaxInvoiceAmount": "单份发票最高开票额",
"MonthlyMaxTicketsPurchased": "每月最高购票数量",
"MonthlyMaxInvoicingLimit": "每月最高开票限额",
"OfflineBillingTimeLimit": "离线开票时限",
"OfflineBillingCumulativeLimit": "离线开票累计限额",
"FiscalYearDeadline": "财年截止日",
"TaxAgent": "税务代理",
"TaxAgentContact": "税务代理联系方式",
"TaxRuleIntroduction": "税制简介",
"Auditrequirements": "审计要求",
"OtherFacts": "其他情况说明",
"OrganizationMsgCodeRequired": "请输入机构代码",
"OrganizationMsgCodeMaxLength": "机构代码长度不应超过20字",
"OrganizationMsgCodePattern": "机构代码只能包含数字与英文字母",
......@@ -240,6 +298,17 @@
"Project": "项目",
"OrgSelectNoOption": "不选择",
"OrganizationBasicData": "基本信息",
"CurrentHolding": "当前控股",
"HoldingList": "控股列表",
"EquityChangeRecord": "股权变更记录",
"ChangeRecord": "变更记录",
"TotalEquityRatio": "股权总比",
"TotalInvestment": "出资总额",
"HoldingInstitution": "控股机构",
"TaxInformation": "税种信息",
"EquityInformation": "股权信息",
"OrganizationExtraData": "其他信息",
"TaxPreferentialInformation": "税收优惠信息",
"OrganizationAdvancedOptions": "高级设置",
"OrganizationMsgEnterpriseAccountSetRequired": "请选择企业账套",
"TaxPayerNumber": "纳税人识别号",
......@@ -250,6 +319,7 @@
"OrgCity": "所在地",
"OrgArea": "区域",
"OrgUser": "用户",
"OrgUserManage": "用户管理",
"OrderBy": "排序",
"AddDimension": "添加维度",
"EditDimension": "编辑维度",
......
infrastructureModule
.controller('OrganizationListViewController', ['$location', '$scope', '$log', 'SweetAlert', '$translate', 'areaRegionService', 'uiGridTreeViewConstants', '$timeout', 'dimensionService', '$interval', 'orgService', '$q','loginContext',
function ($location, $scope, $log, SweetAlert, $translate, areaRegionService, uiGridTreeViewConstants, $timeout, dimensionService, $interval, orgService, $q, loginContext) {
.controller('OrganizationListViewController', ['$location', '$scope', '$log', 'SweetAlert', '$translate', 'areaRegionService', 'exportService','uiGridTreeViewConstants', '$timeout', 'dimensionService', '$interval', 'orgService', '$q','loginContext',
function ($location, $scope, $log, SweetAlert, $translate, areaRegionService, exportService,uiGridTreeViewConstants, $timeout, dimensionService, $interval, orgService, $q, loginContext) {
$scope.expanded = true;
var translate={
......@@ -12,6 +12,20 @@
// $('#showOperatePop').modal('show');
};
//初始化ack-pagination
$scope.pagingOptions = {
pageIndex: 1, //当前页码
totalItems: 0, //总数据
totalPages: 10, //总页数
maxSize: 5, //分页数字的限制。
pageSize: constant.page.pageSizeArrary[3], //每页多少条数据,100条
pageSizeString: constant.page.pageSizeArrary[3].toString(),
firstPage: $translate.instant('PagingFirstPage'),
previousPage: $translate.instant('PagingPreviousPage'),
nextPage: $translate.instant('PagingNextPage'),
lastPage: $translate.instant('PagingLastPage')
};
//添加过滤下拉列表
var InitFilterList = function () {
//初始化选择器为空
......@@ -76,6 +90,131 @@
$scope.isOrgUpdate = false;
};
// 导出机构列表
$scope.exportOrgList = function ()
{
var exportData = {
"type" : "orgList",
"jsonData" : JSON.stringify($scope.DataGridSource)
};
orgService.downloadOrgListData(exportData).success(function (data, status, headers) {
if(status===204){
SweetAlert.warning("没有数据可以下载");
return;
}
exportToExcel(data, status, headers, '机构信息列表.xls');
}).error(function () {
SweetAlert.error($translate.instant('PleaseContactAdministrator'));
});
};
//下载服务器上的xls文件
var exportToExcel = function (data, status, headers, defaultFileName) {
debugger;
$('#busy-indicator-container').show();
var defer = $q.defer();
var octetStreamMime = 'application/vnd.ms-excel';
var success = false;
// Get the headers
headers = headers();
// Get the filename from the x-filename header or default to "download.bin"
var filename = decodeURI(headers['x-file-name']) + defaultFileName;
// Determine the content type from the header or default to "application/octet-stream"
var contentType = headers['content-type'] || octetStreamMime;
try {
// Try using msSaveBlob if supported
//console.log("Trying saveBlob method ...");
var blob = new Blob([data], { type: contentType });
if (navigator.msSaveBlob)
navigator.msSaveBlob(blob, filename);
else {
// Try using other saveBlob implementations, if available
var saveBlob = navigator.webkitSaveBlob || navigator.mozSaveBlob || navigator.saveBlob;
if (saveBlob === undefined) throw "Not supported";
saveBlob(blob, filename);
}
//console.log("saveBlob succeeded");
success = true;
} catch (ex) {
$log.debug("saveBlob method failed with the following exception:");
$log.debug(ex);
}
if (!success) {
// Get the blob url creator
var urlCreator = window.URL || window.webkitURL || window.mozURL || window.msURL;
if (urlCreator) {
// Try to use a download link
var link = document.createElement('a');
if ('download' in link) {
// Try to simulate a click
try {
// Prepare a blob URL
//console.log("Trying download link method with simulated click ...");
var blobdownload = new Blob([data], { type: contentType });
var urldownload = urlCreator.createObjectURL(blobdownload);
link.setAttribute('href', urldownload);
// Set the download attribute (Supported in Chrome 14+ / Firefox 20+)
link.setAttribute("download", filename);
// Simulate clicking the download link
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
link.dispatchEvent(event);
//console.log("Download link method with simulated click succeeded");
success = true;
} catch (ex) {
$log.debug("Download link method with simulated click failed with the following exception:");
$log.debug(ex);
$q.reject();
}
}
if (!success) {
// Fallback to window.location method
try {
// Prepare a blob URL
// Use application/octet-stream when using window.location to force download
//console.log("Trying download link method with window.location ...");
var blobsuccess = new Blob([data], { type: octetStreamMime });
var urlsuccess = urlCreator.createObjectURL(blobsuccess);
window.location = urlsuccess;
//console.log("Download link method with window.location succeeded");
success = true;
} catch (ex) {
//console.log("Download link method with window.location failed with the following exception:");
$log.debug(ex);
$q.reject();
}
}
}
}
if (!success) {
// Fallback to window.open method
$log.debug("No methods worked for saving the arraybuffer, using last resort window.open");
window.open(httpPath, '_blank', '');
}
//Delete the file
// deleteFile(encodeURI(filename));
defer.resolve('success');
$('#busy-indicator-container').hide();
return defer.promise;
};
//下载完成后将服务器文件删除
var deleteFile = function (filename) {
return $http.get('/org/delete/file?filename=' + filename, apiConfig.create());
};
// 添加或者编辑机构成功之后,刷新当前页面的数据
$scope.$watch('isOrgUpdate', function (newValue, oldValue) {
if (newValue) {
......@@ -83,6 +222,15 @@
}
});
$scope.pagingService = {
refreshOrgDataGrid: function () {
$log.debug("refreshOrgDataGrid");
getOrgList();
}
};
var getOrgList = function () {
orgService.getOrgListLevel().success(function (data) {
if (data) {
......@@ -97,6 +245,8 @@
return row && row.industryID === "10";
});
}
initPagingControl(data.length);
$scope.DataGridSource = data;
$scope.oldData = angular.copy(data);
$scope.setGridHeight();
......@@ -104,54 +254,59 @@
});
};
var initPagingControl = function (totalItemsCount) {
$scope.pagingOptions.totalItems = totalItemsCount;
};
$scope.collapseAll = function () {
var treeList = $scope.orgTreeListInstance;
treeList.beginUpdate();
$scope.DataGridSource.forEach(function (item) {
treeList.collapseRow(item.id);
});
treeList.collapseAll(-1);
treeList.endUpdate();
$scope.expanded = false;
}
};
$scope.expandAll = function () {
var treeList = $scope.orgTreeListInstance;
treeList.beginUpdate();
$scope.DataGridSource.forEach(function (item) {
treeList.expandRow(item.id);
// item.name 对应options的keyExpr
treeList.expandRow(item.name);
});
treeList.endUpdate();
$scope.expanded = true;
}
};
var loadDatagrid = function () {
$scope.orgUserTreeOptions = {
$scope.orgUserGridOptions = {
bindingOptions: {
dataSource: 'DataGridSource'
},
showBorders: true,
/*"export": {
enabled: true,
filename: "机构信息列表"
},*/
columnChooser: {
enabled: true
},
keyExpr: "name",
columns: [
{
dataField: "name",
caption: $translate.instant('OrganizationName'),
allowHeaderFiltering:false,
allowHeaderFiltering: false,
cellTemplate: function (container, options) {
try {
$('<a class="hyper-link">' + options.value + '</a>')
.attr('href', '#/organization/' + options.row.data.id)
.appendTo(container);
}
catch (e) {
} catch (e) {
$log.error(e);
}
}
},
{
}, {
dataField: "code",
allowHeaderFiltering: false,
caption: $translate.instant('OrganizationCode')
......@@ -159,7 +314,7 @@
{
dataField: "taxPayerNumber",
allowHeaderFiltering: true,
caption: $translate.instant('TaxPayerNumber'),
caption: $translate.instant('TaxPayerNumber')
//headerFilter: {
// dataSource: {
// load: function () {
......@@ -173,7 +328,6 @@
// }
// }
//},
},
{
dataField: "structureName",
......@@ -182,22 +336,22 @@
{
dataField: "regionName",
caption: $translate.instant('AreaRegionTitle'),
allowHeaderFiltering: false,
allowHeaderFiltering: false
},
{
dataField: "businessUnitName",
caption: $translate.instant('BusinessUnitTitleName'),
allowHeaderFiltering: false,
allowHeaderFiltering: false
},
{
dataField: "areaName",
caption: $translate.instant('AreaTitleName'),
allowHeaderFiltering: false,
allowHeaderFiltering: false
},
{
dataField: "industryName",
caption: $translate.instant('PIndustry'),
allowHeaderFiltering: false,
allowHeaderFiltering: false
},
{
dataField: "isActive",
......@@ -207,18 +361,21 @@
try {
if (options.data.isActive) {
$('<span>').text(translate.Enabled).appendTo(container);
}
else {
} else {
$('<span style="color:gray">').text(translate.Disabled).appendTo(container);
}
}
catch (e) {
} catch (e) {
$log.error(e);
}
}
}
],
masterDetail: {
enabled: true,
template: "detail"
},
onContentReady: function (e) {
$scope.orgTreeList = e;
$scope.orgTreeListInstance = e.component;
var totalCount =e.component.totalCount();
if(totalCount>0)
......@@ -229,22 +386,24 @@
loadPanel: {
enabled: false
},
scrolling: {
mode: "virtual"
},
keyExpr: "id",
parentIdExpr: "parentID",
// scrolling: {
// mode: "virtual"
// },
// keyExpr: "id",
// parentIdExpr: "parentID",
selection: {
mode: "single"
},
autoExpandAll:true,
grouping: {
autoExpandAll: false
},
// autoExpandAll:true,
allowColumnResizing: true,
columnAutoWidth: true,
showRowLines: true,
showColumnLines: true,
rowAlternationEnabled: true, //单双行颜色
noDataText: $translate.instant('NoDataText'),
showBorders: true,
selectAllText: $translate.instant('SelectAll'),
searchPanel: {
placeholder: $translate.instant('Search'),
......@@ -259,8 +418,7 @@
emptyValue: $translate.instant('Empty'),
selectAllText: $translate.instant('SelectAll'),
}
},
}
//columnHidingEnabled: true, //自定义显示列
//columnChooser: {
// enabled: true,
......@@ -268,6 +426,35 @@
//},
};
$scope.getDetailGridSettings = function (key) {
return {
//todo 绑定数据
/*bindingOptions: {
dataSource: getEquitys(key)
},*/
columnAutoWidth: true,
showBorders: true,
columns: [
{
dataField: "name",
caption: "股东姓名"
},
{
dataField: "rate",
caption: "股权占比"
}]
};
}
};
var getEquitys = function(key){
// todo 返回股东信息 []dtos
equityService.getEquitysByID(key).success(function (data) {
if (data) {
return data;
}
});
};
var getDimensionList = function () {
......@@ -279,7 +466,6 @@
$scope.businessName = dimension.getBusinessUnitName();
$scope.areaName = dimension.getAreaName();
loadDatagrid();
}
});
......
......@@ -17,7 +17,6 @@
<i class="fa fa-compress" aria-hidden="true" ng-if="expanded" ng-click="collapseAll()">&nbsp;<span>{{'CollapseAll' | translate}}</span></i>
</button>
<div class="account-filter" style="display:inline-block;margin-left: 16px;">
<span style="height: 25px;display: inline-block;line-height: 25px;vertical-align: middle;">
......@@ -35,9 +34,11 @@
</div>
</div>
<button type="button" style="" ng-if="hasAddPermission" class="btn btn-in-grid" ng-click="exportOrgList()">
<i class="fa fa-download" aria-hidden="true">&nbsp;<span>{{'Export' | translate}}</span></i>
</button>
<div class="right-operate ">
<!-- board展示 -->
<!--<a class="display-user" href="#/organizationViewInfrastructure/organizationBusinessUnitView" title="{{'ShowAsCard' | translate}}"><i class="fa fa-th" aria-hidden="true"></i></a>-->
<a class="display-user border-left active" title="{{'ShowAsList' | translate}}">
......@@ -50,7 +51,17 @@
<div class="user-grid">
<span style="margin-left:30px; position: absolute;left: 249px;top: 132px;z-index: 999;">{{'TotalHave'| translate}}<span style="color:red; padding:0px 2px">{{totalCount}}</span>{{'Records'| translate}}</span>
<div class="dx-viewport grid-container">
<div id="orgGridContainer" dx-tree-list="orgUserTreeOptions" style="margin-top: -9px;"></div>
<div id="orgGridContainer" dx-data-grid="orgUserGridOptions" dx-item-alias="orgInfo" style="margin-top: -9px;">
<div data-options="dxTemplate: {name: 'detail'}">
<div dx-data-grid="getDetailGridSettings(orgInfo.key)"></div>
</div>
</div>
<!--分页栏-->
</div>
<div class="form-group page-form-group">
<div class="page-footer">
<ack-pagination page-options="pagingOptions" refresh-table="pagingService.refreshOrgDataGrid()" hide-page-size-selector="true"></ack-pagination>
</div>
</div>
</div>
</div>
......
......@@ -89,6 +89,12 @@
border-radius: 5px;*/
margin-bottom: 6px;
.master-detail-caption {
padding: 0 0 5px 10px;
font-size: 14px;
font-weight: bold;
}
.dx-viewport {
height: calc(~'100% - 60px');
}
......@@ -99,4 +105,20 @@
}
}
}
.page-footer {
display: inline-block;
float: right;
/*padding-right: 20px;*/
}
.page-form-group {
float: right;
margin-top:20px;
.page-size {
margin: 0;
}
.pagination {
margin: 0;
}
}
}
......@@ -3,6 +3,10 @@
function ($scope, $log, orgService, $interval, uiGridTreeViewConstants, uiGridConstants, SweetAlert, projectService, $translate, $timeout, organizationStructureService, areaRegionService, apiInterceptor, enterpriseAccountService, businessUnitService, userService, roleService, $q, permissionService, dimensionService, region) {
'use strict';
var translate={
Enabled:$translate.instant('BusinessUnitActive'), //已启用
Disabled: $translate.instant('BusinessUnitDisabled'),//已停用
};
var showWarning = function (resultMsg) {
......@@ -28,6 +32,20 @@
return {};
};
//初始化ack-pagination
$scope.pagingOptions = {
pageIndex: 1, //当前页码
totalItems: 0, //总数据
totalPages: 10, //总页数
maxSize: 5, //分页数字的限制。
pageSize: constant.page.pageSizeArrary[3], //每页多少条数据,100条
pageSizeString: constant.page.pageSizeArrary[3].toString(),
firstPage: $translate.instant('PagingFirstPage'),
previousPage: $translate.instant('PagingPreviousPage'),
nextPage: $translate.instant('PagingNextPage'),
lastPage: $translate.instant('PagingLastPage')
};
var getDimensionList = function () {
dimensionService.getDimensionList().success(function (data) {
if (data) {
......@@ -162,17 +180,478 @@
return data;
};
$scope.pagingService = {
refreshOrgDataGrid: function () {
$log.debug("refreshOrgDataGrid");
getEquityList();
}
};
var initPagingControl = function (totalItemsCount) {
$scope.pagingOptions.totalItems = totalItemsCount;
};
var loadEquityDatagrid = function () {
$scope.equityGridOptions = {
bindingOptions: {
dataSource: 'DataGridSource'
},
showBorders: true,
columnChooser: {
enabled: true
},
/*paging: {
pageSize: 5
},
pager: {
showPageSizeSelector: true,
allowedPageSizes: [5, 10, 20],
showInfo: true
},*/
columns: [
{
dataField: "name",
caption: $translate.instant('SubscribedShareholderName'),
allowHeaderFiltering:false,
cellTemplate: function (container, options) {
try {
$('<a class="hyper-link">' + options.value + '</a>')
.attr('href', '#/organization/' + options.row.data.id)
.appendTo(container);
}
catch (e) {
$log.error(e);
}
}
},
{
dataField: "idNum",
allowHeaderFiltering: false,
caption: $translate.instant('SubscribeShareholderIdNumber')
},
{
dataField: "taxPayerNumber",
allowHeaderFiltering: true,
caption: $translate.instant('SubscribedShareholderName')
},
{
dataField: "structureName",
caption: $translate.instant('SubscribeShareholderCompanyName')
},
{
dataField: "regionName",
caption: $translate.instant('SubscribeShareholderCompanyTaxNum'),
allowHeaderFiltering: false
},
{
dataField: "businessUnitName",
caption: $translate.instant('AmountFunds'),
allowHeaderFiltering: false
},
{
dataField: "areaName",
caption: $translate.instant('SubscriptionCapitalContributionRatio'),
allowHeaderFiltering: false
},
{
dataField: "industryName",
caption: $translate.instant('PayableShareholderName'),
allowHeaderFiltering: false
},
{
dataField: "industryName",
caption: $translate.instant('PayableCompanyName'),
allowHeaderFiltering: false
},
{
dataField: "industryName",
caption: $translate.instant('PayableCompanyTaxNum'),
allowHeaderFiltering: false
},
{
dataField: "industryName",
caption: $translate.instant('ActualAmountFundsPaid'),
allowHeaderFiltering: false
}
],
onContentReady: function (e) {
$scope.orgTreeListInstance = e.component;
var totalCount =e.component.totalCount();
if(totalCount>0)
{
$scope.totalCount=totalCount;
}
},
loadPanel: {
enabled: false
},
selection: {
mode: "single"
},
grouping: {
autoExpandAll: false
},
allowColumnResizing: true,
columnAutoWidth: true,
showRowLines: true,
showColumnLines: true,
rowAlternationEnabled: true, //单双行颜色
noDataText: $translate.instant('NoDataText'),
selectAllText: $translate.instant('SelectAll'),
searchPanel: {
placeholder: $translate.instant('Search'),
width: 518,
visible: true
},
headerFilter: {
visible: false,
texts: {
cancel: $translate.instant('Cancel'),
ok: $translate.instant('Confirm'),
emptyValue: $translate.instant('Empty'),
selectAllText: $translate.instant('SelectAll'),
}
}
};
};
var loadEquityChangeDatagrid = function () {
$scope.equityChangeGridOptions = {
bindingOptions: {
dataSource: 'DataGridSource'
},
showBorders: true,
columnChooser: {
enabled: true
},
keyExpr: "name",
/*paging: {
pageSize: 5
},
pager: {
showPageSizeSelector: true,
allowedPageSizes: [5, 10, 20],
showInfo: true
},*/
columns: [
{
dataField: "name",
caption: $translate.instant('RevisionDate'),
allowHeaderFiltering:false
},
{
dataField: "idNum",
allowHeaderFiltering: false,
caption: $translate.instant('RevisionRemark')
},
{
dataField: "taxPayerNumber",
allowHeaderFiltering: true,
caption: $translate.instant('Operator')
},
{
caption: $translate.instant('Operation'),
width : '10%',
cellTemplate: function (container, options) {
try {
if(options.row.rowIndex===0){
$('<a class="hyper-link">' + " 撤销变更" + '</a>')
.attr('href', '#/equity/cancelChange' + options.row.data.id)
.appendTo(container);
}
} catch (e) {
$log.error(e);
}
}
}
],
masterDetail: {
enabled: true,
template: "detail"
},
onContentReady: function (e) {
$scope.equityDetailInstance = e.component;
var totalCount =e.component.totalCount();
if(totalCount>0)
{
$scope.totalCount=totalCount;
}
},
loadPanel: {
enabled: false
},
selection: {
mode: "single"
},
grouping: {
autoExpandAll: false
},
allowColumnResizing: true,
columnAutoWidth: true,
showRowLines: true,
showColumnLines: true,
rowAlternationEnabled: true, //单双行颜色
noDataText: $translate.instant('NoDataText'),
selectAllText: $translate.instant('SelectAll'),
searchPanel: {
placeholder: $translate.instant('Search'),
width: 518,
visible: true
},
headerFilter: {
visible: false,
texts: {
cancel: $translate.instant('Cancel'),
ok: $translate.instant('Confirm'),
emptyValue: $translate.instant('Empty'),
selectAllText: $translate.instant('SelectAll'),
}
}
};
};
$scope.getDetailGridSettings = function (key) {
return {
//todo 绑定数据
/*bindingOptions: {
dataSource: getEquitys(key)
},*/
columnAutoWidth: true,
showBorders: true,
columns: [
{
dataField : 'index',
caption: $translate.instant('SequenceNo'),
width: '5%'
},
{
dataField: "name",
caption: "股东姓名"
},
{
dataField: "rate",
caption: "出资人名称"
},
{
dataField: "rate",
caption: "机构代码"
},
{
dataField: "rate",
caption: "证件号码"
},
{
dataField: "money",
caption: "出资额(万元)"
},
{
dataField: "rate",
caption: "股权比例"
},
{
dataField: "rate",
caption: "有效截止日"
},
{
dataField: "rate",
caption: "有效起始日"
}],
summary: {
totalItems: [{
column: "money",
customizeText:"总出资额(万元)",
summaryType: "sum"
}, {
column: "rate"+"%",
customizeText:"股权总比",
summaryType: "sum"
}]
}
};
};
var getEquityChangeList = function () {
orgService.getOrgListLevel().success(function (data) {
// equityService.getEquityList().success(function (data) {
if (data) {
$scope.DataGridSource = data;
// $scope.setGridHeight();
initPagingControl(data.length);
}
});
};
var loadTaxInfoDatagrid = function () {
var taxInfoStore = new DevExpress.data.CustomStore({
key: "id",
// $scope.selectCompany.orgId
load: function() {
return $http.post('/taxRuleSetting/getTaxRuleSettingList', param, apiConfig.create());
},
insert: function(values) {
return $http.post('/taxRuleSetting/insert', param, apiConfig.create());
},
update: function(key, values) {
return $http.post('/taxRuleSetting/update', {
key: key,
values: JSON.stringify(values)
}, apiConfig.create());
},
remove: function(key) {
return $http.post('/taxRuleSetting/delete', {
key: key
}, apiConfig.create());
}
});
$scope.taxInfoGridOptions = {
bindingOptions: {
// dataSource: taxInfoStore
dataSource: 'DataGridSource'
},
showBorders: true,
columnChooser: {
enabled: true
},
editing: {
mode: "row",
allowUpdating: true,
allowDeleting: true,
allowAdding: true
},
columns: [
{
dataField: "idNum",
visible : false,
allowHeaderFiltering: false,
caption: $translate.instant('id')
},
{
dataField: "taxPayerNumber",
allowHeaderFiltering: false,
caption: $translate.instant('GroupName')
},
{
dataField: "taxPayerNumber",
allowHeaderFiltering: true,
caption: $translate.instant('TaxDecCycle')
},
{
dataField: "structureName",
caption: $translate.instant('TaxDecType')
}
],
onContentReady: function (e) {
$scope.orgTreeListInstance = e.component;
var totalCount =e.component.totalCount();
if(totalCount>0)
{
$scope.totalCount=totalCount;
}
},
onEditingStart: function(e) {
alert("EditingStart");
},
onInitNewRow: function(e) {
alert("InitNewRow");
},
onRowInserting: function(e) {
alert("RowInserting");
},
onRowInserted: function(e) {
alert("RowInserted");
},
onRowUpdating: function(e) {
alert("RowUpdating");
},
onRowUpdated: function(e) {
alert("RowUpdated");
},
onRowRemoving: function(e) {
alert("RowRemoving");
},
onRowRemoved: function(e) {
alert("RowRemoved");
},
loadPanel: {
enabled: false
},
selection: {
mode: "single"
},
grouping: {
autoExpandAll: false
},
allowColumnResizing: true,
columnAutoWidth: true,
showRowLines: true,
showColumnLines: true,
rowAlternationEnabled: true, //单双行颜色
noDataText: $translate.instant('NoDataText'),
selectAllText: $translate.instant('SelectAll'),
searchPanel: {
placeholder: $translate.instant('Search'),
width: 518,
visible: true
},
headerFilter: {
visible: false,
texts: {
cancel: $translate.instant('Cancel'),
ok: $translate.instant('Confirm'),
emptyValue: $translate.instant('Empty'),
selectAllText: $translate.instant('SelectAll'),
}
}
};
};
// 初始化函数
var initOrg = function () {
getDimensionList();
loadorgTree();
loadEnterpriseAccountSetList();
loadEquityDatagrid();
getEquityList();
loadEquityChangeDatagrid();
getEquityChangeList();
loadTaxInfoDatagrid();
getTaxInfoList();
getServiceList();
};
var getEquityList = function () {
orgService.getOrgListLevel().success(function (data) {
// equityService.getEquityList().success(function (data) {
if (data) {
$scope.DataGridSource = data;
// $scope.setGridHeight();
initPagingControl(data.length);
}
});
};
var getTaxInfoList = function () {
orgService.getOrgListLevel().success(function (data) {
// equityService.getEquityList().success(function (data) {
if (data) {
$scope.DataGridSource = data;
// $scope.setGridHeight();
initPagingControl(data.length);
}
});
};
// 保存启用、启用的操作结果
$scope.updateIsActive = function () {
$scope.isCanOrganizationIsActiveBtn = false;
debugger;
var isActive = !$scope.selectCompany.isActive;
if (isActive) {
orgService.enableOrgs($scope.selectCompany.id).success(function () {
......@@ -301,13 +780,55 @@
$scope.selectedOrg = null;
};
// 添加机构
// 编辑机构
$scope.updateOrg = function () {
$scope.isAdd = false;
$scope.orgOperateType = constant.Operation.Edit;
$scope.selectedOrg = $scope.selectCompany;
};
// 编辑股权
$scope.updateEquity = function () {
$scope.isAdd = false;
$scope.equityEditOperateType = constant.Operation.Edit;
$scope.selectedOrg = $scope.selectCompany;
};
// 变更股权
$scope.alterEquity = function () {
$scope.isAdd = true;
$scope.equityChangeOperateType = constant.Operation.Edit;
$scope.selectedOrg = $scope.selectCompany;
};
// 编辑机构其他信息
$scope.updateOrgExtra = function () {
$('.extra-org-info .control-label span').attr("hidden","hidden");
$('.extra-org-info .right-option button').removeAttr("hidden");
$('.extra-org-info .right-option .updOrgBtn').attr("hidden","hidden");
// $('.extra-org-info .control-label input') 不是数组所以用这种方式遍历
for (var i = 0; i < $('.extra-org-info .control-label input').length; i++) {
$('.extra-org-info .control-label input')[i].style.display = "inline";
}
$scope.olddata=$scope.selectCompany;
};
// 取消编辑机构其他信息
$scope.updateOrgExtraCancel = function () {
$scope.selectCompany=$scope.olddata;
$('.extra-org-info .control-label span').removeAttr("hidden");
$('.extra-org-info .right-option button').attr("hidden","hidden");
$('.extra-org-info .right-option .updOrgBtn').removeAttr("hidden");
for (var i = 0; i < $('.extra-org-info .control-label input').length; i++) {
$('.extra-org-info .control-label input')[i].style.display = "none";
}
};
// 提交修改的机构其他信息
$scope.updateOrgExtraSubmit = function () {
alert("弹出confirm窗口");
};
// 添加或者编辑机构成功之后,刷新当前页面的数据
$scope.$watch('isOrgUpdate', function (newValue, oldValue) {
if (newValue) {
......@@ -842,14 +1363,14 @@
columns: [{
dataField: "userName",
caption: $translate.instant('UserTitleName'),
width: '40%',
width: '40%'
}, {
dataField: "roleNameList",
caption: $translate.instant('RoleDesc'),
width: '50%',
width: '50%'
}, {
caption: $translate.instant('Operation'),
width: '10%',
width: '10%'
}],
//,
......@@ -1232,6 +1753,7 @@
$scope.maxTitleLength = 10;
$scope.maxValueLength = 20;
$scope.selectCompany = {};
$scope.showAttributeDimensionID = 'orgmanage';
$scope.searchText = '';
......
......@@ -41,104 +41,807 @@
<p class="company-name" title="{{selectCompany.name}}">{{selectCompany.name | limitString:50}}</p>
</div>
<div class="right-option">
<button type="button" class="btn btn-in-grid" style="width: 117px;" ng-click="updateOrg()" ng-if="hasEditPermission"><i class="material-icons middle">create</i>{{'Change' | translate}}</button>
<!--<button type="button" class="btn btn-in-grid" style="width: 117px;" ng-click="updateOrg()" ng-if="hasEditPermission"><i class="material-icons middle">create</i>{{'Change' | translate}}</button>-->
<button type="button" id="organizationIsActiveBtn" ng-if="hasEditPermission" class="btn" ng-class="{true:'btn-secondary', false:'btn-in-grid'}[!selectCompany.isActive]" ng-click="updateIsActive()" ng-disabled="!isCanOrganizationIsActiveBtn"><i ng-show="selectCompany.isActive" class="material-icons stop">block</i>{{selectCompany.isActiveStr}}</button>
<span class="right-operate ">
<span class="right-operate">
<!-- board展示 -->
<a class="display-user" href="#/organizationViewInfrastructure/organizationBusinessUnitView" title="{{'ShowAsCard' | translate}}"><i class="fa fa-th" aria-hidden="true"></i></a>
<!-- list展示 -->
<a class="display-user border-left" href="#/orgListView" title="{{'ShowAsList' | translate}}"><i class="fa fa-list-ul" aria-hidden="true"></i></a>
</span>
</div>
</div>
</div>
<div class="right-bottom">
<md-content>
<md-nav-bar md-selected-nav-item="currentNavItem" nav-bar-aria-label="navigation links">
<md-nav-item md-nav-click="goto('page1')" name="page1">
{{'OrganizationBasicData' | translate}}
</md-nav-item>
<md-nav-item md-nav-click="goto('page2')" name="page2">
{{'EquityInformation' | translate}}
</md-nav-item>
<md-nav-item md-nav-click="goto('page3')" name="page3">
{{'OrganizationExtraData' | translate}}
</md-nav-item>
<md-nav-item md-nav-click="goto('page4')" name="page4">
{{'TaxPreferentialInformation' | translate}}
</md-nav-item>
<md-nav-item md-nav-click="goto('page5')" name="page5">
{{'OrganizationAdvancedOptions' | translate}}
</md-nav-item>
<md-nav-item md-nav-click="goto('page6')" name="page6">
{{'OrgUserManage' | translate}}
</md-nav-item>
</md-nav-bar>
<div class="ext-content">
<div ng-show="currentNavItem==='page1'" class="org-basic-data-table">
<div class="basic-org-info-wrapper">
<div class="basic-org-info">
<label class="basic-label">{{'OrganizationBasicData' | translate}}</label>
<!--<label class="basic-label">{{'OrganizationBasicData' | translate}}</label>-->
<div class="right-option">
<button type="button" class="btn btn-in-grid" style="width: 117px;" ng-click="updateOrg()" ng-if="hasEditPermission"><i class="material-icons middle">create</i>{{'Change' | translate}}</button>
</div>
<div class="row padding-top30">
<div class="col-sm-6">
<span class="control-label">{{'OrganizationCode' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
<div class="col-sm-6">
<span class="">{{'RatePayer' | translate}}:{{selectCompany.ratePayer}}</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'OrganizationCode' | translate}}:<span title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
<span class="control-label"> {{'TaxpayerIdentificationNumber' | translate}}:<span
title="{{selectCompany.taxPayerNumber}}">{{selectCompany.taxPayerNumber | limitString:maxValueLength}}</span></span>
</div>
<!--<div class="col-sm-6">
<span class="">{{'OrganizationClientCode' | translate}}:{{selectCompany.clientCode}}</span>
</div>-->
<div class="col-sm-6">
<span class="">{{'OrganizationLevelType' | translate}}:<span title="{{selectCompany.structureName}}">{{selectCompany.structureName | limitString:maxValueLength}}</span></span>
<span class="">{{'OrganizationLevelType' | translate}}:<span
title="{{selectCompany.structureName}}">{{selectCompany.structureName | limitString:maxValueLength}}</span></span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label"> {{'TaxpayerIdentificationNumber' | translate}}:<span title="{{selectCompany.taxPayerNumber}}">{{selectCompany.taxPayerNumber | limitString:maxValueLength}}</span></span>
<span class="">{{'OrganizationParent' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span></span>
</div>
<div class="col-sm-6">
<span class="">{{'OrganizationParent' | translate}}:<span title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span></span>
<span class="control-label"> {{'AdministrativeRegion' | translate}}:<span
title="{{selectCompany.regionName}}">{{selectCompany.regionName |limitString:maxValueLength}}</span></span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label"> {{'AdministrativeRegion' | translate}}:<span title="{{selectCompany.regionName}}">{{selectCompany.regionName |limitString:maxValueLength}}</span></span>
<span class="control-label"> {{'CompanyAddress' | translate}}:<span
title="{{selectCompany.regionName}}">{{selectCompany.regionName |limitString:maxValueLength}}</span></span>
</div>
<div class="col-sm-6">
<span class="control-label"> {{'CompanyTelephone' | translate}}:<span
title="{{selectCompany.regionName}}">{{selectCompany.regionName |limitString:maxValueLength}}</span></span>
</div>
<div class="col-sm-6" ng-if="firstAttribute">
<!--<div class="col-sm-6" ng-if="firstAttribute">
<span class="control-label" title="{{firstAttribute.dimensionName}}"> {{firstAttribute.dimensionName|limitString:maxTitleLength}}:</span>
<span class="control-label" title="{{firstAttribute.dimensionValue}}">{{firstAttribute.dimensionValue|limitString:maxValueLength}}</span>
</div>-->
</div>
<div class="row">
<div class="col-sm-6">
<span class="">{{'FoundationDate' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span></span>
</div>
</div>
<div class="row" ng-repeat="x in selectCompany.orgAttributeRowList
">
<div class="row">
<div class="col-sm-6">
<span class="">{{'MainBusiness' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span></span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="">{{'BusinessLine' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span></span>
</div>
<div class="col-sm-6">
<span class="">{{'Area' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span></span>
</div>
</div>
<div class="row" ng-repeat="x in selectCompany.orgAttributeRowList">
<div class="col-sm-6">
<span class="control-label" title="{{x.left.dimensionName}}"> {{x.left.dimensionName|limitString:maxTitleLength}}:</span>
<span class="control-label" title="{{x.left.dimensionValue}}">{{x.left.dimensionValue|limitString:maxValueLength}}</span>
</div>
<div class="col-sm-6">
<span class="control-label" ng-if="x.right" title="{{x.right.dimensionName}}">{{x.right.dimensionName|limitString:maxTitleLength}}:</span>
<span class="control-label" ng-if="x.right" title="{{x.right.dimensionValue}}">{{x.right.dimensionValue|limitString:maxValueLength}}</span>
<span class="control-label" ng-if="x.right"
title="{{x.right.dimensionName}}">{{x.right.dimensionName|limitString:maxTitleLength}}:</span>
<span class="control-label" ng-if="x.right"
title="{{x.right.dimensionValue}}">{{x.right.dimensionValue|limitString:maxValueLength}}</span>
</div>
</div>
</div>
<div class="row picture-panel">
<div class="col-sm-4 company-property-border">
<i style="color: #757575;" class="material-icons">sort</i>
<span title="{{businessName}}">{{businessName |limitString:maxValueLength}}</span>
<br />
<p><span title="{{selectCompany.businessUnitName}}">{{selectCompany.businessUnitName |limitString:maxValueLength}}</span></p>
<span translate="Business"></span>
<br/>
<p><span title="{{selectCompany.businessUnitName}}">{{selectCompany.businessUnitName |limitString:maxValueLength}}</span>
</p>
</div>
<div class="col-sm-4 company-property-border">
<i style="color: #757575;" class="material-icons">store mall directory</i>
<span translate="PIndustry"></span>
<br />
<p><span title="{{selectCompany.industryName}}">{{selectCompany.industryName |limitString:maxValueLength}}</span></p>
<br/>
<p><span title="{{selectCompany.industryName}}">{{selectCompany.industryName |limitString:maxValueLength}}</span>
</p>
</div>
<div class="col-sm-4 company-property-border">
<i style="color: #757575;" class="material-icons">place</i>
<span title="{{areaName}}">{{areaName|limitString:maxValueLength}}</span>
<br />
<p><span title="{{selectCompany.areaName}}">{{selectCompany.areaName |limitString:maxValueLength}}</span></p>
<span translate="Area"></span>
<br/>
<p><span title="{{selectCompany.areaName}}">{{selectCompany.areaName |limitString:maxValueLength}}</span>
</p>
</div>
</div>
<div>
<div class="row padding-top10">
<div class="col-sm-6">
<span class="control-label">{{'DepositBank' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'BankAccount' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
</div>
<div class="right-bottom">
<md-content>
<md-nav-bar md-selected-nav-item="currentNavItem" nav-bar-aria-label="navigation links">
<md-nav-item md-nav-click="goto('page1')" name="page1">
{{'OrganizationAdvancedOptions' | translate}}
</md-nav-item>
<md-nav-item md-nav-click="goto('page2')" name="page2">
{{'OrgUser' | translate}}
</md-nav-item>
</md-nav-bar>
<div class="ext-content">
<div ng-show="currentNavItem==='page1'" class="accountset-modal-table">
<div class="row border-bottom-divide">
<div class="col-sm-6">
<span class="control-label">{{'LegalPerson' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'LegalCode' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
</div>
<div class="row padding-top10">
<div class="col-sm-6">
<span class="control-label">{{'RegistrationLocation' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'RegistrationAddress' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'RegistrationDate' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'RegistrationType' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'BusinessAllottedTime' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'RegistrationCapital' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'BusinessScope' | translate}}:<span
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span></span>
</div>
</div>
</div>
</div>
<div ng-show="currentNavItem==='page2'" class="equity-info-table">
<div class="label-current-holding">
<label class="basic-label">{{'CurrentHolding' | translate}}</label>
</div>
<div class="right-option">
<button type="button" class="btn btn-in-grid" style="width: 117px;" ng-click="updateEquity()" ng-if="hasEditPermission"><i class="material-icons middle">create</i>{{'Change' | translate}}</button>
<button type="button" class="btn btn-in-grid" style="width: 117px;" ng-click="alterEquity()" ng-if="hasEditPermission"><i class="material-icons middle">create</i>{{'Alter' | translate}}</button>
</div>
<div class="current-holding-info">
<span class="control-label">{{'HoldingInstitution' | translate}}:<strong class="label label-default"
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</strong></span>
<span class="control-label">{{'TotalInvestment' | translate}}:<strong class="label label-default"
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</strong> 万元</span>
<span class="control-label">{{'TotalEquityRatio' | translate}}:<strong class="label label-default"
title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</strong> %</span>
</div>
<div class="dx-viewport grid-container">
<div id="equityGridContainer" dx-data-grid="equityGridOptions" style="margin-top: 30px;">
</div>
<!--<div class="form-group page-form-group">
<div class="page-footer">
<ack-pagination page-options="pagingOptions" refresh-table="pagingService.refreshOrgDataGrid()" hide-page-size-selector="true"></ack-pagination>
</div>
</div>-->
</div>
<div class="label-equity-change-record">
<label class="basic-label">{{'EquityChangeRecord' | translate}}</label>
</div>
<div class="current-holding-info">
<span class="control-label">{{'ChangeRecord' | translate}}:<strong class="label label-default"
title="{{pagingOptions.totalItems}}">{{pagingOptions.totalItems}}</strong></span>
</div>
<div class="dx-viewport grid-container">
<div id="equityChangeGridContainer" dx-data-grid="equityChangeGridOptions" dx-item-alias="equityChangeInfo" style="margin-top: 30px;">
<div data-options="dxTemplate: {name: 'detail'}">
<div dx-data-grid="getDetailGridSettings(equityChangeInfo.key)"></div>
</div>
</div>
<div class="form-group page-form-group">
<div class="page-footer">
<ack-pagination page-options="pagingOptions" refresh-table="pagingService.refreshOrgDataGrid()" hide-page-size-selector="true"></ack-pagination>
</div>
</div>
</div>
</div>
<div ng-show="currentNavItem==='page3'" class="org-extra-data-table">
<div class="extra-org-info-wrapper">
<div class="extra-org-info">
<!--<label class="basic-label">{{'OrganizationBasicData' | translate}}</label>-->
<div class="right-option">
<button type="button" class="updOrgBtn btn btn-in-grid" style="width: 117px;" ng-click="updateOrgExtra()" ng-if="hasEditPermission"><i class="material-icons middle">create</i>{{'Change' | translate}}</button>
<button type="button" hidden="hidden" class="btn btn-in-grid button2position" style="width: 117px;" ng-click="updateOrgExtraSubmit()" ng-if="hasEditPermission"><i class="material-icons middle">create</i>{{'UpdateOrgExtraSubmit' | translate}}</button>
<button type="button" hidden="hidden" class="btn btn-in-grid button2position" style="width: 117px;" ng-click="updateOrgExtraCancel()" ><i class="material-icons middle">create</i>{{'Cancel' | translate}}</button>
</div>
<div class="row padding-top30">
<div class="col-sm-6">
<span class="control-label">{{'UnifiedSocialCreditCode' | translate}}:
<span title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span>
<input class="input-group" style="display: none" title="{{selectCompany.code}}" value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'RegistrationStatus' | translate}}:
<span title="{{selectCompany.code}}">{{selectCompany.code | limitString:maxValueLength}}</span>
<input class="input-group" style="display: none" title="{{selectCompany.code}}" value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label"> {{'LogoutTime' | translate}}:<span
title="{{selectCompany.taxPayerNumber}}">{{selectCompany.taxPayerNumber | limitString:maxValueLength}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'ChangeType' | translate}}:<span
title="{{selectCompany.structureName}}">{{selectCompany.structureName | limitString:maxValueLength}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'RegistrationFinancialAccountingMethod' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label"> {{'GeneralTaxpayer' | translate}}:<span
title="{{selectCompany.regionName}}">{{selectCompany.regionName |limitString:maxValueLength}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label"> {{'EffectiveTime' | translate}}:<span
title="{{selectCompany.regionName}}">{{selectCompany.regionName |limitString:maxValueLength}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label"> {{'TaxCreditRating' | translate}}:<span
title="{{selectCompany.regionName}}">{{selectCompany.regionName |limitString:maxValueLength}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<!--<div class="col-sm-6" ng-if="firstAttribute">
<span class="control-label" title="{{firstAttribute.dimensionName}}"> {{firstAttribute.dimensionName|limitString:maxTitleLength}}:</span>
<span class="control-label" title="{{firstAttribute.dimensionValue}}">{{firstAttribute.dimensionValue|limitString:maxValueLength}}</span>
</div>-->
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'FinancialAccountingMethod' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'FinancialAccountingSystem' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'LowValueConsumablesAmortizationMethod' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'DepreciationMethod' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'CostingMethod' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'AccountingSoftware' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'IsCompleteRecordTotalInstitutions' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'TaxpayerName' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'TaxpayerPhone' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'TaxpayerIDNumber' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'TicketHolderName' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'TicketPurchaser' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'TicketHolderIDNumber' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'NationalTaxHallAddress' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'NationalTaxSpecialistName' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'NationalTaxSpecialistPhone' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'LocalTaxHallAddress' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'LocalTaxAdministrator' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'LocalTaxAdministratorPhoneNumber' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'eTAWebsite' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'IsApprovedLevy' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'ApprovedLevyProject' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'ApprovedLevyItems' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'ApprovedValidityPeriodStartTime' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'ApprovedValidityPeriodEndTime' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'ApprovedRate' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'ApprovedTaxTerm' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'IsSignTripartiteAgreement' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'ReportingCurrency' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'AccountingRate' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'ConsolidationTime' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'EmployeesCurrentNum' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'InvoiceTypeName' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'SingleInvoiceMaxInvoiceAmount' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'MonthlyMaxTicketsPurchased' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'MonthlyMaxInvoicingLimit' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'OfflineBillingTimeLimit' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'OfflineBillingCumulativeLimit' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'FiscalYearDeadline' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'TaxAgent' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'TaxAgentContact' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'TaxRuleIntroduction' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<span class="control-label">{{'Auditrequirements' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
<div class="col-sm-6">
<span class="control-label">{{'OtherFacts' | translate}}:<span
title="{{selectCompany.parentName}}">{{selectCompany.parentName ? (selectCompany.parentName|limitString:maxValueLength):'无'}}</span>
<input class="input-group" style="display: none"
title="{{selectCompany.code}}"
value="{{selectCompany.code | limitString:maxValueLength}}"/>
</span>
</div>
</div>
<div class="row" ng-repeat="x in selectCompany.orgAttributeRowList">
<div class="col-sm-6">
<span class="control-label" title="{{x.left.dimensionName}}"> {{x.left.dimensionName|limitString:maxTitleLength}}:</span>
<span class="control-label" title="{{x.left.dimensionValue}}">{{x.left.dimensionValue|limitString:maxValueLength}}</span>
</div>
<div class="col-sm-6">
<span class="control-label" ng-if="x.right"
title="{{x.right.dimensionName}}">{{x.right.dimensionName|limitString:maxTitleLength}}:</span>
<span class="control-label" ng-if="x.right"
title="{{x.right.dimensionValue}}">{{x.right.dimensionValue|limitString:maxValueLength}}</span>
</div>
</div>
</div>
<div class="label-tax-info border-bottom-divide">
<label class="basic-label">{{'TaxInformation' | translate}}</label>
</div>
<div class="dx-viewport grid-container">
<div id="taxInfoGridContainer" dx-data-grid="taxInfoGridOptions"
style="margin-top: 30px;">
</div>
<div class="form-group page-form-group">
<div class="page-footer">
<ack-pagination page-options="pagingOptions"
refresh-table="pagingService.refreshOrgDataGrid()"
hide-page-size-selector="true"></ack-pagination>
</div>
</div>
</div>
</div>
</div>
<div ng-show="currentNavItem==='page4'" class="tax-preferential-info-table">
<div ng-include="'../../noOpenModulePage/no-open-module-page.html'"></div>
</div>
<div ng-show="currentNavItem==='page5'" class="accountset-modal-table">
<div class="tool-bar">
<span class="use-set">{{'UseEnterpriseAccountSet' | translate}} </span>
<div class="right-part" ng-if="hasEditPermission">
......@@ -240,7 +943,7 @@
</div>
</div>
<div ng-show="currentNavItem==='page2'" class="user-table">
<div ng-show="currentNavItem==='page6'" class="user-table">
<div class="item-row">
<div class="left-item">{{userCount}} {{'UserStatisticsCount'| translate}}</div>
......@@ -281,6 +984,8 @@
<operate-log is-show="isShowLog"></operate-log>
<edit-organization-modal operate-type="orgOperateType" is-update="isOrgUpdate" selected-organization="selectedOrg" dimension-id="showAttributeDimensionID"></edit-organization-modal>
<edit-equity-modal operate-type="equityEditOperateType" is-update="isEquityUpdate" selected-organization="selectedOrg" ></edit-equity-modal>
<edit-equity-change-modal operate-type="equityChangeOperateType" is-update="isEquityChange" selected-organization="selectedOrg" ></edit-equity-change-modal>
<add-exist-user-modal operate-type="addUserOperateType" is-update="addUserIsUpdate" selected-user-list="selectedUserList" selected-key-items="selectedKeyItems"></add-exist-user-modal>
<user-organization-access-modal operate-type="userRoleOperateType" is-update="userRolesIsUpdate" user-id="selectedUserID" organization-id="selectedOrgID"></user-organization-access-modal>
......
......@@ -135,7 +135,7 @@
border-radius: 5px;
padding: 4px;
background-color: white;
height: 100%;
//height: 100%;
display: flex;
flex-direction: column;
......@@ -165,14 +165,12 @@
padding-top: 8px;
}
}
.right-option {
height: 58px;
height: 30px;
display: inline-block;
vertical-align: middle;
float: right;
.right-operate {
margin-left: 20px;
margin-right: 15px;
......@@ -201,7 +199,7 @@
}
}
.basic-org-info-wrapper {
/*.basic-org-info-wrapper {
min-width: 500px;
max-width: 700px;
......@@ -253,7 +251,7 @@
.btn-disable {
background-color: @add-org-btn-background-color;
}
}
}*/
}
.right-bottom {
......@@ -268,6 +266,236 @@
height: calc(~"100% - 50px");
overflow-y: hidden;
.org-basic-data-table{
max-height: 700px;
.right-option {
height: 30px;
display: inline-block;
vertical-align: middle;
float: right;
}
.basic-org-info-wrapper {
min-width: 700px;
max-width: 1000px;
.divider {
height: 2px;
overflow: hidden;
background-color: #e5e5e5;
border-bottom: 1px solid #fff;
}
.row {
padding-left: 0px;
margin-right: -200px;
line-height: 2em;
}
.padding-top10 {
padding-top: 10px;
}
.padding-top30 {
padding-top: 30px;
}
.border-bottom-divide{
border-bottom: 1px solid #dbd8d3;
}
.basic-label {
text-rendering: optimizeLegibility;
font-kerning: normal;
font-weight: 700;
font-family: 'Microsoft YaHei Bold', 'Microsoft YaHei Regular', 'Microsoft YaHei';
}
.basic-org-info {
padding: 5px 0px;
max-height: 250px;
overflow-y: auto;
overflow-x: hidden;
}
.picture-panel {
margin-left: 0px;
margin-right: -200px;
padding: 10px 0px;
background-color: @color-light-gray-f2;
}
.company-property-border {
border-left: 1px;
border-left-color: #CDCDCD;
border-left-style: solid;
i {
font-size: 16px;
width: 16px;
}
span {
color: @color-red-ext0;
}
}
.btn-isenable {
background-color: @organizationIsActiveBtn-background-color;
}
.btn-disable {
background-color: @add-org-btn-background-color;
}
}
}
.equity-info-table{
max-height: 700px;
overflow-y: scroll;
.right-option {
height: 30px;
display: inline-block;
vertical-align: middle;
float: right;
}
#equityGridContainer {
/*height: 600px;*/
margin-bottom: 15px;
}
.label-current-holding{
padding-top: 10px;
}
.current-holding-info{
padding-top: 10px;
}
.label{
padding-bottom: 2px;
}
.page-footer {
display: inline-block;
float: right;
/*padding-right: 20px;*/
}
.page-form-group {
float: right;
margin-top:20px;
.page-size {
margin: 0;
}
.pagination {
margin: 0;
}
}
}
.org-extra-data-table {
max-height: 700px;
overflow-y: scroll;
.right-option {
height: 30px;
display: inline-block;
vertical-align: middle;
float: right;
}
.input-group {
border: 1px solid #CDCDCD;
border-radius: 4px;
display: inline;
margin: 5px;
}
.extra-org-info-wrapper {
min-width: 700px;
max-width: 1400px;
.divider {
height: 2px;
overflow: hidden;
background-color: #e5e5e5;
border-bottom: 1px solid #fff;
}
.row {
padding-left: 0;
line-height: 2em;
}
.padding-top10 {
padding-top: 10px;
}
.padding-top30 {
padding-top: 30px;
}
.border-bottom-divide{
border-bottom: 1px solid #dbd8d3;
}
.basic-label {
padding: 20px 0px;
text-rendering: optimizeLegibility;
font-kerning: normal;
font-weight: 700;
font-family: 'Microsoft YaHei Bold', 'Microsoft YaHei Regular', 'Microsoft YaHei';
}
.extra-org-info {
padding: 10px 0px;
max-height: 250px;
overflow-y: auto;
overflow-x: hidden;
}
#taxInfoGridContainer {
/*height: 600px;*/
margin-bottom: 15px;
}
.company-property-border {
border-left: 1px;
border-left-color: #CDCDCD;
border-left-style: solid;
i {
font-size: 16px;
width: 16px;
}
span {
color: @color-red-ext0;
}
}
.btn-isenable {
background-color: @organizationIsActiveBtn-background-color;
}
.btn-disable {
background-color: @add-org-btn-background-color;
}
}
.page-footer {
display: inline-block;
float: right;
/*padding-right: 20px;*/
}
}
.tax-preferential-info-table{
}
.accountset-modal-table {
height: 100%;
......
......@@ -124,6 +124,9 @@ webservices.factory('orgService', ['$http', 'apiConfig', function ($http, apiCon
},
getBdList: function () {
return $http.get('/org/bdList', apiConfig.create());
},
downloadOrgListData: function (exportData) {
return $http.post('/org/downloadOrgListData', exportData, apiConfig.create({ responseType: 'arraybuffer' }));
}
};
}]);
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment