Commit 474c04a5 authored by dlkong's avatar dlkong
Browse files

岗位清单配置

parent 0a982eb5
Loading
Loading
Loading
Loading
+17 −0
Original line number Original line Diff line number Diff line
@@ -58,3 +58,20 @@ export function saveCurrentPost(data) {
    data: data
    data: data
  })
  })
}
}

// 隐患清单库
export function getlibraryListFun(query) {
  return request({
    url: '/system/risk/existing/list',
    method: 'get',
    params: query
  })
}
// 岗位用户巡查清单列表
export function getCurrentRiskPatrol(query) {
  return request({
    url: '/risk/riskPostList/list',
    method: 'get',
    params: query
  })
}
+319 −19
Original line number Original line Diff line number Diff line
@@ -78,7 +78,7 @@
    </div>
    </div>
    <!-- 添加或修改现状风险岗位对话框 -->
    <!-- 添加或修改现状风险岗位对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
    <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
      <el-tabs v-model="activeName">
      <el-tabs v-model="activeName" @tab-click="tabChange">
        <el-tab-pane label="基础信息" name="first">
        <el-tab-pane label="基础信息" name="first">
          <el-form ref="form" :model="form" :rules="rules" label-width="84px">
          <el-form ref="form" :model="form" :rules="rules" label-width="84px">
          <el-form-item label="岗位名称" prop="riskPostName">
          <el-form-item label="岗位名称" prop="riskPostName">
