linwe
2024-12-20 9bfb8f9b0ad23e71a02b7e45d90b4c1d5efd617e
企业搜索
5 files modified
3 files added
603 ■■■■ changed files
src/api/company/company.js 26 ●●●●● patch | view | raw | blame | history
src/views/comprehensiveSearch/components/companyDetail.vue 218 ●●●●● patch | view | raw | blame | history
src/views/comprehensiveSearch/components/companyList.vue 192 ●●●●● patch | view | raw | blame | history
src/views/comprehensiveSearch/components/enterpriseList.vue 35 ●●●●● patch | view | raw | blame | history
src/views/comprehensiveSearch/components/searchGroup.vue 33 ●●●● patch | view | raw | blame | history
src/views/comprehensiveSearch/index.vue 95 ●●●● patch | view | raw | blame | history
src/views/house/components/nineSmallPlaces.vue 2 ●●● patch | view | raw | blame | history
src/views/house/components/noFraudAuthentication.vue 2 ●●●●● patch | view | raw | blame | history
src/api/company/company.js
New file
@@ -0,0 +1,26 @@
import request from "@/router/axios.js"
/**
 * 获取企业数据列表
 * @param {*} params
 * @returns
 */
export const searchPlaceList = (searchKey) => {
    return request({
        url: '/api/blade-place/place/searchPlaceList',
        method: 'get',
        params: {
            searchKey
        }
    })
}
export const getDetail = (id) => {
    return request({
        url: '/api/blade-place/place/getDetail',
        method: 'get',
        params: {
            id
        }
    })
}
src/views/comprehensiveSearch/components/companyDetail.vue
New file
@@ -0,0 +1,218 @@
<!--  -->
<template>
    <div class=''>
        <!-- 返回按钮 -->
        <div class="back-box">
            <div class="back-btn" @click="backClick">返回</div>
        </div>
        <div class="enterpriseList">
            <div class="title">企业详情</div>
            <div>
                <div class="content">
                    <div class="content-title">
                        <div class="item-title">续存</div>
                        <div class="item-title">{{ rowData.placeName }}</div>
                    </div>
                    <div>
                        <el-row :gutter="20">
                            <el-col :span="12" style="display: flex;">
                                <div class=" ">法人代表:</div>
                                <div class=" ">{{ rowData.principal }}</div>
                            </el-col>
                            <el-col :span="12" style="display: flex;">
                                <div class=" ">法人电话:</div>
                                <div class=" ">{{ rowData.principalPhone }}</div>
                            </el-col>
                        </el-row>
                        <el-row :gutter="20">
                            <!-- <el-col :span="12" style="display: flex;">
                                <div class=" ">注册时间:</div>
                                <div class=" ">2016-10-10</div>
                            </el-col> -->
                            <el-col :span="24" style="display: flex;">
                                <div class=" ">地址:</div>
                                <div class=" ">{{ rowData.location }}</div>
                            </el-col>
                        </el-row>
                    </div>
                </div>
                <div class="item-box">
                    <div class="item-title">企业人数:100 人</div>
                    <div @click="openList" class="detail">员工详情 >></div>
                </div>
                <div class="item-detail">
                    <div class="item-title">企业信用代码:91440300MA5DAX598F</div>
                    <div class="item-title">企业注册地址:深圳市福田区沙头街道天安社区泰然六路泰然..</div>
                    <div class="item-title">企业经营地址:广东省深圳市宝安区新安街道海天路15号前海..</div>
                    <div class="item-title">企业经营范围:一般经营项目是:钟表、手表、配件的研发与..</div>
                    <div class="item-title">企业类型:有限责任公司</div>
                    <div class="item-title">行业:批发和零售业科技型企业标签名称:</div>
                    <div class="item-title">-上市板块:-</div>
                </div>
            </div>
        </div>
        <!-- elment 弹窗 -->
        <el-dialog title="提示" :visible.sync="dialogVisible" width="30%" :before-close="handleClose">
            <span>员工信息</span>
            <el-table :data="dataList"
                :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" v-loading="residentLoading"
                element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
                element-loading-background="rgba(17, 38, 163, 1)" :empty-text="residentNoDataText" style="width: 100%"
                @cell-click="cellClick" v-if="current == 1">
                <el-table-column align="center" prop="tenantName" label="租户名称"> </el-table-column>
                <el-table-column align="center" prop="phone" label="租户电话"> </el-table-column>
                <el-table-column align="center" prop="rentalTime" label="租房时间"> </el-table-column>
                <el-table-column align="center" prop="dueTime" label="到期时间"> </el-table-column>
            </el-table>
            <span slot="footer" class="dialog-footer">
                <el-button @click="dialogVisible = false">取 消</el-button>
                <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
            </span>
        </el-dialog>
    </div>
