<template> 
 | 
  <div class="mainContent"> 
 | 
    <a-card :bordered="false" style="margin-top: 24px"> 
 | 
      <a-form layout="inline"> 
 | 
        <a-form-item label="名称:"> 
 | 
          <a-input v-model="serch.name" style="width: 200px" /> 
 | 
        </a-form-item> 
 | 
        <a-form-item label="上级区域:"> 
 | 
          <a-cascader 
 | 
            placeholder="请选择" 
 | 
            labelInValue 
 | 
            v-model="serch.parentCode" 
 | 
            style="width: 200px" 
 | 
            :options="parentListOptions" 
 | 
            @change="positionLevel" 
 | 
          /> 
 | 
        </a-form-item> 
 | 
        <a-form-item label="所属区域:"> 
 | 
          <a-select 
 | 
            ref="select" 
 | 
            v-model="serch.areaCode" 
 | 
            style="width: 200px" 
 | 
            placeholder="请选择" 
 | 
          > 
 | 
            <a-select-option 
 | 
              v-for="(item, index) in areaCodeList" 
 | 
              :key="index" 
 | 
              :value="item.areaCode" 
 | 
            > 
 | 
              {{ item.areaName }} 
 | 
            </a-select-option> 
 | 
          </a-select> 
 | 
        </a-form-item> 
 | 
        <a-form-item> 
 | 
          <a-button type="primary" html-type="submit" @click="handleSearch"> 
 | 
            查询 
 | 
          </a-button> 
 | 
          <a-button type="primary" @click="() => this.handleModalVisible(true)"> 
 | 
            新建 
 | 
          </a-button> 
 | 
        </a-form-item> 
 | 
      </a-form> 
 | 
      <div style="margin-top: 24px"> 
 | 
        <av-standard-table 
 | 
          :dataSource="dataSource" 
 | 
          :selectedRows="selectedRows" 
 | 
          :columns="columns" 
 | 
          :loading="tableLoading" 
 | 
          :paginationProps="pagination" 
 | 
          @tableChange="handlerTableChange" 
 | 
        ></av-standard-table> 
 | 
      </div> 
 | 
    </a-card> 
 | 
    <a-modal 
 | 
      :title="title" 
 | 
      destroyOnClose 
 | 
      :visible.sync="visibleCreateModal" 
 | 
      @cancel="handleCreateModalCancel" 
 | 
    > 
 | 
      <!----> 
 | 
      <a-form-model 
 | 
        style="margin-top: 8px" 
 | 
        :model="editForm" 
 | 
        :rules="rules" 
 | 
        ref="ruleForm" 
 | 
      > 
 | 
        <a-form-model-item v-bind="formLayout" prop="unitName" label="名称"> 
 | 
          <a-input 
 | 
            placeholder="请输入" 
 | 
            type="string" 
 | 
            v-model="editForm.unitName" 
 | 
            :disabled="pageState === 'view'" 
 | 
          /> 
 | 
        </a-form-model-item> 
 | 
        <a-form-model-item 
 | 
          v-bind="formLayout" 
 | 
          label="上级编码" 
 | 
          prop="parentCode" 
 | 
        > 
 | 
          <a-cascader 
 | 
            v-model="editForm.parentCode" 
 | 
            placeholder="请选择" 
 | 
            change-on-select 
 | 
            :options="newParentListOptions" 
 | 
            @change="positionLevel" 
 | 
            :disabled="pageState === 'view'" 
 | 
          /> 
 | 
        </a-form-model-item> 
 | 
        <a-form-model-item v-bind="formLayout" prop="areaCode" label="行政区划"> 
 | 
          <a-select 
 | 
            ref="select" 
 | 
            placeholder="请选择" 
 | 
            v-model="editForm.areaCode" 
 | 
            :disabled="pageState === 'view'" 
 | 
          > 
 | 
            <a-select-option 
 | 
              :value="item.areaCode" 
 | 
              v-for="item in newAreaCodeList" 
 | 
            > 
 | 
              {{ item.areaName }} 
 | 
            </a-select-option> 
 | 
          </a-select> 
 | 
        </a-form-model-item> 
 | 
        <a-form-model-item v-bind="formLayout" label="是否生效" prop="state"> 
 | 
          <a-radio-group 
 | 
            name="radioGroup" 
 | 
            v-model="editForm.state" 
 | 
            :disabled="pageState === 'view'" 
 | 
          > 
 | 
            <a-radio value="0">是</a-radio> 
 | 
            <a-radio value="1">否</a-radio> 
 | 
          </a-radio-group> 
 | 
        </a-form-model-item> 
 | 
      </a-form-model> 
 | 
      <template slot="footer"> 
 | 
        <a-button key="cancel" @click="handleCreateModalCancel"> 
 | 
          取消 
 | 
        </a-button> 
 | 
        <a-button 
 | 
          key="forward" 
 | 
          type="primary" 
 | 
          v-if="pageState === 'add' || pageState === 'edit'" 
 | 
          @click="handleCreateModalOk" 
 | 
        > 
 | 
          提交 
 | 
        </a-button> 
 | 
      </template> 
 | 
    </a-modal> 
 | 
    <a-modal 
 | 
      title="作废" 
 | 
      destroyOnClose 
 | 
      :visible="visibleInvalidityModal" 
 | 
      @ok="handleInvalidityModalOk" 
 | 
      @cancel="handleInvalidityModalCancel" 
 | 
    > 
 | 
      <!----> 
 | 
      <a-form 
 | 
        style="margin-top: 8px" 
 | 
        :autoFormCreate=" 
 | 
          (form) => { 
 | 
            this.createForm = form; 
 | 
          } 
 | 
        " 
 | 
      > 
 | 
        <a-form-item 
 | 
          :labelCol="{ span: 5 }" 
 | 
          :wrapperCol="{ span: 15 }" 
 | 
          label="理由" 
 | 
          fieldDecoratorId="code" 
 | 
          :fieldDecoratorOptions="{ 
 | 
            rules: [{ required: true, message: '请输入理由!' }], 
 | 
          }" 
 | 
        > 
 | 
          <a-input placeholder="请输入" type="string" /> 
 | 
        </a-form-item> 
 | 
      </a-form> 
 | 
    </a-modal> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script lang="tsx"> 
 | 
