three-trees-ui 1.0.58 → 1.0.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1249,7 +1249,7 @@ var utils = {
1249
1249
  }
1250
1250
  const keyPath = config[key];
1251
1251
  // 获取当前组件所在的表单
1252
- const formInst = utils.getOnlineFormInstance(inst.$parent);
1252
+ const formInst = utils.getOnlineFormInstance(inst);
1253
1253
  // 获取当前组件是否在子表中的某一行
1254
1254
  const {
1255
1255
  subScopeEl,
@@ -1527,6 +1527,37 @@ Date.prototype.format = function (format) {
1527
1527
  }
1528
1528
  return format;
1529
1529
  };
1530
+
1531
+ //精确四舍五入
1532
+ Number.prototype.toFixedRound = function (d) {
1533
+ d = Number(d);
1534
+ var s = this + '';
1535
+ if (!d) d = 0;
1536
+ if (s.indexOf('.') == -1) s += '.';
1537
+ s += new Array(d + 1).join('0');
1538
+ if (new RegExp('^(-|\\+)?(\\d+(\\.\\d{0,' + (d + 1) + '})?)\\d*$').test(s)) {
1539
+ var s = '0' + RegExp.$2,
1540
+ pm = RegExp.$1,
1541
+ a = RegExp.$3.length,
1542
+ b = true;
1543
+ if (a == d + 2) {
1544
+ a = s.match(/\d/g);
1545
+ if (parseInt(a[a.length - 1]) > 4) {
1546
+ for (var i = a.length - 2; i >= 0; i--) {
1547
+ a[i] = parseInt(a[i]) + 1;
1548
+ if (a[i] == 10) {
1549
+ a[i] = 0;
1550
+ b = i != 1;
1551
+ } else break;
1552
+ }
1553
+ }
1554
+ s = a.join('').replace(new RegExp('(\\d+)(\\d{' + d + '})\\d$'), '$1.$2');
1555
+ }
1556
+ if (b) s = s.substr(1);
1557
+ return (pm + s).replace(/\.$/, '');
1558
+ }
1559
+ return this + '';
1560
+ };
1530
1561
  /* harmony default export */ __webpack_exports__["a"] = (utils);
1531
1562
 
1532
1563
  /***/ }),
@@ -12529,9 +12560,12 @@ var SubPagination = __webpack_require__("1639");
12529
12560
 
12530
12561
  // CONCATENATED MODULE: ./src/mixins/onlineSubtable.js
12531
12562
 
