Browse Source

+ 施工项目坐标配置

chen.cheng 5 months ago
parent
commit
22c815f3ab
3 changed files with 309 additions and 79 deletions
  1. 16 0
      src/api/cons/consUnitInfo.js
  2. 182 10
      src/views/cons/consUnit/index.vue
  3. 111 69
      src/views/cons/pileMachineInfo/index.vue

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

@@ -49,3 +49,19 @@ export function delConsUnitInfo(id) {
     method: 'delete'
   })
 }
+
+export function importCad(data) {
+  return request({
+    url: '/cons/consUnitInfo/import/cad',
+    method: 'post',
+    data: data
+  })
+}
+
+export function assignMachine(data) {
+  return request({
+    url: '/cons/consUnitInfo/assign/machine',
+    method: 'post',
+    data: data
+  })
+}

+ 182 - 10
src/views/cons/consUnit/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="app-container">
+  <div class="app-container" v-loading="fileAnalysisLoading" :element-loading-text="'设计文件解析中...'">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
       <el-form-item label="单元名称" prop="deptName">
         <el-input
@@ -51,8 +51,6 @@
       <el-table-column label="施工单元名称" width="200" prop="name"/>
       <el-table-column label="强夯类型" prop="penningType"/>
       <el-table-column label="类型" prop="type"/>
-      <el-table-column label="父节点" prop="parentId"/>
-      <el-table-column label="创建类型" prop="createType"/>
       <el-table-column label="设计文件类型" prop="classifyType"/>
       <el-table-column label="修改时间" align="center" prop="updateTime" width="200">
         <template slot-scope="scope">
@@ -67,6 +65,26 @@
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
+              v-if="scope.row.type==='2'"
+              size="mini"
+              type="text"
+              icon="el-icon-upload"
+              @click="handleImport(scope.row)"
+              v-hasPermi="['system:dept:edit']"
+          >
+            上传设计文件
+          </el-button>
+          <el-button
+              v-if="scope.row.type==='2'"
+              size="mini"
+              type="text"
+              icon="el-icon-set-up"
+              @click="handleAssign(scope.row)"
+              v-hasPermi="['system:dept:edit']"
+          >
+            分配施工机械
+          </el-button>
+          <el-button
               size="mini"
               type="text"
               icon="el-icon-edit"
@@ -126,7 +144,14 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="类型" prop="type">
-              <el-input v-model="form.type" placeholder="请输入类型"/>
+              <el-select v-model="form.type" placeholder="请选择节点类型">
+                <el-option
+                    v-for="dict in dict.type.cons_unit_type"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -140,12 +165,84 @@
 
           </el-col>
         </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="施工桩机" prop="toMachineId">
+              <el-select style="width: 100%" v-model="form.machineId" multiple placeholder="请选择桩机">
+                <el-option
+                    v-for="machine in machineList"
+                    :key="machine.id"
+                    :label="`${machine.machineNum}(${machine.equipment})`"
+                    :value="machine.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </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>
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+          ref="upload"
+          :limit="1"
+          name="files"
+          accept=".dwg,.xls,.xlsx"
+          :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>
+    <el-dialog title="分配施工机械" :visible.sync="assignDialog.open" width="700px" append-to-body>
+      <el-form ref="assignform" :model="form" :rules="rules" label-width="120px">
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="施工单元">
+              {{ form.name }}
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="施工桩机" prop="toMachineId">
+              <el-select style="width: 100%" v-model="form.machineId" multiple placeholder="请选择桩机">
+                <el-option
+                    v-for="machine in machineList"
+                    :key="machine.id"
+                    :label="`${machine.machineNum}(${machine.equipment})`"
+                    :value="machine.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitAssignForm">确 定</el-button>
+        <el-button @click="assignDialog.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -154,21 +251,26 @@ import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {
   addConsUnitInfo,
+  assignMachine,
   delConsUnitInfo,
   getConsUnitInfo,
+  importCad,
   listAllConsUnitExcludeChild,
   listConsUnitInfo,
   updateConsUnitInfo
 } from "@/api/cons/consUnitInfo";