import { Component, Prop, Vue, Model, Watch } from "vue-property-decorator"; 
 | 
import moment from "moment"; 
 | 
import { get, post } from "@/util/request"; 
 | 
import * as _ from "lodash"; 
 | 
@Component({ 
 | 
  components: {}, 
 | 
}) 
 | 
export default class QueryList extends Vue { 
 | 
  //规则定义 
 | 
  private rules: any = { 
 | 
    unitName: [ 
 | 
      { required: true, message: "名称不能为空", trigger: "blur" }, 
 | 
      { message: "名称字数不能超过20个!", max: 19 }, 
 | 
    ], 
 | 
    parentCode: [{ required: true, message: "请选择!" }], 
 | 
    areaCode: [{ required: true, message: "请选择!" }], 
 | 
    state: [{ required: true, message: "请选择!" }], 
 | 
  }; 
 | 
  private formLayout = { 
 | 
    labelCol: { 
 | 
      span: 5, 
 | 
    }, 
 | 
    wrapperCol: { 
 | 
      span: 15, 
 | 
    }, 
 | 
  }; 
 | 
  private serch: any = { 
 | 
    name: "", 
 | 
    parentCode: [], 
 | 
    areaCode: "", 
 | 
  }; 
 | 
  private editForm: any = { 
 | 
    unitName: "", 
 | 
    parentCode: [], 
 | 
    areaCode: "", 
 | 
    state: "0", 
 | 
  }; 
 | 
  
 | 
  private pagination: any = { 
 | 
    total: 0, 
 | 
    current: 1, 
 | 
    pageSize: 10, 
 | 
    showSizeChanger: true, 
 | 
    showQuickJumper: true, 
 | 
    pageSizeOptions: ["10", "30", "60", "100"], 
 | 
    showTotal: (total: number) => `共有 ${this.pagination.total} 条数据`, //分页中显示总的数据 
 | 
  }; 
 | 
  
 | 
  @Watch("serch.name") 
 | 
  private watchsearchInform(newVal: string, oldval: string) { 
 | 
    if (newVal !== "" && oldval === "") { 
 | 
      this.pagination.current = 1; 
 | 
    } 
 | 
    this.handleSearch(); 
 | 
  } 
 | 
  
