华都集采系统脚本

简化操作步骤

// ==UserScript==
// @name         华都集采系统脚本
// @version      3.3.0
// @description  简化操作步骤
// @author       金辉
// @license MIT
// @require      https://unpkg.com/[email protected]/dist/jquery.min.js
// @require      https://unpkg.com/[email protected]/build/toastr.min.js
// @resource css https://unpkg.com/[email protected]/build/toastr.min.css
// @match        *://fw.ybj.beijing.gov.cn/tps-local-bd/*
// @run-at       document-start
// @grant        unsafeWindow
// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @grant        GM_getResourceText
// @grant   GM_openInTab
// @namespace https://greasyfork.org/users/1357115
// ==/UserScript==

(function () {
    console.log('华都脚本');
  GM_addStyle(GM_getResourceText("css"));
  var params = { current: 1, size: 500, carType: 0 };
  var jsonData = JSON.stringify(params); //转为json字符串
  var mt = {};
  mt.cookie = {};
  mt.cookie.get = function (e) {
    return (e = RegExp("(^| )" + e + "=([^;]*)(;|$)").exec(document.cookie))
      ? e[2]
      : "";
  };
  var sleep = async (duration) => {
    return new Promise((resolve, reject) => {
      setTimeout(resolve, duration);
    });
  };
  let newdiv = document.createElement("div");
  newdiv.style =
    "position:fixed;right:680px;top:10px;font-size:24px;z-index: 999;";
  newdiv.innerHTML =
    '<button id="demo" class="el-button el-button--primary">下载购物车</button><button id="demo1" class="el-button el-button--primary">同步购物车</button><button id="demo2" class="el-button el-button--primary">查看同步情况</button><button id="demo9" class="el-button el-button--primary">检查购物车完整性</button><button id="demo3" class="el-button el-button--primary">清空购物车</button><button id="demo4" class="el-button el-button--primary">入库药品</button><button id="demo6" class="el-button el-button--primary">下载药品目录</button><button id="demo5" class="el-button el-button--primary">同步本院药品目录</button><button id="demo7" class="el-button el-button--primary">清空未同步药品</button><button id="demo8" class="el-button el-button--primary">同步待确认订单</button>';
  document.body.append(newdiv);

  let nonediv = document.createElement("div");
  nonediv.style = "display:none";
  nonediv.innerHTML =
    '<button id="demogaijia" class="el-button el-button--primary">同步维护目录</button><button id="demokais" class="el-button el-button--primary">同步维护目录</button><button id="demoquerenk" class="el-button el-button--primary">全部确认价格</button>';
  document.body.append(nonediv);
  //下载购物车
  $("#demo").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    $.ajax({
      url: "/tps-local-bd/web/bdc/zTender/cccdDrug/shoporder/list",
      method: "post",
      // 通过headers对象设置请求头
      headers: {
        "Content-Type": "application/json",
        Authorization: localStorage.getItem("token"),
        accountType: 2,
        refreshToken: localStorage.getItem("refreshToken"),
      },
      data: jsonData,
      dataType: "json",
      //async: true,
      success: function (res) {
        if (res.code !== 0) {
          toastr.success("请先登陆后再下载");
        }
        GM_xmlhttpRequest({
          method: "post",
          url: "http://www.huadu1.com/api/index/export",
          data: JSON.stringify(res),
          responseType: "arraybuffer",
          headers: { "Content-Type": "application/json" },
          onload: function (res) {
            const url = window.URL.createObjectURL(
              new Blob([res.response], {
                type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
              })
            );
            const link = document.createElement("a");
            link.style.display = "none";
            link.href = url;
            link.setAttribute("download", "export.xlsx");
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
          },
          onerror: function (err) {
            console.log(err);
          },
        });
      },
      error: function (e) {
        console.log("ajax请求异常,异常信息如下:", e);
      },
    });
  });
  //同步药品目录
  $("#demo5").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    let lsc = 0;
    for (let i = 1; i < 5; i++) {
      let params = {
        current: i,
        size: 500,
        carType: 0,
      };
      let jsonData = JSON.stringify(params);
      $.ajax({
        url: "/tps-local-bd/web/bdc/zTender/cccdDrug/shoporder/listDrugs",
        method: "post",
        // 通过headers对象设置请求头
        headers: {
          "Content-Type": "application/json",
          Authorization: localStorage.getItem("token"),
          accountType: 2,
          refreshToken: localStorage.getItem("refreshToken"),
        },
        data: jsonData,
        dataType: "json",
        //async: true,
        success: function (res) {
          if (res.code !== 0) {
            toastr.success("请先登陆后再下载");
          }
          GM_xmlhttpRequest({
            method: "post",
            url: "http://www.huadu1.com/api/index/export1",
            data: JSON.stringify(res),
            headers: { "Content-Type": "application/json" },
            onload: function (res) {
              lsc += 1;
              if (lsc >= 4) {
                toastr.success("同步成功!");
              }
              console.log(res);
            },
            onerror: function (err) {
              console.log(err);
            },
          });
        },
        error: function (e) {
          console.log("ajax请求异常,异常信息如下:", e);
        },
      });
    }
  });
  $("#demokais").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    GM_xmlhttpRequest({
      method: "post",
      url: "http://www.huadu1.com/api/index/tbjiage",
      headers: { "Content-Type": "application/json" },
      onload: async function (res) {
        let one = JSON.parse(res.response);
        for (let i = 0; i < one.length; i++) {
          $.ajax({
            url: "/tps-local-bd/web/bdc/zTender/cccdTrnsAdvPric",
            method: "post",
            // 通过headers对象设置请求头
            headers: {
              "Content-Type": "application/json",
              Authorization: localStorage.getItem("token"),
              accountType: 2,
              refreshToken: localStorage.getItem("refreshToken"),
            },
            data: JSON.stringify(one[i]),
            dataType: "json",
            //async: true,
            success: function (res) {
              console.log(res);
            },
          });
          await sleep(200);
        }
      },
      onerror: function (err) {
        console.log(err);
      },
    });
  });

  $("#demoquerenk").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    GM_xmlhttpRequest({
      method: "post",
      url: "http://www.huadu1.com/api/index/querentong",
      headers: { "Content-Type": "application/json" },
      onload: async function (res) {
        let one = JSON.parse(res.response);
        for (let i = 0; i < one.length; i++) {
          $.ajax({
            url: "/tps-local-bd/web/bdc/zTender/cccdTrnsAdvPric/modifyTrnsAdvPricTohospById",
            method: "PUT",
            // 通过headers对象设置请求头
            headers: {
              "Content-Type": "application/json",
              Authorization: localStorage.getItem("token"),
              accountType: 2,
              refreshToken: localStorage.getItem("refreshToken"),
            },
            data: JSON.stringify(one[i]),
            dataType: "json",
            //async: true,
            success: function (res) {
              console.log(res);
            },
          });
          let postdata = {
            menuName: "中药饮片管理--合同管理--议价管理--确认",
            reqtCont:
              "该机构(北京华都中医医院)下的朱军华在2025-06-17 14:37:35时,对挂网ID:" +
              one[i]["pubonlnId"] +
              "进行了选择议价操作。议价价格:" +
              one[i]["prodentpAdvPric"],
            reqtType: "6",
            reqtUrl:
              "/web/bdc/zTender/cccdTrnsAdvPric/modifyTrnsAdvPricTohospById",
            uACT: "",
          };
          $.ajax({
            url: "/tps-local-bd/web/bdc/zTender/log/saveTrnsAdjOprtLog",
            method: "post",
            // 通过headers对象设置请求头
            headers: {
              "Content-Type": "application/json",
              Authorization: localStorage.getItem("token"),
              accountType: 2,
              refreshToken: localStorage.getItem("refreshToken"),
            },
            data: "[" + JSON.stringify(postdata) + "]",
            dataType: "json",
            //async: true,
            success: function (res) {
              console.log(res);
            },
          });
          await sleep(200);
        }
      },
      onerror: function (err) {
        console.log(err);
      },
    });
  });
  // 同步改价确认记录
  $("#demoqueren").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    for (let i = 1; i < 5; i++) {
      let params = {
        current: i,
        size: 500,
      };
      let jsonData = JSON.stringify(params);
      $.ajax({
        url: "/tps-local-bd/web/bdc/zTender/cccdTrnsAdvPric/getTrnsAdvPriceList",
        method: "post",
        // 通过headers对象设置请求头
        headers: {
          "Content-Type": "application/json",
          Authorization: localStorage.getItem("token"),
          accountType: 2,
          refreshToken: localStorage.getItem("refreshToken"),
        },
        data: jsonData,
        dataType: "json",
        //async: true,
        success: async function (res) {
          if (res.code !== 0) {
            toastr.success("请先登陆后再下载");
          }
          GM_xmlhttpRequest({
            method: "post",
            url: "http://www.huadu1.com/api/index/export7",
            data: JSON.stringify(res),
            headers: { "Content-Type": "application/json" },
            onload: function (res) {
              toastr.success("同步成功!");
            },
            onerror: function (err) {
              console.log(err);
            },
          });
          await sleep(10000);
        },
        error: function (e) {
          console.log("ajax请求异常,异常信息如下:", e);
        },
      });
    }
  });
  // 同步改价记录
  $("#demogaijia").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    for (let i = 1; i < 7; i++) {
      let params = {
        current: i,
        size: 500,
      };
      let jsonData = JSON.stringify(params);
      $.ajax({
        url: "/tps-local-bd/web/bdc/zTender/cccdHospList/page",
        method: "post",
        // 通过headers对象设置请求头
        headers: {
          "Content-Type": "application/json",
          Authorization: localStorage.getItem("token"),
          accountType: 2,
          refreshToken: localStorage.getItem("refreshToken"),
        },
        data: jsonData,
        dataType: "json",
        //async: true,
        success: function (res) {
          if (res.code !== 0) {
            toastr.success("请先登陆后再下载");
          }
          GM_xmlhttpRequest({
            method: "post",
            url: "http://www.huadu1.com/api/index/export5",
            data: JSON.stringify(res),
            headers: { "Content-Type": "application/json" },
            onload: function (res) {
              toastr.success("同步成功!");
            },
            onerror: function (err) {
              console.log(err);
            },
          });
        },
        error: function (e) {
          console.log("ajax请求异常,异常信息如下:", e);
        },
      });
    }
  });
  //下载本院药品目录
  $("#demo6").click(function () {
    GM_openInTab("http://www.huadu1.com/api/index/getmulu", {
      active: true,
      setParent: true,
    });
  });
  //同步购物车
  $("#demo1").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    // 先将本地购物车同步到服务端
    $.ajax({
      url: "/tps-local-bd/web/bdc/zTender/cccdDrug/shoporder/list",
      method: "post",
      // 通过headers对象设置请求头
      headers: {
        "Content-Type": "application/json",
        Authorization: localStorage.getItem("token"),
        accountType: 2,
        refreshToken: localStorage.getItem("refreshToken"),
      },
      data: jsonData,
      dataType: "json",
      //async: true,
      success: function (res) {
        if (res.code !== 0) {
          toastr.success("请先登陆后再下载");
        }
        GM_xmlhttpRequest({
          method: "post",
          url: "http://www.huadu1.com/api/index/tcar",
          data: JSON.stringify(res),
          headers: { "Content-Type": "application/json" },
          onload: function (res) {
            // 同步成功后后续操作
            let tarr = JSON.parse(res.response);
            $("#demo3").click();
            if (tarr.length > 0) {
              // 搜索药品
              let tbc = 0;
              for (let i = 0; i < tarr.length; i++) {
                let params = {
                  current: 1,
                  size: 20,
                  carType: 0,
                  tmdpName: tarr[i]["medicine"],
                };
                let jsonData = JSON.stringify(params);
                $.ajax({
                  url: "/tps-local-bd/web/bdc/zTender/cccdDrug/shoporder/listDrugs",
                  method: "post",
                  // 通过headers对象设置请求头
                  headers: {
                    "Content-Type": "application/json",
                    Authorization: localStorage.getItem("token"),
                    accountType: 2,
                    refreshToken: localStorage.getItem("refreshToken"),
                  },
                  data: jsonData,
                  dataType: "json",
                  success: function (res1) {
                    // 搜索出来有结果的
                    if (res1.code === 0 && res1.data.total > 0) {
                      for (let j = 0; j < res1.data.total; j++) {
                        try {
                          // 药品名称一样,并且厂家一样  进行加入购物车  根据商品ID
                          if (
                            res1.data.records[j]["tmdpName"] ==
                              tarr[i]["medicine"] &&
                            res1.data.records[j]["dclaEntpName"] ==
                              tarr[i]["jobname"]
                          ) {
                            let params = {
                              delventpId: res1.data.records[j]["delventpId"],
                              carType: 0,
                              pubonlnId: res1.data.records[j]["pubonlnId"],
                              purcCnt: tarr[i]["quantity"],
                              purcpric: res1.data.records[j]["purcPric"],
                              shopDetlId: "",
                            };
                            let jsonData = JSON.stringify(params);
                            $.ajax({
                              url: "/tps-local-bd/web/bdc/zTender/cccdDrug/shoporder/add",
                              method: "post",
                              // 通过headers对象设置请求头
                              headers: {
                                "Content-Type": "application/json",
                                Authorization: localStorage.getItem("token"),
                                accountType: 2,
                                refreshToken: localStorage.getItem("refreshToken"),
                              },
                              data: jsonData,
                              dataType: "json",
                              success: function (res2) {
                                // 加入购物车成功的话进行同步
                                if (res2.code == 0) {
                                  tbc += 1;
                                  let params = {
                                    id: tarr[i]["id"],
                                    other: JSON.stringify(res2),
                                  };
                                  let jsonData = JSON.stringify(params);
                                  GM_xmlhttpRequest({
                                    method: "post",
                                    url: "http://www.huadu1.com/api/index/ustatus",
                                    headers: {
                                      "Content-Type": "application/json",
                                    },
                                    data: jsonData,
                                    onload: function (res) {
                                      console.log(res);
                                      toastr.success(
                                        res1.data.records[j]["tmdpName"] +
                                          "同步成功"
                                      );
                                    },
                                  });
                                }
                              },
                              error: function (e) {
                                console.log("ajax请求异常,异常信息如下:", e);
                              },
                            });
                          }
                        } catch (error) {
                          let error_msg = JSON.stringify(res1) + error;
                          let postdata = {
                            errmsg: error_msg,
                          };
                          GM_xmlhttpRequest({
                            method: "post",
                            url: "http://www.huadu1.com/api/index/postmsg",
                            data: JSON.stringify(postdata),
                            headers: { "Content-Type": "application/json" },
                            onload: function (res) {
                              console.log(res);
                            },
                            onerror: function (err) {
                              console.log(err);
                            },
                          });
                          return true;
                        } finally {                          
                          if (tbc == tarr.length) {
                            toastr.success("同步成功,可以点击查看同步情况");
                          }
                        }
                      }
                    } else {
                      if (typeof res1.data == "string") {
                        toastr.success(res1.data);
                      } else {
                        toastr.success(JSON.stringify(res1.data));
                      }
                    }
                  },
                  error: function (e) {
                    console.log("ajax请求异常,异常信息如下:", e);
                  },
                });
              }
            } else {
              toastr.success("插件内未发现数据");
            }
          },
          onerror: function (err) {
            console.log(err);
          },
        });
      },
      error: function (e) {
        console.log("ajax请求异常,异常信息如下:", e);
      },
    });
  });
  //查看同步情况
  $("#demo2").click(function () {
    GM_xmlhttpRequest({
      method: "get",
      url: "http://www.huadu1.com/api/index/tcar",
      headers: { "Content-Type": "application/json" },
      onload: function (res) {
        let tarr = JSON.parse(res.response);
        let str = "";
        if (tarr.length > 0) {
          str = "未同步成功的记录有(您可以再点击同步购物车进行同步):\n";
          for (let k = 0; k < tarr.length; k++) {
            str +=
              tarr[k]["medicine"] +
              " " +
              tarr[k]["jobname"] +
              " " +
              tarr[k]["quantity"] +
              "\n";
          }
        } else {
          str = "已完全同步购物车";
        }
        toastr.success(str);
      },
      onerror: function (err) {
        console.log(err);
      },
    });
  });
  //清空购物车
  $("#demo3").click(function () {
    // 先进行获取购物车的所有信息
    let params = {
      current: 1,
      size: 500,
      carType: 0,
    };
    let jsonData = JSON.stringify(params);
    $.ajax({
      url: "/tps-local-bd/web/bdc/zTender/cccdDrug/shoporder/list",
      method: "post",
      // 通过headers对象设置请求头
      headers: {
        "Content-Type": "application/json",
        Authorization: localStorage.getItem("token"),
        accountType: 2,
        refreshToken: localStorage.getItem("refreshToken"),
      },
      data: jsonData,
      dataType: "json",
      success: function (res) {
        // 进行删除购物车记录
        if (res.code == 0) {
          if (res.data.length > 0) {
            let qkc = 0;
            for (let j = 0; j < res.data.length; j++) {
              let params = {
                pubonlnId: res.data[j]["pubonlnId"],
                shopDetlId: res.data[j]["shopDetlId"],
                shopId: res.data[j]["shopDetlId"],
                carType: 0,
              };
              let jsonData = JSON.stringify(params);
              $.ajax({
                url: "/tps-local-bd/web/bdc/zTender/cccdDrug/shoporder/delete",
                method: "post",
                // 通过headers对象设置请求头
                headers: {
                  "Content-Type": "application/json",
                  Authorization: localStorage.getItem("token"),
                  accountType: 2,
                  refreshToken: localStorage.getItem("refreshToken"),
                },
                data: jsonData,
                dataType: "json",
                success: function (res1) {
                  //   删除成功
                  if (res1.code == 0) {
                    console.log("删除成功");
                  } else {
                    console.log(res1);
                  }
                  qkc += 1;
                  if (qkc == res.data.length) {
                    toastr.success("已清空购物车!");
                  }
                },
                error: function (e) {
                  console.log("ajax请求异常,异常信息如下:", e);
                },
              });
            }
          } else {
            toastr.success("已清空购物车!");
          }
        } else {
          toastr.success("请先进行登陆");
        }
      },
      error: function (e) {
        console.log("ajax请求异常,异常信息如下:", e);
      },
    });
  });
  //入库购物车
  $("#demo4").click(function () {
    GM_openInTab("http://www.huadu4.com/pure.html", {
      active: true,
      setParent: true,
    });
  });
  //清空未同步药品
  $("#demo7").click(function () {
    GM_xmlhttpRequest({
      method: "get",
      url: "http://www.huadu1.com/api/index/qwcar",
      headers: { "Content-Type": "application/json" },
      onload: function (res) {
        toastr.success("清空未同步药品成功");
      },
      onerror: function (err) {
        console.log(err);
      },
    });
  });
  //检查购物车完整性
  $("#demo9").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    $.ajax({
      url: "/tps-local-bd/web/bdc/zTender/cccdDrug/shoporder/list",
      method: "post",
      // 通过headers对象设置请求头
      headers: {
        "Content-Type": "application/json",
        Authorization: localStorage.getItem("token"),
        accountType: 2,
        refreshToken: localStorage.getItem("refreshToken"),
      },
      data: jsonData,
      dataType: "json",
      //async: true,
      success: function (res) {
        if (res.code !== 0) {
          toastr.success("请先登陆后再下载");
        }
        GM_xmlhttpRequest({
          method: "post",
          url: "http://www.huadu1.com/api/index/checkcar",
          data: JSON.stringify(res),
          headers: { "Content-Type": "application/json" },
          onload: function (res) {
            toastr.success(res.responseText);
          },
          onerror: function (err) {
            console.log(err);
          },
        });
      },
      error: function (e) {
        console.log("ajax请求异常,异常信息如下:", e);
      },
    });
  });
  // 下载所有处理中订单
  $("#demo8").click(function () {
    if (localStorage.getItem("token").length == 0) {
      toastr.success("请先登陆后再下载");
      return;
    }
    var currentDate = new Date();
    var entTime = currentDate.toISOString().substring(0, 10) + " 23:59:59";
    currentDate.setDate(currentDate.getDate() - 7);
    var startTime = currentDate.toISOString().substring(0, 10) + " 00:00:00";
    var params = {
      current: 1,
      size: 100,
      isFwz: 1,
      entTime: entTime,
      startTime: startTime,
    };
    var jsonData = JSON.stringify(params); //转为json字符串
    $.ajax({
      url: "/tps-local-bd/web/bdc/zTender/orderMgt/queryTrnsOrderList",
      method: "post",
      // 通过headers对象设置请求头
      headers: {
        "Content-Type": "application/json",
        Authorization: localStorage.getItem("token"),
        accountType: 2,
        refreshToken: localStorage.getItem("refreshToken"),
      },
      data: jsonData,
      dataType: "json",
      success: function (res) {
        if (res.code !== 0) {
          toastr.success("请先登陆后再下载");
        }
        if (res.data.records.length > 0) {
          GM_xmlhttpRequest({
            method: "post",
            url: "http://www.huadu1.com/api/index/checkdif",
            data: JSON.stringify(res),
            headers: { "Content-Type": "application/json" },
            onload: function (res11) {
              let tobj = JSON.parse(res11.responseText);
              for (let i = 0; i < tobj.length; i++) {
                var params = { current: 1, size: 100, purcDocno: tobj[i] };
                var jsonData = JSON.stringify(params);
                $.ajax({
                  url: "/tps-local-bd/web/bdc/zTender/orderMgt/getTrnsOrderDetlInfo",
                  method: "post",
                  headers: {
                    "Content-Type": "application/json",
                    Authorization: localStorage.getItem("token"),
                    accountType: 2,
                    refreshToken: localStorage.getItem("refreshToken"),
                  },
                  dataType: "json",
                  data: jsonData,
                  success: function (res1) {
                    res1.purcStas = res.data.records[i]["purcStas"];
                    GM_xmlhttpRequest({
                      method: "post",
                      url: "http://www.huadu1.com/api/index/export2",
                      data: JSON.stringify(res1),
                      headers: { "Content-Type": "application/json" },
                      onload: function (res3) {
                        toastr.success(res3);
                      },
                      onerror: function (err) {
                        console.log(err);
                      },
                    });
                  },
                  error: function (e) {
                    console.log("ajax请求异常,异常信息如下:", e);
                  },
                });
              }
              toastr.success("同步完成");
            },
            onerror: function (err) {
              console.log(err);
            },
          });
        }
      },
      error: function (e) {
        console.log("ajax请求异常,异常信息如下:", e);
      },
    });
  });
})();