Explorar el Código

元素表和元素

gangyj hace 3 años
padre
commit
0319f6938a
Se han modificado 3 ficheros con 266 adiciones y 32 borrados
  1. 7 0
      src/api/manager/wbsformelement.js
  2. 23 5
      src/api/manager/wbstree.js
  3. 236 27
      src/views/manager/wbsinfo/edit.vue

+ 7 - 0
src/api/manager/wbsformelement.js

@@ -47,4 +47,11 @@ export const update = (row) => {
     data: row
   })
 }
+export const saveElement = (row) => {
+  return request({
+    url: '/api/blade-manager/wbsFormElement/save',
+    method: 'post',
+    data: row
+  })
+}
 

+ 23 - 5
src/api/manager/wbstree.js

@@ -74,7 +74,7 @@ export const update = (row) => {
 
 export const selectByNodeTable = (id, params) => {
   return request({
-    url: '/blade-manager/wbsTree/selectByNodeTable',
+    url: '/api/blade-manager/wbsTree/selectByNodeTable',
     method: 'get',
     params: {
       ...params,
@@ -82,14 +82,32 @@ export const selectByNodeTable = (id, params) => {
     }
   })
 }
-export const saveFormAndElement = (formElementDTO, params) => {
+
+export const saveFormAndElement = (formElementDTO) => {
   return request({
-    url: '/blade-manager/wbsTree/saveFormAndElement',
+    url: '/api/blade-manager/wbsTree/saveFormAndElement',
     method: 'post',
+    data: formElementDTO
+  })
+}
+
+export const selectFormElements = (id, params) => {
+  return request({
+    url: '/api/blade-manager/wbsTree/selectFormElements',
+    method: 'get',
     params: {
       ...params,
-      formElementDTO
+      id
+    }
+  })
+}
+export const removeTableById = (id, params) => {
+  return request({
+    url: '/api/blade-manager/wbsTree/removeTableById',
+    method: 'get',
+    params: {
+      ...params,
+      id
     }
   })
 }
-

+ 236 - 27
src/views/manager/wbsinfo/edit.vue

@@ -48,9 +48,9 @@
           </p>
           <el-table :data="formData" border style="width: 100%">
             <el-table-column align="center" prop="tableName" label="表单名称" ></el-table-column>
-            <el-table-column align="center" prop="tableType" label="表单类型"></el-table-column>
             <el-table-column align="center" prop="elementTotal" label="元素总量"></el-table-column>
-            <el-table-column align="center" prop="tableName" label="所属方"></el-table-column>
+            <el-table-column align="center" prop="tableType" :formatter="formatTableType" label="表单类型"></el-table-column>
+            <el-table-column align="center" prop="tableOwner" :formatter="formatOwner" label="所属方"></el-table-column>
             <el-table-column label="操作">
               <template slot-scope="scope">
                 <el-button
@@ -67,9 +67,9 @@
         <template v-if="leftType==4">
           <el-table :data="formData" border style="width: 100%">
             <el-table-column align="center" prop="tableName" label="表单名称" ></el-table-column>
-            <el-table-column align="center" prop="tableType" label="表单类型"></el-table-column>
             <el-table-column align="center" prop="elementTotal" label="元素总量"></el-table-column>
-            <el-table-column align="center" prop="tableOwner" label="所属方"></el-table-column>
+            <el-table-column align="center" prop="tableType" :formatter="formatTableType" label="表单类型"></el-table-column>
+            <el-table-column align="center" prop="tableOwner" :formatter="formatOwner" label="所属方"></el-table-column>
             <el-table-column label="操作">
               <template slot-scope="scope">
                 <el-button
@@ -131,9 +131,9 @@
       </span>
     </el-dialog>
 
-    <el-dialog title="创建新的元素表" :visible.sync="eleVisible" :rules="eleRules" width="50%" append-to-body>
+    <el-dialog title="创建新的元素表" :visible.sync="eleVisible" :rules="eleRules" width="80%" append-to-body>
       <el-form ref="eleDialog" :model="eleForm" label-width="110px">
-        <el-form-item label="节点名称">
+        <el-form-item label="表名">
           <el-input v-model="eleForm.deptName"></el-input>
         </el-form-item>
         <el-row>
@@ -147,8 +147,7 @@
           <el-col :span="12">
             <el-form-item label="所属方">
               <el-select v-model="eleForm.tableOwner" placeholder="请选择" class="w-100p">
-                <el-option  :key="1" label="施工"  :value="1"></el-option>
-                <el-option  :key="2" label="监理"  :value="2"></el-option>
+                <el-option v-for="item in ownerTypeList" :key="item.id" :label="item.dictValue"  :value="item.dictKey"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -157,7 +156,7 @@
       <div class="flex jc-sb">
         <div></div>
         <div>
-          <el-link type="primary">快捷导入</el-link>
+          <el-link type="primary" @click="importVisible = true">快捷导入</el-link>
           <el-link type="primary" class="mg-l-20">下载导入模版</el-link>
         </div>
       </div>
@@ -185,7 +184,7 @@
             <el-table-column align="center" prop="eAllowDeviation" label="允许偏差值">
               <template slot-scope="scope">
                 <div class="flex">
-                  <el-select v-model="scope.row.allow" size="small" placeholder="请选择" style="width:50px">
+                  <el-select v-model="scope.row.allow" size="small" placeholder="请选择" style="width:120px">
                     <el-option :key="1" label="≥" value="≥"></el-option>
                     <el-option :key="2" label="≤" value="≤"></el-option>
                     <el-option :key="3" label="±" value="±"></el-option>
@@ -202,24 +201,107 @@
             </el-table-column>
             <el-table-column align="center" label="操作" width="80">
               <template slot="header">
-                <el-button @click="addEleRow" type="text" icon="el-icon-circle-plus-outline" class="text-icon"></el-button>
+                <el-button @click="addEleRow(eleForm.elementList)" type="text" icon="el-icon-circle-plus-outline" class="text-icon"></el-button>
               </template>
               <template slot-scope="scope">
-                <el-button icon="el-icon-remove-outline" type="text" @click="delEleRow(scope.$index)" class="text-icon text-icon-danger"></el-button>
+                <el-button icon="el-icon-remove-outline" type="text" @click="delEleRow(scope.$index,eleForm.elementList)" class="text-icon text-icon-danger"></el-button>
               </template>
             </el-table-column>
           </el-table>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="eleVisible = false">取 消</el-button>
-        <el-button type="primary" @click="saveFormAndElementHandle">确 定</el-button>
+        <el-button type="primary" @click="saveFormAndElementHandle">保 存</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog title="模版导入" :visible.sync="importVisible" width="50%" append-to-body>
+      <p>提示:必须按照系统要求的模版格式上传,否则系统识别无效  <el-link type="primary">下载导入模版</el-link></p>
+      <div>
+        <el-button size="small" type="primary">本地上传</el-button>
+      </div>
+      <el-table :data="tempList" border style="width: 100%" >
+            <el-table-column align="center" prop="eName" label="元素名称" >
+            </el-table-column>
+            <el-table-column align="center" prop="eType" label="数据类型" width="120">
+            </el-table-column>
+            <el-table-column align="center" prop="eLength" label="长度" width="120">
+            </el-table-column>
+            <el-table-column align="center" prop="eAllowDeviation" label="允许偏差值">
+            </el-table-column>
+            <el-table-column align="center" prop="eInspectionMethod" label="检查方法和频率">
+            </el-table-column>
+          </el-table>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="importVisible = false">取 消</el-button>
+        <el-button type="primary" @click="importHandle">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog :title="(curEleTable.tableName?curEleTable.tableName:'')+'  元素编辑'" :visible.sync="editEleVisible" width="80%" append-to-body>
+      <p class="font-c-warning">编辑元素信息(请谨慎操作)</p>
+        <el-table :data="editEleList" border style="width: 100%" height="400px">
+          <el-table-column align="center" type="index" width="50"></el-table-column>
+          <el-table-column align="center" prop="eName" label="元素名称" >
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.eName" size="small" placeholder="请输入内容"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="eType" label="数据类型" width="120">
+            <template slot-scope="scope">
+              <el-select v-model="scope.row.eType" size="small" placeholder="请选择">
+                <el-option v-for="item in dataTypeList" :key="item.id" :label="item.dictValue"  :value="item.dictKey"></el-option>
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="eLength" label="长度" width="120">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.eLength" size="small" placeholder="请输入内容"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="eAllowDeviation" label="允许偏差值">
+            <template slot-scope="scope">
+              <div class="flex">
+                <el-select v-model="scope.row.allow" size="small" placeholder="请选择" style="width:120px">
+                  <el-option :key="1" label="≥" value="≥"></el-option>
+                  <el-option :key="2" label="≤" value="≤"></el-option>
+                  <el-option :key="3" label="±" value="±"></el-option>
+                  <el-option :key="4" label="【】" value="【】"></el-option>
+                </el-select>
+                <el-input v-model="scope.row.deviation" size="small" placeholder="请输入内容"></el-input>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="eInspectionMethod" label="检查方法和频率">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.eInspectionMethod" size="small" placeholder="请输入内容"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="操作" width="120">
+            <template slot="header">
+              <el-button @click="addEleRow(editEleList)" type="text" icon="el-icon-circle-plus-outline" class="text-icon"></el-button>
+            </template>
+            <template slot-scope="scope">
+              <el-button v-if="scope.row.id" icon="el-icon-remove-outline" type="text" @click="delEleRow(scope.$index,editEleList)" class="text-icon text-icon-danger"></el-button>
+              <div class="flex" v-else>
+                <el-button @click="saveNewEle(scope.row)" type="mini">保存</el-button>
+                <el-button icon="el-icon-remove-outline" type="text" @click="delEleRow(scope.$index,editEleList)" class="text-icon text-icon-danger"></el-button>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="editEleVisible = false">取 消</el-button>
+        <el-button type="primary" @click="saveEles">确 定</el-button>
       </span>
     </el-dialog>
   </basic-container>
 </template>
 
 <script>
-  import {getLazytree,getDetail,update,selectByNodeTable,saveFormAndElement} from "@/api/manager/wbstree";
+  import {getLazytree,getDetail,update,selectByNodeTable,
+            saveFormAndElement,selectFormElements,removeTableById} from "@/api/manager/wbstree";
+  import {saveElement} from "@/api/manager/wbsformelement"
   import {getDictionary} from "@/api/system/dict";
   import {mapGetters} from "vuex";
   export default {
@@ -256,10 +338,18 @@
         eleVisible:false,
         tableTypelist:[],
         dataTypeList:[],
+        ownerTypeList:[],
         eleForm:{
           elementList:[],
         },
         eleRules:{},
+
+        importVisible:false,
+        tempList:[],
+
+        curEleTable:{},
+        editEleVisible:false,
+        editEleList:[],
       };
     },
     computed: {
@@ -277,6 +367,7 @@
     },
     created() {
       this.init();
+      //console.log(this.userInfo)
     },
     methods: {
       init(){
@@ -284,13 +375,14 @@
         this.getDeptCategorylist();
         this.getTableTypelist();
         this.getDataTypelist();
+        this.getOwnerTypelist();
       },
       loadNode(node, resolve){
         let pid = 0;
         if (node.level != 0) {
           pid = node.data.id
         }
-        getLazytree(this.id ,pid,this.userInfo.tenantId).then((res)=>{
+        getLazytree(this.id ,pid,this.userInfo.tenant_id).then((res)=>{
           return resolve(res.data.data);
         })
       },
@@ -308,6 +400,7 @@
           this.tableData = [res.data.data];
           this.nodeDetail = Object.assign({},res.data.data);
         })
+        this.updateNodeTable();
       },
 
       saveNode(){
@@ -326,9 +419,7 @@
       },
       addNode(){
         update(this.nodeDetail).then(()=>{
-          getLazytree(this.id ,this.nodeDetail.parentId).then((res)=>{
-            this.$refs.tree.updateKeyChildren(this.nodeDetail.parentId,res.data.data)
-          })
+          this.updateTreeNewNode();
           this.dialogVisible = false;
           this.$message({
             type: "success",
@@ -377,11 +468,15 @@
           }
           this.nodeDetail.type = 1;//	'1'节点 '2'表单
           this.nodeDetail.wbsId = this.id;
-          this.nodeDetail.tenantId = this.userInfo.tenantId
+          this.nodeDetail.tenantId = this.userInfo.tenant_id
         })
         if(this.leftType == 4){
           selectByNodeTable(data.id).then((res)=>{
-            console.log(res)
+            if(res.data.data.length){
+              this.formData = res.data.data;
+            }else{
+              this.formData = [];
+            }
           })
         }
         
@@ -398,21 +493,95 @@
         this.eleVisible = true;
       },
 
-      addEleRow(){
-        this.eleForm.elementList.push({});
+      addEleRow(list){
+        list.push({});
       },
-      delEleRow(index){
-        this.eleForm.elementList.splice(index,1);
+      delEleRow(index,list){
+        list.splice(index,1);
       },
       saveFormAndElementHandle(){
         this.eleForm.wbsId = this.id;
-        this.eleForm.tenantId = this.userInfo.tenantId;
+        this.eleForm.tenantId = this.userInfo.tenant_id;
+        this.eleForm.deptCategory = -1;
         this.eleForm.type = 2;//	'1'节点 '2'表单
-        saveFormAndElement().then((res)=>{
-          console.log(res)
+        this.eleForm.parentId = this.nodeDetail.id;
+        this.eleForm.elementList.forEach((element)=>{
+          element.eAllowDeviation = (element.allow?element.allow:'') + (element.deviation?element.deviation:'');
+        })
+        saveFormAndElement(this.eleForm).then(()=>{
+          //console.log(res)
+          this.updateTreeNewNode();
+          this.updateNodeTable();
+          this.eleVisible = false;
+          this.$message({
+            type: "success",
+            message: "新增成功!"
+          });
+        })
+      },
+
+      updateTreeNewNode(){
+        getLazytree(this.id ,this.nodeDetail.parentId).then((res)=>{
+          this.$refs.tree.updateKeyChildren(this.nodeDetail.parentId,res.data.data)
+        })
+      },
+
+      updateNodeTable(){
+        selectByNodeTable(this.curTreeData.id).then((res)=>{
+          if(res.data.data.length){
+            this.formData = res.data.data;
+          }else{
+            this.formData = [];
+          }
         })
       },
 
+      importHandle(){
+
+      },
+
+      handleEdit(index,row){
+        this.curEleTable = row;
+        selectFormElements(this.curEleTable.id).then((res)=>{
+          let reg = /(≥|≤|±|【】)?([^≥≤±【】]*)/;
+          res.data.data.forEach((element)=>{
+            reg.exec(element.eAllowDeviation);
+            // console.log(RegExp.$1)
+            // console.log(RegExp.$2)
+            element.allow = RegExp.$1?RegExp.$1:'';
+            element.deviation = RegExp.$2?RegExp.$2:'';
+          })
+          this.editEleList = res.data.data;
+        })
+        this.editEleVisible = true;
+      },
+      handleDelete(index,row){
+        this.$confirm('是否删除  '+row.tableName + '  ?', '删除元素表', {
+          distinguishCancelAndClose: true,
+          confirmButtonText: '删除',
+          cancelButtonText: '取消'
+        }).then(() => {
+          removeTableById(row.id).then(()=>{
+            this.formData.splice(index,1);
+            this.$message({
+              type: "success",
+              message: "删除成功!"
+            });
+          })
+        })
+      },
+
+      saveNewEle(row){
+        row.eAllowDeviation = (row.allow?row.allow:'') + (row.deviation?row.deviation:'');
+        row.fId = this.curEleTable.id;
+        saveElement(row).then((res)=>{
+          row.id = res.data.data.id;
+        })
+      },
+      saveEles(){
+
+      },
+
       getDeptCategorylist(){
         if(this.deptCategorylist.length >1){
           return;
@@ -466,6 +635,19 @@
           this.dataTypeList = res.data.data;
         })
       },
+      getOwnerTypelist(){
+        if(this.ownerTypeList.length >1){
+          return;
+        }
+        getDictionary({
+          code:'owner_type'
+        }).then((res)=>{
+          res.data.data.forEach(element => {
+            element.dictKey = Number(element.dictKey)
+          });
+          this.ownerTypeList = res.data.data;
+        })
+      },
 
       formatCat(row, column, cellValue){
         for (let i = 0; i < this.deptCategorylist.length; i++) {
@@ -476,6 +658,33 @@
         return cellValue;
         //console.log(cellValue)
       },
+      formatTableType(row, column, cellValue){
+        for (let i = 0; i < this.tableTypelist.length; i++) {
+          if(this.tableTypelist[i].dictKey == cellValue){
+            return this.tableTypelist[i].dictValue
+          }
+        }
+        return cellValue;
+        //console.log(cellValue)
+      },
+      formatOwner(row, column, cellValue){
+        for (let i = 0; i < this.ownerTypeList.length; i++) {
+          if(this.ownerTypeList[i].dictKey == cellValue){
+            return this.ownerTypeList[i].dictValue
+          }
+        }
+        return cellValue;
+        //console.log(cellValue)
+      },
+      formatdataType(row, column, cellValue){
+        for (let i = 0; i < this.dataTypeList.length; i++) {
+          if(this.dataTypeList[i].dictKey == cellValue){
+            return this.dataTypeList[i].dictValue
+          }
+        }
+        return cellValue;
+        //console.log(cellValue)
+      },
 
       filterNode(value, data) {
         if (!value) return true;