1 line
29 KiB
JSON
1 line
29 KiB
JSON
{"remainingRequest":"G:\\project\\smart-power-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!G:\\project\\smart-power-ui\\src\\views\\iot\\project\\index.vue?vue&type=style&index=0&lang=scss&","dependencies":[{"path":"G:\\project\\smart-power-ui\\src\\views\\iot\\project\\index.vue","mtime":1617867107829},{"path":"G:\\project\\smart-power-ui\\node_modules\\css-loader\\dist\\cjs.js","mtime":1592876569350},{"path":"G:\\project\\smart-power-ui\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":1610504274351},{"path":"G:\\project\\smart-power-ui\\node_modules\\postcss-loader\\src\\index.js","mtime":1591751774425},{"path":"G:\\project\\smart-power-ui\\node_modules\\sass-loader\\dist\\cjs.js","mtime":1612140853844},{"path":"G:\\project\\smart-power-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1591751767036},{"path":"G:\\project\\smart-power-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1610504274351}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgouaW90LXByb2plY3QgewogIC5lbGRpYWxvZy13cmFwIHsKICAgIC5lbC1kaWFsb2dfX2hlYWRlciB7CiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNzQ3MzczOwogICAgfQogICAgLmVsLWRpYWxvZ19fYm9keSB7CiAgICAgIHBhZGRpbmc6IDBweDsKICAgIH0KICAgIC5lbC1mb3JtIHsKICAgICAgcGFkZGluZzogMjBweDsKICAgICAgcGFkZGluZy1yaWdodDogNDBweDsKICAgIH0KICAgIC5lbC1kaWFsb2dfX2Zvb3RlciB7CiAgICAgIGhlaWdodDogNjBweDsKICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM3NDczNzM7CiAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgcGFkZGluZzogMHB4OwogICAgICBwYWRkaW5nLXRvcDogMTVweDsKICAgICAgLmVsLWJ1dHRvbiArIC5lbC1idXR0b24gewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgfQogICAgICAuZWwtYnV0dG9uIHsKICAgICAgICBwYWRkaW5nLXRvcDogOHB4OwogICAgICB9CiAgICB9CiAgfQogIC50by1ob21lLXdyYXAyIHsKICAgIHdpZHRoOiAyMHB4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDMwcHg7CiAgICB0b3A6IDMwcHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgei1pbmRleDogMTAwOwogICAgY29sb3I6ICM2NTYzNjM7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICB3aWR0aDogMTAwcHg7CiAgICAuZWwtYnV0dG9uLS1tZWRpdW0uaXMtY2lyY2xlIHsKICAgICAgd2lkdGg6IDI1cHg7CiAgICAgIGhlaWdodDogMjBweDsKICAgICAgcGFkZGluZzogMDsKICAgICAgYmFja2dyb3VuZDogI2YyNmE2YTsKICAgICAgY29sb3I6ICNmZmY7CiAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICBoZWlnaHQ6IDMwcHg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICB9CiAgfQogIC50by1ob21lLXdyYXAyOmhvdmVyIHsKICAgIGNvbG9yOiAjMTg5MGZmOwogICAgZm9udC1zaXplOiAzMHB4OwogIH0KfQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+sBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/iot/project","sourcesContent":["<template>\n <div class=\"app-container iot-project\">\n <component :is=\"componectVal\" :sourceId=\"sourceId\"></component>\n\n <div v-show=\"componectVal === ''\">\n <el-form\n :model=\"queryParams\"\n ref=\"queryForm\"\n :inline=\"true\"\n v-show=\"showSearch\"\n label-width=\"68px\"\n >\n <el-form-item label=\"项目名称\" prop=\"projectName\">\n <el-input\n v-model=\"queryParams.projectName\"\n placeholder=\"请输入项目名称\"\n clearable\n size=\"small\"\n @keyup.enter.native=\"handleQuery\"\n />\n </el-form-item>\n <el-form-item label=\"项目类型\" prop=\"industry\">\n <el-select v-model=\"queryParams.industry\" placeholder=\"请选择项目类型\" clearable size=\"small\">\n <el-option\n v-for=\"dict in projectTypeOptions\"\n :key=\"dict.dictValue\"\n :label=\"dict.dictLabel\"\n :value=\"dict.dictValue\"\n ></el-option>\n </el-select>\n </el-form-item>\n <el-form-item>\n <el-button type=\"primary\" icon=\"el-icon-search\" size=\"mini\" @click=\"handleQuery\">搜索</el-button>\n <el-button icon=\"el-icon-refresh\" size=\"mini\" @click=\"resetQuery\">重置</el-button>\n </el-form-item>\n </el-form>\n\n <el-row :gutter=\"10\" class=\"mb8\">\n <el-col :span=\"1.5\">\n <el-button\n type=\"primary\"\n plain\n icon=\"el-icon-plus\"\n size=\"mini\"\n @click=\"handleAdd\"\n v-hasPermi=\"['iot:project:add']\"\n >新增</el-button>\n </el-col>\n <right-toolbar :showSearch.sync=\"showSearch\" @queryTable=\"getList\"></right-toolbar>\n </el-row>\n\n <el-table\n v-loading=\"loading\"\n :data=\"projectList\"\n :default-sort=\"{prop: 'createTime', order: 'descending'}\"\n @sort-change=\"sortChange\"\n >\n <el-table-column\n type=\"index\"\n label=\"序号\"\n align=\"center\"\n :index=\"indexFormatter\"\n width=\"80px\"\n ></el-table-column>\n <el-table-column label=\"项目名称\" width=\"200px\" align=\"left\" prop=\"projectName\" />\n <el-table-column\n label=\"项目类型\"\n align=\"center\"\n width=\"150\"\n :formatter=\"statusFormat\"\n prop=\"industry\"\n />\n <el-table-column label=\"行政区划\" align=\"left\" width=\"250\" prop=\"regionalismFullName\" />\n <el-table-column label=\"项目地址\" align=\"left\" prop=\"projectAddress\" />\n <el-table-column\n label=\"创建时间\"\n sortable=\"custom\"\n align=\"center\"\n width=\"160\"\n prop=\"createTime\"\n />\n <el-table-column\n label=\"操作\"\n align=\"center\"\n width=\"200\"\n class-name=\"small-padding fixed-width\"\n >\n <template slot-scope=\"scope\">\n <el-button\n size=\"mini\"\n type=\"text\"\n icon=\"el-icon-search\"\n @click=\"handleDetails(scope.row)\"\n >详情</el-button>\n <el-button\n size=\"mini\"\n type=\"text\"\n icon=\"el-icon-edit\"\n @click=\"handleUpdate(scope.row)\"\n v-hasPermi=\"['iot:project:edit']\"\n >修改</el-button>\n <el-button\n size=\"mini\"\n type=\"text\"\n icon=\"el-icon-delete\"\n @click=\"handleDelete(scope.row)\"\n v-hasPermi=\"['iot:project:remove']\"\n >删除</el-button>\n </template>\n </el-table-column>\n </el-table>\n\n <pagination\n v-show=\"total > 0\"\n :total=\"total\"\n :page.sync=\"queryParams.pageNum\"\n :limit.sync=\"queryParams.pageSize\"\n @pagination=\"getList\"\n />\n\n <!-- 添加或修改项目对话框 -->\n <el-dialog class=\"eldialog-wrap\" :close-on-click-modal=\"false\" :title=\"title\" :visible.sync=\"open\" width=\"720px\">\n <el-form ref=\"form\" :model=\"form\" :rules=\"rules\" label-width=\"100px\">\n <el-row :gutter=\"20\">\n <el-col :span=\"12\">\n <el-form-item label=\"项目名称:\" prop=\"projectName\">\n <el-input v-model=\"form.projectName\" placeholder=\"请输入项目名称\" />\n </el-form-item>\n </el-col>\n\n <el-col :span=\"12\">\n <el-form-item label=\"项目类型:\" prop=\"industry\">\n <el-select v-model=\"form.industry\" style=\"width: 100%;\" placeholder=\"请选择项目类型\">\n <el-option\n v-for=\"dict in projectTypeOptions\"\n :key=\"dict.dictValue\"\n :label=\"dict.dictLabel\"\n :value=\"dict.dictValue\"\n ></el-option>\n </el-select>\n </el-form-item>\n </el-col>\n </el-row>\n\n <el-form-item label=\"电价合同:\" >\n <el-input v-model=\"form.contractName\" suffix-icon=\"el-icon-caret-bottom\" @focus=\"inputFocusContract()\" placeholder=\"请输入电价合同\" />\n </el-form-item>\n\n\n <el-form-item label=\"行政区划\" prop=\"regionalismId\">\n <!-- <el-input v-model=\"form.regionalismId\" placeholder=\"请输入行政区划代码\" /> -->\n <treeselect\n @select=\"regionalismChange\"\n :disable-branch-nodes=\"true\"\n v-model=\"form.regionalismId\"\n :options=\"regionalismOption\"\n :normalizer=\"normalizer\"\n placeholder=\"请选择上级行政区划\"\n />\n </el-form-item>\n\n <el-row :gutter=\"20\">\n <el-col :span=\"12\">\n <el-form-item label=\"项目经度\" prop=\"projectLng\">\n <el-input v-model=\"form.projectLng\" disabled placeholder=\"请输入项目经度\" />\n </el-form-item>\n </el-col>\n\n <el-col :span=\"12\">\n <el-form-item label=\"项目纬度\" prop=\"projectLat\">\n <el-input v-model=\"form.projectLat\" disabled placeholder=\"请输入项目纬度\" />\n </el-form-item>\n </el-col>\n </el-row>\n\n <el-row>\n <el-col :span=\"24\">\n <el-form-item label=\"项目地址\" prop=\"projectAddress\">\n <el-input\n v-model=\"form.projectAddress\"\n @blur=\"mapAddressFromPoint\"\n placeholder=\"请输入项目地址\"\n >\n <el-popover\n slot=\"suffix\"\n placement=\"left-start\"\n title=\"地图选择坐标\"\n width=\"730\"\n trigger=\"manual\"\n v-model=\"visible\"\n >\n <i slot=\"reference\" class=\"el-icon-map-location\" @click=\"mapClick\"></i>\n <!-- 地图模块选择和设置 -->\n <slot>\n <el-row>\n <el-col :span=\"7\">\n <span>经度:{{mapForm.lng}}</span>\n </el-col>\n <el-col :span=\"7\">\n <span>纬度:{{mapForm.lat}}</span>\n </el-col>\n <el-col :span=\"10\">\n <span>地址:{{mapForm.address}}</span>\n </el-col>\n </el-row>\n\n <shop-location\n v-if=\"visible === true\"\n style=\"height: 300px;\"\n :mapCenter=\"mapCenter\"\n :draggable=\"true\"\n @mapEvent=\"mapEvent\"\n :zoom=\"zoom\"\n />\n\n <div\n style=\"\n width: 100%;\n height: 50px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n margin-top: 5px;\n \"\n >\n <el-button type=\"primary\" @click=\"mapSureClick\">确 定</el-button>\n <el-button @click=\"visible = false\">取 消</el-button>\n </div>\n </slot>\n </el-popover>\n </el-input>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n <div slot=\"footer\" class=\"dialog-footer\">\n <el-button size=\"mini\" type=\"primary\" @click=\"submitForm\">确 定</el-button>\n <el-button size=\"mini\" @click=\"cancel\">取 消</el-button>\n </div>\n </el-dialog>\n </div>\n\n <el-dialog\n title=\"选择\"\n :visible.sync=\"selectTableShow\"\n width=\"75%\"\n top=\"10vh\"\n class=\"select-table-dialog\"\n :close-on-click-modal=\"false\"\n >\n <select-table-wrap\n v-if=\"selectTableShow\"\n :tableOption=\"tableSelectOption.tableOpt\"\n :queryOption=\"tableSelectOption.queryOpt\"\n :tableList=\"tableSelectOption.tableList\"\n @parentGetList=\"childGetList($event)\"\n :otherOption=\"tableSelectOption.otherOption\"\n @returnEvent=\"returnEvent($event)\"\n />\n\n <div slot=\"footer\" class=\"dialog-footer\">\n <el-button size=\"mini\" type=\"primary\" @click=\"resuleClick\">确 定</el-button>\n <el-button size=\"mini\" @click=\"() =>{selectTableShow = false}\">取 消</el-button>\n </div>\n </el-dialog>\n\n <div class=\"to-home-wrap2\" @click=\"toTableClick\" v-show=\"componectVal !== ''\">\n <el-button icon=\"el-icon-d-arrow-left\" title=\"返回列表\" circle>返回列表</el-button>\n </div>\n </div>\n</template>\n\n<script>\nimport {\n listProject,\n getProject,\n delProject,\n addProject,\n updateProject,\n exportProject\n} from \"@/api/iot/project\";\nimport {\n listContract\n} from \"@/api/iot/contract\";\nimport { listRegionalism } from \"@/api/system/regionalism\";\nimport { initMap, gjzCode } from \"@/utils/latlngFromAddress.js\";\nimport ShopLocation from \"@/components/Amap/components/shopLocation/index\";\nimport DetailsWrap from \"./profile/details\";\nimport Treeselect from \"@riophae/vue-treeselect\";\nimport \"@riophae/vue-treeselect/dist/vue-treeselect.css\";\nimport SelectTableWrap from \"@/components/SelectTable/index\";\n\nexport default {\n name: \"Project\",\n components: {\n ShopLocation,\n Treeselect,\n DetailsWrap,\n SelectTableWrap\n },\n data() {\n return {\n selectTableShow: false,\n tableSelectOption: {},\n selectResult: {},\n // 遮罩层\n loading: true,\n // 选中数组\n ids: [],\n // 非单个禁用\n single: true,\n // 非多个禁用\n multiple: true,\n // 显示搜索条件\n showSearch: true,\n // 总条数\n total: 0,\n // 项目表格数据\n projectList: [],\n // 弹出层标题\n title: \"\",\n // 是否显示弹出层\n open: false,\n // 查询参数\n queryParams: {\n pageNum: 1,\n pageSize: 10,\n projectName: null,\n industry: null,\n regionalismId: null,\n projectAddress: null,\n projectStatus: null,\n orderByColumn: \"createTime\",\n isAsc: \"desc\"\n },\n // 表单参数\n form: {},\n // 表单校验\n rules: {\n projectName: [\n { required: true, message: \"项目名称不能为空\", trigger: \"blur\" }\n ],\n industry: [\n { required: true, message: \"项目类型不能为空\", trigger: \"blur\" }\n ],\n regionalismId: [\n { required: true, message: \"行政区划不能为空\", trigger: \"blur\" }\n ],\n projectAddress: [\n { required: true, message: \"项目地址不能为空\", trigger: \"blur\" }\n ],\n projectLng: [\n { required: true, message: \"经度不能为空\", trigger: \"blur\" }\n ],\n projectLat: [\n { required: true, message: \"纬度不能为空\", trigger: \"blur\" }\n ]\n },\n projectTypeOptions: [],\n mapCenter: {\n lng: 119.459889,\n lat: 25.98974\n },\n baiduMapKey: \"N05AG95Umzs3fouk6WpFqtGxcDlw0fRn\",\n zoom: 15,\n BMap: null,\n map: null,\n visible: false,\n mapForm: {},\n // 行政划分树选项\n regionalismOption: [],\n componectVal: \"\",\n sourceId: \"\"\n };\n },\n created() {\n this.getDicts(\"project_industry\").then(response => {\n this.projectTypeOptions = response.data;\n });\n this.getList();\n this.getTreeselect();\n },\n methods: {\n // 开启 电价合同选择的 弹窗\n inputFocusContract() {\n this.selectResult = {};\n this.tableSelectOption = {\n otherOption: {\n tableType: \"model\"\n },\n queryOpt: {\n disable: false,\n labelWidth: \"68px\",\n params: {\n contractName: \"\",\n modelCode: \"\"\n },\n page: {\n pageSize: 10,\n pageNum: 1,\n total: 0\n },\n inline: true,\n queryChilds: [\n {\n style: \"\",\n placeholder: \"合同名称\",\n clearable: true,\n label: \"合同名称\",\n type: \"input\",\n key: \"contractName\",\n size: \"small\",\n value: \"\"\n }\n ]\n },\n tableOpt: {\n loading: false,\n rowKey: \"deviceId\",\n selection: false,\n maxHeight: \"45vh\",\n childs: [\n {\n style: \"\",\n label: \"合同名称\",\n type: \"\",\n prop: \"contractName\",\n align: \"left\",\n width: \"\",\n \"show-overflow-tooltip\": false,\n tempType: \"span\"\n },\n {\n style: \"\",\n label: \"计价类型\",\n type: \"\",\n prop: \"contractType\",\n align: \"left\",\n width: \"\",\n \"show-overflow-tooltip\": false,\n tempType: \"strType\",\n option: {\n PEAK_VALLEY: \"峰谷时段计价\",\n LADDER: \"阶梯计价\"\n }\n },\n {\n style: \"\",\n label: \"状态\",\n type: \"\",\n prop: \"status\",\n align: \"left\",\n width: \"\",\n \"show-overflow-tooltip\": false,\n tempType: \"text1\"\n }\n ],\n tableList: {\n type: Array\n }\n },\n tableList: []\n };\n this.selectTableShow = true;\n },\n // 查询回调\n childGetList(data) {\n listContract(Object.assign(data.page, data.param, { selected: 1 })).then(\n response => {\n this.tableSelectOption.tableList = response.rows;\n this.tableSelectOption.queryOpt.page.total = Number(response.total);\n }\n );\n },\n // 点击或者双击数据回调\n returnEvent(data) {\n if (data.type === \"dblclick\") {\n this.form.contractId = data.value.contractId;\n this.form.contractName = data.value.contractName;\n this.selectTableShow = false;\n } else if (data.type === \"click\") {\n this.selectResult = {};\n this.selectResult.contractId = data.value.contractId;\n this.selectResult.contractName = data.value.contractName;\n }\n },\n // 点击确定按钮\n resuleClick() {\n this.form.contractId = this.selectResult.contractId;\n this.form.contractName = this.selectResult.contractName;\n this.selectTableShow = false;\n },\n sortChange(column) {\n const sort = {\n isAsc: column.order === \"descending\" ? \"desc\" : \"asc\",\n orderByColumn: column.prop\n };\n this.queryParams = Object.assign(this.queryParams, sort);\n this.handleQuery();\n },\n indexFormatter(val) {\n return (\n val + 1 + (this.queryParams.pageNum - 1) * this.queryParams.pageSize\n );\n },\n handleDetails(row) {\n this.sourceId = row.projectId;\n this.componectVal = \"DetailsWrap\";\n },\n // 跳转详情页\n toTableClick() {\n this.componectVal = \"\";\n },\n // 菜单状态字典翻译\n statusFormat(row, column) {\n return this.selectDictLabel(this.projectTypeOptions, row.industry);\n },\n /** 查询行政区划下拉树结构 */\n getTreeselect() {\n listRegionalism().then(response => {\n this.regionalismOption = [];\n const data = {\n regionalismId: 0,\n regionalismName: \"中国\",\n children: []\n };\n data.children = this.handleTree(\n response.data,\n \"regionalismId\",\n \"parentId\"\n );\n this.regionalismOption.push(data);\n });\n },\n /** 转换行政划分数据结构 */\n normalizer(node) {\n if (node.children && !node.children.length) {\n delete node.children;\n }\n return {\n id: node.regionalismId,\n label: node.regionalismName,\n children: node.children\n };\n },\n regionalismChange(val) {\n this.mapCenter = {\n lng: val.stationLng,\n lat: val.stationLat\n };\n this.form.projectLng = val.stationLng;\n this.form.projectLat = val.stationLat;\n },\n // 地图方法\n handler({ BMap, map }) {\n //地图\n this.BMap = BMap;\n this.map = map;\n this.mapLoading = false;\n // this.getPointByIp()\n },\n mapEvent(data) {\n this.mapForm.lng = data.lng;\n this.mapForm.lat = data.lat;\n this.mapForm.address = data.address;\n this.$forceUpdate();\n },\n // 使用地图方式定位\n mapClick() {\n if (this.form.projectLng && this.form.projectLat) {\n this.mapCenter.lng = this.form.projectLng;\n this.mapCenter.lat = this.form.projectLat;\n this.mapForm.lng = this.form.projectLng;\n this.mapForm.lat = this.form.projectLat;\n this.mapForm.address = this.form.projectAddress;\n } else {\n this.mapCenter = {\n lng: 119.459889,\n lat: 25.98974\n };\n this.mapForm.lng = 119.459889;\n this.mapForm.lat = 25.98974;\n this.mapForm.address = \"\";\n }\n this.visible = !this.visible;\n },\n mapSureClick() {\n // 确认的时候将值赋值给form表单并且关闭地图\n this.form.projectAddress = this.mapForm.address\n ? this.mapForm.address\n : this.form.projectAddress;\n this.form.projectLng = this.mapForm.lng;\n this.form.projectLat = this.mapForm.lat;\n this.visible = false;\n },\n mapAddressFromPoint() {\n if (this.form.projectAddress) {\n // geoCode(this.form.projectAddress, this, { form: 'form', lat: 'shopLat', lng: 'shopLng' })\n gjzCode(this.form.projectAddress, this, {\n form: \"form\",\n lat: \"shopLat\",\n lng: \"shopLng\"\n });\n }\n },\n\n /** 查询项目列表 */\n getList() {\n this.loading = true;\n listProject(this.queryParams).then(response => {\n this.projectList = response.rows;\n this.total = response.total;\n this.loading = false;\n });\n },\n // 取消按钮\n cancel() {\n this.open = false;\n this.reset();\n },\n // 表单重置\n reset() {\n this.form = {\n projectName: null,\n industry: null,\n regionalismId: null,\n projectAddress: null,\n projectLng: null,\n projectLat: null\n };\n this.resetForm(\"form\");\n },\n /** 搜索按钮操作 */\n handleQuery() {\n this.queryParams.pageNum = 1;\n this.getList();\n },\n /** 重置按钮操作 */\n resetQuery() {\n this.resetForm(\"queryForm\");\n this.handleQuery();\n },\n // 多选框选中数据\n handleSelectionChange(selection) {\n this.ids = selection.map(item => item.projectId);\n this.single = selection.length !== 1;\n this.multiple = !selection.length;\n },\n /** 新增按钮操作 */\n handleAdd() {\n this.reset();\n this.open = true;\n this.title = \"添加项目\";\n },\n /** 修改按钮操作 */\n handleUpdate(row) {\n this.reset();\n const projectId = row.projectId || this.ids;\n getProject(projectId).then(response => {\n this.form = response.data;\n this.open = true;\n this.title = \"修改项目\";\n });\n },\n /** 提交按钮 */\n submitForm() {\n this.$refs[\"form\"].validate(valid => {\n if (valid) {\n if (this.form.projectId != null) {\n updateProject(this.form).then(response => {\n this.msgSuccess(\"修改成功\");\n this.open = false;\n this.getList();\n });\n } else {\n addProject(this.form).then(response => {\n this.msgSuccess(\"新增成功\");\n this.open = false;\n this.getList();\n });\n }\n }\n });\n },\n /** 删除按钮操作 */\n handleDelete(row) {\n const projectIds = row.projectId || this.ids;\n this.$confirm(\"是否删除该选项?\", \"警告\", {\n confirmButtonText: \"确定\",\n cancelButtonText: \"取消\",\n type: \"warning\"\n })\n .then(function() {\n return delProject(projectIds);\n })\n .then(() => {\n this.getList();\n this.msgSuccess(\"删除成功\");\n });\n },\n /** 导出按钮操作 */\n handleExport() {\n const queryParams = this.queryParams;\n this.$confirm(\"是否确认导出所有项目数据项?\", \"警告\", {\n confirmButtonText: \"确定\",\n cancelButtonText: \"取消\",\n type: \"warning\"\n })\n .then(function() {\n return exportProject(queryParams);\n })\n .then(response => {\n this.download(response.msg);\n });\n }\n }\n};\n</script>\n<style lang=\"scss\">\n.iot-project {\n .eldialog-wrap {\n .el-dialog__header {\n border-bottom: 1px solid #747373;\n }\n .el-dialog__body {\n padding: 0px;\n }\n .el-form {\n padding: 20px;\n padding-right: 40px;\n }\n .el-dialog__footer {\n height: 60px;\n border-top: 1px solid #747373;\n text-align: right;\n width: 100%;\n padding: 0px;\n padding-top: 15px;\n .el-button + .el-button {\n margin-right: 10px;\n }\n .el-button {\n padding-top: 8px;\n }\n }\n }\n .to-home-wrap2 {\n width: 20px;\n height: 20px;\n position: absolute;\n right: 30px;\n top: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 100;\n color: #656363;\n font-size: 20px;\n cursor: default;\n width: 100px;\n .el-button--medium.is-circle {\n width: 25px;\n height: 20px;\n padding: 0;\n background: #f26a6a;\n color: #fff;\n font-size: 16px;\n border-radius: 5px;\n height: 30px;\n width: 100%;\n font-size: 14px;\n }\n }\n .to-home-wrap2:hover {\n color: #1890ff;\n font-size: 30px;\n }\n}\n</style>\n"]}]} |