|
|
@@ -108,8 +108,7 @@ let projFeatureView = {
|
|
|
me.initTree(sheet, true, datas);
|
|
|
sheet.setFormatter(-1, 1, '@');
|
|
|
//兼容旧数据
|
|
|
- let compatLockedKeys = ['engineering'],
|
|
|
- compatNumKeys = [
|
|
|
+ let compatNumKeys = [
|
|
|
'buildingArea',
|
|
|
'basementBuildingArea',
|
|
|
'totalFloors',
|
|
|
@@ -122,8 +121,20 @@ let projFeatureView = {
|
|
|
'standardFloorHeight'
|
|
|
];
|
|
|
for(let row = 0;row < datas.length ; row ++){
|
|
|
+ console.log(datas[row]);
|
|
|
if(datas[row].cellType == 'comboBox'){
|
|
|
- let options = datas[row].options?datas[row].options.split("@"):[];
|
|
|
+ let options = [];
|
|
|
+ if (datas[row].options) {
|
|
|
+ options = datas[row].options.split("@")
|
|
|
+ } else if (datas[row].relatedOptions) {
|
|
|
+ const eng = datas.find(item => item.key === 'engineering');
|
|
|
+ const engValue = eng.value || '';
|
|
|
+ const relatedOptions = JSON.parse(datas[row].relatedOptions);
|
|
|
+ options = relatedOptions[engValue] || [];
|
|
|
+ } else {
|
|
|
+ options = [];
|
|
|
+ }
|
|
|
+ // let options = datas[row].options?datas[row].options.split("@"):[];
|
|
|
me.setCombo(sheet, row, options);
|
|
|
} else if(datas[row].cellType == 'number' || compatNumKeys.includes(datas[row].key)){
|
|
|
me.setting.numRows.push(row);
|
|
|
@@ -131,7 +142,7 @@ let projFeatureView = {
|
|
|
me.setting.dateRows.push(row);
|
|
|
}
|
|
|
let readOnly = typeof datas[row].readOnly === 'string' ? JSON.parse(datas[row].readOnly) : datas[row].readOnly;
|
|
|
- if (readOnly || datas[row].items || compatLockedKeys.includes(datas[row].key)) {
|
|
|
+ if (readOnly || datas[row].items) {
|
|
|
me.setting.locked.rows.push(row);
|
|
|
}
|
|
|
for(let col = 0;col < cols.length;col++){
|
|
|
@@ -177,6 +188,19 @@ let projFeatureView = {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ // 特殊处理养护类别和费用标准
|
|
|
+ const item = me.datas[args.row];
|
|
|
+ if (item.key === 'engineering') {
|
|
|
+ const feeStandardItem = me.datas.find(d => d.key === 'feeStandard');
|
|
|
+ if (feeStandardItem && feeStandardItem.cellType === 'comboBox' && feeStandardItem.relatedOptions) {
|
|
|
+ const relatedOptions = JSON.parse(feeStandardItem.relatedOptions);
|
|
|
+ const options = relatedOptions[v];
|
|
|
+ const feeStandardRow = me.datas.indexOf(feeStandardItem);
|
|
|
+ me.setCombo(args.sheet, feeStandardRow, options);
|
|
|
+ args.sheet.setValue(feeStandardRow, args.col, options[0]);
|
|
|
+ feeStandardItem.value = options[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
me.datas[args.row].value = v;
|
|
|
}
|
|
|
},
|
|
|
@@ -197,6 +221,13 @@ let projFeatureView = {
|
|
|
if(items.length === 0){
|
|
|
return;
|
|
|
}
|
|
|
+ let relatedOptions;
|
|
|
+ const feeStandardItem = me.datas.find(d => d.key === 'feeStandard');
|
|
|
+ if (feeStandardItem && feeStandardItem.cellType === 'comboBox' && feeStandardItem.relatedOptions) {
|
|
|
+ relatedOptions = JSON.parse(feeStandardItem.relatedOptions);
|
|
|
+ }
|
|
|
+ const engineeringItem = me.datas.find(d => d.key === 'engineering');
|
|
|
+ let engineeringVal = engineeringItem && engineeringItem.value || '';
|
|
|
for(let i = 0, len = items.length; i < len; i++){
|
|
|
let row = i + args.cellRange.row;
|
|
|
let comboItems = me.getComboItemsByRow(row);
|
|
|
@@ -207,6 +238,27 @@ let projFeatureView = {
|
|
|
else if (required && !items[i].value) {
|
|
|
recRows.push(row);
|
|
|
}
|
|
|
+ // 特殊处理养护类别和费用标准
|
|
|
+ else if (me.datas[row].key === 'engineering') {
|
|
|
+ if (comboItems && !comboItems.includes(items[i].value)) {
|
|
|
+ recRows.push(row);
|
|
|
+ } else {
|
|
|
+ engineeringVal = items[i].value;
|
|
|
+ if (relatedOptions) {
|
|
|
+ const options = relatedOptions[items[i].value];
|
|
|
+ const feeStandardRow = me.datas.indexOf(feeStandardItem);
|
|
|
+ me.setCombo(args.sheet, feeStandardRow, options);
|
|
|
+ args.sheet.setValue(feeStandardRow, args.cellRange.col, options[0]);
|
|
|
+ feeStandardItem.value = options[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (me.datas[row].key === 'feeStandard') {
|
|
|
+ const options = relatedOptions[engineeringVal];
|
|
|
+ if (!options.includes(items[i].value)) {
|
|
|
+ args.sheet.setValue(row, args.cellRange.col, options[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
//粘贴下拉框数据过滤
|
|
|
else if(comboItems && !comboItems.includes(items[i].value)){
|
|
|
recRows.push(row);
|