SOURCE

let 总行数 = 0, 价位段行数 = 0, 商品行数 = 0,renNum = 0;
let yanPage = document.querySelector('[class="list-center"]').children

let list = 烟页取列表(yanPage);
//console.log(list);
if (校验列表(list) !== 1) throw new Error('列表校验失败:\n' + list);

for (let i = 0; i < yanPage.length; i++){
    if (list[i] === '商品行') 显示可订量(yanPage[i]);
}

for (let i = 0; i < yanPage.length; i++){
    if (list[i] === '价格段行'){
        let a = new Array (7);
        a[0] = list[i];
        a[1] = '?组';  
        a[2] = '商品名称';
        a[3] = '批发价';
        a[4] = '建议零售价';
        a[5] = '可用量';
        a[6] = 价格段行取可订量(yanPage[i]);
        list[i] = a;
        continue;
    }
    if (list[i] === '商品行'){
        let a = new Array (7);
        a[0] = list[i];
        a[1] = '?组';
        a[2] = 获取烟名(yanPage[i]);
        a[3] = 获取批发价(yanPage[i]);
        a[4] = 获取零售价(yanPage[i]);
        a[5] = 获取可订量(yanPage[i]);
        a[6] = '';
        list[i] = a;
        //list[i] = list[i] + 获取烟名(yanPage[i]);
        continue;
    }
}
console.log(list);
arrayToClipput(list);

function arrayToClipput(data){
    if (Array.isArray(data) === false) throw new Error ('传入的值非数组');
    let t = '';
    for (let i = 0; i < data.length; i++){
        t += data[i].join('\t') + '\n';
    }

    let a = document.createElement('textarea');
    a.value = t;
    document.body.appendChild(a);
    a.select();
    document.execCommand('copy');
    a.remove();
}

function 显示可订量(obj){
    obj.querySelector('[class="list-item-input-add"]').click();
    obj.querySelector('[class="list-item-input-del"]').click();
}

function 价格段行取可订量(obj){
    return obj.children[2].textContent.trim();
}

function 烟页取列表(obj){
  let flag = 0;
  let list = new Array(obj.length);

  for (let i = 0; i < obj.length; i++){
    flag = obj[i].children.length;
    if (flag == 6){
      list[i] = '价格段行';
    }else if (flag == 1){
      list[i] = '商品行';
    }else{
      list[i] = '未知行';
    }
  }
  return(list);
}

function 校验列表(list){
  if (Array.isArray(list) === false) return -1;
  if (list.includes('未知行') === true) return -2; //不允许有未知行
  for (let i = 0; i < list.length - 1; i++){
    if (list[i] === '价格段行' && list[i+1] === '价格段行') return -3; //不允许连续出现价格段行
  }
  if (list[list.length - 1] === '价格段行') return -4; //不允许最后一行是价格段行
  if (list[0] === '商品行' && list.includes('价格段行') === true) return -5;  //开始是商品行则不允许出现价格段行
  return 1;
}

function 获取烟名(Obj){
  return Obj.children[0].children[1].querySelector('[class="list-item-name"]').textContent.trim();
}

function 获取批发价(Obj){
  return Obj.children[0].children[2].textContent.trim();
}

function 获取零售价(Obj){
  return Obj.children[0].children[3].textContent.trim();
}

function 获取可订量(Obj){
  return Obj.children[0].children[6].textContent.trim();
}

/*
 烟名:Yan[0].children[0].children[1].querySelector('[class="list-item-name"]').innerText;
批发价:Yan[0].children[0].children[2].innerText
零售价:Yan[0].children[0].children[3].innerText
可用量:Yan[0].children[0].children[6].innerText
*/

/*
for (let i = 0; i < 总行数; i++){
  renNum = Yan[i].children.length;
  if (renNum == 6){
    List[i] = "价位段行";
    价位段行数++;
  }else if (renNum == 1){
    //List[i] = "商品行";
    let A = new Array(6);
    A[0] = '商品行';
    A[1] = 获取烟名(Yan[i]);
    A[2] = 获取批发价(Yan[i]);
    A[3] = 获取零售价(Yan[i]);
    A[4] = 获取可订量(Yan[i]);
    A[5] = '这组可订?条';
    List[i] = A
    商品行数++;
  }else{
    List[i] = "未知行";
  }
}

console.log('  总行数:'+总行数);
console.log("价位段行数:" + 价位段行数);
console.log(" 商品行数:" + 商品行数);
console.log(List);
*/

/*for (let i = 0; i < 1000; i++){
  let t = new Array(getRandom());
  for (let j = 0; j < t.length; j++){
    if (Math.floor(Math.random() * 2) === 0){
	  t[j] = '价格段行';
	}else{
	  t[j] = '商品行';
	}
  }
  if (校验列表(t) === 1) {
    console.log(t);
	break;
  }
}

function getRandom(){
  return Math.floor(Math.random() * 50) + 1;
}
throw new Error("脚本执行已手动终止"); 
*/

/*T(yanPage);
async function T(obj){
    for (let i = 0; i < obj.length; i++){
        if (list[i] === '商品行') 显示可订量(obj[i]);
        console.log('准备开始暂停');
        setTimeout(1000);
        console.log('已经结束暂停');
    }
}*/
console 命令行工具 X clear

                    
>
console