| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 | <template>  <div>    <div v-show="show">      <el-row>        <el-col :span="5">          <div class="box">            <el-scrollbar>              <basic-container>                <avue-tree                  :option="treeOption"                  :data="treeData"                  @node-click="nodeClick"                />              </basic-container>            </el-scrollbar>          </div>        </el-col>        <el-col :span="19">          <basic-container class="page-crad">            <avue-crud              :option="option"              :data="dataList"              ref="crud"              v-model="form"              :page.sync="page"              @row-del="rowDel"              @row-update="rowUpdate"              :before-open="beforeOpen"              :before-close="beforeClose"              @row-save="rowSave"              @search-change="searchChange"              @search-reset="searchReset"              @selection-change="selectionChange"              @current-change="currentChange"              @size-change="sizeChange"              @refresh-change="refreshChange"              @on-load="onLoad"              @tree-load="treeLoad"              @search-criteria-switch="searchCriteriaSwitch"            >              <template slot="menuLeft">                <el-button                  type="primary"                  size="small"                  icon="el-icon-bottom"                  @click="excelBox = true"                  >导入                </el-button>                <el-button                  icon="el-icon-printer"                  size="small"                  type="primary"                  @click.stop="openReport()"                  >报 表                </el-button>              </template>              <template slot-scope="scope" slot="menu">                <el-button                  type="text"                  icon="el-icon-view"                  size="small"                  @click.stop="editOpen(scope.row, 1)"                  >查看                </el-button>                <el-button                  type="text"                  icon="el-icon-edit"                  size="small"                  @click.stop="editOpen(scope.row, 1)"                  >编辑                </el-button>                <el-button                  type="text"                  icon="el-icon-delete"                  size="small"                  @click.stop="rowDel(scope.row, scope.index)"                  >删除                </el-button>              </template>              <template slot="adminProfiles" slot-scope="{ row }">                <span>{{ row.adminProfilesName | adminProfileFilter }}</span>              </template>              <template slot="belongtocompany" slot-scope="{ row }">                <span>{{ row.belongCompany }}</span>              </template>            </avue-crud>            <report-dialog              :switchDialog="switchDialog"              @onClose="onClose()"            ></report-dialog>            <el-dialog              title="导入客户"              append-to-body              :visible.sync="excelBox"              width="555px"              :close-on-click-modal="false"              v-dialog-drag            >              <avue-form                :option="excelOption"                v-model="excelForm"                table-loading="excelLoading"                :upload-before="uploadBefore"                :upload-after="uploadAfter"              >                <template slot="excelTemplate">                  <el-button type="primary" @click="derivation">                    点击下载<i class="el-icon-download el-icon--right"></i>                  </el-button>                </template>              </avue-form>              <p style="text-align: center;color: #DC0505">                温馨提示 第一次导入时请先下载模板              </p>            </el-dialog>          </basic-container>        </el-col>      </el-row>    </div>    <detail-page      @goBack="goBack"      :detailData="detailData"      v-if="!show"    ></detail-page>  </div></template><script>import detailPage from "./detailsPageEdit";import option from "./configuration/mainList.json";import {  customerList,  typeSave,  detail,  deleteDetails,  getDeptLazyTree} from "@/api/basicData/customerInformation";import { getToken } from "@/util/auth";import reportDialog from "@/components/report-dialog/main";import { customerParameter } from "@/enums/management-type";import { gainUser } from "@/api/basicData/customerInquiry";export default {  name: "customerInformation",  data() {    return {      show: true,      detailData: {},      reportQuery: {},      switchDialog: false,      treeDeptId: "",      form: {},      option: option,      parentId: 0,      dataList: [],      treeOption: {        nodeKey: "id",        lazy: true,        treeLoad: function(node, resolve) {          const parentId = node.level === 0 ? 0 : node.data.id;          getDeptLazyTree({            parentId: parentId,            corpType: customerParameter.code          }).then(res => {            resolve(              res.data.data.map(item => {                return {                  ...item,                  leaf: !item.hasChildren                };              })            );          });        },        addBtn: false,        menu: false,        size: "small",        props: {          labelText: "标题",          label: "title",          value: "value",          children: "children"        }      },      page: {        pageSize: 20,        currentPage: 1,        total: 0,        pageSizes: [10,20,30,40,50, 100, 200, 300, 400, 500]      },      excelBox: false,      excelLoading: false,      excelForm: {},      excelOption: {        submitBtn: false,        emptyBtn: false,        column: [          {            label: "模板下载",            prop: "excelTemplate",            formslot: true,            span: 24          },          {            label: "模板上传",            prop: "excelFile",            type: "upload",            drag: true,            loadText: "模板上传中,请稍等",            span: 24,            propsHttp: {              res: "data"            },            tip: "请上传 .xls,.xlsx 标准格式文件",            action: "/api/blade-client/corpsdesc/import-desc?corpType=KH"          }        ]      }    };  },  components: {    reportDialog,    detailPage  },  filters: {    adminProfileFilter(row) {      if (row) {        return row.substr(0, row.length - 1);      }    }  },  created() {    gainUser().then(res => {      this.findObject(this.option.column, "adminProfiles").dicData =        res.data.data;    });  },  // watch:{  //   'excelForm.isCovered'() {  //     if (this.excelForm.isCovered !== '') {  //       const column = this.findObject(this.excelOption.column, "excelFile");  //       column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;  //     }  //   }  // },  methods: {    derivation() {      window.open(        `/api/blade-client/corpsdesc/export-template?${          this.website.tokenHeader        }=${getToken()}`      );    },    uploadBefore(file, done, loading) {      done();      loading = true;    },    uploadAfter(res, done, loading, column) {      this.excelBox = false;      this.$message.success("导入成功!");      this.refreshChange();      loading = false;      done();    },    nodeClick(data) {      this.treeDeptId = data.id;      this.page.currentPage = 1;      this.onLoad(this.page);    },    //删除列表后面的删除按钮触发触发(row, index, done)    rowDel(row, index, done) {      this.$confirm("确定将选择数据删除?", {        confirmButtonText: "确定",        cancelButtonText: "取消",        type: "warning"      })        .then(() => {          return deleteDetails(row.id);        })        .then(() => {          this.$message({            type: "success",            message: "操作成功!"          });          this.page.currentPage = 1;          this.onLoad(this.page, { parentId: 0 });        });    },    //修改时的修改按钮点击触发    rowUpdate(row, index, done, loading) {      typeSave(row).then(        () => {          this.$message({            type: "success",            message: "操作成功!"          });          // 数据回调进行刷新          done(row);        },        error => {          window.console.log(error);          loading();        }      );    },    //新增修改时保存触发    rowSave(row, done, loading) {      typeSave(row).then(res => {        console.log(res);        done();      });    },    //查询全部    initData() {      customerList({ corpType: customerParameter.code }).then(res => {        console.log(this.form);        const column = this.findObject(this.option.column, "parentId");        column.dicData = res.data.data.records;      });    },    //新增子项触发    handleAdd(row) {      this.parentId = row.id;      const column = this.findObject(this.option.column, "parentId");      column.value = row.id;      column.addDisabled = true;      this.$refs.crud.rowAdd();    },    //新增跳转页面    beforeOpen() {      this.show = false;    },    editOpen(row, status) {      this.detailData = {        id: row.id,        status: status      };      this.show = false;    },    //点击新增时触发    beforeClose(done) {      this.parentId = "";      const column = this.findObject(this.option.column, "parentId");      column.value = "";      column.addDisabled = false;      done();    },    //点击搜索按钮触发    searchChange(params, done) {      console.log(params);      this.page.currentPage = 1;      this.onLoad(this.page, params);      done();    },    //搜索重置按钮触发    searchReset() {      this.treeDeptId = "";      this.onLoad(this.page);    },    selectionChange() {      console.log("1");    },    currentChange() {      console.log("1");    },    sizeChange() {      console.log("1");    },    refreshChange() {      this.onLoad(this.page);    },    onLoad(page, params = { parentId: 0 }) {      let queryParams = Object.assign({}, params, {        size: page.pageSize,        current: page.currentPage,        corpsTypeId: this.treeDeptId,        corpType: customerParameter.code,      });      customerList(queryParams).then(res => {        this.dataList = res.data.data.records;        this.page.total = res.data.data.total;        if (this.page.total || this.page.total === 0) {          this.option.height = window.innerHeight - 210;        }      });    },    searchCriteriaSwitch(type) {      if (type) {        this.option.height = this.option.height - 93;      } else {        this.option.height = this.option.height + 93;      }      this.$refs.crud.getTableHeight();    },    //树桩列点击展开触发    treeLoad(tree, treeNode, resolve) {      const parentId = tree.id;      customerList({        parentId: parentId,        corpType: customerParameter.code      }).then(res => {        resolve(res.data.data.records);      });    },    openReport() {      this.switchDialog = !this.switchDialog;    },    onClose(val) {      this.switchDialog = val;    },    goBack() {      this.detailData = this.$options.data().detailData;      this.show = true;      this.onLoad(this.page, this.search);    }  }};</script><style scoped>.page-crad ::v-deep .basic-container__card {  height: 94.8vh;}</style>
 |