Browse Source

修改bug

zhangh 3 years ago
parent
commit
00876a652e

+ 19 - 0
src/App.vue

@@ -27,4 +27,23 @@ export default {
 .avue--detail .el-col {
   margin-bottom: 0;
 }
+
+.boxswai {
+  box-sizing: border-box;
+  padding: 0px 14px 10px 14px !important;
+  width: 100%;
+  height: 96%;
+  color: #303133;
+}
+.boxnei {
+  box-sizing: border-box;
+  width: 100%;
+  height: 100%;
+  background-color: #fff;
+  padding: 14px !important;
+  border: 1px solid #ebeef5;
+  border-radius: 4px;
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.2);
+  overflow: auto;
+}
 </style>

+ 10 - 1
src/api/exctab/excelmodel.js

@@ -38,6 +38,15 @@ export const detailExcel = (params) => {
     })
 }
 
+//元素识别获取列表信息
+export const getExcelHtmlCol = (params) => {
+    return request({
+        url: '/api/blade-manager/exceltab/get-excel-html-col',
+        method: 'get',
+        params
+    })
+}
+
 //清表编辑 wbs 下拉框选择
 export const getWbsTypeList = (params) => {
     return request({
@@ -144,4 +153,4 @@ export const getLazytree = (params) => {
         method: 'get',
         params
     })
-}
+}

+ 108 - 99
src/api/system/user.js

@@ -1,141 +1,150 @@
 import request from '@/router/axios';
 
 export const getList = (current, size, params, deptId) => {
-  return request({
-    url: '/api/blade-user/page',
-    method: 'get',
-    params: {
-      ...params,
-      current,
-      size,
-      deptId,
-    }
-  })
+    return request({
+        url: '/api/blade-user/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+            deptId,
+        }
+    })
 }
 
 export const remove = (ids) => {
-  return request({
-    url: '/api/blade-user/remove',
-    method: 'post',
-    params: {
-      ids,
-    }
-  })
+    return request({
+        url: '/api/blade-user/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
 }
 
 export const add = (row) => {
-  return request({
-    url: '/api/blade-user/submit2',
-    method: 'post',
-    data: row
-  })
+    return request({
+        url: '/api/blade-user/submit2',
+        method: 'post',
+        data: row
+    })
 }
 
 export const update = (row) => {
-  return request({
-    url: '/api/blade-user/update2',
-    method: 'post',
-    data: row
-  })
+    return request({
+        url: '/api/blade-user/update2',
+        method: 'post',
+        data: row
+    })
 }
 
 export const updatePlatform = (userId, userType, userExt) => {
-  return request({
-    url: '/api/blade-user/update-platform',
-    method: 'post',
-    params: {
-      userId,
-      userType,
-      userExt,
-    }
-  })
+    return request({
+        url: '/api/blade-user/update-platform',
+        method: 'post',
+        params: {
+            userId,
+            userType,
+            userExt,
+        }
+    })
 }
 
 export const getUser = (id) => {
-  return request({
-    url: '/api/blade-user/detail',
-    method: 'get',
-    params: {
-      id,
-    }
-  })
+    return request({
+        url: '/api/blade-user/detail',
+        method: 'get',
+        params: {
+            id,
+        }
+    })
 }
 
 export const getUserPlatform = (id) => {
-  return request({
-    url: '/api/blade-user/platform-detail',
-    method: 'get',
-    params: {
-      id,
-    }
-  })
+    return request({
+        url: '/api/blade-user/platform-detail',
+        method: 'get',
+        params: {
+            id,
+        }
+    })
 }
 
 export const getUserInfo = () => {
-  return request({
-    url: '/api/blade-user/info',
-    method: 'get',
-  })
+    return request({
+        url: '/api/blade-user/info',
+        method: 'get',
+    })
 }
 
 export const resetPassword = (userIds) => {
-  return request({
-    url: '/api/blade-user/reset-password',
-    method: 'post',
-    params: {
-      userIds,
-    }
-  })
+    return request({
+        url: '/api/blade-user/reset-password',
+        method: 'post',
+        params: {
+            userIds,
+        }
+    })
 }
 
-export const updatePassword = (oldPassword, newPassword, newPassword1,plaintextPassword) => {
-  return request({
-    url: '/api/blade-user/update-password',
-    method: 'post',
-    params: {
-      oldPassword,
-      newPassword,
-      newPassword1,
-      plaintextPassword,
-    }
-  })
+export const updatePassword = (oldPassword, newPassword, newPassword1, plaintextPassword) => {
+    return request({
+        url: '/api/blade-user/update-password',
+        method: 'post',
+        params: {
+            oldPassword,
+            newPassword,
+            newPassword1,
+            plaintextPassword,
+        }
+    })
 }
 
 export const updateInfo = (row) => {
-  return request({
-    url: '/api/blade-user/update-info',
-    method: 'post',
-    data: row
-  })
+    return request({
+        url: '/api/blade-user/update-info',
+        method: 'post',
+        data: row
+    })
 }
 
 export const grant = (userIds, roleIds) => {
-  return request({
-    url: '/api/blade-user/grant',
-    method: 'post',
-    params: {
-      userIds,
-      roleIds,
-    }
-  })
+    return request({
+        url: '/api/blade-user/grant',
+        method: 'post',
+        params: {
+            userIds,
+            roleIds,
+        }
+    })
 }
 
 export const unlock = (userIds) => {
-  return request({
-    url: '/api/blade-user/unlock',
-    method: 'post',
-    params: {
-      userIds,
-    }
-  })
+    return request({
+        url: '/api/blade-user/unlock',
+        method: 'post',
+        params: {
+            userIds,
+        }
+    })
 }
 
 export const getUserList = (params) => {
-  return request({
-    url: '/api/blade-user/user-list',
-    method: 'get',
-    params: {
-      ...params,
-    }
-  })
+    return request({
+        url: '/api/blade-user/user-list',
+        method: 'get',
+        params: {
+            ...params,
+        }
+    })
 }
+
+//删除参建项目整个项目
+export const removeUserProjectInfoAndRoleById = (params) => {
+    return request({
+        url: '/api/blade-manager/contractInfo/removeUserProjectInfoAndRoleById',
+        method: 'post',
+        params
+    })
+}

+ 131 - 142
src/styles/media.scss

@@ -2,181 +2,170 @@
 .avue-header,
 .avue-top,
 .avue-logo,
-.avue-layout
-.login-logo,
+.avue-layout .login-logo,
 .avue-main {
-  transition: all .3s;
+    transition: all .3s;
 }
 
 .avue-contail {
-  width: 100%;
-  height: 100%;
-  background: #f0f2f5;
-  background-size: 100%;
-  background-repeat: no-repeat;
+    width: 100%;
+    height: 100%;
+    background: #f0f2f5;
+    background-size: 100%;
+    background-repeat: no-repeat;
 }
 
-
 .avue-left {
-  position: fixed;
-  left: 0;
-  top: 0;
-  width: 240px;
-  height: 100%;
-  z-index: 1025;
+    position: fixed;
+    left: 0;
+    top: 0;
+    width: 240px;
+    height: 100%;
+    z-index: 1025;
 }
 
 .avue--collapse {
-  .avue-left,
-  .avue-logo {
-    width: 60px;
-  }
-
-  .avue-header {
-    padding-left: 60px;
-  }
-
-  .avue-main {
-    width: calc(100% - 60px);
-    left: 60px;
-  }
+    .avue-left,
+    .avue-logo {
+        width: 60px;
+    }
+    .avue-header {
+        padding-left: 60px;
+    }
+    .avue-main {
+        width: calc(100% - 60px);
+        left: 60px;
+    }
 }
 
 .avue-header {
-  padding-left: 240px;
-  width: 100%;
-  background-color: #fff;
-  box-sizing: border-box;
+    padding-left: 240px;
+    width: 100%;
+    background-color: #fff;
+    box-sizing: border-box;
 }
 
 .avue-main {
-  position: absolute;
-  left: 240px;
-  padding: 0;
-  padding-bottom: 20px;
-  width: calc(100% - 240px);
-  height: calc(100% - 64px);
-  box-sizing: border-box;
-  overflow: hidden;
-  transition: all 0.5s;
-  background: #f0f2f5;
-  z-index: 1026;
-
-  &--fullscreen {
-    width: 100%;
-    left: 0;
-  }
+    position: absolute;
+    left: 240px;
+    padding: 0;
+    padding-bottom: 20px;
+    width: calc(100% - 240px);
+    height: calc(100% - 64px);
+    box-sizing: border-box;
+    overflow: hidden;
+    transition: all 0.5s;
+    background: #f0f2f5;
+    z-index: 1026;
+    &--fullscreen {
+        width: 100%;
+        left: 0;
+    }
 }
 
 .avue-view {
-  padding: 0 10px !important;
-  width: 100%;
-  box-sizing: border-box;
+    padding: 0 10px;
+    width: 100%;
+    box-sizing: border-box;
 }
 
 .avue-footer {
-  margin: 0 auto;
-  padding: 0 22px;
-  width: 1300px;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-
-  .logo {
-    margin-left: -50px;
-  }
-
-  .copyright {
-    color: #666;
-    line-height: 1.5;
-    font-size: 12px;
-  }
+    margin: 0 auto;
+    padding: 0 22px;
+    width: 1300px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .logo {
+        margin-left: -50px;
+    }
+    .copyright {
+        color: #666;
+        line-height: 1.5;
+        font-size: 12px;
+    }
 }
 
 .avue-shade {
-  position: fixed;
-  display: none;
-  width: 100%;
-  height: 100%;
-  left: 0;
-  right: 0;
-  top: 0;
-  bottom: 0;
-  background-color: rgba(0, 0, 0, .3);
-  z-index: 1024;
-
-  &--show {
-    display: block;
-  }
+    position: fixed;
+    display: none;
+    width: 100%;
+    height: 100%;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    background-color: rgba(0, 0, 0, .3);
+    z-index: 1024;
+    &--show {
+        display: block;
+    }
 }
 
 @media screen and (max-width: 992px) {
-  $width: 240px;
-  // ele的自适应
-  .el-dialog,
-  .el-message-box {
-    width: 98% !important;
-  }
-  //登录页面
-  .login-left {
-    display: none !important;
-  }
-  .login-logo {
-    padding-top: 30px !important;
-    margin-left: -30px;
-  }
-  .login-weaper {
-    margin: 0 auto;
-    width: 96% !important;
-  }
-  .login-border {
-    border-radius: 5px;
-    padding: 40px;
-    margin: 0 auto;
-    float: none !important;
-    width: 100% !important;
-  }
-  .login-main {
-    width: 100% !important;
-  }
-  //主框架
-  .avue-tags {
-    display: none;
-  }
-  .avue-left,
-  .avue-logo {
-    left: -$width;
-  }
-  .avue-main {
-    left: 0;
-    width: 100%;
-  }
-  .avue-header {
-    margin-bottom: 15px;
-    padding-left: 15px;
-  }
-  .top-bar__item {
-    display: none;
-  }
-  .avue--collapse {
+    $width: 240px;
+    // ele的自适应
+    .el-dialog,
+    .el-message-box {
+        width: 98% !important;
+    }
+    //登录页面
+    .login-left {
+        display: none !important;
+    }
+    .login-logo {
+        padding-top: 30px !important;
+        margin-left: -30px;
+    }
+    .login-weaper {
+        margin: 0 auto;
+        width: 96% !important;
+    }
+    .login-border {
+        border-radius: 5px;
+        padding: 40px;
+        margin: 0 auto;
+        float: none !important;
+        width: 100% !important;
+    }
+    .login-main {
+        width: 100% !important;
+    }
+    //主框架
+    .avue-tags {
+        display: none;
+    }
     .avue-left,
     .avue-logo {
-      width: $width;
-      left: 0;
+        left: -$width;
     }
-
     .avue-main {
-      left: $width;
-      width: 100%;
+        left: 0;
+        width: 100%;
     }
-
     .avue-header {
-      padding: 0;
-      transform: translate3d(230px, 0, 0);
+        margin-bottom: 15px;
+        padding-left: 15px;
     }
-
-    .avue-shade {
-      display: block;
+    .top-bar__item {
+        display: none;
     }
-  }
-}
+    .avue--collapse {
+        .avue-left,
+        .avue-logo {
+            width: $width;
+            left: 0;
+        }
+        .avue-main {
+            left: $width;
+            width: 100%;
+        }
+        .avue-header {
+            padding: 0;
+            transform: translate3d(230px, 0, 0);
+        }
+        .avue-shade {
+            display: block;
+        }
+    }
+}

+ 6 - 0
src/styles/xiaoyu.scss

@@ -118,4 +118,10 @@
 
 .marleft30 {
     margin-left: 30px;
+}
+
+//树结构超长后产生滚动条
+.el-tree>.el-tree-node {
+    min-width: 100%;
+    display: inline-block;
 }

+ 277 - 243
src/views/exctab/ElementIdentification/index.vue

@@ -1,261 +1,283 @@
 <template>
-  <basic-container>
-    <el-row :gutter="20">
-      <el-col :span="5">
-        <div
-          style="text-align: center;fontSize:18px; font-weight: 900;"
-          class="marbottom5"
-        >元素识别</div>
-        <el-tree
-          :data="treeData"
-          :props="treeProps"
-          @node-click="handleNodeClick"
-          :load="loadNode"
-          lazy
-        ></el-tree>
-      </el-col>
-      <el-col :span="19">
-        <div v-if="from.extension==''">表名称</div>
-        <div v-else>{{from.extension}}</div>
-        <el-row
-          class="martop20"
-          :gutter="20"
+  <div class="boxswai">
+    <div class="boxnei">
+      <el-row
+        :gutter="20"
+        style="height:100%;"
+      >
+        <el-col
+          :span="5"
+          style="height:99%;"
         >
-          <el-col :span="16">
-            <iframe
-              :src="excelSrc"
-              width="100%"
-              height="700px"
-            ></iframe>
-          </el-col>
-          <el-col :span="8">
-            <div class="flexBetween flexItemsC">
+          <div
+            style="text-align: center;fontSize:18px; font-weight: 900;"
+            class="marbottom5"
+          >元素识别</div>
+          <div style="height:98%;overflow: auto;width:auto;">
+            <el-tree
+              :data="treeData"
+              :props="treeProps"
+              @node-click="handleNodeClick"
+              :load="loadNode"
+              :expand-on-click-node="false"
+              lazy
+            ></el-tree>
+          </div>
+        </el-col>
+        <el-col
+          :span="19"
+          style="height:98%;"
+        >
+          <div v-if="addElementForm.deptName==''">表名称</div>
+          <div v-else>{{addElementForm.deptName}}</div>
+          <el-row
+            class="martop20"
+            :gutter="20"
+            style="height:96%;"
+          >
+            <el-col
+              :span="16"
+              style="overflow:auto;height:100%;"
+            >
+              <div
+                class="parent"
+                id='parent'
+              >
+              </div>
+            </el-col>
+            <el-col
+              :span="8"
+              style="overflow:auto;height:100%;"
+            >
+              <div class="flexBetween flexItemsC">
+                <el-button
+                  type="info"
+                  size="mini"
+                  :disabled="from.id==''"
+                  @click="automaticRecognition"
+                >自动识别</el-button>
+                <div
+                  class="el-icon-plus"
+                  @click="pushTableData"
+                  style="width:16px;height:16px;backgroundColor:#1DD81D;color:#fff;cursor: pointer;"
+                ></div>
+              </div>
+              <el-table
+                class="martop20"
+                :data="tableData"
+                border
+                style="width: 100%"
+              >
+                <el-table-column
+                  type="index"
+                  label="坐标"
+                >
+                </el-table-column>
+                <el-table-column
+                  prop="eName"
+                  label="元素名称"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      v-model="scope.row.eName"
+                      placeholder="请输入内容"
+                    ></el-input>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="eType"
+                  label="数据类型"
+                >
+                  <template slot-scope="scope">
+                    <el-select
+                      v-model="scope.row.eType"
+                      placeholder="请选择"
+                    >
+                      <el-option
+                        v-for="item in dataType"
+                        :key="item.dictKey"
+                        :label="item.dictValue"
+                        :value="item.dictKey"
+                      >
+                      </el-option>
+                    </el-select>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="eAllowDeviation"
+                  label="允许偏差值"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      v-model="scope.row.eAllowDeviation"
+                      placeholder="请输入内容"
+                    ></el-input>
+                  </template>
+                </el-table-column>
+                <el-table-column label="操作">
+                  <template slot-scope="scope">
+                    <el-link
+                      type="danger"
+                      @click="deleteTableData(scope.$index)"
+                    >删除</el-link>
+                  </template>
+                </el-table-column>
+              </el-table>
               <el-button
-                type="info"
-                size="mini"
+                type="success"
+                class="martop20"
+                @click="establish()"
                 :disabled="from.id==''"
-                @click="automaticRecognition"
-              >自动识别</el-button>
-              <div
-                class="el-icon-plus"
-                @click="pushTableData"
-                style="width:16px;height:16px;backgroundColor:#1DD81D;color:#fff;cursor: pointer;"
-              ></div>
-            </div>
+              >关联WBS并创建元素</el-button>
+            </el-col>
+          </el-row>
+        </el-col>
+      </el-row>
+
+      <!-- 关联公共WBS模板 -->
+      <el-dialog
+        title="关联公共WBS模板"
+        class="excelBox"
+        :visible.sync="AssociatedPublicTap"
+        modal-append-to-body
+        append-to-body
+        :before-close="AssociatedPublicClose"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-select
+              style="width:100%;"
+              v-model="GLExcelFrom.name"
+              placeholder="请选择"
+              @change="changetherr()"
+            >
+              <el-option
+                v-for="(item,key) in GLExcelData"
+                :key="key"
+                :label="item.wbsName"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+            <el-scrollbar style="height:50vh;">
+              <el-tree
+                v-if="GLExcelFromtag"
+                @node-click="handleNodeClickExcel"
+                ref="tree"
+                class="filter-tree"
+                style="margin-top:10px;"
+                :props="GLExcelProps"
+                :data="exceldata"
+                :load="loadNodeTan"
+                lazy
+                node-key="id"
+                accordion
+              >
+              </el-tree>
+            </el-scrollbar>
+          </el-col>
+          <el-col
+            :span="12"
+            v-if="addElementForm.wbsId"
+          >
+            <el-button
+              type="primary"
+              style="float:right;"
+              class="marbottom20"
+              @click="addElementMD"
+              :disabled="addElement"
+            >新增元素信息表</el-button>
+
             <el-table
-              class="martop20"
-              :data="tableData"
+              :data="addTableData"
               border
               style="width: 100%"
             >
               <el-table-column
-                type="index"
-                label="坐标"
-              >
-              </el-table-column>
-              <el-table-column
-                prop="eName"
-                label="元素名称"
-              >
-                <template slot-scope="scope">
-                  <el-input
-                    v-model="scope.row.eName"
-                    placeholder="请输入内容"
-                  ></el-input>
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="eType"
-                label="数据类型"
+                prop="tableName"
+                label="已有元素表名称"
+                align="center"
               >
-                <template slot-scope="scope">
-                  <el-select
-                    v-model="scope.row.eType"
-                    placeholder="请选择"
-                  >
-                    <el-option
-                      v-for="item in dataType"
-                      :key="item.dictKey"
-                      :label="item.dictValue"
-                      :value="item.dictKey"
-                    >
-                    </el-option>
-                  </el-select>
-                </template>
               </el-table-column>
               <el-table-column
-                prop="eAllowDeviation"
-                label="允许偏差值"
+                prop="name"
+                label="操作"
+                align="center"
               >
                 <template slot-scope="scope">
-                  <el-input
-                    v-model="scope.row.eAllowDeviation"
-                    placeholder="请输入内容"
-                  ></el-input>
-                </template>
-              </el-table-column>
-              <el-table-column label="操作">
-                <template slot-scope="scope">
-                  <el-link
-                    type="danger"
-                    @click="deleteTableData(scope.$index)"
-                  >删除</el-link>
+                  <el-button
+                    type="primary"
+                    size="mini"
+                    @click="relationMD(scope.$index,'关联')"
+                    v-show="!scope.row.checknd"
+                  >关联</el-button>
+                  <el-button
+                    type="primary"
+                    size="mini"
+                    @click="relationMD(scope.$index,'取消关联')"
+                    v-show="scope.row.checknd"
+                  >取消关联</el-button>
                 </template>
               </el-table-column>
             </el-table>
-            <el-button
-              type="success"
-              class="martop20"
-              @click="establish()"
-              :disabled="from.id==''"
-            >关联WBS并创建元素</el-button>
-          </el-col>
-        </el-row>
-      </el-col>
-    </el-row>
-
-    <!-- 关联公共WBS模板 -->
-    <el-dialog
-      title="关联公共WBS模板"
-      class="excelBox"
-      :visible.sync="AssociatedPublicTap"
-      modal-append-to-body
-      append-to-body
-      :before-close="AssociatedPublicClose"
-    >
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <el-select
-            style="width:100%;"
-            v-model="GLExcelFrom.name"
-            placeholder="请选择"
-            @change="changetherr()"
-          >
-            <el-option
-              v-for="(item,key) in GLExcelData"
-              :key="key"
-              :label="item.wbsName"
-              :value="item.id"
-            >
-            </el-option>
-          </el-select>
-          <el-scrollbar style="height:50vh;">
-            <el-tree
-              v-if="GLExcelFromtag"
-              @node-click="handleNodeClickExcel"
-              ref="tree"
-              class="filter-tree"
-              style="margin-top:10px;"
-              :props="GLExcelProps"
-              :data="exceldata"
-              :load="loadNodeTan"
-              lazy
-              node-key="id"
-              accordion
-            >
-            </el-tree>
-          </el-scrollbar>
-        </el-col>
-        <el-col
-          :span="12"
-          v-if="addElementForm.wbsId"
-        >
-          <el-button
-            type="primary"
-            style="float:right;"
-            class="marbottom20"
-            @click="addElementMD"
-            :disabled="addElement"
-          >新增元素信息表</el-button>
-
-          <el-table
-            :data="addTableData"
-            border
-            style="width: 100%"
-          >
-            <el-table-column
-              prop="tableName"
-              label="已有元素表名称"
-              align="center"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="name"
-              label="操作"
-              align="center"
-            >
-              <template slot-scope="scope">
-                <el-button
-                  type="primary"
-                  size="mini"
-                  @click="relationMD(scope.$index,'关联')"
-                  v-show="!scope.row.checknd"
-                >关联</el-button>
-                <el-button
-                  type="primary"
-                  size="mini"
-                  @click="relationMD(scope.$index,'取消关联')"
-                  v-show="scope.row.checknd"
-                >取消关联</el-button>
-              </template>
-            </el-table-column>
-          </el-table>
 
-          <div v-if="addElement">
-            <div class="flexBetween martop40">
-              <el-input
-                v-model="addElementForm.deptName"
-                placeholder="请输入表名"
-              ></el-input>
+            <div v-if="addElement">
+              <div class="flexBetween martop40">
+                <el-input
+                  v-model="addElementForm.deptName"
+                  placeholder="请输入表名"
+                ></el-input>
+                <el-select
+                  class="marleft10"
+                  v-model="addElementForm.tableType"
+                  placeholder="请选择表类型"
+                >
+                  <el-option
+                    v-for="(item,index) in dataType"
+                    :key="index"
+                    :label="item.dictValue"
+                    :value="item.dictKey"
+                  ></el-option>
+                </el-select>
+              </div>
               <el-select
-                class="marleft10"
-                v-model="addElementForm.tableType"
-                placeholder="请选择表类型"
+                style="width:100%;"
+                class="martop20 "
+                v-model="addElementForm.tableOwner"
+                placeholder="请选择所属方"
               >
                 <el-option
-                  v-for="(item,index) in dataType"
+                  v-for="(item,index) in exceltypeData"
                   :key="index"
                   :label="item.dictValue"
                   :value="item.dictKey"
                 ></el-option>
               </el-select>
             </div>
-            <el-select
-              style="width:100%;"
-              class="martop20 "
-              v-model="addElementForm.tableOwner"
-              placeholder="请选择所属方"
-            >
-              <el-option
-                v-for="(item,index) in exceltypeData"
-                :key="index"
-                :label="item.dictValue"
-                :value="item.dictKey"
-              ></el-option>
-            </el-select>
-          </div>
-        </el-col>
-      </el-row>
-      <span
-        slot="footer"
-        class="dialog-footer"
-        style="display: flex;justify-content: center;align-items: center;"
-      >
-        <el-button @click="AssociatedPublicClose()">取 消</el-button>
-        <el-button
-          style="margin-left:30px;"
-          type="primary"
-          @click="saveElementMD()"
-        >确 定</el-button>
-      </span>
-    </el-dialog>
-  </basic-container>
+          </el-col>
+        </el-row>
+        <span
+          slot="footer"
+          class="dialog-footer"
+          style="display: flex;justify-content: center;align-items: center;"
+        >
+          <el-button @click="AssociatedPublicClose()">取 消</el-button>
+          <el-button
+            style="margin-left:30px;"
+            type="primary"
+            @click="saveElementMD()"
+          >确 定</el-button>
+        </span>
+      </el-dialog>
+    </div>
+  </div>
 </template>
 <script>
-import { tabLazytree, detailExcel, excelType, submitExcelRelationWbsTreeAndElement, getWbsTypeList, getLazytree } from "@/api/exctab/excelmodel";
+import { tabLazytree, getExcelHtmlCol, excelType, submitExcelRelationWbsTreeAndElement, getWbsTypeList, getLazytree, } from "@/api/exctab/excelmodel";
 import { dictionarydataType } from "@/api/exctab/editelement";
 import { getColByTabId } from "@/api/manager/AdjustForm";
 import { selectByNodeTable } from "@/api/manager/wbstree";
+import Vue from 'vue'
 export default {
   data () {
     return {
@@ -270,7 +292,6 @@ export default {
       excelSrc: '',
       from: {
         id: '',
-        extension: '',
       },
       tableData: [],//外层table
       dataType: [],
@@ -308,11 +329,12 @@ export default {
     //#region 
     handleNodeClick (data) {//树节点点击事件
       console.log(data);
-      if (data.hasChildren) {
-        this.detailExcel(data.id)
+      if (data.fileType == 3) {
+        this.getExcelHtmlCol(data.id)//获取excel模板
         if (this.dataType.length == 0) {
-          this.dictionarydataType()
+          this.dictionarydataType() //数据类型字典
         }
+        this.addElementForm.deptName = data.name
         this.from.id = data.id
       }
     },
@@ -346,6 +368,28 @@ export default {
         this.tableData = res.data
       }
     },
+    async getExcelHtmlCol (id) {//获取excel模板
+      const { data: res } = await getExcelHtmlCol({ id })
+      console.log(res);
+      if (res.code == 200) {
+        // let _that = this
+        var MyComponent = await Vue.extend({
+          data () {
+            return {
+              formData: {}
+            }
+          },
+          template: res.data,
+        })
+        var component = new MyComponent().$mount()
+        let na = document.getElementById('parent')
+        na.innerHTML = `<div
+        class='parent'
+        id='parent'"
+      ></div>`
+        document.getElementById('parent').appendChild(component.$el);
+      }
+    },
     //#endregion
 
     //#region 关联公共WBS模板弹框
@@ -384,6 +428,8 @@ export default {
       if (this.GLExcelFrom.name != "") {
         this.GLExcelFrom.search = ''
         this.exceldata = []
+        this.addTableData = []
+        this.addElementForm.wbsId = ''
         this.$nextTick(() => {
           this.GLExcelFromtag = true
         })
@@ -530,18 +576,6 @@ export default {
         return res.data
       }
     },
-    async detailExcel (id) {//获取列表信息
-      const { data: res } = await detailExcel({ id })
-      console.log(res);
-      if (res.code === 200) {
-        this.from.id = res.data.id
-        this.from.extension = res.data.extension  //文件名称
-        // this.from.fileUrl = res.data.fileUrl      //文件路径
-        let routeUrl = res.data.fileUrl
-        let pSrc = routeUrl + '?r=' + new Date()
-        this.excelSrc = 'http://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(pSrc)
-      }
-    },
     async dictionarydataType () {//数据类型字典
       const { data: res } = await dictionarydataType()
       console.log(res);
@@ -556,5 +590,5 @@ export default {
 }
 </script>
 
-<style lang="scss" scoped>
+<style lang="scss" >
 </style>

+ 3 - 1
src/views/exctab/excelmodel/excelmodel.vue

@@ -560,7 +560,9 @@ export default {
       return resolve(das)
     },
     nodeClick (data) {//外层树结构
-      if (data.hasChildren == false || data.fileType == 3) {
+      if (data.hasChildren == false) {
+        this.from.checkd = true
+      } else if (data.fileType == 3) {
         this.from.checkd = true
       } else {
         this.from.checkd = false

+ 1 - 0
src/views/manager/archivetree.vue

@@ -774,6 +774,7 @@ export default {
         })
         this.treeTap = false
         this.treeNode.title = da.nodeName
+        this.treeNode.postType = da.postType
       }
     },
     //#endregion

+ 58 - 6
src/views/manager/contractinfo/detail.vue

@@ -15,7 +15,7 @@
               :model="contractForm"
               :rules="contractRules"
               ref="contractForm"
-              label-width="120px"
+              label-width="140px"
             >
               <el-form-item label="项目名称">
                 <el-input
@@ -77,6 +77,42 @@
                   </el-form-item>
                 </el-col>
               </el-row>
+              <el-form-item
+                label="是否开启电签"
+                prop="isElectronicSignature"
+              >
+                <el-radio-group v-model="contractForm.isElectronicSignature">
+                  <el-radio :label="0">关闭</el-radio>
+                  <el-radio :label="1">开启</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item
+                label="是否开启试验模块"
+                prop="isTestModule"
+              >
+                <el-radio-group v-model="contractForm.isTestModule">
+                  <el-radio :label="0">关闭</el-radio>
+                  <el-radio :label="1">开启</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item
+                label="是否引用编号"
+                prop="isReferenceNumber"
+              >
+                <el-radio-group v-model="contractForm.isReferenceNumber">
+                  <el-radio :label="0">否</el-radio>
+                  <el-radio :label="1">是</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item
+                label="是否开启复制数据"
+                prop="isCopyData"
+              >
+                <el-radio-group v-model="contractForm.isCopyData">
+                  <el-radio :label="0">否</el-radio>
+                  <el-radio :label="1">是</el-radio>
+                </el-radio-group>
+              </el-form-item>
               <el-row>
                 <el-col :span="12">
                   <el-form-item
@@ -617,7 +653,11 @@ export default {
 
       contractForm: {
         contractType: 1,
-        contractAmount: 0
+        contractAmount: 0,
+        isElectronicSignature: 0,
+        isTestModule: 0,
+        isReferenceNumber: 0,
+        isCopyData: 0,
       },
       contractRules: {
         contractName: [
@@ -629,6 +669,18 @@ export default {
         contractNumber: [
           { required: true, message: '请输入合同段编号', trigger: 'blur' },
         ],
+        isElectronicSignature: [
+          { required: true, message: '请设置电签状态', trigger: 'change' },
+        ],
+        isTestModule: [
+          { required: true, message: '请设置试验模块状态', trigger: 'change' },
+        ],
+        isReferenceNumber: [
+          { required: true, message: '请设置是否引用编号', trigger: 'change' },
+        ],
+        isCopyData: [
+          { required: true, message: '请设置是否复制数据', trigger: 'change' },
+        ],
         contractorUnitName: [
           { required: true, message: '请输入业主单位名称', trigger: 'blur' },
         ],
@@ -862,10 +914,10 @@ export default {
           if (Number(this.contractForm.contractAmount) < 0) {
             this.contractForm.contractAmount = 0;
           }
-          if(Number(this.contractForm.securityLevel) <0){
+          if (Number(this.contractForm.securityLevel) < 0) {
             this.contractForm.securityLevel = 0;
           }
-          if(Number(this.contractForm.storagePeriod) <0){
+          if (Number(this.contractForm.storagePeriod) < 0) {
             this.contractForm.storagePeriod = 0;
           }
           this.$nextTick(() => {
@@ -898,10 +950,10 @@ export default {
           if (Number(this.contractForm.contractAmount) < 0) {
             this.contractForm.contractAmount = 0;
           }
-          if(Number(this.contractForm.securityLevel) <0){
+          if (Number(this.contractForm.securityLevel) < 0) {
             this.contractForm.securityLevel = 0;
           }
-          if(Number(this.contractForm.storagePeriod) <0){
+          if (Number(this.contractForm.storagePeriod) < 0) {
             this.contractForm.storagePeriod = 0;
           }
           this.$nextTick(() => {

+ 1 - 0
src/views/manager/projectinfo/tree.vue

@@ -526,6 +526,7 @@
         <el-button
           style="margin-left:30px;"
           type="primary"
+          v-throttle='2000'
           @click="saveLinkTab()"
         >确 定</el-button>
       </span>

+ 0 - 1
src/views/manager/projectinfo/treeTemplate/dynamicExcel.vue

@@ -96,7 +96,6 @@ export default {
         }
       })
       var component = new MyComponent().$mount()
-      let na = document.getElementById('parent')
       document.getElementById('parent').appendChild(component.$el);
     },
     async copss () {

+ 29 - 17
src/views/system/user.vue

@@ -103,7 +103,7 @@
                 :disabled="true"
               ></el-input>
               <el-button
-                @click="deleteProject(key,type)"
+                @click="deleteProject2(key,type)"
                 class="marleft10"
                 type="danger"
                 icon="el-icon-delete"
@@ -383,7 +383,7 @@ import {
   updatePlatform,
   add,
   grant,
-  resetPassword, unlock
+  resetPassword, unlock, removeUserProjectInfoAndRoleById
 } from "@/api/system/user";
 import { getProjectList } from "@/api/manager/projectinfo";
 
@@ -1112,24 +1112,32 @@ export default {
       this.findProjectAndContractList(row.id)  //编辑获取参建项目
       this.$refs.crud.rowEdit(row, index)
     },
+    deleteProject2 (key, type) {//删除参建项目一条项目
+      if (type == 'add') {
+        this.fromss.projectAndUserList.splice(this.fromss.projectAndUserList[key], 1)
+      } else {
+        this.removeUserProjectInfoAndRoleById(this.fromss.projectAndUserList[key].dataInfo[0].id)
+      }
+    },
     deleteProject (key, type, index) {//删除参建项目按钮
       if (type == 'add') {
-        // this.fromss.projectAndUserList[key].dataInfo.forEach(val => {
-        //   if (val.id == this.fromss.projectAndUserList[key].contractId) {
-        //     if (this.fromss.projectAndUserList[key].dataInfo.length == 1) {
-        //       this.fromss.projectAndUserList.splice(this.fromss.projectAndUserList[key], 1)
-        //     } else {
-        //       this.fromss.projectAndUserList[key].roleName = this.fromss.projectAndUserList[key].dataInfo[1].roleName
-        //       this.fromss.projectAndUserList[key].contractName = this.fromss.projectAndUserList[key].dataInfo[1].id
-        //       this.fromss.projectAndUserList[key].contractId = this.fromss.projectAndUserList[key].dataInfo[1].id
-        //       this.fromss.projectAndUserList[key].dataInfo.splice(val, 1)
-        //     }
-        //   }
-        // })
-
-        this.fromss.projectAndUserList[key].dataInfo[index]
+        if (this.fromss.projectAndUserList[key].dataInfo.length == 1) {
+          this.fromss.projectAndUserList.splice(this.fromss.projectAndUserList[key], 1)
+        } else {
+          this.fromss.projectAndUserList[key].dataInfo.splice(this.fromss.projectAndUserList[key].dataInfo[index], 1)
+          this.fromss.projectAndUserList[key].roleName = this.fromss.projectAndUserList[key].dataInfo[0].roleName
+          this.fromss.projectAndUserList[key].contractName = this.fromss.projectAndUserList[key].dataInfo[0].id
+          this.fromss.projectAndUserList[key].contractId = this.fromss.projectAndUserList[key].dataInfo[0].id
+        }
       } else {
-        this.removeUsersByIds(this.fromss.projectAndUserList[key].contractName)
+        this.removeUsersByIds(this.fromss.projectAndUserList[key].dataInfo[index].id)
+      }
+    },
+    async removeUserProjectInfoAndRoleById (id) {//参建项目删除一条项目
+      const { data: res } = await removeUserProjectInfoAndRoleById({ id })
+      console.log(res);
+      if (res.code == 200) {
+        await this.findProjectAndContractList(this.fromss.userId)
       }
     },
     async beforeClose (done) {//弹框关闭事件
@@ -1149,6 +1157,10 @@ export default {
         const { data: res } = await removeUsersByIds(ids)
         console.log(res);
         if (res.code == 200) {
+          this.$message({
+            type: 'success',
+            message: '删除成功'
+          })
           await this.findProjectAndContractList(this.fromss.userId)
         }
         this.deletexiangmu = false