Surpriseplus
2022-10-27 4aac1609c95a097de0e8da843a9ed2f211303d4e
src/views/maintenance/blackwhiteList.vue
@@ -59,29 +59,42 @@
                :placeholder="$t('operatManage.BWL.interceptionNumber')"
              />
            </el-form-item>
            <el-form-item>
              <el-button @click="onSubmit">{{
                $t("operatManage.BWL.change")
              <el-button
                ><i class="el-icon-search"></i> &nbsp;{{
                  $t('operatManage.BWL.search')
                }}</el-button
              >
            </el-form-item>
            <el-form-item>
              <el-button
                ><i class="el-icon-delete"></i> &nbsp;{{
                  $t('operatManage.BWL.reset')
                }}</el-button
              >
            </el-form-item>
            <el-form-item>
              <el-button v-if="menuStatus.insert" @click="showInsertdialog(1)">{{
                $t('common.append')
              }}</el-button>
            </el-form-item>
            <el-form-item>
              <el-button @click="onSubmit"
                ><i class="el-icon-search"></i> &nbsp;{{
                  $t("operatManage.BWL.search")
                }}</el-button
              >
            </el-form-item>
            <el-form-item>
              <el-button @click="onSubmit"
                ><i class="el-icon-delete"></i> &nbsp;{{
                  $t("operatManage.BWL.reset")
                }}</el-button
              >
              <el-button v-if="menuStatus.delete" @click="delBWList">{{
                $t('common.delete')
              }}</el-button>
            </el-form-item>
          </el-form>
        </div>
        <div class="table_box">
          <el-table :data="tableData" stripe style="width: 100%" height="99%">
          <el-table
            :data="BTableData"
            stripe
            @selection-change="blackSelectionChange"
            style="width: 100%"
            height="85%"
          >
            <el-table-column type="selection" width="55" />
            <el-table-column
              align="center"
              type="index"
@@ -89,56 +102,61 @@
              width="70px"
            />
            <el-table-column
              align="center"
              prop="serviceName"
              :label="$t('operatManage.BWL.serviceName')"
              prop="ip"
              :label="$t('operatManage.BWL.whiteListIP')"
            />
            <el-table-column
              align="center"
              prop="accessSourceSystem"
              :label="$t('operatManage.BWL.accessSourceSystem')"
              prop="visit"
              :label="$t('operatManage.BWL.PageView')"
            />
            <el-table-column
              align="center"
              prop="IPRequest"
              :label="$t('operatManage.BWL.IPRequest')"
              prop="descr"
              :label="$t('operatManage.BWL.description')"
            />
            <el-table-column
              align="center"
              prop="servicesRequestUrl"
              :label="$t('operatManage.BWL.servicesRequestUrl')"
            />
            <el-table-column
              align="center"
              prop="resourceIDRequest"
              :label="$t('operatManage.BWL.resourceIDRequest')"
              prop="createName"
              :label="$t('operatManage.BWL.creator')"
            />
            <el-table-column
              align="center"
              prop="serviceSystemRequest"
              :label="$t('operatManage.BWL.serviceSystemRequest')"
              :formatter="formatData"
              prop="createTime"
              :label="$t('operatManage.BWL.creationTime')"
            />
            <el-table-column
              align="center"
              prop="blackListStatus"
              :label="$t('operatManage.BWL.blackListStatus')"
              prop="updateName"
              :label="$t('operatManage.BWL.update')"
            />
            <el-table-column
              align="center"
              prop="operate"
              :label="$t('operatManage.BWL.operate')"
              :formatter="formatData"
              prop="updateTime"
              :label="$t('operatManage.BWL.UpdateTime')"
            />
            <el-table-column
              v-if="menuStatus.update"
              :label="$t('operatManage.tokentoolObj.operation')"
              width="320"
              align="center"
            >
              <template slot-scope="scope">
                <el-button
                  @click="handleEdit(scope.$index, scope.row)"
                  type="warning"
                  plain
                  size="small"
                  >{{ $t('common.update') }}</el-button
                >
              </template>
            </el-table-column>
          </el-table>
          <div style="margin-top: 40px" class="pagination_box">
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="currentPage"
              @size-change="BhandleSizeChange"
              @current-change="BhandleCurrentChange"
              :current-page="BListData.pageIndex"
              :page-sizes="[10, 20, 30, 40]"
              :page-size="10"
              :page-size="BListData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="0"
              :total="Bcount"
            >
            </el-pagination>
          </div>
@@ -172,21 +190,32 @@
            <el-form-item>
              <el-button @click="onSubmit"
                ><i class="el-icon-search"></i> &nbsp;{{
                  $t("operatManage.BWL.search")
                  $t('operatManage.BWL.search')
                }}</el-button
              >
            </el-form-item>
            <el-form-item>
              <el-button @click="onSubmit"
                ><i class="el-icon-delete"></i> &nbsp;{{
                  $t("operatManage.BWL.reset")
                  $t('operatManage.BWL.reset')
                }}</el-button
              >
            </el-form-item>
            <el-form-item>
              <el-button   v-if="menuStatus.insert" @click="showInsertdialog(2)">{{
                $t('common.append')
              }}</el-button>
            </el-form-item>
            <el-form-item>
              <el-button   v-if="menuStatus.delete" @click="delBWList">{{
                $t('common.delete')
              }}</el-button>
            </el-form-item>
          </el-form>
        </div>
        <div class="table_box">
          <el-table :data="tableData" stripe style="width: 100%" height="99%">
          <el-table :data="WTableData" stripe     @selection-change="blackSelectionChange" style="width: 100%" height="85%">
               <el-table-column type="selection" width="55" />
            <el-table-column
              align="center"
              type="index"
@@ -194,56 +223,149 @@
              width="70px"
            />
            <el-table-column
              align="center"
              prop="whiteListIP"
              prop="ip"
              :label="$t('operatManage.BWL.whiteListIP')"
            />
            <el-table-column
              align="center"
              prop="effectiveDate"
              :label="$t('operatManage.BWL.effectiveDate')"
              prop="visit"
              :label="$t('operatManage.BWL.PageView')"
            />
            <el-table-column
              align="center"
              prop="requestUser"
              :label="$t('operatManage.BWL.requestUser')"
              prop="descr"
              :label="$t('operatManage.BWL.description')"
            />
            <el-table-column
              align="center"
              prop="tokenInfo"
              :label="$t('operatManage.BWL.tokenInfo')"
              prop="createName"
              :label="$t('operatManage.BWL.creator')"
            />
            <el-table-column
              align="center"
              prop="whiteListStatus"
              :label="$t('operatManage.BWL.whiteListStatus')"
              :formatter="formatData"
              prop="createTime"
              :label="$t('operatManage.BWL.creationTime')"
            />
            <el-table-column
              align="center"
              prop="operate"
              :label="$t('operatManage.BWL.operate')"
              prop="updateName"
              :label="$t('operatManage.BWL.update')"
            />
            <el-table-column
              :formatter="formatData"
              prop="updateTime"
              :label="$t('operatManage.BWL.UpdateTime')"
            />
             <el-table-column
             v-if="menuStatus.update"
              :label="$t('operatManage.tokentoolObj.operation')"
              width="320"
              align="center"
            >
              <template slot-scope="scope">
                <el-button
                  @click="handleEdit(scope.$index, scope.row)"
                  type="warning"
                  plain
                  size="small"
                  >{{ $t('common.update') }}</el-button
                >
              </template>
            </el-table-column>
          </el-table>
          </el-table>
          <div style="margin-top: 40px" class="pagination_box">
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="currentPage"
              @size-change="WhandleSizeChange"
              @current-change="WhandleCurrentChange"
              :current-page="WListData.pageIndex"
              :page-sizes="[10, 20, 30, 40]"
              :page-size="10"
              :page-size="WListData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="0"
              :total="Wcount"
            >
            </el-pagination>
          </div></div
      ></el-tab-pane>
    </el-tabs>
    <el-dialog
      :title="$t('common.append')"
      style="overflow: hidden"
      :visible.sync="InsertFormdialog"
      width="30%"
    >
      <el-form ref="insertform" :model="insertform">
        <el-form-item :label-width="formLabelWidth" label="IP地址">
          <el-input
            v-model="insertform.ip"
            :placeholder="$t('common.pleaseInput')"
          />
        </el-form-item>
        <el-form-item :label-width="formLabelWidth" label="访问次数">
          <el-input
            v-model="insertform.visit"
            :placeholder="$t('common.pleaseInput')"
          />
        </el-form-item>
        <el-form-item :label-width="formLabelWidth" label="描述">
          <el-input
            v-model="insertform.descr"
            :placeholder="$t('common.pleaseInput')"
          />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="insertFromDataClose">{{
          $t('common.close')
        }}</el-button>
        <el-button @click="insertFromData" type="primary">{{
          $t('common.confirm')
        }}</el-button>
      </div>
    </el-dialog>
    <el-dialog
      :title="$t('common.update')"
      style="overflow: hidden"
      :visible.sync="updateFormdialog"
      width="30%"
    >
      <el-form ref="editfrom" :model="editfrom">
        <el-form-item :label-width="formLabelWidth" label="IP地址">
          <el-input
            v-model="editfrom.ip"
            :placeholder="$t('common.pleaseInput')"
          />
        </el-form-item>
        <el-form-item :label-width="formLabelWidth" label="访问次数">
          <el-input
            v-model="editfrom.visit"
            :placeholder="$t('common.pleaseInput')"
          />
        </el-form-item>
        <el-form-item :label-width="formLabelWidth" label="描述">
          <el-input
            v-model="editfrom.descr"
            :placeholder="$t('common.pleaseInput')"
          />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="editFromDataClose">{{
          $t('common.close')
        }}</el-button>
        <el-button @click="editFromData" type="primary">{{
          $t('common.confirm')
        }}</el-button>
      </div>
    </el-dialog>
  </div>
</template>
  <script>
import MyBread from "../../components/MyBread.vue";
<script>
import MyBread from '../../components/MyBread.vue';
import {
  blacklistSelectByPageAndCount,
  blacklistAppend,
  deletelacklist,
  updateblacklist,
  blacklistSelectCount,
} from '../../api/api';
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
@@ -252,39 +374,226 @@
  data() {
    return {
      activeName: "first",
         menuStatus: {
        delete: false,
        insert: false,
        update: false,
      },
      updateFormdialog: false,
      multipleSelection: [],
      formLabelWidth: '100px',
      insertform: {},
      editfrom: {},
      InsertFormdialog: false,
      activeName: 'first',
      currentPage: 1,
      form: {
        blackListIP: "",
        IPState: "",
        interceptionCycle: "",
        unit: "",
        interceptionNumber: "",
        blackListIP: '',
        IPState: '',
        interceptionCycle: '',
        unit: '',
        interceptionNumber: '',
      },
      tableData: [],
      BTableData: [],
      WTableData: [],
      BListData: {
        pageIndex: 1,
        pageSize: 10,
        type: 1,
      },
      WListData: {
        pageIndex: 1,
        pageSize: 10,
        type: 2,
      },
      Wcount: 0,
      Bcount: 0,
    };
  },
  methods: {
    editFromDataClose() {
      this.updateFormdialog = false;
      this.editfrom = {};
    },
    async editFromData() {
      var data = await updateblacklist(this.editfrom);
      if (data.code == 200) {
        this.updateFormdialog = false;
        this.editfrom = {};
        this.$message({
          message: '修改成功!',
          type: 'success',
        });
        this.BGetList();
        this.WGetList();
      } else {
        this.$message({
          message: '修改失败!',
          type: 'warning',
        });
      }
    },
    handleEdit(index, row) {
      this.editfrom = row;
      this.updateFormdialog = true;
    },
    async delBWList() {
      var std = [];
      for (var i in this.multipleSelection) {
        std.push(this.multipleSelection[i].id);
      }
      //deletes
      const data = await deletelacklist({ ids: std.toString() });
      if (data.code == 200) {
        this.$message({
          message: '删除成功!',
          type: 'success',
        });
        this.BGetList();
        this.WGetList();
      } else {
        this.$message({
          message: '删除失败!',
          type: 'warning',
        });
      }
    },
    blackSelectionChange(val) {
      this.multipleSelection = val;
    },
    showInsertdialog(res) {
      this.insertform.type = res;
      this.InsertFormdialog = true;
    },
    insertFromDataClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
    },
    async insertFromData() {
      var count = await blacklistSelectCount(this.insertform);
      if (parseInt(count.result) != 0) return;
      var data = await blacklistAppend(this.insertform);
      if (data.code == 200) {
        this.InsertFormdialog = false;
        this.insertform = {};
        this.$message({
          message: '添加成功!',
          type: 'success',
        });
        this.BGetList();
        this.WGetList();
      } else {
        this.$message({
          message: '添加失败!',
          type: 'warning',
        });
      }
    },
    //格式化时间
    add0(m) {
      return m < 10 ? '0' + m : m;
    },
    //格式化时间
    format(shijianchuo) {
      //shijianchuo是整数,否则要parseInt转换
      var time = new Date(shijianchuo);
      var y = time.getFullYear();
      var m = time.getMonth() + 1;
      var d = time.getDate();
      var h = time.getHours();
      var mm = time.getMinutes();
      var s = time.getSeconds();
      return (
        y + '-' + this.add0(m) + '-' + this.add0(d)
        // " " +
        // this.add0(h) +
        // ":" +
        // this.add0(mm) +
        // ":" +
        // this.add0(s)
      );
    },
    //格式化列表
    formatData(row, column) {
      let data = row[column.property];
      if (data == null) {
        return data;
      }
      return this.format(data);
    },
    handleClick(tab, event) {
      console.log(tab, event);
    },
    handleSizeChange(val) {
      console.log(`每页 ${val} 条`);
    WhandleSizeChange(val) {
      this.WListData.pageSize = val;
      this.getList();
    },
    handleCurrentChange(val) {
      console.log(`当前页: ${val}`);
    WhandleCurrentChange(val) {
      this.WListData.pageIndex = val;
      this.getList();
    },
    BhandleSizeChange(val) {
      this.BListData.pageSize = val;
      this.getList();
    },
    BhandleCurrentChange(val) {
      this.BListData.pageIndex = val;
      this.getList();
    },
    onSubmit() {
      console.log("submit!");
      console.log('submit!');
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    async WGetList() {
      const data = await blacklistSelectByPageAndCount(this.WListData);
      if (data.code != 200) {
        return this.$message.error('列表调用失败');
      }
      this.WTableData = data.result;
      this.Wcount = data.count;
    },
    async BGetList() {
      const data = await blacklistSelectByPageAndCount(this.BListData);
      if (data.code != 200) {
        return this.$message.error('列表调用失败');
      }
      this.BTableData = data.result;
      this.Bcount = data.count;
    },
    showPermsMenu(res) {
      switch (res.tag) {
        case '/delete':
          this.menuStatus.delete = true;
          break;
        case '/insert':
          this.menuStatus.insert = true;
          break;
        case '/update':
          this.menuStatus.update = true;
          break;
      }
    },
  },
  created() {},
  created() {
     var val = this.$store.state.currentPerms;
    var permsEntity = this.$store.state.permsEntity;
    for (var i = 0; i < permsEntity.length; i++) {
      if (permsEntity[i].perms == val) {
        this.showPermsMenu(permsEntity[i]);
      }
    }
    this.BGetList();
    this.WGetList();
  },
};
</script>
  <style lang="less" scoped>
<style lang="less" scoped>
//@import url(); 引入公共css类
.logLog_box {
  background: rgb(240, 242, 245);
@@ -308,10 +617,14 @@
    background: #fff;
    border-radius: 5px;
    border: 1px solid rgb(202, 201, 204);
    overflow: auto;
    height: 70%;
  }
  .text-center {
    text-align: center;
  }
  .el-tab-pane {
    height: 82vh;
  }
}
</style>