@@ -112,49 +112,135 @@
        <el-tab-pane label="清单匹配" name="second">
        <el-tab-pane label="清单匹配" name="second">
          <el-form ref="listForm" :model="listForm" :rules="listRules" label-width="120px"  label-position="top">
          <el-form ref="listForm" :model="listForm" :rules="listRules" label-width="120px"  label-position="top">
             <el-form-item label="匹配模式" prop="postState">
             <el-form-item label="匹配模式" prop="postState">
                <el-radio-group v-model="listForm.postState" @change="radioChange">
                <el-radio-group v-model="listForm.postState" @input="radioChange">
                  <el-radio label="1">一岗一人巡查模式</el-radio>
                  <el-radio label="0">一岗一人巡查模式</el-radio>
                  <el-radio label="0">一岗多人巡查模式</el-radio>
                  <el-radio label="1">一岗多人巡查模式</el-radio>
                </el-radio-group>
                </el-radio-group>
              </el-form-item>
              </el-form-item>
              <el-form-item label="岗位清单配置" prop="hdType" v-if="listForm.postState == '1'">
              <el-form-item label="岗位清单配置" prop="currentRiskTypeList" v-if="listForm.postState == '0'" id="currentRiskTypeList">
                <el-input v-model="listForm.hdType" style="width:80%;margin-right:20px"></el-input>
                <!-- <el-input v-model="listForm.currentRiskTypeList" style="width:80%;margin-right:20px"></el-input> -->
                <el-button type="primary">隐患清单库</el-button>
                <div style="display:inline-block;width:80%;margin-right:20px;border:1px solid #eee;padding:5px 10px;min-height:40px">
                  <span style="display:inline-block;margin-right:10px;line-height:15px;background-color:#1890FF;padding:5px 10px;color:#fff;" v-for="(item, index) in listForm.currentRiskTypeList" :key="index" >{{item.type || item.currentRiskType}}</span>
                </div>
                <el-button type="primary" @click="getPatrolLibrary" style="height:35px">隐患清单库</el-button>
              </el-form-item>
              </el-form-item>
              <el-form-item label="岗位清单配置" prop="hdType" v-if="listForm.postState == '0'">
              <el-form-item label="岗位清单配置" prop="hdType" v-if="listForm.postState == '1'">
                 <el-table :data="listUserTabel" >
                 <el-table :data="listUserTabel"  empty-text="暂无数据,请先在‘基础信息’中选择岗位成员!">
                    <el-table-column type="index" label="序号" width="50"/>
                    <el-table-column type="index" label="序号" width="50"/>
                    <el-table-column label="姓名" align="center" prop="userName" width="140" :show-overflow-tooltip="true"/>
                    <el-table-column label="姓名" align="center" prop="userName" width="140" :show-overflow-tooltip="true"/>
                    <el-table-column label="工号" align="center" prop="nickName" width="140" :show-overflow-tooltip="true" />
                    <el-table-column label="状态" align="center" prop="status" width="140">
                    <el-table-column label="状态" align="center" prop="postName" width="140" :show-overflow-tooltip="true" />
                      <template slot-scope="scope">
                    <el-table-column label="巡查清单" align="center" prop="postName" :show-overflow-tooltip="true" />
                        <el-switch v-model="scope.row.status" @change="statusChange(scope.$index, $event)">
                        </el-switch>
                      </template>
                    </el-table-column>
                    <el-table-column label="巡查清单" align="center" prop="postNameShow" :show-overflow-tooltip="true">
                      <template slot-scope="scope">
                        <el-button  size="mini" type="text" v-for="(item, index) in scope.row.postNameShow" :key="index" >{{item.type || item.currentRiskType}}</el-button>
                      </template>
                    </el-table-column>
                    <el-table-column label="操作" align="center" width="140">
                    <el-table-column label="操作" align="center" width="140">
                      <template slot-scope="scope">
                      <template slot-scope="scope">
                        <el-button
                        <el-button
                          size="mini"
                          size="mini"
                          type="text"
                          type="text"
                          icon="el-icon-edit"
                          icon="el-icon-edit"
                          @click="selectList(scope.row)"
                          @click="selectList(scope.row, scope.$index)"
                        >清单库选择</el-button>
                        >清单库选择</el-button>
                      </template>
                      </template>
                    </el-table-column>
                    </el-table-column>
                 </el-table>
                 </el-table>
              </el-form-item>
              </el-form-item>
              <p> <span style="color: red;">系统提示:可根据工程进度调整巡查类型及内容。</span></p>
              <p> <span style="color: red;">系统提示:可根据实际情况任意增加或减少巡查类型及巡查内容。</span></p>
          </el-form>
          </el-form>
        </el-tab-pane>
        </el-tab-pane>
      </el-tabs>
      </el-tabs>
      
      <div slot="footer" class="dialog-footer">
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">确 定</el-button>
        <el-button type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
      </div>
    </el-dialog>
    </el-dialog>
     <el-dialog title="选择隐患清单库" :visible.sync="patrolLibraryOpen" width="60%" append-to-body>
        <el-table :data="libraryList" @selection-change="handleSelectionChange" ref="libraryListTabel" :key="isUpdate">
           <el-table-column
              type="selection"
              width="55">
            </el-table-column>
            <el-table-column
              label="场所位置"
              width="200"
              show-overflow-tooltip
              align="center"
              >
              <template slot-scope="scope">{{ scope.row.buildingName }}{{ scope.row.floorName }}{{ scope.row.roomName }}</template>
            </el-table-column>
            <el-table-column
              label="风险源"
              width="120"
              align="center"
              >
              <template slot-scope="scope">{{ scope.row.name }}</template>
            </el-table-column>
            <el-table-column
              label="辨识标准"
              width="120"
              show-overflow-tooltip
              align="center">
              <template slot-scope="scope">{{ scope.row.referenceBasis }}</template>
            </el-table-column>
            <el-table-column
              label="存在部位"
              width="120"
              align="center">
              <template slot-scope="scope">{{ scope.row.presenceLocation }}</template>
            </el-table-column>
            <el-table-column
              label="风险类型(GB6441)"
              width="120"
              show-overflow-tooltip
              align="center">
              <template slot-scope="scope">{{ scope.row.type }}</template>
            </el-table-column>
            <el-table-column
              label="风险等级"
              width="120"
              align="center">
              <template slot-scope="scope">{{ scope.row.level }}</template>
            </el-table-column>
            <el-table-column
              label="周期"
              width="120"
              align="center"
              prop="cycle">
              <template slot-scope="scope">
                 <el-select v-model="scope.row.cycle" placeholder="请选择" @change="cycleSelChange">
                  <el-option
                    v-for="(item, index) in cycleList"
                    :key="index"
                    :label="item.name"
                    :value="item.cycle">
                  </el-option>
                </el-select>
              </template>
            </el-table-column>
        </el-table>
        <pagination
          v-show="libraryTotal > 0"
          :total="libraryTotal"
          :page.sync="libraryParams.pageNum"
          :limit.sync="libraryParams.pageSize"
          @pagination="getlibraryList"
        />
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="patrolLibrarySubmit">确 定</el-button>
        <el-button @click="patrolLibraryOpen = false">取 消</el-button>
      </div>
     </el-dialog>
  </div>
  </div>
</template>
</template>


<script>
<script>
import { listCurrentRiskPost, userCurrentRiskPost, saveCurrentPost, getCurrentRiskPost, delCurrentRiskPost, addCurrentRiskPost, updateCurrentRiskPost } from "@/api/system/currentRiskPost";
import { listCurrentRiskPost, userCurrentRiskPost, getlibraryListFun, saveCurrentPost, delCurrentRiskPost, getCurrentRiskPatrol } from "@/api/system/currentRiskPost";