 | 
  private expandForm: boolean = false; 
 | 
  
 | 
  private selectedRows: any[] = []; 
 | 
  
 | 
  private parentListOptions: any[] = []; 
 | 
  private newParentListOptions: any[] = []; 
 | 
  
 | 
  private tableLoading: boolean = false; 
 | 
  private visibleInvalidityModal: boolean = false; 
 | 
  
 | 
  private moment: any = moment; 
 | 
  private pageState: String = "add"; 
 | 
  
 | 
  private dataSource: any[] = []; 
 | 
  
 | 
  private areaCodeList: any[] = []; 
 | 
  
 | 
  private newAreaCodeList: any[] = []; 
 | 
  
 | 
  private visibleCreateModal: boolean = false; 
 | 
  
 | 
  private createForm: any = null; 
 | 
  
 | 
  private title: any = null; 
 | 
  
 | 
  private columns: any[] = [ 
 | 
    { 
 | 
      title: "序号", 
 | 
      dataIndex: "key", 
 | 
      key: "key", 
 | 
      align: "center", 
 | 
      customRender: (text, record, index) => `${index + 1}`, 
 | 
      width: 60, 
 | 
    }, 
 | 
    { 
 | 
      title: "名称", 
 | 
      align: "center", 
 | 
      dataIndex: "unitName", 
 | 
    }, 
 | 
    { 
 | 
      title: "上级区域", 
 | 
      align: "center", 
 | 
      dataIndex: "parentName", 
 | 
    }, 
 | 
    { 
 | 
      title: "所属区域", 
 | 
      align: "center", 
 | 
      dataIndex: "areaName", 
 | 
    }, 
 | 
    { 
 | 
      title: "操作时间", 
 | 
      dataIndex: "updateTime", 
 | 
    }, 
 | 
    { 
 | 
      title: "操作人", 
 | 
      align: "center", 
 | 
      dataIndex: "createName", 
 | 
    }, 
 | 
    { 
 | 
      title: "状态", 
 | 
      dataIndex: "state", 
 | 
      align: "center", 
 | 
      customRender: this.progressStateRender, 
 | 
    }, 
 | 
    { 
 | 
      title: "是否作废", 
 | 
      dataIndex: "isInvalid", 
 | 
      align: "center", 
 | 
      customRender: this.progressIsInvalidRender, 
 | 
    }, 
 | 
    { 
 | 
      title: "操作", 
 | 
      align: "center", 
 | 
      customRender: this.opRender, 
 | 
    }, 
 | 
  ]; 
 | 
  
 | 
  private handleModalVisible(isVisible: boolean): void { 
 | 
    this.visibleCreateModal = isVisible; 
 | 
    this.pageState = "add"; 
 | 
    this.title = "新建责任单位"; 
 | 
  } 
 | 
  
 | 
  private handleSearch(): void { 
 | 
    console.log(this.serch); 
 | 
    const data = this.serch.parentCode; 
 | 
    let code = data[data.length - 1]; 
 | 
  
 | 
    get("unit/selectUint", { 
 | 
      name: this.serch.name, 
 | 
      parentCode: code, 
 | 
      parentCodeList: this.serch.parentCode, 
 | 
      areaCode: this.serch.areaCode, 
 | 
      page: this.pagination.current, 
 | 
      size: this.pagination.pageSize, 
 | 
    }) 
 | 
      .then((res) => { 
 | 
        this.dataSource = res.data.data.item; 
 | 
        this.pagination.total = res.data.data.total; 
 | 
      }) 
 | 
      .catch((err) => { 
 | 
        console.log(err); 
 | 
      }); 
 | 
  } 
 | 
  
 | 
  private handlerTableChange(pagination: any, filter: any, sorter: any): void { 
 | 
    console.log("pagination", pagination); 
 | 
    this.pagination.current = pagination.current; 
 | 
    this.pagination.pageSize = pagination.pageSize; 
 | 
    this.pagination.total = pagination.total; 
 | 
    this.handleSearch(); 
 | 
  } 
 | 
  