</template>
<script>
import {
    getDetail
} from '@/api/company/company';
export default {
    //import引入的组件需要注入到对象中才能使用
    components: {},
    // 父组件给子组件传过来的参数
    props: {
        rowData: {
            type: Object,
            default: () => {
                return {}
            }
        },
    },
    data() {
        //这里存放数据
        return {
            dialogVisible: false,
            dataList: [],
            residentLoading: false,
            residentNoDataText: '暂无数据',
        };
    },
    //监听属性 类似于data概念
    computed: {},
    //监控data中的数据变化
    watch: {},
    //方法集合
    methods: {
        getDetailById(id) {
            getDetail(id).then(res => {
                this.rowData = res.data
            })
        },
        backClick() {
            console.log('返回')
            this.$EventBus.$emit("showDetail", {
                showDetail: false
            })
        },
        openList() {
            this.dialogVisible = true
        },
        handleClose(done) {
            this.$confirm('确认关闭?')
                .then(_ => {
                    done();
                }).catch(_ => { });
        }
    },
    //生命周期 - 创建完成(可以访问当前this实例)
    created() {
    },
    //生命周期 - 挂载完成(可以访问DOM元素)
    mounted() {
        this.getDetailById(this.rowData.id)
    },
    beforeCreate() { }, //生命周期 - 创建之前
    beforeMount() { }, //生命周期 - 挂载之前
    beforeUpdate() { }, //生命周期 - 更新之前
    updated() { }, //生命周期 - 更新之后
    beforeDestroy() { }, //生命周期 - 销毁之前
    destroyed() { }, //生命周期 - 销毁完成
    activated() { }, //如果页面有keep-alive缓存功能,这个函数会触发
}
</script>
<style lang='scss' scoped>
//@import url(); 引入公共css类
.back-box {
    background-color: #602025;
    width: 60px;
    margin: 10px;
}
.enterpriseList {
    color: black;
    margin: 10px;
    .content {
        text-align: left;
        background-color: #d6e3ff;
        margin: 10px;
        border-radius: 10px;
        padding: 5px;
        .content-title {
            display: flex;
            justify-content: flex-start;
            .item-title {
                margin: 3px 5px;
            }
        }
    }
    .item-box {
        text-align: left;
        background-color: #f2f2f7;
        margin: 10px;
        padding: 5px;
        display: flex;
        justify-content: space-between;
        font-size: 16px;
        border-radius: 10px;
        .detail {
            color: #0000ff;
        }
    }
    .item-detail {
        text-align: left;
        background-color: #f2f2f7;
        margin: 10px;
        border-radius: 10px;
        padding: 5px;
    }
}
</style>
src/views/comprehensiveSearch/components/companyList.vue
New file
@@ -0,0 +1,192 @@
<!--  -->
<template>
    <div class=''>
        <div class="enterpriseList" v-if="!showDetail">
            <div v-for="(item, index) in dataList" :key="index" @click="change(item)">
                <div class="enterpriseListItem">
                    <div class="enterpriseListItemIndex">
                        <div class="index_text">
                            {{ index + 1 }}
                        </div>
                    </div>
                    <div>
                        <div class="enterpriseListItemTitle">
                            <div>{{ item.placeName }}</div>
                            <div class="enterpriseListItemType">企业</div>
                        </div>
                        <div class="enterpriseListItemContent">
                            {{ item.location }}
                        </div>
                        <div class="enterpriseListItemContact">
                            <div>{{ item.principal }}</div>
                            <div>{{ item.principalIdCard }}</div>
                            <div>{{ item.principalPhone }}</div>
                        </div>
                    </div>
                </div>
            </div>
            <el-pagination :page-size="20" :pager-count="11" layout="prev, pager, next" :total="100"> </el-pagination>
        </div>
        <companyDetail v-if="showDetail" :rowData="rowData"></companyDetail>
    </div>
