JD VMS Integration

Auto fill vms form fields

// ==UserScript==
// @name         JD VMS Integration
// @namespace    com.jd.vms
// @version      1.0.4
// @description  Auto fill vms form fields
// @author       tinymins
// @match        http://vms.jd.com/Integration/Apply
// @icon         http://vms.jd.com/assets/img/favicon.ico
// @grant        none
// ==/UserScript==

const getConfig = () => {
  let config = {};
  try {
    config = JSON.parse(window.localStorage['com.derzh.jd.vms.integration.apply.preset']);
  } catch (error) {}
  if (typeof config !== 'object') {
    config = {};
  }
  return Object.assign({
    apply_type: '4',
    version_server: '0',
    test_content: '无',
    module_id: '73',
    self_test: '0',
    modification_explanation: '无',
    affect_range: '无',
    interface_name: '无',
    test_data: '无',
    test_address: 'http://beta-ace.jd.com/launch/',
    code_branch: 'prod',
    review_result: '1',
    request_memo: '无',
    code_review_operator: '',
    product_operator: '',
    test_operator: '',
  }, config);
};

$('#cancel-apply-request').after('<button type="button" class="btn btn-default pull-right">存为预设</button>').next().click(() => {
  window.localStorage['com.derzh.jd.vms.integration.apply.preset'] = JSON.stringify({
    apply_type: $('#apply_type').val(),
    version_server: $('#version_server').val(),
    test_content: $('#test_content').val(),
    module_id: $('#module_id').val(),
    self_test: $('#self_test').val(),
    modification_explanation: $('#modification_explanation').val(),
    affect_range: $('#affect_range').val(),
    interface_name: $('#interface_name').val(),
    test_data: $('#test_data').val(),
    test_address: $('#test_address').val(),
    code_branch: $('#code_branch').val(),
    review_result: $('#review_result').val(),
    request_memo: $('#request-memo').val(),
    code_review_operator: $('#code-review-operator').val(),
    product_operator: $('#product-operator').val(),
    test_operator: $('#test-operator').val(),
  });
});

$('#jacp_card_id').after('<button style="margin: 5px; height: 30px; transform: translateY(2px);">行云</button>').next().click(() => {
  if ($('#jacp_card_id').val() === '-1') {
    return alert('请先选择卡片');
  }
  window.open(`http://jagile.jd.com/teamspace/cardlist/tf_project/carddetail?cardId=${$('#jacp_card_id').val()}`);
});

$('#jacp_card_id').after('<button style="margin: 5px; height: 30px; transform: translateY(2px);">FILL</button>').next().click(() => {
  if ($('#jacp_card_id').val() === '-1') {
    return alert('请先选择卡片');
  }
  const config = getConfig();
  $('#apply_type').val(config.apply_type).change();
  const dateNextMonth = new Date();
  dateNextMonth.setTime(dateNextMonth.getTime() + 86400e3 * 30);
  $('#expect_online_date').val(
    [dateNextMonth.getFullYear(), dateNextMonth.getMonth() + 1, dateNextMonth.getDate()]
      .map(a => (a < 10 ? `0${a}` : a))
      .join('-'),
  );
  $('#version_server').val(config.version_server);
  $('#test_content').val(config.test_content);
  $('#module_id').val(config.module_id).change();
  $('#self_test').val(config.self_test);
  $('#modification_explanation').val(config.modification_explanation);
  $('#affect_range').val(config.affect_range);
  $('[name="degrade_switch_apply"][value="0"]+ins').click();
  $('[name="pressure_test"][value="0"]+ins').click();
  $('#interface_name').val(config.interface_name);
  $('#test_data').val(config.test_data);
  $('#test_address').val(config.test_address);
  $('#code_branch').val(config.code_branch);
  $('#review_result').val(config.review_result).change();
  $('#request-memo').val(config.request_memo);
  const fetch = (url) => {
    const xml = new XMLHttpRequest();
    xml.open('GET', url, false);
    xml.withCredentials = true;
    xml.send();
    return xml.responseText;
  };
  const fill_erp_tags = async (elid, erps) => {
    const data = await Promise.all(
      erps
        .split(',')
        .map(s => s.trim())
        .filter(_ => _)
        .map(
          erp => $.ajax(`http://vms.jd.com/user/get_user_base_info?keyword=${erp}`)
            .then(res => res.info.data.find(({ user_name }) => user_name === erp)),
        )
        .filter(_ => _),
    );
    const jqEl = $(`#${elid}`);
    jqEl.tagsinput('removeAll');
    data.filter(_ => _).forEach(v => jqEl.tagsinput('add', v));
  };
  const card = JSON.parse(fetch(`http://jagile.jd.com/jacp/api/v1/bizSpaceCard/cardDetail?id=${jacp_card_dom.val()}`));
  const roles = JSON.parse(fetch(`http://jagile.jd.com/jacp/api/v1/bizConfig/space/kv/${card.data.spaceId}`))
    .data.reduce((a, b) => {
      if (String(b.name + b.group).match(/测试/u)) {
        a[b.code] = 1;
      }
      return a;
    }, {});
  fill_erp_tags('code-review-operator', config.code_review_operator);
  fill_erp_tags('product-operator', card.data.creator.erp || config.product_operator);
  fill_erp_tags('test-operator', card.data.personHours.find(a => roles[a.roleCode])?.erp || config.test_operator);
});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址