Prechádzať zdrojové kódy

+ 施工项目坐标配置

chen.cheng 5 mesiacov pred
rodič
commit
82f6805e82

+ 44 - 0
src/api/cons/consUnitInfo.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询施工单元列表
+export function listConsUnitInfo(query) {
+  return request({
+    url: '/cons/consUnitInfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询施工单元详细
+export function getConsUnitInfo(id) {
+  return request({
+    url: '/cons/consUnitInfo/' + id,
+    method: 'get'
+  })
+}
+
+// 新增施工单元
+export function addConsUnitInfo(data) {
+  return request({
+    url: '/cons/consUnitInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改施工单元
+export function updateConsUnitInfo(data) {
+  return request({
+    url: '/cons/consUnitInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除施工单元
+export function delConsUnitInfo(id) {
+  return request({
+    url: '/cons/consUnitInfo/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/cons/projectCoordinateInfo.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询工程坐标配置列表
+export function listProjectCoordinateInfo(query) {
+  return request({
+    url: '/cons/projectCoordinateInfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工程坐标配置详细
+export function getProjectCoordinateInfo(id) {
+  return request({
+    url: '/cons/projectCoordinateInfo/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工程坐标配置
+export function addProjectCoordinateInfo(data) {
+  return request({
+    url: '/cons/projectCoordinateInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工程坐标配置
+export function updateProjectCoordinateInfo(data) {
+  return request({
+    url: '/cons/projectCoordinateInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工程坐标配置
+export function delProjectCoordinateInfo(id) {
+  return request({
+    url: '/cons/projectCoordinateInfo/' + id,
+    method: 'delete'
+  })
+}

+ 52 - 0
src/api/cons/projectInfo.js

@@ -0,0 +1,52 @@
+import request from '@/utils/request'
+
+// 查询工程信息列表
+export function listProjectInfo(query) {
+  return request({
+    url: '/cons/projectInfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listAllProjectInfo(query) {
+  return request({
+    url: '/cons/projectInfo/list/all',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工程信息详细
+export function getProjectInfo(id) {
+  return request({
+    url: '/cons/projectInfo/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工程信息
+export function addProjectInfo(data) {
+  return request({
+    url: '/cons/projectInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工程信息
+export function updateProjectInfo(data) {
+  return request({
+    url: '/cons/projectInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工程信息
+export function delProjectInfo(id) {
+  return request({
+    url: '/cons/projectInfo/' + id,
+    method: 'delete'
+  })
+}

+ 11 - 1
src/i18n/en.js

@@ -4,10 +4,16 @@ export default {
     password: 'Password',
     save: 'Save',
     edit: 'Edit',
+    add: 'Add',
     update: 'Update',
     delete: 'Delete',
     forever: 'Forever',
-    expired: 'Expired'
+    expired: 'Expired',
+    import: "Import",
+    importMessage: "Whether to update existing data?",
+    importFileType: "Only {fileType} format files are allowed to be imported.",
+    importModeMsg: "Drag your file here or Click.",
+    export: "Export"
   },
   menus: {
     首页: "Home",
@@ -19,5 +25,9 @@ export default {
     404: "The accessed resource does not exist",
     default: "Unknown system error, please report to the administrator"
   },
+  cons: {
+    index: "id",
+    pileHoleImportTitle: "Pile hole CAD data import"
+  },
   search: "search"
 }

+ 11 - 1
src/i18n/zh.js

@@ -4,10 +4,16 @@ export default {
     password: '密码',
     save: '保存',
     edit: '编辑',
+    add: '新增',
     update: '更新',
     delete: '删除',
     forever: '永久',
-    expired: '过期'
+    expired: '过期',
+    import: "导入",
+    importMessage: "是否更新已经存在的数据?",
+    importFileType: "仅允许导入{fileType}格式文件。",
+    importModeMsg: "将文件拖到此处,或点击上传。",
+    export: "导出"
   },
   menus: {
     首页: "home page",
@@ -19,5 +25,9 @@ export default {
     404: "访问资源不存在",
     default: "系统未知错误,请反馈给管理员"
   },
+  cons: {
+    index: "编号",
+    pileHoleImportTitle: "桩点CAD数据导入"
+  },
   search: "搜索"
 }

+ 155 - 97
src/views/cons/pileHoleInfo/index.vue

@@ -3,19 +3,19 @@
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="桩点编号" prop="holeNum">
         <el-input
-          v-model="queryParams.holeNum"
-          placeholder="请输入桩点编号"
-          clearable
-          @keyup.enter.native="handleQuery"
+            v-model="queryParams.holeNum"
+            placeholder="请输入桩点编号"
+            clearable
+            @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item label="施工状态" prop="consStatus">
         <el-select v-model="queryParams.consStatus" placeholder="请选择施工状态" clearable>
           <el-option
-            v-for="dict in dict.type.pile_hole_status"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
+              v-for="dict in dict.type.pile_hole_status"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
           />
         </el-select>
       </el-form-item>
@@ -28,58 +28,49 @@
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['cons:pileHoleInfo:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['cons:pileHoleInfo:edit']"
-        >修改</el-button>
+            type="info"
+            plain
+            icon="el-icon-upload2"
+            size="mini"
+            @click="handleImport"
+            v-hasPermi="['cons:pileHoleInfo:add']"
+        >{{ $t("common.import") }}
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['cons:pileHoleInfo:remove']"
-        >删除</el-button>
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['cons:pileHoleInfo:add']"
+        >{{ $t("common.add") }}
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['cons:pileHoleInfo:export']"
-        >导出</el-button>
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExport"
+            v-hasPermi="['cons:pileHoleInfo:export']"
+        >{{ $t("common.export") }}
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="pileHoleInfoList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="桩点编号" align="center" prop="holeNum" />
-      <el-table-column label="dx" align="center" prop="deltaX" />
-      <el-table-column label="dy" align="center" prop="deltaY" />
-      <el-table-column label="经度" align="center" prop="lng" />
-      <el-table-column label="纬度" align="center" prop="lat" />
-      <el-table-column label="施工状态" align="center" prop="consStatus">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column :label="$t('cons.index')" align="center" prop="id"/>
+      <el-table-column label="桩点编号" align="center" prop="holeNum"/>
+      <el-table-column label="dx" align="center" prop="deltaX"/>
+      <el-table-column label="dy" align="center" prop="deltaY"/>
+      <el-table-column label="经度" align="center" prop="lng"/>
+      <el-table-column label="纬度" align="center" prop="lat"/>
+      <el-table-column label="施工状态" align="center" width="120" prop="consStatus">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.pile_hole_status" :value="scope.row.consStatus"/>
         </template>
@@ -94,8 +85,8 @@
           <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="设计深度" align="center" prop="desDept" />
-      <el-table-column label="桩径" align="center" prop="diameter" />
+      <el-table-column label="设计深度" align="center" prop="desDept"/>
+      <el-table-column label="桩径" align="center" prop="diameter"/>
       <el-table-column label="修改时间" align="center" prop="updateTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
@@ -109,79 +100,82 @@
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['cons:pileHoleInfo:edit']"
-          >修改</el-button>
+              size="mini"
+              type="text"
+              icon="el-icon-edit"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['cons:pileHoleInfo:edit']"
+          >修改
+          </el-button>
           <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['cons:pileHoleInfo:remove']"
-          >删除</el-button>
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['cons:pileHoleInfo:remove']"
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
     />
 
     <!-- 添加或修改施工桩点信息对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="桩点编号" prop="holeNum">
-          <el-input v-model="form.holeNum" placeholder="请输入桩点编号" />
+          <el-input v-model="form.holeNum" placeholder="请输入桩点编号"/>
         </el-form-item>
         <el-form-item label="dx" prop="deltaX">
-          <el-input v-model="form.deltaX" placeholder="请输入dx" />
+          <el-input v-model="form.deltaX" placeholder="请输入dx"/>
         </el-form-item>
         <el-form-item label="dy" prop="deltaY">
-          <el-input v-model="form.deltaY" placeholder="请输入dy" />
+          <el-input v-model="form.deltaY" placeholder="请输入dy"/>
         </el-form-item>
         <el-form-item label="经度" prop="lng">
-          <el-input v-model="form.lng" placeholder="请输入经度" />
+          <el-input v-model="form.lng" placeholder="请输入经度"/>
         </el-form-item>
         <el-form-item label="纬度" prop="lat">
-          <el-input v-model="form.lat" placeholder="请输入纬度" />
+          <el-input v-model="form.lat" placeholder="请输入纬度"/>
         </el-form-item>
         <el-form-item label="施工状态" prop="consStatus">
           <el-radio-group v-model="form.consStatus">
             <el-radio
-              v-for="dict in dict.type.pile_hole_status"
-              :key="dict.value"
-              :label="dict.value"
-            >{{dict.label}}</el-radio>
+                v-for="dict in dict.type.pile_hole_status"
+                :key="dict.value"
+                :label="dict.value"
+            >{{ dict.label }}
+            </el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="开始时间" prop="startTime">
           <el-date-picker clearable
-            v-model="form.startTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择开始时间">
+                          v-model="form.startTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="请选择开始时间">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="结束时间" prop="endTime">
           <el-date-picker clearable
-            v-model="form.endTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择结束时间">
+                          v-model="form.endTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="请选择结束时间">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="设计深度" prop="desDept">
-          <el-input v-model="form.desDept" placeholder="请输入设计深度" />
+          <el-input v-model="form.desDept" placeholder="请输入设计深度"/>
         </el-form-item>
         <el-form-item label="桩径" prop="diameter">
-          <el-input v-model="form.diameter" placeholder="请输入桩径" />
+          <el-input v-model="form.diameter" placeholder="请输入桩径"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -189,11 +183,47 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+          ref="upload"
+          :limit="1"
+          accept=".dwg"
+          :headers="upload.headers"
+          :action="upload.url + '?updateSupport=' + upload.updateSupport"
+          :disabled="upload.isUploading"
+          :on-progress="handleFileUploadProgress"
+          :on-success="handleFileSuccess"
+          :auto-upload="false"
+          drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">{{ $t("common.importModeMsg")}}</div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport"/>
+            {{ $t("common.importMessage")}}
+          </div>
+          <span>{{ $t("common.importFileType", {fileType: 'DWG'})}}</span>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { listPileHoleInfo, getPileHoleInfo, delPileHoleInfo, addPileHoleInfo, updatePileHoleInfo } from "@/api/cons/pileHoleInfo";
+import {
+  addPileHoleInfo,
+  delPileHoleInfo,
+  getPileHoleInfo,
+  listPileHoleInfo,
+  updatePileHoleInfo
+} from "@/api/cons/pileHoleInfo";
+import {getToken} from "@/utils/auth";
 
 export default {
   name: "PileHoleInfo",
@@ -230,20 +260,32 @@ export default {
       // 表单校验
       rules: {
         holeNum: [
-          { required: true, message: "桩点编号不能为空", trigger: "blur" }
+          {required: true, message: "桩点编号不能为空", trigger: "blur"}
         ],
         deltaX: [
-          { required: true, message: "dx不能为空", trigger: "blur" }
+          {required: true, message: "dx不能为空", trigger: "blur"}
         ],
         deltaY: [
-          { required: true, message: "dy不能为空", trigger: "blur" }
+          {required: true, message: "dy不能为空", trigger: "blur"}
         ],
         lng: [
-          { required: true, message: "经度不能为空", trigger: "blur" }
+          {required: true, message: "经度不能为空", trigger: "blur"}
         ],
         lat: [
-          { required: true, message: "纬度不能为空", trigger: "blur" }
+          {required: true, message: "纬度不能为空", trigger: "blur"}
         ],
+      },
+      upload: {
+        title: this.$t("cons.pileHoleImportTitle"),
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/system/user/importData"
       }
     };
   },
@@ -251,6 +293,21 @@ export default {
     this.getList();
   },
   methods: {
+    handleImport(){
+      this.upload.open = true;
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
     /** 查询施工桩点信息列表 */
     getList() {
       this.loading = true;
@@ -299,7 +356,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -341,12 +398,13 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除施工桩点信息编号为"' + ids + '"的数据项?').then(function() {
+      this.$modal.confirm('是否确认删除施工桩点信息编号为"' + ids + '"的数据项?').then(function () {
         return delPileHoleInfo(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      }).catch(() => {
+      });
     },
     /** 导出按钮操作 */
     handleExport() {

+ 367 - 0
src/views/cons/projectCoordinateInfo/index.vue

@@ -0,0 +1,367 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['cons:projectCoordinateInfo:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="success"
+            plain
+            icon="el-icon-edit"
+            size="mini"
+            :disabled="single"
+            @click="handleUpdate"
+            v-hasPermi="['cons:projectCoordinateInfo:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['cons:projectCoordinateInfo:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExport"
+            v-hasPermi="['cons:projectCoordinateInfo:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="projectCoordinateInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="编号" align="center" prop="id"/>
+      <el-table-column label="坐标系名称" align="center" prop="strName"/>
+      <el-table-column label="椭球参数" align="center" prop="da"/>
+      <el-table-column label="扁率的倒数" align="center" prop="df"/>
+      <el-table-column label="基准纬度(单位度)" align="center" prop="dreferenceLatitude"/>
+      <el-table-column label="中央子午线(单位度)" align="center" prop="dcentralMeridian"/>
+      <el-table-column label="基准经度(单位度)" align="center" prop="dreferenceLongitude"/>
+      <el-table-column label="投影高" align="center" prop="dprojectionHeight"/>
+      <el-table-column label="坐标名称" align="center" prop="projectionName"/>
+      <el-table-column label="高程拟合" align="center" prop="heightFittingParameter"/>
+      <el-table-column label="4参数" align="center" prop="constructionP4"/>
+      <el-table-column label="创建类型区分" align="center" prop="createType"/>
+      <el-table-column label="坐标id" align="center" prop="projectionId"/>
+      <el-table-column label="7参数" align="center" prop="constructionP7"/>
+      <el-table-column label="坐标类型" align="center" prop="projectType"/>
+      <el-table-column label="North加常数" align="center" prop="dtx"/>
+      <el-table-column label="East加常数" align="center" prop="dty"/>
+      <el-table-column label="投影方式" align="center" prop="ntype"/>
+      <el-table-column label="比例因子" align="center" prop="dtk"/>
+      <el-table-column label="修改时间" align="center" prop="updateTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-edit"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['cons:projectCoordinateInfo:edit']"
+          >修改
+          </el-button>
+          <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['cons:projectCoordinateInfo:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+    />
+
+    <!-- 添加或修改工程坐标配置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="施工项目" prop="projectId">
+          <el-select v-model="form.projectId" placeholder="请选择施工项目">
+            <el-option
+                v-for="projectInfo in projectInfoList"
+                :key="projectInfo.id"
+                :label="`${projectInfo.name}`"
+                :value="projectInfo.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="坐标系名称" prop="strName">
+          <el-input v-model="form.strName" placeholder="请输入坐标系名称"/>
+        </el-form-item>
+        <el-form-item label="椭球参数" prop="da">
+          <el-input v-model="form.da" placeholder="请输入椭球参数"/>
+        </el-form-item>
+        <el-form-item label="扁率的倒数" prop="df">
+          <el-input v-model="form.df" placeholder="请输入扁率的倒数"/>
+        </el-form-item>
+        <el-form-item label="基准纬度(单位度)" prop="dreferenceLatitude">
+          <el-input v-model="form.dreferenceLatitude" placeholder="请输入基准纬度(单位度)"/>
+        </el-form-item>
+        <el-form-item label="中央子午线(单位度)" prop="dcentralMeridian">
+          <el-input v-model="form.dcentralMeridian" placeholder="请输入中央子午线(单位度)"/>
+        </el-form-item>
+        <el-form-item label="基准经度(单位度)" prop="dreferenceLongitude">
+          <el-input v-model="form.dreferenceLongitude" placeholder="请输入基准经度(单位度)"/>
+        </el-form-item>
+        <el-form-item label="投影高" prop="dprojectionHeight">
+          <el-input v-model="form.dprojectionHeight" placeholder="请输入投影高"/>
+        </el-form-item>
+        <el-form-item label="坐标名称" prop="projectionName">
+          <el-input v-model="form.projectionName" placeholder="请输入坐标名称"/>
+        </el-form-item>
+        <el-form-item label="高程拟合" prop="heightFittingParameter">
+          <el-input v-model="form.heightFittingParameter" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+        <el-form-item label="4参数" prop="constructionP4">
+          <el-input v-model="form.constructionP4" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+        <el-form-item label="创建类型区分" prop="createType">
+          <el-input v-model="form.createType" placeholder="请输入创建类型区分"/>
+        </el-form-item>
+        <el-form-item label="坐标id" prop="projectionId">
+          <el-input v-model="form.projectionId" placeholder="请输入坐标id"/>
+        </el-form-item>
+        <el-form-item label="7参数" prop="constructionP7">
+          <el-input v-model="form.constructionP7" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+        <el-form-item label="坐标类型" prop="projectType">
+          <el-input v-model="form.projectType" placeholder="请输入坐标类型"/>
+        </el-form-item>
+        <el-form-item label="North加常数" prop="dtx">
+          <el-input v-model="form.dtx" placeholder="请输入North加常数"/>
+        </el-form-item>
+        <el-form-item label="East加常数" prop="dty">
+          <el-input v-model="form.dty" placeholder="请输入East加常数"/>
+        </el-form-item>
+        <el-form-item label="投影方式" prop="ntype">
+          <el-input v-model="form.ntype" placeholder="请输入投影方式"/>
+        </el-form-item>
+        <el-form-item label="比例因子" prop="dtk">
+          <el-input v-model="form.dtk" placeholder="请输入比例因子"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addProjectCoordinateInfo,
+  delProjectCoordinateInfo,
+  getProjectCoordinateInfo,
+  listProjectCoordinateInfo,
+  updateProjectCoordinateInfo
+} from "@/api/cons/projectCoordinateInfo";
+import {listAllProjectInfo} from "@/api/cons/projectInfo";
+
+export default {
+  name: "ProjectCoordinateInfo",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工程坐标配置表格数据
+      projectCoordinateInfoList: [],
+      // 工程信息表格数据
+      projectInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {}
+    };
+  },
+  created() {
+    this.getList();
+    this.getProjectList()
+  },
+  methods: {
+    /** 查询工程坐标配置列表 */
+    getList() {
+      this.loading = true;
+      listProjectCoordinateInfo(this.queryParams).then(response => {
+        this.projectCoordinateInfoList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getProjectList() {
+      listAllProjectInfo(this.queryParams).then(response => {
+        this.projectInfoList = response.rows;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        projectId: null,
+        strName: null,
+        da: null,
+        df: null,
+        dreferenceLatitude: null,
+        dcentralMeridian: null,
+        dreferenceLongitude: null,
+        dprojectionHeight: null,
+        projectionName: null,
+        heightFittingParameter: null,
+        constructionP4: null,
+        createType: null,
+        projectionId: null,
+        constructionP7: null,
+        projectType: null,
+        dtx: null,
+        dty: null,
+        ntype: null,
+        dtk: null,
+        updateTime: null,
+        createTime: null,
+        createBy: null,
+        updateBy: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加工程坐标配置";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getProjectCoordinateInfo(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改工程坐标配置";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateProjectCoordinateInfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addProjectCoordinateInfo(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除工程坐标配置编号为"' + ids + '"的数据项?').then(function () {
+        return delProjectCoordinateInfo(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('cons/projectCoordinateInfo/export', {
+        ...this.queryParams
+      }, `projectCoordinateInfo_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 260 - 0
src/views/cons/projectInfo/index.vue

@@ -0,0 +1,260 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="项目名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入项目名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['cons:projectInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['cons:projectInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['cons:projectInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['cons:projectInfo:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="projectInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="编号" align="center" prop="id" />
+      <el-table-column label="项目名称" align="center" prop="name" />
+      <el-table-column label="修改时间" align="center" prop="updateTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="update_by" align="center" prop="updateBy" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['cons:projectInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['cons:projectInfo:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改工程信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="项目名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入项目名称" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listProjectInfo, getProjectInfo, delProjectInfo, addProjectInfo, updateProjectInfo } from "@/api/cons/projectInfo";
+
+export default {
+  name: "ProjectInfo",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工程信息表格数据
+      projectInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工程信息列表 */
+    getList() {
+      this.loading = true;
+      listProjectInfo(this.queryParams).then(response => {
+        this.projectInfoList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        name: null,
+        updateTime: null,
+        createTime: null,
+        createBy: null,
+        updateBy: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加工程信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getProjectInfo(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改工程信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateProjectInfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addProjectInfo(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除工程信息编号为"' + ids + '"的数据项?').then(function() {
+        return delProjectInfo(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('cons/projectInfo/export', {
+        ...this.queryParams
+      }, `projectInfo_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>