| | |
| | | <div v-show="contentShow" class="search-box"> |
| | | <el-popover ref="popover" placement="bottom" trigger="manual" v-model="searchTreeShowFlag" |
| | | popper-class="tree-search-popup" @mousedown.native="preventFocusLost"> |
| | | <el-tree v-show="searchLazyFlag == true" ref="popupTree" style="overflow: auto;" |
| | | class="select-tree-box" :load="loadNode" :lazy="true" :props="props" |
| | | @current-change="currentChangeHandle" @mousedown.native="preventFocusLost"></el-tree> |
| | | |
| | | <el-tree v-show="searchLazyFlag == false" :empty-text="treeEmptyText" ref="popupTree" |
| | | style="overflow: auto;" class="select-tree-box" :data="searchTreeData" :props="defaultProps" |
| | | :default-expand-all="true" @current-change="currentChangeHandle" |
| | | <el-tree v-show="searchLazyFlag == true" ref="popupTree" style="overflow: auto;" class="select-tree-box" |
| | | :load="loadNode" :lazy="true" :props="props" @current-change="currentChangeHandle" |
| | | @mousedown.native="preventFocusLost"></el-tree> |
| | | |
| | | <el-tree v-show="searchLazyFlag == false" :empty-text="treeEmptyText" ref="popupTree" style="overflow: auto;" |
| | | class="select-tree-box" :data="searchTreeData" :props="defaultProps" :default-expand-all="true" |
| | | @current-change="currentChangeHandle" @mousedown.native="preventFocusLost"></el-tree> |
| | | </el-popover> |
| | | |
| | | <el-input ref="searchTreeInput" v-model="searchTreeName" @input="searchInputTree" |
| | | @focus="searchTreeShowFlag = true" @blur="searchTreeShowFlag = false" v-popover:popover |
| | | placeholder="请输入搜索条件" style="cursor: pointer;"></el-input> |
| | | @focus="searchTreeShowFlag = true" @blur="searchTreeShowFlag = false" v-popover:popover placeholder="请输入搜索条件" |
| | | style="cursor: pointer;"></el-input> |
| | | </div> |
| | | |
| | | <div v-show="contentShow" class="result-content" ref="resultContentBox"> |
| | | <el-main v-loading="villageInfoLoading" element-loading-background="rgba(0, 0, 0, 0.5)" |
| | | element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading" |
| | | style="overflow:hidden;padding:0px;"> |
| | | element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading" style="overflow:hidden;padding:0px;"> |
| | | <div class="housing-estate-info" ref="housingEstateInfoBox"> |
| | | <div class="housing-title"> |
| | | {{ villageInfo.name }} |
| | | <div class="progress"></div> |
| | | </div> |
| | | <div class="housing-bg"> |
| | | <el-image fit="contain" :src="villageInfo.pic_url" |
| | | :preview-src-list="villageInfo.pic_url_singleArr"> |
| | | <el-image fit="contain" :src="villageInfo.pic_url" :preview-src-list="villageInfo.pic_url_singleArr"> |
| | | <div slot="error" class="image-slot">暂无照片</div> |
| | | </el-image> |
| | | <el-empty :image-size="120" description="暂无照片" |
| | |
| | | </div> |
| | | </div> |
| | | <div class="code"> |
| | | <el-image fit="contain" :src="villageInfo.codeUrl" |
| | | :preview-src-list="[villageInfo.codeUrl]"> |
| | | <el-image fit="contain" :src="villageInfo.codeUrl" :preview-src-list="[villageInfo.codeUrl]"> |
| | | <div slot="error" class="image-slot"></div> |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | <!-- 点击展开 --> |
| | | <div class="house-shrink-unfold-btn" @click="unfoldHouseBox('down')" |
| | | v-show="!isShowHouseInfoBox"><i class="el-icon-arrow-down"></i> |
| | | <div class="house-shrink-unfold-btn" @click="unfoldHouseBox('down')" v-show="!isShowHouseInfoBox"><i |
| | | class="el-icon-arrow-down"></i> |
| | | </div> |
| | | <!-- 点击收缩 --> |
| | | <div class="house-shrink-unfold-btn" @click="unfoldHouseBox('up')" v-show="isShowHouseInfoBox"> |
| | |
| | | <div class="floor-content" v-show="subNavType == 1"> |
| | | <el-main v-loading="BuildListLoading" v-show="isShowBuildListBox" |
| | | element-loading-background="rgba(0, 0, 0, 0.5)" element-loading-text="数据正在加载中" |
| | | element-loading-spinner="el-icon-loading" style="overflow:hidden;padding:0px;" |
| | | class="build-item"> |
| | | element-loading-spinner="el-icon-loading" style="overflow:hidden;padding:0px;" class="build-item"> |
| | | <div class="build-info" v-show="!BuildListLoading && buildingList.length"> |
| | | <div class="nextBtn" @click="lastBtn" v-show="lastBtnShow == true"> |
| | | <i class="el-icon-caret-left"></i> |
| | | </div> |
| | | <div class="build-outBox" ref="BuildOutBox"> |
| | | <div class="build-box" style="left: 0px;"> |
| | | <div class="ridgepole-list" v-for="index of Math.ceil(buildingList.length / 10)" |
| | | :key="index"> |
| | | <div v-for="(item, index) in buildingList.slice((index - 1) * 10, index * 10)" |
| | | :key="index" @click="buildingClick(item)" |
| | | :class="{ on: buildingChoosed.name == item.name }" :title="item.name"> |
| | | <div class="ridgepole-list" v-for="index of Math.ceil(buildingList.length / 10)" :key="index"> |
| | | <div v-for="(item, index) in buildingList.slice((index - 1) * 10, index * 10)" :key="index" |
| | | @click="buildingClick(item)" :class="{ on: buildingChoosed.name == item.name }" |
| | | :title="item.name"> |
| | | {{ |
| | | item.name |
| | | }} |
| | | <div @click.stop title="显示/隐藏楼栋高亮"> |
| | | <el-checkbox v-model="isBuildHighLightchecked" |
| | | v-show="buildingChoosed.name == item.name" |
| | | <el-checkbox v-model="isBuildHighLightchecked" v-show="buildingChoosed.name == item.name" |
| | | @change="changeBuildHighLightchecked"></el-checkbox> |
| | | </div> |
| | | </div> |
| | |
| | | <i v-show="buildingList.length > 10 && nextBtnShow" class="el-icon-caret-right"></i> |
| | | </div> |
| | | </div> |
| | | <div class="build-info" v-show="!BuildListLoading && !buildingList.length" |
| | | style="justify-content: center;"> |
| | | <div class="build-info" v-show="!BuildListLoading && !buildingList.length" style="justify-content: center;"> |
| | | 暂无楼栋数据</div> |
| | | </el-main> |
| | | <div class="ridgepole-info" v-if="isShowHouseBox"> |
| | |
| | | <div class="type">选择单元</div> |
| | | <div class="type-select"> |
| | | <el-select size="small" v-model="unitValue" placeholder="请选择" @change="chooseUnit"> |
| | | <el-option v-for="item in unitOptions" :key="item.value" :label="item.label" |
| | | :value="item.value" class="unit-option"></el-option> |
| | | <el-option v-for="item in unitOptions" :key="item.value" :label="item.label" :value="item.value" |
| | | class="unit-option"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> --> |
| | | <el-main v-loading="pictLoading" element-loading-background="rgba(0, 0, 0, 0.5)" |
| | | element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading" |
| | | class="resident-box"> |
| | | element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading" class="resident-box"> |
| | | <div class="floor-outBox"> |
| | | <div @click="lastFloorBtn" class="floorBtn" v-show="lastFloorShow"> |
| | | <i class="el-icon-caret-left"></i> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="floor-detail" v-show="!pictLoading && isHaveResidentData"> |
| | | <div v-for="(item, index) in unitChoosedArr.slice((floorsType - 1) * 5, floorsType * 5)" |
| | | :key="index"> |
| | | <div v-for="(item, index) in unitChoosedArr.slice((floorsType - 1) * 5, floorsType * 5)" :key="index"> |
| | | <div class="title">{{ item.sname }}层:</div> |
| | | <div class="detail"> |
| | | <div v-for="(value, index) in item.children_infos" :key="index" |
| | | @click="residentDetailsClick(value)" |
| | | <div v-for="(value, index) in item.children_infos" :key="index" @click="residentDetailsClick(value)" |
| | | :class="{ on: floorChoosed == value.sname }">{{ value.sname |
| | | }}室 |
| | | <div class="flow" |
| | |
| | | v-show="subNavType == 2"> |
| | | <el-table :data="comeOutData" style="width: 100%" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" |
| | | :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'comeOut')" |
| | | :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading" element-loading-text="拼命加载中" |
| | | element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)"> |
| | | <el-table-column prop="name" label="名称" width="180" |
| | | :show-overflow-tooltip="true"></el-table-column> |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" :row-class-name="tableRowClassName" |
| | | @row-click="deepDataRowClick($event, 'comeOut')" :empty-text="houseDeepNoDataText" |
| | | v-loading="houseDeepLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" |
| | | element-loading-background="rgba(0, 0, 0, 0.5)"> |
| | | <el-table-column prop="name" label="名称" width="180" :show-overflow-tooltip="true"></el-table-column> |
| | | <el-table-column prop="x" label="经度" width="100"></el-table-column> |
| | | <el-table-column prop="y" label="纬度" width="100"></el-table-column> |
| | | </el-table> |
| | | </div> |
| | | |
| | | <div class="park-content" :class="{ 'come-out-content-long': !isShowHouseInfoBox }" |
| | | v-show="subNavType == 3"> |
| | | <div class="park-content" :class="{ 'come-out-content-long': !isShowHouseInfoBox }" v-show="subNavType == 3"> |
| | | <el-table :data="parkingLotData" style="width: 100%" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" |
| | | :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'park')" |
| | | :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading" element-loading-text="拼命加载中" |
| | | element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)"> |
| | | <el-table-column prop="name" label="名称" width="180" |
| | | :show-overflow-tooltip="true"></el-table-column> |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" :row-class-name="tableRowClassName" |
| | | @row-click="deepDataRowClick($event, 'park')" :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading" |
| | | element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" |
| | | element-loading-background="rgba(0, 0, 0, 0.5)"> |
| | | <el-table-column prop="name" label="名称" width="180" :show-overflow-tooltip="true"></el-table-column> |
| | | <el-table-column prop="x" label="经度" width="100"></el-table-column> |
| | | <el-table-column prop="y" label="纬度" width="100"></el-table-column> |
| | | </el-table> |
| | |
| | | v-show="subNavType == 4"> |
| | | <el-table :data="businessData" style="width: 100%" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" |
| | | :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'business')" |
| | | @sort-change="sortDevName" :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading" |
| | | element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" |
| | | element-loading-background="rgba(0, 0, 0, 0.5)" :show-overflow-tooltip="true" |
| | | @cell-mouse-enter="businessMouseEnter" @cell-mouse-leave="businessMouseLeave"> |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" :row-class-name="tableRowClassName" |
| | | @row-click="deepDataRowClick($event, 'business')" @sort-change="sortDevName" |
| | | :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading" element-loading-text="拼命加载中" |
| | | element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)" |
| | | :show-overflow-tooltip="true" @cell-mouse-enter="businessMouseEnter" @cell-mouse-leave="businessMouseLeave"> |
| | | <el-table-column sortable="custom" prop="placeName" label="场所名称" |
| | | :show-overflow-tooltip="true"></el-table-column> |
| | | <el-table-column prop="labelName" label="场所类型"></el-table-column> |
| | |
| | | </div> |
| | | |
| | | <div class="police-info" v-if="navType == 1" ref="policeTableBox"> |
| | | <el-main v-loading="policeInfoLoading" element-loading-text="拼命加载中" |
| | | element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)"> |
| | | <el-main v-loading="policeInfoLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" |
| | | element-loading-background="rgba(0, 0, 0, 0.5)"> |
| | | <div class="select-type"> |
| | | <el-date-picker :clearable="false" v-model="eventTime" type="daterange" align="right" |
| | | unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" |
| | | @change="caseTimeChange" :picker-options="pickerOptions"></el-date-picker> |
| | | <el-select v-model="typeValue" @change="changeJQType" placeholder="请选择" |
| | | class="type-select-css"> |
| | | <el-option v-for="item in policeInforOptions" :key="item.value" :label="item.label" |
| | | :value="item.value" class="option-css"></el-option> |
| | | <el-date-picker :clearable="false" v-model="eventTime" type="daterange" align="right" unlink-panels |
| | | range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="caseTimeChange" |
| | | :picker-options="pickerOptions"></el-date-picker> |
| | | <el-select v-model="typeValue" @change="changeJQType" placeholder="请选择" class="type-select-css"> |
| | | <el-option v-for="item in policeInforOptions" :key="item.value" :label="item.label" :value="item.value" |
| | | class="option-css"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="jq-tab"> |
| | |
| | | <div v-show="jqType == 0"> |
| | | <el-table :data="callPoliceData" style="width: 100%" :height="currentTableHeight" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" |
| | | :row-class-name="tableRowClassName" :empty-text="jqNoDataText" |
| | | class="police-infor-table" @cell-click="housingPoliceSiteClick"> |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" :row-class-name="tableRowClassName" |
| | | :empty-text="jqNoDataText" class="police-infor-table" @cell-click="housingPoliceSiteClick"> |
| | | <el-table-column prop="JJDWMC" :show-overflow-tooltip="true" label="接警单位" |
| | | min-width="80%"></el-table-column> |
| | | <el-table-column label="报警时间" prop="BJSJ" min-width="50%"></el-table-column> |
| | | <el-table-column prop="jqlxName" :show-overflow-tooltip="true" |
| | | label="报警类型"></el-table-column> |
| | | <el-table-column prop="jqlxName" :show-overflow-tooltip="true" label="报警类型"></el-table-column> |
| | | <el-table-column label="操作" align="center" min-width="36%"> |
| | | <template slot-scope="scope"> |
| | | <el-button v-if="!whetherPosition(scope.row)" @click="clickData(scope.row)" |
| | | type="text" size="small" title="定位"> |
| | | <i class="el-icon-location" |
| | | :style="{ color: positionColor(scope.row) }"></i> |
| | | <el-button v-if="!whetherPosition(scope.row)" @click="clickData(scope.row)" type="text" size="small" |
| | | title="定位"> |
| | | <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i> |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div class="pages all-pagination-sty" ref="ElPagination"> |
| | | <el-pagination background layout="prev, pager, next" |
| | | :page-size="callPolicePage.pageSize" :page-count="callPolicePage.count" |
| | | :current-page="callPolicePage.currentPage" |
| | | <el-pagination background layout="prev, pager, next" :page-size="callPolicePage.pageSize" |
| | | :page-count="callPolicePage.count" :current-page="callPolicePage.currentPage" |
| | | @current-change="handleCurrentChange"></el-pagination> |
| | | </div> |
| | | </div> |
| | |
| | | <map-search-box></map-search-box> |
| | | |
| | | <el-dialog title="报警信息" :visible.sync="policeSituationVisible" :modal-append-to-body="false" :modal="true" |
| | | :close-on-click-modal="false" :before-close="policeSituationBeforeClose" |
| | | class="policeSituation-details-box"> |
| | | :close-on-click-modal="false" :before-close="policeSituationBeforeClose" class="policeSituation-details-box"> |
| | | <div class="box"> |
| | | <div class="item"> |
| | | <div>接警单位编号:</div> |
| | |
| | | <div class="table-box"> |
| | | <div class="type-tab-box"> |
| | | <div v-for="(item, index) in menuList" :key="index"> |
| | | <div v-if="item.isHover" class="tab-item" |
| | | :class="{ 'tab-choose-item': hushiPeoTy == item.value }" |
| | | <div v-if="item.isHover" class="tab-item" :class="{ 'tab-choose-item': hushiPeoTy == item.value }" |
| | | @click="hushiPeoTyClick(item.value)"> |
| | | {{ item.label }}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div v-if="hushiPeoTy == 5" class="pay-info-box"> |
| | | <employees :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" |
| | | ref="employees"> |
| | | <employees :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" ref="employees"> |
| | | </employees> |
| | | </div> |
| | | |
| | |
| | | </div> |
| | | |
| | | <div v-if="hushiPeoTy == 7" class="pay-info-box"> |
| | | <antiFraud :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" |
| | | ref="antiFraud"> |
| | | <antiFraud :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" ref="antiFraud"> |
| | | </antiFraud> |
| | | </div> |
| | | |
| | | <div v-if="hushiPeoTy == 8" class="pay-info-box"> |
| | | <scanCodeAlarm :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" |
| | | ref="scanCodeAlarm"> |
| | | <scanCodeAlarm :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" ref="scanCodeAlarm"> |
| | | </scanCodeAlarm> |
| | | </div> |
| | | |
| | | <div v-if="hushiPeoTy == 10" class="pay-info-box"> |
| | | <rentalHouse :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" |
| | | ref="rentalHouse"> |
| | | <rentalHouse :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" ref="rentalHouse"> |
| | | </rentalHouse> |
| | | </div> |
| | | |
| | |
| | | <el-table-column prop="areaName" label="所属责任区"></el-table-column> |
| | | </el-table> |
| | | <div class="pages all-pagination-sty" ref="tablePagination" v-show="!keyPeopleLoading"> |
| | | <el-pagination background layout="prev, pager, next" :page-size="peoplePage.pageSize" |
| | | :total="peoplePage.total" :current-page="peoplePage.currentPage" |
| | | @current-change="peopleHandleCurrentChange"></el-pagination> |
| | | <el-pagination background layout="prev, pager, next" :page-size="peoplePage.pageSize" :total="peoplePage.total" |
| | | :current-page="peoplePage.currentPage" @current-change="peopleHandleCurrentChange"></el-pagination> |
| | | </div> |
| | | </el-main> |
| | | </el-dialog> |
| | |
| | | this.residentDetailsType = 2 |
| | | this.residentIdSave = residentId |
| | | this.getVillagePersonInfo('', residentId, '', '', '', '', '独栋') |
| | | // this.getResident3DData(residentId) |
| | | // this.$EventBus.$emit("toPosition", { |
| | | // siteJd: Number(params.lng), |
| | | // siteWd: Number(params.lat) - 0.0021, |
| | |
| | | }, |
| | | |
| | | async buildingClick (item, aoiArr) { |
| | | if (this.buildingChoosed.name == item.name && !aoiArr) return |
| | | // if (this.buildingChoosed.name == item.name && !aoiArr) return |
| | | if (!aoiArr) return |
| | | this.unfoldHouseBox('up') |
| | | this.isBuildHighLightchecked = true |
| | | this.unitHouseChoosed = [] |
| | |
| | | // let bgId = res.data.data.properties.ijnnl |
| | | let bgId = result.data.data.properties.bg_buildid |
| | | |
| | | |
| | | console.log(result.data.data.properties.build_id, e.wgs84Position.lng, e.wgs84Position.lat, 111111111111) |
| | | |
| | | await this.someEventHandler(result.data.data.properties.build_id, e.wgs84Position.lng, e.wgs84Position.lat) |
| | | const getCurHouseDetails = await this.someEventHandler(result.data.data.properties.build_id, e.wgs84Position.lng, e.wgs84Position.lat) |
| | | |
| | | getSearchExtensively( |
| | | "81503dad589f42bf9a9e5ea5e017f329", |
| | |
| | | "", |
| | | bgId |
| | | ).then(async (res) => { |
| | | if (res.data.result.length === 0 || res.data.result?.[0].std_addr_id === null) { |
| | | this.$EventBus.$emit("showThreeDimensions", { |
| | | positions: getCurHouseDetails.data.data.geom, |
| | | minHeight: 0, |
| | | // res.data.data.properties.hwtxa.features[0].properties.yjpca, |
| | | // maxHeight: res.data.data.properties.hwtxa.features[0].properties.mbfdr, |
| | | maxHeight: getCurHouseDetails.data.data.height, |
| | | }) |
| | | this.villageInfo.name = getCurHouseDetails.data.data.aoiName |
| | | |
| | | return |
| | | } |
| | | |
| | | |
| | | |
| | | // 判断选择的小区和当前小区是否相同的,不同则需要调用选中接口 |
| | | if (this.currentVillageId != res.data.result[0].std_addr_id.split("|")[0]) { |
| | | if (this.currentVillageId != res.data.result[0].std_addr_id?.split("|")[0]) { |
| | | let current = { |
| | | id: res.data.result[0].aoiId, |
| | | name: res.data.result[0].aoi, |
| | | name: res.data.result[0].aoi || getCurHouseDetails.data.data.aoiName, |
| | | } |
| | | await this.onClickChangeHandle(current) |
| | | } |
| | | |
| | | console.log(this.buildingList, res, 'res1') |
| | | |
| | | let chooseBuildItem = [] |
| | | this.buildingList.forEach((item) => { |
| | |
| | | ) |
| | | // 在这里处理 getBuildAndUnitInfo 的返回结果 |
| | | this.buildInfoList = res.data.data |
| | | |
| | | return res |
| | | }, |
| | | |
| | | |