</template>
<script>
import {
    searchPlaceList
} from '@/api/company/company';
import companyDetail from './companyDetail'
export default {
    //import引入的组件需要注入到对象中才能使用
    components: {
        companyDetail
    },
    // 父组件给子组件传过来的参数
    props: {
    },
    data() {
        //这里存放数据
        return {
            showDetail: false,
            dataList: [],
            rowData: {},
        };
    },
    //监听属性 类似于data概念
    computed: {},
    //监控data中的数据变化
    watch: {},
    //方法集合
    methods: {
        change(row) {
            this.showDetail = true;
            this.rowData = row;
        },
        handleCurrentChange(val) {
            this.currentRow = val;
        },
        init(searchKey) {
            searchPlaceList(searchKey).then(res => {
                this.dataList = res.data.data.records;
            })
        },
    },
    //生命周期 - 创建完成(可以访问当前this实例)
    created() {
    },
    //生命周期 - 挂载完成(可以访问DOM元素)
    mounted() {
        // this.init('');
        this.$EventBus.$on("searchKey", (params) => {
            this.searchIndex = params.searchIndex
            if (params.searchKey) {
                this.init(params.searchKey)
            }
        })
        this.$EventBus.$on("showDetail", (params) => {
            this.showDetail = params.showDetail
        })
    },
    beforeCreate() { }, //生命周期 - 创建之前
    beforeMount() { }, //生命周期 - 挂载之前
    beforeUpdate() { }, //生命周期 - 更新之前
    updated() { }, //生命周期 - 更新之后
    beforeDestroy() { }, //生命周期 - 销毁之前
    destroyed() { }, //生命周期 - 销毁完成
    activated() { }, //如果页面有keep-alive缓存功能,这个函数会触发
}
</script>
<style lang='scss' scoped>
//@import url(); 引入公共css类
.enterpriseList {
    margin: 10px;
    .enterpriseListItem {
        display: flex;
        // justify-content: flex-start;
        text-align: left;
        background-color: #fff;
        line-height: 20px;
        margin: 10px;
        border-radius: 10px;
        padding: 10px;
        .enterpriseListItemIndex {
            width: 50px;
            text-align: center;
            .index_text {
                position: relative;
                width: 20px;
                height: 20px;
                background-color: blue;
                border-radius: 45%;
                // 写一个伪元素三角形 让伪元素往上移动
                &::after {
                    position: absolute;
                    bottom: -5px;
                    left: 0;
                    content: '';
                    display: inline-block;
                    width: 0;
                    height: 0;
                    border-left: 10px solid transparent;
                    border-right: 10px solid transparent;
                    border-bottom: 10px solid #2400ee;
                    // 三角形旋转
                    transform: rotate(180deg);
                }
            }
        }
        .enterpriseListItemTitle {
            display: flex;
            justify-content: space-between;
            font-size: 14px;
            // font-weight: bold;
            color: #0e0d0d;
            .enterpriseListItemType {
                background-color: #cfcbcb;
                border-radius: 5px;
                padding: 2px 5px;
            }
        }
        .enterpriseListItemContent {
            font-size: 12px;
            color: #cfcbcb;
            // white-space: nowrap;
            /* 确保文本不会换行 */
            // overflow: hidden;
            /* 隐藏超出容器的文本 */
            // text-overflow: ellipsis;
            /* 当文本超出容器时显示省略号 */
            // width: 380px;
            /* 设置一个宽度,你可以根据需要调整 */
        }
        .enterpriseListItemContact {
            color: red;
            display: flex;
            justify-content: space-between;
        }
    }
}
</style>
src/views/comprehensiveSearch/components/enterpriseList.vue
@@ -1,6 +1,6 @@
<!--  -->
<template>
    <div class=''>
    <div class='' v-if="serachIndex == 1">
        <div class="enterpriseList">
            <!-- 企业列表 -->
@@ -11,11 +11,9 @@
                <el-table-column align="center" prop="name" label="企业名称">
                </el-table-column>
            </el-table>
            <el-pagination :page-size="20" :pager-count="11" layout="prev, pager, next" :total="100"> </el-pagination>
        </div>
        <el-pagination :page-size="20" :pager-count="11" layout="prev, pager, next" :total="1000"> </el-pagination>
    </div>