+import {listAllPileMachineInfo} from "@/api/cons/pileMachineInfo";
+import {getToken} from "@/utils/auth";
 
 export default {
   name: "cons-unit",
-  dicts: ['sys_normal_disable'],
+  dicts: ['cons_unit_type'],
   components: {Treeselect},
   data() {
     return {
       // 遮罩层
       loading: true,
+      fileAnalysisLoading: false,
       // 显示搜索条件
       showSearch: true,
       // 施工单元表格数据
@@ -177,7 +279,7 @@ export default {
       deptList: [],
       // 部门树选项
       deptOptions: [],
-
+      machineList: [],
       consUnitOptions: [],
       // 弹出层标题
       title: "",
@@ -191,8 +293,28 @@ export default {
       queryParams: {
         name: undefined
       },
+      importConsUnit: {},
       // 表单参数
-      form: {},
+      form: {
+        type: "0",
+        createType: 1,
+        classifyType: "excel",
+      },
+      upload: {
+        title: this.$t("cons.pileHoleImportTitle"),
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/common/uploads"
+      },
+      assignDialog: {
+        open: false
+      },
       // 表单校验
       rules: {
         parentId: [
@@ -206,8 +328,58 @@ export default {
   },
   created() {
     this.getList();
+    this.getMachineList();
   },
   methods: {
+    handleAssign(record) {
+      this.reset();
+      getConsUnitInfo(record.id).then(response => {
+        this.form = response.data;
+        this.assignDialog.open = true;
+      });
+    },
+    submitAssignForm() {
+      this.$refs["assignform"].validate(valid => {
+        if (valid) {
+          assignMachine(this.form).then(response => {
+            this.$modal.msgSuccess("修改成功");
+            this.assignDialog.open = false;
+            this.getList();
+          });
+        }
+      });
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    handleImport(record) {
+      this.upload.open = true;
+      this.importConsUnit = record
+    },
+    // 文件上传中处理
+    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.fileAnalysisLoading = true;
+      importCad({
+        fileId: response.fileNames,
+        id: this.importConsUnit.id,
+      }).finally(() => {
+        this.fileAnalysisLoading = false
+      })
+    },
+    getMachineList() {
+      this.loading = true;
+      listAllPileMachineInfo({}).then(response => {
+        this.machineList = response.rows
+      });
+    },
     /** 查询部门列表 */
     getList() {
       this.loading = true;
@@ -236,10 +408,10 @@ export default {
     reset() {
       this.form = {
         penningType: null,
-        type: null,
+        type: "0",
         parentId: null,
-        createType: null,
-        classifyType: null,
+        createType: 1,
+        classifyType: "excel",
         name: null,
       };
       this.resetForm("form");

+ 111 - 69
src/views/cons/pileMachineInfo/index.vue

@@ -3,18 +3,18 @@
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="桩机编号" prop="machineNum">
         <el-input
-          v-model="queryParams.machineNum"
-          placeholder="请输入桩机编号"
-          clearable
-          @keyup.enter.native="handleQuery"
+            v-model="queryParams.machineNum"
+            placeholder="请输入桩机编号"
+            clearable
+            @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item label="设备信息" prop="equipment">
         <el-input
-          v-model="queryParams.equipment"
-          placeholder="请输入设备信息"
-          clearable
-          @keyup.enter.native="handleQuery"
+            v-model="queryParams.equipment"
+            placeholder="请输入设备信息"
+            clearable
+            @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item>
@@ -26,54 +26,60 @@
     <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:pileMachineInfo:add']"
-        >新增</el-button>
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['cons:pileMachineInfo: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:pileMachineInfo:edit']"
-        >修改</el-button>
+            type="success"
+            plain
+            icon="el-icon-edit"
+            size="mini"
+            :disabled="single"
+            @click="handleUpdate"
+            v-hasPermi="['cons:pileMachineInfo: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:pileMachineInfo:remove']"
-        >删除</el-button>
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['cons:pileMachineInfo: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:pileMachineInfo:export']"
-        >导出</el-button>
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExport"
+            v-hasPermi="['cons:pileMachineInfo:export']"
+        >导出
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="pileMachineInfoList" @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="machineNum" />
-      <el-table-column label="设备信息" align="center" prop="equipment" />
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="编号" align="center" prop="id"/>
+      <el-table-column label="桩机编号" align="center" prop="machineNum"/>
+      <el-table-column label="设备信息" align="center" prop="equipment"/>
+      <el-table-column label="车牌号" align="center" prop="no"/>
+      <el-table-column label="SN" align="center" prop="sn"/>
       <el-table-column label="创建时间" align="center" prop="updateTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
@@ -87,39 +93,68 @@
       <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:pileMachineInfo:edit']"
-          >修改</el-button>
+              size="mini"
+              type="text"
+              icon="el-icon-edit"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['cons:pileMachineInfo:edit']"
+          >修改
+          </el-button>
           <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['cons:pileMachineInfo:remove']"
-          >删除</el-button>
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['cons:pileMachineInfo: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 ref="form" :model="form" :rules="rules" label-width="130px">
         <el-form-item label="桩机编号" prop="machineNum">
-          <el-input v-model="form.machineNum" placeholder="请输入桩机编号" />
+          <el-input v-model="form.machineNum" placeholder="请输入桩机编号"/>
+        </el-form-item>
+        <el-form-item label="车牌号" prop="no">
+          <el-input v-model="form.no" placeholder="请输入车牌号"/>
         </el-form-item>
         <el-form-item label="设备信息" prop="equipment">
-          <el-input v-model="form.equipment" placeholder="请输入设备信息" />
+          <el-input v-model="form.equipment" placeholder="请输入设备信息"/>
+        </el-form-item>
+        <el-form-item label="SN" prop="sn">
+          <el-input v-model="form.sn" placeholder="请输入SN"/>
+        </el-form-item>
+        <el-form-item label="topic产品key" prop="productKey">
+          <el-input v-model="form.productKey" placeholder="请输入topic产品key"/>
+        </el-form-item>
+        <el-form-item label="topic设备密码" prop="deviceSecret">
+          <el-input v-model="form.deviceSecret" placeholder="请输入topic设备密码"/>
+        </el-form-item>
+        <el-form-item label="topic" prop="topic">
+          <el-input v-model="form.topic" placeholder="请输入topic"/>
+        </el-form-item>
+        <el-form-item label="serverHost" prop="serverHost">
+          <el-input v-model="form.serverHost" placeholder="请输入serverHost"/>
+        </el-form-item>
+        <el-form-item label="serverPort" prop="serverPort">
+          <el-input v-model="form.serverPort" placeholder="请输入serverPort"/>
+        </el-form-item>
+        <el-form-item label="serverUserName" prop="serverUserName">
+          <el-input v-model="form.serverUserName" placeholder="请输入serverUserName"/>
+        </el-form-item>
+        <el-form-item label="serverPassword" prop="serverPassword">
+          <el-input v-model="form.serverPassword" placeholder="请输入serverPassword"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -131,7 +166,13 @@
 </template>
 
 <script>
-import { listPileMachineInfo, getPileMachineInfo, delPileMachineInfo, addPileMachineInfo, updatePileMachineInfo } from "@/api/cons/pileMachineInfo";
+import {
+  addPileMachineInfo,
+  delPileMachineInfo,
+  getPileMachineInfo,
+  listPileMachineInfo,
+  updatePileMachineInfo
+} from "@/api/cons/pileMachineInfo";
 
 export default {
   name: "PileMachineInfo",
@@ -167,10 +208,10 @@ export default {
       // 表单校验
       rules: {
         machineNum: [
-          { required: true, message: "桩机编号不能为空", trigger: "blur" }
+          {required: true, message: "桩机编号不能为空", trigger: "blur"}
         ],
         equipment: [
-          { required: true, message: "设备信息不能为空", trigger: "blur" }
+          {required: true, message: "设备信息不能为空", trigger: "blur"}
         ],
       }
     };
@@ -219,7 +260,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
     },
     /** 新增按钮操作 */
@@ -261,12 +302,13 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除施工桩机信息编号为"' + ids + '"的数据项?').then(function() {
+      this.$modal.confirm('是否确认删除施工桩机信息编号为"' + ids + '"的数据项?').then(function () {
         return delPileMachineInfo(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      }).catch(() => {
+      });
     },
     /** 导出按钮操作 */
     handleExport() {