 | 
  private handleCreateModalOk() { 
 | 
    let api = "unit/insert"; 
 | 
    if (this.pageState === "edit") { 
 | 
      api = "unit/update"; 
 | 
    } 
 | 
    this.$refs.ruleForm.validate((valid: any) => { 
 | 
      console.log(valid); 
 | 
      if (valid) { 
 | 
        const data = this.editForm.parentCode; 
 | 
        let code = data[data.length - 1]; 
 | 
        console.log(this.editForm); 
 | 
        // 插入角色 
 | 
        post(api, { 
 | 
          unitId: this.editForm.unitId, 
 | 
          unitName: this.editForm.unitName, 
 | 
          parentCode: code, 
 | 
          parentCodeList: this.editForm.parentCode, 
 | 
          areaCode: this.editForm.areaCode, 
 | 
          state: parseInt(this.editForm.state), 
 | 
        }) 
 | 
          .then((res: any) => { 
 | 
            this.handleSearch(); 
 | 
            this.visibleCreateModal = false; 
 | 
            this.editForm = { 
 | 
              unitName: "", 
 | 
              parentCode: [], 
 | 
              areaCode: "", 
 | 
              state: "0", 
 | 
              parentCodeList: [], 
 | 
            }; 
 | 
          }) 
 | 
          .catch((err) => { 
 | 
            console.log(err); 
 | 
          }); 
 | 
      } else { 
 | 
        console.log("error submit!!"); 
 | 
        return false; 
 | 
      } 
 | 
    }); 
 | 
  
 | 
    console.log("editForm", this.editForm); 
 | 
  } 
 | 
  
 | 
  private handleCreateModalCancel(): any { 
 | 
    this.visibleCreateModal = false; 
 | 
    this.editForm = { 
 | 
      unitName: "", 
 | 
      parentCode: [], 
 | 
      areaCode: "", 
 | 
      state: "0", 
 | 
      parentCodeList: [], 
 | 
    }; 
 | 
  } 
 | 
  private handleInvalidityModalCancel(): any { 
 | 
    this.editForm = { 
 | 
      unitName: "", 
 | 
      parentCode: [], 
 | 
      areaCode: "", 
 | 
      state: "0", 
 | 
      parentCodeList: [], 
 | 
    }; 
 | 
    this.visibleInvalidityModal = false; 
 | 
  } 
 | 
  
 | 
  private cityData() { 
 | 
    get("system/area/queryCity", {}) 
 | 
      .then((res) => { 
 | 
        console.log("00000000000000", res); 
 | 
        let org = res.data.data; 
 | 
        let lists = JSON.stringify(org); 
 | 
  
 | 
        lists = lists.replace(/"areaCode"/g, '"value"'); 
 | 
  
 | 
        lists = lists.replace(/"areaName"/g, '"label"'); 
 | 
  
 | 
        const treeLists = JSON.parse(lists); 
 | 
        this.parentListOptions = JSON.parse(JSON.stringify(treeLists)); 
 | 
        this.newParentListOptions = JSON.parse(JSON.stringify(treeLists)); 
 | 
      }) 
 | 
      .catch((err) => { 
 | 
        console.log(err); 
 | 
      }); 
 | 
  } 
 | 
  
 | 
  private positionLevel(val: any) { 
 | 
    this.serch.areaCode = ""; 
 | 
    this.editForm.areaCode = ""; 
 | 
    let code = val[val.length - 1]; 
 | 
    get("system/area/code", { 
 | 
      code: code, 
 | 
    }) 
 | 
      .then((res) => { 
 | 
        console.log("00000000000000", res); 
 | 
        this.areaCodeList = res.data.data; 
 | 
        this.newAreaCodeList = res.data.data; 
 | 
      }) 
 | 
      .catch((err) => { 
 | 
        console.log(err); 
 | 
      }); 
 | 
  } 
 | 
  
 | 
  private mounted() { 
 | 
    this.handleSearch(); 
 | 
    this.cityData(); 
 | 
  } 
 | 
  
 | 
  private updatedAtRender(text: string) { 
 | 
    return <span> {moment(text).format("YYYY-MM-DD HH:mm:ss")} </span>; 
 | 
  } 
 | 
  
 | 
  private handleAssert(record: any) { 
 | 
    get("unit/state", { 
 | 
      unitId: record.unitId, 
 | 
    }) 
 | 
      .then((res) => { 
 | 
        this.handleSearch(); 
 | 
        this.$message.success("操作成功"); 
 | 
      }) 
 | 
      .catch((err) => { 
 | 
        console.log(err); 
 | 
      }); 
 | 
  } 
 | 
  private recordTableData: any = null; 
 | 
  private handleInvalidity(record: any) { 
 | 
    this.visibleInvalidityModal = true; 
 | 
    this.recordTableData = record; 
 | 
  } 
 | 
  
 | 
  private handleInvalidityModalOk(record: any) { 
 | 
    this.createForm.validateFields((err: any, fieldsValue: any) => { 
 | 
      if (err) { 
 | 
        return; 
 | 
      } 
 | 
      get("unit/invalid", { 
 | 
        unitId: this.recordTableData.unitId, 
 | 
        invalidReason: this.createForm.getFieldValue("code"), 
 | 
      }) 
 | 
        .then((res) => { 
 | 
          this.$message.success("操作成功"); 
 | 
          this.visibleInvalidityModal = false; 
 | 
          this.handleSearch(); 
 | 
        }) 
 | 
        .catch((err) => { 
 | 
          console.log(err); 
 | 
        }); 
 | 
    }); 
 | 
  } 
 | 
  
 | 
  private progressIsInvalidRender(text: Number) { 
 | 
    if (text === 0) { 
 | 
      return <a-badge status="success" text="未作废" />; 
 | 
    } 
 | 
    return <a-badge status="error" text="已作废" />; 
 | 
  } 
 | 
  
 | 
  private progressStateRender(text: string) { 
 | 
    if (text === "0") { 
 | 
      return <a-badge status="success" text="生效" />; 
 | 
    } 
 | 
    return <a-badge status="processing" text="未生效" />; 
 | 
  } 
 | 
  private async handleUpdateModalVisible(visible: boolean, record: any): void { 
 | 
    this.visibleCreateModal = true; 
 | 
    await this.positionLevel(record.parentCodeList); 
 | 
    this.title = "编辑责任单位"; 
 | 
    let params = _.cloneDeep(record); 
 | 
    console.log(params); 
 | 
    params.parentCode = record.parentCodeList; 
 | 
    this.editForm = params; 
 | 
    this.pageState = "edit"; 
 | 
    console.log("editForm", record); 
 | 
  } 
 | 
  private async handleDetailModalVisible(visible: boolean, record: any): void { 
 | 
    this.visibleCreateModal = true; 
 | 
    await this.positionLevel(record.parentCodeList); 
 | 
    this.title = "责任单位详情"; 
 | 
    let params = _.cloneDeep(record); 
 | 
    console.log(params); 
 | 
    params.parentCode = record.parentCodeList; 
 | 
    this.editForm = params; 
 | 
    this.pageState = "view"; 
 | 
  } 
 | 
  private opRender(text: string, record: any, index: number) { 
 | 
    // 生效console 
 | 
    console.log("record", record); 
 | 
    if (record.state === "0") { 
 | 
      if (Number(record.isInvalid) === 0) { 
 | 
        return ( 
 | 
          <div> 
 | 
            <a onClick={() => this.handleDetailModalVisible(true, record)}> 
 | 
              {" "} 
 | 
              详情{" "} 
 | 
            </a> 
 | 
            <a-divider type="vertical" /> 
 | 
            <a onClick={() => this.handleInvalidity(record)}>作废</a> 
 | 
          </div> 
 | 
        ); 
 | 
      } else { 
 | 
        return ( 
 | 
          <div> 
 | 
            <a onClick={() => this.handleDetailModalVisible(true, record)}> 
 | 
              {" "} 
 | 
              详情{" "} 
 | 
            </a> 
 | 
          </div> 
 | 
        ); 
 | 
      } 
 | 
    } else { 
 | 
      return ( 
 | 
        <div> 
 | 
          <a onClick={() => this.handleDetailModalVisible(true, record)}> 
 | 
            {" "} 
 | 
            详情{" "} 
 | 
          </a> 
 | 
          <a-divider type="vertical" /> 
 | 
          <a onClick={() => this.handleUpdateModalVisible(true, record)}> 
 | 
            {" "} 
 | 
            编辑{" "} 
 | 
          </a> 
 | 
        </div> 
 | 
      ); 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="less" scoped></style> 
 |