</template>
@@ -23,26 +21,15 @@
export default {
    //import引入的组件需要注入到对象中才能使用
    components: {},
    // 父组件给子组件传过来的参数
    props: {
    },
    data() {
        //这里存放数据
        return {
            tableData: [{
                date: '2016-05-02',
                name: '王小虎',
                address: '上海市普陀区金沙江路 1518 弄'
            }, {
                date: '2016-05-04',
                name: '王小虎',
                address: '上海市普陀区金沙江路 1517 弄'
            }, {
                date: '2016-05-01',
                name: '王小虎',
                address: '上海市普陀区金沙江路 1519 弄'
            }, {
                date: '2016-05-03',
                name: '王小虎',
                address: '上海市普陀区金沙江路 1516 弄'
            }],
            show: false,
            serachIndex: 1,
            tableData: [],
            currentRow: null
        };
    },
@@ -65,7 +52,9 @@
    },
    //生命周期 - 挂载完成(可以访问DOM元素)
    mounted() {
        this.$EventBus.$on("searchIndex", (params) => {
            this.serachIndex = params.serachIndex
        })
    },
    beforeCreate() { }, //生命周期 - 创建之前
    beforeMount() { }, //生命周期 - 挂载之前
src/views/comprehensiveSearch/components/searchGroup.vue
@@ -3,16 +3,14 @@
    <div class=''>
        <!-- // 地址搜索 企业搜索 两个按钮  -->
        <div class="search-group-box">
            <el-button type="primary" plain>地址搜索</el-button>
            <el-button type="success" plain>企业搜索</el-button>
            <el-button @click="change(1)" :type="serachIndex == 1 ? 'primary' : ''">地址搜索</el-button>
            <el-button @click="change(2)" :type="serachIndex == 2 ? 'primary' : ''">企业搜索</el-button>
        </div>
        <!-- 企业地址搜索框-->
        <div class="search-group-input">
            <el-input clearable v-model="input" placeholder="请输入内容"></el-input>
            <el-button type="primary" icon="el-icon-search" plain>搜索</el-button>
            <el-input clearable v-model="searchKey" placeholder="请输入内容"></el-input>
            <el-button @click="searchClick" type="primary" icon="el-icon-search" plain></el-button>
        </div>
    </div>