12563
+
12532
12564
  /* harmony default export */ var onlineSubtable = ({
12533
12565
  data() {
12534
12566
  return {
12567
+ searchVal: '',
12568
+ //搜索关键字
12535
12569
  fillOrg: {},
12536
12570
  fillOrgConfMap: {},
12537
12571
  transitionIndex: -1,
@@ -12581,6 +12615,200 @@ var SubPagination = __webpack_require__("1639");
12581
12615
  }
12582
12616
  },
12583
12617
  methods: {
12618
+ //合计计算
12619
+ getSummaries(param, list) {
12620
+ let CancelTheCalculation = sessionStorage.getItem('Cancel_The_Calculation') ? JSON.parse(sessionStorage.getItem('Cancel_The_Calculation')) : {};
12621
+ //
12622
+ let listChange = JSON.parse(Base64.decode(list, 'utf-8'));
12623
+
12624
+ //
12625
+
12626
+ if (listChange.length < 1) {
12627
+ return;
12628
+ }
12629
+ const {
12630
+ columns,
12631
+ data
12632
+ } = param;
12633
+ this.tableData = data;
12634
+ const sums = [];
12635
+ let calcProp = [];
12636
+ let columnsDep = _.cloneDeep(columns);
12637
+ listChange.forEach((item, idex) => {
12638
+ if (item.addFunc == 'calcFunc') {
12639
+ columnsDep.forEach((column, index) => {
12640
+ if (item.mathExp && item.mathExp.indexOf('.' + column.property) > -1) {
12641
+ calcProp.push(column.property);
12642
+ }
12643
+ });
12644
+ }
12645
+ columnsDep.forEach((column, index) => {
12646
+ if (item.columnField == column.property) {
12647
+ column.combinedOption = item;
12648
+ }
12649
+ });
12650
+ });
12651
+ columnsDep.forEach((column, index) => {
12652
+ if (index === 0 && columnsDep[0].type == 'index') {
12653
+ sums[index] = '';
12654
+ return;
12655
+ }
12656
+ //当有需要才合计
12657
+ if (column.combinedOption) {
12658
+ let {
12659
+ addFunc,
12660
+ columnField,
12661
+ name,
12662
+ unit,
12663
+ showType,
12664
+ num,
12665
+ tag,
12666
+ mainTarget
12667
+ } = column.combinedOption;
12668
+ let Bol = tag && CancelTheCalculation && CancelTheCalculation[tag] && CancelTheCalculation[tag].length > 0;
12669
+ const values = data.map(item => Number(item[column.property]));
12670
+ let depValues = _.cloneDeep(values);
12671
+ if (Bol) {
12672
+ let delMin = [];
12673
+ depValues.forEach((item, i) => {
12674
+ if (!CancelTheCalculation[tag].includes(i)) {
12675
+ delMin.push(item);
12676
+ }
12677
+ });
12678
+ depValues = delMin;
12679
+ }
12680
+ let units = unit ? unit : '';
12681
+ //求和
12682
+ if (addFunc === 'add') {
12683
+ if (!depValues.every(value => isNaN(value))) {
12684
+ sums[index] = depValues.reduce((prev, curr) => {
12685
+ const value = Number(curr);
12686
+ if (!isNaN(value)) {
12687
+ return prev + curr;
12688
+ } else {
12689
+ return prev;
12690
+ }
12691
+ }, 0);
12692
+ sums[index] = this.dealWithDataHtml(name, sums[index], showType, num, units, mainTarget);
12693
+ } else {
12694
+ sums[index] = this.dealWithDataHtml(name, 0, showType, num, units, mainTarget);
12695
+ }
12696
+ }
12697
+ //计数
12698
+ if (addFunc === 'count') {
12699
+ let numCount = values.length;
12700
+ if (Bol) {
12701
+ numCount = values.length - CancelTheCalculation[tag].length;
12702
+ }
12703
+ sums[index] = this.dealWithDataHtml(name, numCount, showType, num, units, mainTarget);
12704
+ }
12705
+ //平均值
12706
+ if (addFunc === 'average') {
12707
+ let sum = 0;
12708
+ var average = 0;
12709
+ for (var i = 0; i < depValues.length; i++) {
12710
+ sum += depValues[i];
12711
+ }
12712
+ depValues.length > 0 ? average = sum / depValues.length : average = 0;
12713
+ sums[index] = this.dealWithDataHtml(name, average, showType, num, units, mainTarget);
12714
+ }
12715
+ //最大值
12716
+ if (addFunc === 'max') {
12717
+ let maxNum = Math.max.apply(null, depValues.length > 0 ? depValues : [0]);
12718
+ sums[index] = this.dealWithDataHtml(name, maxNum, showType, num, units, mainTarget);
12719
+ }
12720
+ //最小值
12721
+ if (addFunc === 'min') {
12722
+ let minNum = Math.min.apply(null, depValues.length > 0 ? depValues : [0]);
12723
+ sums[index] = this.dealWithDataHtml(name, minNum, showType, num, units, mainTarget);
12724
+ }
12725
+
12726
+ //公式计算
12727
+ if (addFunc === 'calcFunc') {
12728
+ const calcVal = this.dealCustomCalc(data, column.combinedOption);
12729
+ sums[index] = this.dealWithDataHtml(name, calcVal, showType, num, units, mainTarget);
12730
+ }
12731
+ } else if (calcProp.indexOf(column.property) > -1) {
12732
+ const values = data.map(item => Number(item[column.property]));
12733
+ }
12734
+ });
12735
+ return sums;
12736
+ },
12737
+ //合计行
12738
+ handleSummary(summary) {
12739
+ return summary && !this.searchVal ? true : false;
12740
+ },
12741
+ dealWithDataHtml(name, type, showType, num, units, mainTarget) {
12742
+ let {
12743
+ data,
12744
+ monCap
12745
+ } = this.dealWithData(type, showType, num, mainTarget);
12746
+ if (monCap) {
12747
+ return name + ':' + data + units + '\n' + monCap;
12748
+ }
12749
+ return name + ':' + data + units;
12750
+ },
12751
+ //处理数据
12752
+ dealWithData(data, showType, numfix = 0, mainTarget) {
12753
+ data = Number(data);
12754
+ let list = showType;
12755
+ let num = {
12756
+ data: 0,
12757
+ monCap: ''
12758
+ };
12759
+ // 保留小数位
12760
+ if (list.includes('keepSmall')) {
12761
+ const fixData = data.toFixedRound(numfix);
12762
+ num.data = fixData;
12763
+ if (mainTarget) {
12764
+ mainTarget = !mainTarget.startsWith('data.') ? 'data.' + mainTarget : mainTarget;
12765
+ utils["a" /* default */].setValueByConfigKey(this, {
12766
+ trget: mainTarget
12767
+ }, 'trget', data);
12768
+ }
12769
+ } else {
12770
+ if (mainTarget && data != null) {
12771
+ mainTarget = !mainTarget.startsWith('data.') ? 'data.' + mainTarget : mainTarget;
12772
+ utils["a" /* default */].setValueByConfigKey(this, {
12773
+ trget: mainTarget
12774
+ }, 'trget', data.toFixedRound(4));
12775
+ }
12776
+ }
12777
+
12778
+ //百分比
12779
+ if (list.includes('percentage')) {
12780
+ num.data = Number(data * 100) + '%';
12781
+ }
12782
+ // 千分位
12783
+ if (list.includes('Micrometer')) {
12784
+ num.data = utils["a" /* default */].thousandBit(data);
12785
+ }
12786
+ if (list.includes('keepSmall') && list.includes('percentage') && list.includes('Micrometer')) {
12787
+ num.data = utils["a" /* default */].thousandBit(Number(data * 100).toFixedRound(numfix)) + '%';
12788
+ return num;
12789
+ }
12790
+ if (list.includes('keepSmall') && list.includes('percentage')) {
12791
+ num.data = Number(data * 100).toFixedRound(numfix) + '%';
12792
+ return num;
12793
+ }
12794
+ if (list.includes('Micrometer') && list.includes('percentage')) {
12795
+ num.data = utils["a" /* default */].thousandBit(Number(data * 100)) + '%';
12796
+ return num;
12797
+ }
12798
+ if (list.includes('keepSmall') && list.includes('Micrometer')) {
12799
+ num.data = utils["a" /* default */].thousandBit(data.toFixedRound(numfix));
12800
+ }
12801
+
12802
+ // 货币大写
12803
+ if (list.includes('monCap')) {
12804
+ num = {
12805
+ data: data,
12806
+ monCap: utils["a" /* default */].convertCurrency(data)
12807
+ };
12808
+ return num;
12809
+ }
12810
+ return num;
12811
+ },
12584
12812
  getExpandArr(data, type) {
12585
12813
  if (type === 'expand' && data) {
12586
12814
  let arr = [];
@@ -33461,7 +33689,7 @@ _main_vue__WEBPACK_IMPORTED_MODULE_0__["default"].register({
33461
33689
  /***/ "9224":
33462
33690
  /***/ (function(module) {
33463
33691
 
33464
- module.exports = JSON.parse("{\"a\":\"1.0.58\"}");
33692
+ module.exports = JSON.parse("{\"a\":\"1.0.59\"}");
33465
33693
 
33466
33694
  /***/ }),
33467
33695
 
@@ -54694,7 +54922,8 @@ const req = function (url, data = {}, option = {}) {
54694
54922
  this.printDetail(parameter.templateId, parameter.id, parameter.action);
54695
54923
  } else if (btnAlias == 'sub' && this.checkSelect()) {
54696
54924
  this.showSubList(this.tableData.selectRows[0].id_, parameter);
54697
- } else if (btnAlias == 'js' && this.checkSelect()) {
54925
+ } else if (btnAlias == 'js') {
54926
+ if (parameter.needValidateSelect && !this.checkSelect()) return;
54698
54927
  this.customEvilJS(this.tableData.selectRows[0], parameter.jsValue);
54699
54928
  } else if (btnAlias == 'startFlow' && parameter.defId && !parameter.isStartFlow) {
54700
54929
  this.operating(parameter.templateId, parameter.id, parameter.action, parameter.defId, parameter.isStartFlow, parameter.openType, parameter.quitAfterSaving);
@@ -1258,7 +1258,7 @@ var utils = {
1258
1258
  }
1259
1259
  const keyPath = config[key];
1260
1260
  // 获取当前组件所在的表单
1261
- const formInst = utils.getOnlineFormInstance(inst.$parent);
1261
+ const formInst = utils.getOnlineFormInstance(inst);
1262
1262
  // 获取当前组件是否在子表中的某一行
1263
1263
  const {
1264
1264
  subScopeEl,
@@ -1536,6 +1536,37 @@ Date.prototype.format = function (format) {
1536
1536
  }
1537
1537
  return format;
1538
1538
  };
1539
+
1540
+ //精确四舍五入
1541
+ Number.prototype.toFixedRound = function (d) {
1542
+ d = Number(d);
1543
+ var s = this + '';
1544
+ if (!d) d = 0;
1545
+ if (s.indexOf('.') == -1) s += '.';
1546
+ s += new Array(d + 1).join('0');
1547
+ if (new RegExp('^(-|\\+)?(\\d+(\\.\\d{0,' + (d + 1) + '})?)\\d*$').test(s)) {
1548
+ var s = '0' + RegExp.$2,
1549
+ pm = RegExp.$1,
1550
+ a = RegExp.$3.length,
1551
+ b = true;
1552
+ if (a == d + 2) {
1553
+ a = s.match(/\d/g);
1554
+ if (parseInt(a[a.length - 1]) > 4) {
1555
+ for (var i = a.length - 2; i >= 0; i--) {
1556
+ a[i] = parseInt(a[i]) + 1;
1557
+ if (a[i] == 10) {
1558
+ a[i] = 0;
1559
+ b = i != 1;
1560
+ } else break;
1561
+ }
1562
+ }
1563
+ s = a.join('').replace(new RegExp('(\\d+)(\\d{' + d + '})\\d$'), '$1.$2');
1564
+ }
1565
+ if (b) s = s.substr(1);
1566
+ return (pm + s).replace(/\.$/, '');
1567
+ }
1568
+ return this + '';
1569
+ };
1539
1570
  /* harmony default export */ __webpack_exports__["a"] = (utils);
1540
1571
 
1541
1572
  /***/ }),
@@ -12538,9 +12569,12 @@ var SubPagination = __webpack_require__("1639");
12538
12569
 
12539
12570
  // CONCATENATED MODULE: ./src/mixins/onlineSubtable.js
12540
12571
 
12572
+
12541
12573
  /* harmony default export */ var onlineSubtable = ({
12542
12574
  data() {
12543
12575
  return {
12576
+ searchVal: '',
12577
+ //搜索关键字
12544
12578
  fillOrg: {},
12545
12579
  fillOrgConfMap: {},
12546
12580
  transitionIndex: -1,
@@ -12590,6 +12624,200 @@ var SubPagination = __webpack_require__("1639");
12590
12624
  }
12591
12625
  },
12592
12626
  methods: {
12627
+ //合计计算
12628
+ getSummaries(param, list) {
12629
+ let CancelTheCalculation = sessionStorage.getItem('Cancel_The_Calculation') ? JSON.parse(sessionStorage.getItem('Cancel_The_Calculation')) : {};
12630
+ //
12631
+ let listChange = JSON.parse(Base64.decode(list, 'utf-8'));
12632
+
12633
+ //
12634
+
12635
+ if (listChange.length < 1) {
12636
+ return;
12637
+ }
12638
+ const {
12639
+ columns,
12640
+ data
12641
+ } = param;
12642
+ this.tableData = data;
12643
+ const sums = [];
12644
+ let calcProp = [];
12645
+ let columnsDep = _.cloneDeep(columns);
12646
+ listChange.forEach((item, idex) => {
12647
+ if (item.addFunc == 'calcFunc') {
12648
+ columnsDep.forEach((column, index) => {
12649
+ if (item.mathExp && item.mathExp.indexOf('.' + column.property) > -1) {
12650
+ calcProp.push(column.property);
12651
+ }
12652
+ });
12653
+ }
12654
+ columnsDep.forEach((column, index) => {
12655
+ if (item.columnField == column.property) {
12656
+ column.combinedOption = item;
12657
+ }
12658
+ });
12659
+ });
12660
+ columnsDep.forEach((column, index) => {
12661
+ if (index === 0 && columnsDep[0].type == 'index') {
12662
+ sums[index] = '';
12663
+ return;
12664
+ }
12665
+ //当有需要才合计
12666
+ if (column.combinedOption) {
12667
+ let {
12668
+ addFunc,
12669
+ columnField,
12670
+ name,
12671
+ unit,
12672
+ showType,
12673
+ num,
12674
+ tag,
12675
+ mainTarget
12676
+ } = column.combinedOption;
12677
+ let Bol = tag && CancelTheCalculation && CancelTheCalculation[tag] && CancelTheCalculation[tag].length > 0;
12678
+ const values = data.map(item => Number(item[column.property]));
12679
+ let depValues = _.cloneDeep(values);
12680
+ if (Bol) {
12681
+ let delMin = [];
12682
+ depValues.forEach((item, i) => {
12683
+ if (!CancelTheCalculation[tag].includes(i)) {
12684
+ delMin.push(item);
12685
+ }
12686
+ });
12687
+ depValues = delMin;
12688
+ }
12689
+ let units = unit ? unit : '';
12690
+ //求和
12691
+ if (addFunc === 'add') {
12692
+ if (!depValues.every(value => isNaN(value))) {
12693
+ sums[index] = depValues.reduce((prev, curr) => {
12694
+ const value = Number(curr);
12695
+ if (!isNaN(value)) {
12696
+ return prev + curr;
12697
+ } else {
12698
+ return prev;
12699
+ }
12700
+ }, 0);
12701
+ sums[index] = this.dealWithDataHtml(name, sums[index], showType, num, units, mainTarget);
12702
+ } else {
12703
+ sums[index] = this.dealWithDataHtml(name, 0, showType, num, units, mainTarget);
12704
+ }
12705
+ }
12706
+ //计数
12707
+ if (addFunc === 'count') {
12708
+ let numCount = values.length;
12709
+ if (Bol) {
12710
+ numCount = values.length - CancelTheCalculation[tag].length;
12711
+ }
12712
+ sums[index] = this.dealWithDataHtml(name, numCount, showType, num, units, mainTarget);
12713
+ }
12714
+ //平均值
12715
+ if (addFunc === 'average') {
12716
+ let sum = 0;
12717
+ var average = 0;
12718
+ for (var i = 0; i < depValues.length; i++) {
12719
+ sum += depValues[i];
12720
+ }
12721
+ depValues.length > 0 ? average = sum / depValues.length : average = 0;
12722
+ sums[index] = this.dealWithDataHtml(name, average, showType, num, units, mainTarget);
12723
+ }
12724
+ //最大值
12725
+ if (addFunc === 'max') {
12726
+ let maxNum = Math.max.apply(null, depValues.length > 0 ? depValues : [0]);
12727
+ sums[index] = this.dealWithDataHtml(name, maxNum, showType, num, units, mainTarget);
12728
+ }
12729
+ //最小值
12730
+ if (addFunc === 'min') {
12731
+ let minNum = Math.min.apply(null, depValues.length > 0 ? depValues : [0]);
12732
+ sums[index] = this.dealWithDataHtml(name, minNum, showType, num, units, mainTarget);
12733
+ }
12734
+
12735
+ //公式计算
12736
+ if (addFunc === 'calcFunc') {
12737
+ const calcVal = this.dealCustomCalc(data, column.combinedOption);
12738
+ sums[index] = this.dealWithDataHtml(name, calcVal, showType, num, units, mainTarget);
12739
+ }
12740
+ } else if (calcProp.indexOf(column.property) > -1) {
12741
+ const values = data.map(item => Number(item[column.property]));
12742
+ }
12743
+ });
12744
+ return sums;
12745
+ },
12746
+ //合计行
12747
+ handleSummary(summary) {
12748
+ return summary && !this.searchVal ? true : false;
12749
+ },
12750
+ dealWithDataHtml(name, type, showType, num, units, mainTarget) {
12751
+ let {
12752
+ data,
12753
+ monCap
12754
+ } = this.dealWithData(type, showType, num, mainTarget);
12755
+ if (monCap) {
12756
+ return name + ':' + data + units + '\n' + monCap;
12757
+ }
12758
+ return name + ':' + data + units;
12759
+ },
12760
+ //处理数据
12761
+ dealWithData(data, showType, numfix = 0, mainTarget) {
12762
+ data = Number(data);
12763
+ let list = showType;
12764
+ let num = {
12765
+ data: 0,
12766
+ monCap: ''
12767
+ };
12768
+ // 保留小数位
12769
+ if (list.includes('keepSmall')) {
12770
+ const fixData = data.toFixedRound(numfix);
12771
+ num.data = fixData;
12772
+ if (mainTarget) {
12773
+ mainTarget = !mainTarget.startsWith('data.') ? 'data.' + mainTarget : mainTarget;
12774
+ utils["a" /* default */].setValueByConfigKey(this, {
12775
+ trget: mainTarget
12776
+ }, 'trget', data);
12777
+ }
12778
+ } else {
12779
+ if (mainTarget && data != null) {
12780
+ mainTarget = !mainTarget.startsWith('data.') ? 'data.' + mainTarget : mainTarget;
12781
+ utils["a" /* default */].setValueByConfigKey(this, {
12782
+ trget: mainTarget
12783
+ }, 'trget', data.toFixedRound(4));
12784
+ }
12785
+ }
12786
+
12787
+ //百分比
12788
+ if (list.includes('percentage')) {
12789
+ num.data = Number(data * 100) + '%';
12790
+ }
12791
+ // 千分位
12792
+ if (list.includes('Micrometer')) {
12793
+ num.data = utils["a" /* default */].thousandBit(data);
12794
+ }
12795
+ if (list.includes('keepSmall') && list.includes('percentage') && list.includes('Micrometer')) {
12796
+ num.data = utils["a" /* default */].thousandBit(Number(data * 100).toFixedRound(numfix)) + '%';
12797
+ return num;
12798
+ }
12799
+ if (list.includes('keepSmall') && list.includes('percentage')) {
12800
+ num.data = Number(data * 100).toFixedRound(numfix) + '%';
12801
+ return num;
12802
+ }
12803
+ if (list.includes('Micrometer') && list.includes('percentage')) {
12804
+ num.data = utils["a" /* default */].thousandBit(Number(data * 100)) + '%';
12805
+ return num;
12806
+ }
12807
+ if (list.includes('keepSmall') && list.includes('Micrometer')) {
12808
+ num.data = utils["a" /* default */].thousandBit(data.toFixedRound(numfix));
12809
+ }
12810
+
12811
+ // 货币大写
12812
+ if (list.includes('monCap')) {
12813
+ num = {
12814
+ data: data,
12815
+ monCap: utils["a" /* default */].convertCurrency(data)
12816
+ };
12817
+ return num;
12818
+ }
12819
+ return num;
12820
+ },
12593
12821
  getExpandArr(data, type) {
12594
12822
  if (type === 'expand' && data) {
12595
12823
  let arr = [];
@@ -33470,7 +33698,7 @@ _main_vue__WEBPACK_IMPORTED_MODULE_0__["default"].register({
33470
33698
  /***/ "9224":
33471
33699
  /***/ (function(module) {
33472
33700
 
33473
- module.exports = JSON.parse("{\"a\":\"1.0.58\"}");
33701
+ module.exports = JSON.parse("{\"a\":\"1.0.59\"}");
33474
33702
 
33475
33703
  /***/ }),
33476
33704
 
@@ -54703,7 +54931,8 @@ const req = function (url, data = {}, option = {}) {
54703
54931
  this.printDetail(parameter.templateId, parameter.id, parameter.action);
54704
54932
  } else if (btnAlias == 'sub' && this.checkSelect()) {
54705
54933
  this.showSubList(this.tableData.selectRows[0].id_, parameter);
54706
- } else if (btnAlias == 'js' && this.checkSelect()) {
54934
+ } else if (btnAlias == 'js') {
54935
+ if (parameter.needValidateSelect && !this.checkSelect()) return;
54707
54936
  this.customEvilJS(this.tableData.selectRows[0], parameter.jsValue);
54708
54937
  } else if (btnAlias == 'startFlow' && parameter.defId && !parameter.isStartFlow) {
54709
54938
  this.operating(parameter.templateId, parameter.id, parameter.action, parameter.defId, parameter.isStartFlow, parameter.openType, parameter.quitAfterSaving);