export default {
export default {
  name: "projectPost",
  name: "projectPost",
@@ -178,12 +264,17 @@ export default {
      title: "",
      title: "",
      // 是否显示弹出层
      // 是否显示弹出层
      open: false,
      open: false,
      patrolLibraryOpen:false,
      // 查询参数
      // 查询参数
      queryParams: {
      queryParams: {
        pageNum: 1,
        pageNum: 1,
        pageSize: 9999,
        pageSize: 9999,
        riskPostName: null,
        riskPostName: null,
      },
      },
      libraryParams: {
        pageNum: 1,
        pageSize: 10,
      },
      form:{},
      form:{},
      patrolTypeList:[],// 岗位类型
      patrolTypeList:[],// 岗位类型
      userList:[],
      userList:[],
@@ -195,9 +286,40 @@ export default {
        postState:[{ required: true, message: '请选择匹配模式', trigger: 'change' }]
        postState:[{ required: true, message: '请选择匹配模式', trigger: 'change' }]
      }, 
      }, 
      listForm:{//清单匹配
      listForm:{//清单匹配
        postState:'1'
        postState:'0',
        currentRiskTypeList:[]
      } ,
      listUserTabel:[],
      libraryList:[],
      libraryTotal:0,
      currentRiskList:[],
      multipleSelection:[],
      cycleList:[
        {
          name:'日查',
          cycle:'0'
        },
        {
          name:'周查',
          cycle:'1'
        },
        {
          name:'月查',
          cycle:'2'
        },
        {
          name:'季查',
          cycle:'3'
        },
        },
      listUserTabel:[]
        {
          name:'年查',
          cycle:'4'
        },
      ],
      isUpdate:false,
      postList:[],
      userId:'',
      userIndex:''
    };
    };
  },
  },
  created() {
  created() {
@@ -227,11 +349,18 @@ export default {
    cancel() {
    cancel() {
      this.open = false;
      this.open = false;
      this.reset();
      this.reset();
      this.postList = []
      this.listForm.currentRiskTypeList = []
    },
    },
    // 表单重置
    // 表单重置
    reset() {
    reset() {
      this.form = {}
      this.form = {}
      this.activeName = 'first'
      this.activeName = 'first'
      this.listForm = {//清单匹配
        postState:'0',
        currentRiskTypeList:[]
      } 
      this.listUserTabel = []
    },
    },
    /** 搜索按钮操作 */
    /** 搜索按钮操作 */
    handleQuery() {
    handleQuery() {
@@ -263,6 +392,7 @@ export default {
        row.userId = arr2
        row.userId = arr2
      }
      }
      this.form = row
      this.form = row
      this.listForm.postState = this.form.patrolType
      this.getUserList()
      this.getUserList()
      this.open = true;
      this.open = true;
      this.title = "修改现状风险岗位";
      this.title = "修改现状风险岗位";
@@ -275,10 +405,21 @@ export default {
              "projectId":this.$route.params.id,
              "projectId":this.$route.params.id,
              "riskPostCode":this.form.riskPostCode,
              "riskPostCode":this.form.riskPostCode,
              "riskPostName":this.form.riskPostName,
              "riskPostName":this.form.riskPostName,
              "patrolType":this.form.patrolType,
              "riskPostDesc":this.form.riskPostDesc,
              "riskPostDesc":this.form.riskPostDesc,
              "userId":this.form.userId.join(),
              "userId":this.form.userId.join(),
              "patrolType":this.listForm.postState,
              "list":this.postList
            }
            if (this.listForm.postState == '0') { // 一岗一人巡查模式
              params.list = this.postList
            }else{
              let arr = []
              this.listUserTabel.forEach((item) => {
                 arr = [...item.postName, ...arr]
              })
              params.list = arr
            }
            }
            console.log('params==>>',params)
          if (this.form.id != null) {
          if (this.form.id != null) {
            params.id = this.form.id
            params.id = this.form.id
            saveCurrentPost(params).then(response => {
            saveCurrentPost(params).then(response => {
@@ -305,6 +446,160 @@ export default {
        this.$modal.msgSuccess("删除成功");
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
      }).catch(() => {});
    },
    },
    // 匹配模式radio
    radioChange(e){
      if (e == '1') {
         this.listUserTabel = []
         let arr = this.form.userId
          arr.forEach((item, index) => {
             let data = {
               userName: this.userList.find( i => i.userId == item).nickName,
               postName:[],
               postNameShow:[],
               userId:item,
               status:true
             }
             this.listUserTabel.push(data)
          })
          console.log('this.listUserTabel==>>',this.listUserTabel)
      }
    },
    // 一岗一人巡查模式 清单库
    getPatrolLibrary(){
      this.patrolLibraryOpen = true
      this.getlibraryList()
    },
    getlibraryList(){
       getlibraryListFun(this.libraryParams).then(response => {
        this.libraryList = response.rows;
        this.libraryList.forEach((item) => {
           item.cycle = '0'
        })
        this.libraryTotal = response.total;
      });
    },
    // 选择清单库确定
    patrolLibrarySubmit(){
      this.postList = []
      this.listForm.currentRiskTypeList = []
      this.patrolLibraryOpen = false
      this.multipleSelection.forEach((item) => {
        if (this.listForm.postState == '0') { // 一岗一人巡查模式
          let data = {
            id: item.id,
            patrolType: item.cycle,
          }
          this.postList.push(data)
          if(!this.listForm.currentRiskTypeList.some( items => items.type === item.type)){
              this.listForm.currentRiskTypeList.push(item)
          }
        }else{ // 一岗多人巡查模式
           let data = {
            id: item.id,
            patrolType: item.cycle,
            userId:this.userId,
            status:this.userStatus ? '0' : '1'
          }
          this.listUserTabel[this.userIndex].postName.push(data)
          if(!this.listUserTabel[this.userIndex].postNameShow.some( items => items.type === item.type)){
              this.listUserTabel[this.userIndex].postNameShow.push(item)
          }
        }
      })
      // console.log('listUserTabel==>>',this.listUserTabel)
    },
    // 状态切换
    statusChange(num, e){
      // console.log('num==>>', num)
      this.listUserTabel.forEach((item, index) => {
         if (index == num) {
           item.postName.forEach((items) => {
            items.status = e ? '0' : '1'
         })
         }
      })
      console.log(',this.listUserTabel==>>',this.listUserTabel)
    },
    // 一岗多人巡查模式  清单库
    selectList(row, index){
      // console.log('row==>>',row)
      this.patrolLibraryOpen = true
      this.userId = row.userId
      this.userIndex = index
      this.userStatus = row.status
      this.getlibraryList()
    },
    // tabs切换
    tabChange(tab, event){
      // console.log('tab==>>',tab.name)
      if (tab.name == 'second' && this.title =='修改现状风险岗位' ) { //清单匹配  
      // 岗位用户巡查清单列表
        this.listUserTabel = []
        this.getCurrentRiskPatrol()
      }else{
        this.listForm.postState = '0'
      }
    },
    getCurrentRiskPatrol(){
      this.listForm.currentRiskTypeList = []
      let params = {
        postId: this.form.id,
        pageNum: 1,
        pageSize: 9999,
      }
       getCurrentRiskPatrol(params).then(response => {
        
        if (this.listForm.postState == '0') { // 一岗一人巡查模式
          response.rows.forEach((item) => {
             let data = {
              id: item.currentRiskId,
              patrolType: item.patrolType,
            }
            this.postList.push(data)
            if(!this.listForm.currentRiskTypeList.some( items => items.currentRiskType === item.currentRiskType)){
              this.listForm.currentRiskTypeList.push(item)
            }
          })
          console.log('==>>',this.listForm.currentRiskTypeList)
        }else{ // 一岗多人巡查模式
          let arr = this.form.nickName.split(',')
          arr.forEach((item, index) => {
             let data = {
               userName: item,
               postName:[],
               postNameShow:[],
               userId:this.userList.find( i => i.nickName == item).userId,
               status:''
             }
             this.listUserTabel.push(data)
          })
          for (const val of response.rows) {
            this.listUserTabel.forEach((item) => {
               if (item.userId == val.userId) {
                item.status = val.status == '0' ? true : false
                if (!item.postNameShow.some( items => items.currentRiskType === val.currentRiskType)) {
                  item.postNameShow.push(val)
                }
                let data = {
                  id: val.currentRiskId,
                  patrolType: val.patrolType,
                  userId:val.userId,
                  status: val.status
                }
                item.postName.push(data)
               }
            })
          }
          // console.log('this.listUserTabel==>>',this.listUserTabel)
        }
      })
    },
    handleSelectionChange(val){
      this.multipleSelection = val;
    },
    cycleSelChange(){
      this.isUpdate = !this.isUpdate
    }
  }
  }
};
};
</script>
</script>
@@ -399,4 +694,9 @@ export default {
  ::v-deep .el-form-item--medium .el-form-item__content{
  ::v-deep .el-form-item--medium .el-form-item__content{
    margin-left: 20px;
    margin-left: 20px;
  }
  }
  #currentRiskTypeList ::v-deep .el-form-item__content {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
</style>
</style>