</template>
@@ -21,10 +19,14 @@
export default {
    //import引入的组件需要注入到对象中才能使用
    components: {},
    // 父组件给子组件传过来的参数
    props: {
    },
    data() {
        //这里存放数据
        return {
            serachIndex: 1,
            searchKey: '',
        };
    },
    //监听属性 类似于data概念
@@ -33,6 +35,23 @@
    watch: {},
    //方法集合
    methods: {
        change(type) {
            this.serachIndex = type
            this.$EventBus.$emit("searchIndex", {
                searchIndex: this.serachIndex
            })
        },
        searchClick() {
            // 判断是综合搜索还是企业搜索
            if (this.serachIndex == 1) {
                // 搜索地址
            } else {
                // 搜索企业
                this.$EventBus.$emit("searchKey", {
                    searchKey: this.searchKey
                })
            }
        },
    },
    //生命周期 - 创建完成(可以访问当前this实例)
src/views/comprehensiveSearch/index.vue
@@ -13,69 +13,9 @@
  <div class="site-page-home police-page container">
    <div v-show="boxShow" class="container-content" ref="containerContent">
      <!-- <div class="time-select" ref="timeSelect">
        <div class="search-item-box">
          <span>报警类型:</span>
          <el-select clearable style="flex: 1;" size="small" v-model="typeValue" @change="typeChange"
            placeholder="请选择报警类型">
            <el-option v-for="item in typeOptions" :key="item.key" :label="item.title" :value="item.key"></el-option>
          </el-select>
        </div>
        <div class="search-item-box">
          <span>报警内容:</span>
          <el-input style="flex: 1;" size="small" placeholder="请输入 报警内容" v-model="alarmDescribe" @change="searchChange"
            clearable></el-input>
        </div>
        <div class="search-item-box" style="justify-content: center;">
          <el-button @click="searchBtn" icon="el-icon-search" class="bjnr-btn">搜索</el-button>
          <el-button @click="clearRow" icon="el-icon-delete" class="bjnr-btn">清除</el-button>
        </div>
        <div class="search-item-box" style="overflow-wrap: break-word;">
          <el-button @click="filterBtn(2)" class="bjnr-btn" :class="{ isOneClick: criminalRecordFlag == 1 }">已处置({{ ycz
            ? ycz :
            '0'
          }})</el-button>
          <el-button @click="filterBtn(1)" class="bjnr-btn" :class="{ isOneClick: criminalRecordFlag == 1 }">未处置({{ dcz
            ? dcz :
            '0'
          }})</el-button>
        </div>
      </div> -->
      <!-- <div class="list police-info" ref="tableBox">
        <el-table :data="tableData" style="width: 100%"
          :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
          :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }"
          :row-class-name="tableRowClassName" class="police-infor-table">
          <el-table-column prop="pcsName" :show-overflow-tooltip="true" label="接警单位"></el-table-column>
          <el-table-column prop="createTime" :show-overflow-tooltip="true" label="报警时间"></el-table-column>
          <el-table-column prop="alarmTypeName" :show-overflow-tooltip="true" label="报警类型"></el-table-column>
          <el-table-column width="80" label="操作" align="center">
            <template slot-scope="scope">
              <el-button type="text" size="small" title="定位" :disabled="positionDisabled(scope.row)"
                @click="rowClick(scope.row)">
                <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
              </el-button>
              <el-button type="text" size="small" title="详情" @click="goDetail(scope.row)">
                <i class="el-icon-document" style="color:#66b1ff"></i>
              </el-button>
            </template>
          </el-table-column>
        </el-table>
        <div class="pages all-pagination-sty" ref="tablePagination">
          <el-pagination background layout="prev, pager, next" :page-size="pages.size" :total="pages.total"
            :pager-count="4" :current-page="pages.current" @current-change="handleCurrentChange"></el-pagination>
        </div>
      </div> -->
      <searchGroup></searchGroup>
      <enterpriseList></enterpriseList>
      <enterpriseList v-if="searchIndex == 1"></enterpriseList>
      <companyList v-if="searchIndex == 2"></companyList>
    </div>
@@ -86,6 +26,7 @@
<script>
import searchGroup from './components/searchGroup'
import enterpriseList from './components/enterpriseList'
import companyList from './components/companyList'
import { initMapPosition } from '@/utils/mapPositionInit'
import { getList, getApplyAlarmType, getStatistic } from "@/api/policeAlarmRecordsManage/index.js"
@@ -96,7 +37,8 @@
  inject: ['userInfo'],
  components: {
    searchGroup,
    enterpriseList
    enterpriseList,
    companyList
  },
  data() {
@@ -105,6 +47,7 @@
      dcz: 0,
      ycz: 0,
      boxShow: false,
      searchIndex: 1,
      alarmDescribe: '',
      typeValue: '',
      tableData: [],
@@ -132,6 +75,10 @@
  },
  mounted() {
    this.$EventBus.$on("searchIndex", (params) => {
      this.searchIndex = params.searchIndex
      console.log(params.searchIndex, '55555555555555555555555555')
    })
    this.$parent.$parent.resize('400px', true)
    this.$nextTick(() => {
@@ -139,26 +86,10 @@
    })
  },
  computed: {
    positionColor() {
      return (row) => {
        if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) {
          return "#1AFA29"
        } else {
          return "#ccc"
        }
      }
    },
  watch: {
  },
    positionDisabled() {
      return (row) => {
        if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) {
          return false
        } else {
          return true
        }
      }
    },
  computed: {
  },
  methods: {
src/views/house/components/nineSmallPlaces.vue
@@ -416,7 +416,7 @@
      console.log(numResult)
      return numResult
    },
    handleSizeChange(val)  {
    handleSizeChange(val) {
      console.log(`每页 ${val} 条`)
      this.pageparm.pageSize = val
      this.changeData(this.current)
src/views/house/components/noFraudAuthentication.vue
@@ -251,8 +251,6 @@
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
    console.log('tableFromPop mounted', this.hushiPeoTy)
    this.init()
  },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {