zhouwx
2025-03-05 39f97341210dabcffbd50f1cea5bd697a602bb7b
src/views/safetyReview/projectManage/index.vue
@@ -65,6 +65,26 @@
        </div>
      </div>
    </div>
    <div class="tip" :class="{show: isShow}">
      <div class="titleTip">
        <div style="display: flex">
          当前存在未完结:安全评价项目
          <div style="cursor: pointer;border-radius: 8px;padding: 0 5px;color: #ed5565;" :class="{active: isActive}" @click="chooseUn" >
            {{search.num.safetyTotal}}
          </div> 个,检验检测项目
          <div style="color: #ed5565;margin-left: 5px;margin-right: 5px"> {{search.num.safetyCheckTotal}} </div>
          个,共
          <div style="color: #ed5565;margin-left: 5px;margin-right: 5px"> {{search.num.unFinishTotal}} </div>
          个
        </div>
        <el-icon @click="closeTip" style="cursor: pointer"><Close /></el-icon>
      </div>
    </div>
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="dataList" :border="true" ref="tableRef" :height="tableHeight" style="width: 100%;">
      <el-table-column label="序号" width="80" align="center" type="index" ></el-table-column>
@@ -170,11 +190,33 @@
                size="large"
            />
          </el-form-item>
          <el-form-item  label="机构名称" >
            <el-select
                v-model="search.queryParams.agencyName"
                filterable
                remote
                @change="selectValue"
                reserve-keyword
                placeholder="所属机构"
                remote-show-suffix
                :remote-method="getCompanyList"
                :loading="loadingCompany"
                style="width:100%"
                clearable
            >
              <el-option
                  v-for="item in companyList"
                  :key="item.id"
                  :label="item.name"
                  :value="item.name"
              />
            </el-select>
          </el-form-item>
          <el-form-item  label="项目名称" >
            <el-input v-model="search.queryParams.name" placeholder="请输入项目名称"></el-input>
            <el-input v-model.trim="search.queryParams.name" placeholder="请输入项目名称"></el-input>
          </el-form-item>
          <el-form-item  label="委托单位">
            <el-input v-model="search.queryParams.client" placeholder="委托单位"></el-input>
            <el-input v-model.trim="search.queryParams.client" placeholder="委托单位"></el-input>
          </el-form-item>
          <el-form-item  label="业务范围">
            <el-select v-model="search.queryParams.business" class="m-2" size="large" placeholder="请选择" style="width: 100%" >
@@ -232,8 +274,11 @@
import {getDict} from "@/api/login";
import {getDictList} from "@/api/backManage/evaluate";
import Cookies from "js-cookie"
import {getAllAgency} from "@/api/backManage/insitution";
const router = useRouter();
const isActive = ref(false)
const isShow = ref(false)
const loading = ref(false);
const direction = ref('rtl');
const showDrawer = ref(false);
@@ -248,6 +293,7 @@
    pageNum: 1,
    pageSize: 20,
    name: '',
    agencyName: '',
    client: '',
    province: '',
    city: '',
@@ -255,6 +301,8 @@
    business: '',
    estimateType: '',
    phase: '',
    safetyCheck: 0,
    unFinish: null,
    params:{
      lostMaterial: null
    }
@@ -265,9 +313,14 @@
    investigationTotal: 0,
    reviewTotal: 0,
    reportTotal: 0,
    archiveTotal: 0
    archiveTotal: 0,
    unFinishTotal: 0,
    safetyCheckTotal: 0,
    safetyTotal: 0
  }
});
const companyList = ref([])
const loadingCompany = ref(false)
const searchTime = ref([]);
const area = ref([]);
const businessList = ref([]);
@@ -283,6 +336,7 @@
    label: '否'
  }
])
const title = ref('')
const tableRef  = ref(null);
const tableHeight = ref(0);
const dataList = ref([]);
@@ -311,6 +365,7 @@
  chooseType.value = val;
  search.queryParams.phase = val;
  getList();
  getStatistics()
}
const getList = async () => {
  loading.value = true;
@@ -350,10 +405,12 @@
  search.queryParams.pageNum = 1;
  search.queryParams.pageSize = val
  getList()
  getStatistics()
}
const handleCurrentChange = (val) => {
  search.queryParams.pageNum = val
  getList()
  getStatistics()
}
const toProcess = (type,value,toPath) => {
  value.type = type;
@@ -432,6 +489,7 @@
    pageNum: 1,
    pageSize: 20,
    name: '',
    agencyName: '',
    client: '',
    province: '',
    city: '',
@@ -439,6 +497,8 @@
    business: '',
    estimateType: '',
    phase: '',
    safetyCheck: 0,
    unFinish: null,
    params: {
      lostMaterial: null
    }
@@ -502,12 +562,74 @@
  console.log("val",val)
  toProcess('edit',val,toPath);
}
const selectValue = (val) => {
  console.log('val',val)
  if(val == ""){
    companyList.value = []
  }
  // data.companyList.forEach(item => {
  //   if(item.name === val){
  //     data.queryParams.companyId = item.id
  //   }
  // })
}
const getCompanyList = async (val)=>{
  if(val != ""){
    loadingCompany.value = true;
    const queryParams = {
      name: val
    }
    const res = await getAllAgency(queryParams)
    if (res.code == 200) {
      loadingCompany.value = false;
      companyList.value = res.data
    } else {
      ElMessage.warning(res.message)
    }
  }
}
const chooseUn = () => {
  isActive.value = !isActive.value
  if(isActive.value){
    search.queryParams.unFinish = 1
  }else {
    search.queryParams.unFinish = null
  }
  getList()
  getStatistics()
}
const closeTip = () => {
 isShow.value = true
}
</script>
<style scoped lang="scss">
.project-container{
  .active {
    background-color: #fcc6cb;
    //border: 1px solid #dab4f6;
  }
  .show{
    display: none;
  }
  .tip{
    margin-top: 10px;
    margin-bottom: 15px;
    margin-left: 20px;
  }
  .titleTip{
    font-size: 15px;
    font-weight: 800;
    display: flex;
    padding: 8px;
    color: #e6a23c;
    background-color: #FCF5EB;
    align-items: center;
    justify-content: space-between;
  }
  .header{
    margin: 15px 10px;
    display: flex;