4 changed files with 773 additions and 5 deletions
			
			
		@ -0,0 +1,770 @@ | 
				
			|||||
 | 
					<template> | 
				
			||||
 | 
					  <div v-if="pageLoading" class="resi-container"> | 
				
			||||
 | 
					    <el-card class="resi-card-table"> | 
				
			||||
 | 
					      <div class="resi-row-btn"> | 
				
			||||
 | 
					        <el-form ref="searchForm" :inline="true" :model="searchForm" class="demo-form-inline" label-width="80px"> | 
				
			||||
 | 
					          <div> | 
				
			||||
 | 
					            <el-form-item label="所属网格" prop="gridId"> | 
				
			||||
 | 
					              <el-select v-model="searchForm.gridId" filterable placeholder="请选择" clearable> | 
				
			||||
 | 
					                <el-option | 
				
			||||
 | 
					                  v-for="item in demandOptions" | 
				
			||||
 | 
					                  :key="item.value" | 
				
			||||
 | 
					                  :label="item.label" | 
				
			||||
 | 
					                  :value="item.value"> | 
				
			||||
 | 
					                </el-option> | 
				
			||||
 | 
					              </el-select> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					            <el-form-item label="需求分类" prop="categoryCode"> | 
				
			||||
 | 
					              <el-select v-model="searchForm.categoryCode" filterable placeholder="请选择" clearable> | 
				
			||||
 | 
					                <el-option | 
				
			||||
 | 
					                  v-for="item in demandOptions" | 
				
			||||
 | 
					                  :key="item.value" | 
				
			||||
 | 
					                  :label="item.label" | 
				
			||||
 | 
					                  :value="item.value"> | 
				
			||||
 | 
					                </el-option> | 
				
			||||
 | 
					              </el-select> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					            <el-form-item label="需求人" prop="demandUserName"> | 
				
			||||
 | 
					              <el-input v-model="searchForm.demandUserName" placeholder="请输入内容" clearable=""></el-input> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					            <el-form-item label="上报时间" prop="reportStartTime"> | 
				
			||||
 | 
					              <el-date-picker | 
				
			||||
 | 
					                v-model="searchForm.reportStartTime" | 
				
			||||
 | 
					                type="daterange" | 
				
			||||
 | 
					                format="yyyy 年 MM 月 dd 日" | 
				
			||||
 | 
					                value-format="yyyy-MM-dd" | 
				
			||||
 | 
					                range-separator="至" | 
				
			||||
 | 
					                start-placeholder="开始日期" | 
				
			||||
 | 
					                end-placeholder="结束日期" | 
				
			||||
 | 
					                clearable=""> | 
				
			||||
 | 
					              </el-date-picker> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					          <div> | 
				
			||||
 | 
					            <el-form-item label="状态" prop="status"> | 
				
			||||
 | 
					              <el-select v-model="searchForm.status" filterable placeholder="请选择" clearable> | 
				
			||||
 | 
					                <el-option | 
				
			||||
 | 
					                  v-for="item in statusOptions" | 
				
			||||
 | 
					                  :key="item.value" | 
				
			||||
 | 
					                  :label="item.label" | 
				
			||||
 | 
					                  :value="item.value"> | 
				
			||||
 | 
					                </el-option> | 
				
			||||
 | 
					              </el-select> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					            <el-form-item label="服务类型" prop="serviceType"> | 
				
			||||
 | 
					              <el-select v-model="searchForm.serviceType" filterable placeholder="请选择" clearable> | 
				
			||||
 | 
					                <el-option | 
				
			||||
 | 
					                  v-for="item in serviceOptions" | 
				
			||||
 | 
					                  :key="item.value" | 
				
			||||
 | 
					                  :label="item.label" | 
				
			||||
 | 
					                  :value="item.value"> | 
				
			||||
 | 
					                </el-option> | 
				
			||||
 | 
					              </el-select> | 
				
			||||
 | 
					              <!-- <el-select v-model="searchForm.serverId" filterable placeholder="请选择" clearable> | 
				
			||||
 | 
					                <el-option | 
				
			||||
 | 
					                  v-for="item in demandOptions" | 
				
			||||
 | 
					                  :key="item.value" | 
				
			||||
 | 
					                  :label="item.label" | 
				
			||||
 | 
					                  :value="item.value"> | 
				
			||||
 | 
					                </el-option> | 
				
			||||
 | 
					              </el-select> --> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					            <el-form-item prop="serverId"> | 
				
			||||
 | 
					              <el-select v-model="searchForm.serverId" filterable placeholder="请选择" clearable> | 
				
			||||
 | 
					                <el-option | 
				
			||||
 | 
					                  v-for="item in demandOptions" | 
				
			||||
 | 
					                  :key="item.value" | 
				
			||||
 | 
					                  :label="item.label" | 
				
			||||
 | 
					                  :value="item.value"> | 
				
			||||
 | 
					                </el-option> | 
				
			||||
 | 
					              </el-select> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					            <el-form-item label="服务时间" prop="wantServiceStartTime"> | 
				
			||||
 | 
					              <el-date-picker | 
				
			||||
 | 
					                v-model="searchForm.wantServiceStartTime" | 
				
			||||
 | 
					                type="daterange" | 
				
			||||
 | 
					                format="yyyy 年 MM 月 dd 日" | 
				
			||||
 | 
					                value-format="yyyy-MM-dd" | 
				
			||||
 | 
					                range-separator="至" | 
				
			||||
 | 
					                start-placeholder="开始日期" | 
				
			||||
 | 
					                end-placeholder="结束日期" | 
				
			||||
 | 
					                clearable> | 
				
			||||
 | 
					              </el-date-picker> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					            <el-form-item> | 
				
			||||
 | 
					              <el-button type="primary" @click="handleSearch">查询</el-button> | 
				
			||||
 | 
					            </el-form-item> | 
				
			||||
 | 
					            <el-form-item> | 
				
			||||
 | 
					            <el-button @click="resetForm('searchForm')">重置</el-button> | 
				
			||||
 | 
					          </el-form-item> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					           | 
				
			||||
 | 
					        </el-form> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div class="resi-row-btn"> | 
				
			||||
 | 
					        <el-button type="success" @click="handleAdd('1', 'add')">新增需求</el-button> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					       | 
				
			||||
 | 
					      <el-table | 
				
			||||
 | 
					        :data="tableData" | 
				
			||||
 | 
					        row-key="categoryId" | 
				
			||||
 | 
					        v-loading="tableLoading" | 
				
			||||
 | 
					        border | 
				
			||||
 | 
					        max-height="800" | 
				
			||||
 | 
					        style="width: 100%" | 
				
			||||
 | 
					        class="resi-table" | 
				
			||||
 | 
					      > | 
				
			||||
 | 
					        <el-table-column label="序号" type="index" align="center" width="50"> | 
				
			||||
 | 
					        </el-table-column> | 
				
			||||
 | 
					        <el-table-column | 
				
			||||
 | 
					          v-for="item in tableHeader" | 
				
			||||
 | 
					          :key="item.columnName" | 
				
			||||
 | 
					          :prop="item.columnName" | 
				
			||||
 | 
					          :label="item.label" | 
				
			||||
 | 
					          :align="item.align" | 
				
			||||
 | 
					          :width="item.width" | 
				
			||||
 | 
					        > | 
				
			||||
 | 
					          <template slot-scope="scope"> | 
				
			||||
 | 
					            <span>{{ handleFilterSpan(scope.row, item) }}</span> | 
				
			||||
 | 
					          </template> | 
				
			||||
 | 
					        </el-table-column> | 
				
			||||
 | 
					        <el-table-column label="操作" align="center" width="200"> | 
				
			||||
 | 
					          <template slot-scope="scope"> | 
				
			||||
 | 
					            <el-button | 
				
			||||
 | 
					              @click="handleLook(scope.row)" | 
				
			||||
 | 
					              type="text" | 
				
			||||
 | 
					              size="small" | 
				
			||||
 | 
					              class="btn-color-look" | 
				
			||||
 | 
					              >查看</el-button | 
				
			||||
 | 
					            > | 
				
			||||
 | 
					            <el-button | 
				
			||||
 | 
					                v-if="scope.row.level == 1" | 
				
			||||
 | 
					                @click="handleAdd('2', 'add', scope.row)" | 
				
			||||
 | 
					                type="text" | 
				
			||||
 | 
					                size="small" | 
				
			||||
 | 
					                >指派</el-button> | 
				
			||||
 | 
					            <el-button | 
				
			||||
 | 
					              v-if="scope.row.level == 1" | 
				
			||||
 | 
					              @click="handleAdd('2', 'add', scope.row)" | 
				
			||||
 | 
					              type="text" | 
				
			||||
 | 
					              size="small" | 
				
			||||
 | 
					              >取消</el-button> | 
				
			||||
 | 
					            <el-button | 
				
			||||
 | 
					              v-if="scope.row.level == 1" | 
				
			||||
 | 
					              @click="handleAdd('2', 'add', scope.row)" | 
				
			||||
 | 
					              type="text" | 
				
			||||
 | 
					              size="small" | 
				
			||||
 | 
					              >完成情况</el-button> | 
				
			||||
 | 
					            <el-button | 
				
			||||
 | 
					                @click="handleEdit(scope.row, 'edit')" | 
				
			||||
 | 
					                type="text" | 
				
			||||
 | 
					                size="small" | 
				
			||||
 | 
					                class="btn-color-edit" | 
				
			||||
 | 
					                >编辑</el-button> | 
				
			||||
 | 
					          </template> | 
				
			||||
 | 
					        </el-table-column> | 
				
			||||
 | 
					      </el-table> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <el-pagination | 
				
			||||
 | 
					          @size-change="handleSizeChange" | 
				
			||||
 | 
					          @current-change="handleCurrentChange" | 
				
			||||
 | 
					          :current-page.sync="currentPage" | 
				
			||||
 | 
					          :page-sizes="[20, 50, 100, 200]" | 
				
			||||
 | 
					          :page-size="pageSize" | 
				
			||||
 | 
					          layout="sizes, prev, pager, next" | 
				
			||||
 | 
					          :total="total" | 
				
			||||
 | 
					        > | 
				
			||||
 | 
					        </el-pagination> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </el-card> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <el-dialog | 
				
			||||
 | 
					      title="需求信息" | 
				
			||||
 | 
					      :visible.sync="dialogVisible" | 
				
			||||
 | 
					      width="40%" | 
				
			||||
 | 
					      append-to-body | 
				
			||||
 | 
					      :close-on-click-modal="false" | 
				
			||||
 | 
					      :before-close="handlerCancle" | 
				
			||||
 | 
					    > | 
				
			||||
 | 
					      <el-form label-width="120px" :model="form" :rules="rules" ref="ruleForm" class="form-wr"> | 
				
			||||
 | 
					        <el-form-item label="所属网格" prop="gridId"> | 
				
			||||
 | 
					          <el-select v-model="form.gridId" filterable placeholder="请选择" class="input-width" clearable> | 
				
			||||
 | 
					            <el-option | 
				
			||||
 | 
					              v-for="item in demandOptions" | 
				
			||||
 | 
					              :key="item.value" | 
				
			||||
 | 
					              :label="item.label" | 
				
			||||
 | 
					              :value="item.value"> | 
				
			||||
 | 
					            </el-option> | 
				
			||||
 | 
					          </el-select> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					        <el-form-item label="需求类型" prop="parentCode"> | 
				
			||||
 | 
					          <el-select v-model="form.parentCode" filterable placeholder="请选择" class="input-width" clearable> | 
				
			||||
 | 
					            <el-option | 
				
			||||
 | 
					              v-for="item in demandOptions" | 
				
			||||
 | 
					              :key="item.value" | 
				
			||||
 | 
					              :label="item.label" | 
				
			||||
 | 
					              :value="item.value"> | 
				
			||||
 | 
					            </el-option> | 
				
			||||
 | 
					          </el-select> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					        <el-form-item label="上报类型" prop="reportType"> | 
				
			||||
 | 
					          <el-select v-model="form.reportType" filterable class="input-width" placeholder="请选择" clearable> | 
				
			||||
 | 
					            <el-option | 
				
			||||
 | 
					              v-for="item in demandOptions" | 
				
			||||
 | 
					              :key="item.value" | 
				
			||||
 | 
					              :label="item.label" | 
				
			||||
 | 
					              :value="item.value"> | 
				
			||||
 | 
					            </el-option> | 
				
			||||
 | 
					          </el-select> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					        <el-form-item label="上报人" prop="reportUserName"> | 
				
			||||
 | 
					          <el-input v-model="form.reportUserName" placeholder="请输入" class="input-width" clearable></el-input> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					        <el-form-item label="上报人手机号" prop="reportUserMobile"> | 
				
			||||
 | 
					          <el-input v-model="form.reportUserMobile" placeholder="请输入" class="input-width" clearable></el-input> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					        <el-form-item label="上报时间" prop="reportTime"> | 
				
			||||
 | 
					          <el-date-picker | 
				
			||||
 | 
					            v-model="form.reportTime" | 
				
			||||
 | 
					            type="date" | 
				
			||||
 | 
					            class="input-width" | 
				
			||||
 | 
					            clearable | 
				
			||||
 | 
					            placeholder="选择日期" | 
				
			||||
 | 
					            format="yyyy 年 MM 月 dd 日" | 
				
			||||
 | 
					            value-format="yyyy-MM-dd"> | 
				
			||||
 | 
					          </el-date-picker> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					        <el-form-item label="需求人" prop="demandUserId"> | 
				
			||||
 | 
					          <el-select v-model="form.demandUserId" class="input-width" filterable placeholder="请选择" clearable> | 
				
			||||
 | 
					            <el-option | 
				
			||||
 | 
					              v-for="item in demandOptions" | 
				
			||||
 | 
					              :key="item.value" | 
				
			||||
 | 
					              :label="item.label" | 
				
			||||
 | 
					              :value="item.value"> | 
				
			||||
 | 
					            </el-option> | 
				
			||||
 | 
					          </el-select> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					        <el-form-item label="服务时间" prop="wantServiceTime"> | 
				
			||||
 | 
					          <el-date-picker | 
				
			||||
 | 
					            v-model="form.wantServiceTime" | 
				
			||||
 | 
					            type="date" | 
				
			||||
 | 
					            class="input-width" | 
				
			||||
 | 
					            clearable | 
				
			||||
 | 
					            placeholder="选择日期" | 
				
			||||
 | 
					            format="yyyy 年 MM 月 dd 日" | 
				
			||||
 | 
					            value-format="yyyy-MM-dd"> | 
				
			||||
 | 
					          </el-date-picker> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					        <el-form-item label="需求内容" prop="content"> | 
				
			||||
 | 
					          <el-input v-model="form.content" :autosize="{ minRows: 2, maxRows: 10}" type="textarea" clearable class="input-width-textarea" placeholder="请输入内容"></el-input> | 
				
			||||
 | 
					        </el-form-item> | 
				
			||||
 | 
					      </el-form> | 
				
			||||
 | 
					      <div class="resi-btns"> | 
				
			||||
 | 
					        <el-button size="small" @click="handlerCancle">取消</el-button> | 
				
			||||
 | 
					        <el-button | 
				
			||||
 | 
					          type="primary" | 
				
			||||
 | 
					          size="small" | 
				
			||||
 | 
					          :loading="btnLoading" | 
				
			||||
 | 
					          @click="handleSUbmit" | 
				
			||||
 | 
					          >提交</el-button | 
				
			||||
 | 
					        > | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </el-dialog> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<script> | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					  data() { | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					      tableLoading: false, | 
				
			||||
 | 
					      btnLoading: false, | 
				
			||||
 | 
					      disabled: false, | 
				
			||||
 | 
					      pageLoading: false, | 
				
			||||
 | 
					      dialogVisible: false, | 
				
			||||
 | 
					      currentPage: 1, | 
				
			||||
 | 
					      pageSize: 20, | 
				
			||||
 | 
					      total: null, | 
				
			||||
 | 
					      tableData: [], | 
				
			||||
 | 
					      addLevel: '1', | 
				
			||||
 | 
					      addType: 'add', | 
				
			||||
 | 
					      value: '', | 
				
			||||
 | 
					      statusOptions: [ | 
				
			||||
 | 
					        { | 
				
			||||
 | 
					          label: '待处理', | 
				
			||||
 | 
					          value: 'pending' | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '已取消', | 
				
			||||
 | 
					          value: 'canceled' | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '已派单', | 
				
			||||
 | 
					          value: 'assigned' | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '已接单', | 
				
			||||
 | 
					          value: 'have_order' | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '已完成', | 
				
			||||
 | 
					          value: 'finished' | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					      ], | 
				
			||||
 | 
					      serviceOptions: [ | 
				
			||||
 | 
					        { | 
				
			||||
 | 
					          label: '志愿者', | 
				
			||||
 | 
					          value: 'volunteer' | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '社会组织', | 
				
			||||
 | 
					          value: 'social_org' | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '社区自组织', | 
				
			||||
 | 
					          value: 'community_org' | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '区域党建单位', | 
				
			||||
 | 
					          value: 'party_unit' | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					      ], | 
				
			||||
 | 
					      options: [ | 
				
			||||
 | 
					        { | 
				
			||||
 | 
					          label: '是', | 
				
			||||
 | 
					          value: 1 | 
				
			||||
 | 
					        },{ | 
				
			||||
 | 
					          label: '否', | 
				
			||||
 | 
					          value: 2 | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					      ], | 
				
			||||
 | 
					      demandOptions: [], | 
				
			||||
 | 
					      tableHeader: [ | 
				
			||||
 | 
					        { | 
				
			||||
 | 
					          label: '状态', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          columnName: 'status', | 
				
			||||
 | 
					          width: '120', | 
				
			||||
 | 
					          options: [ | 
				
			||||
 | 
					            { | 
				
			||||
 | 
					              label: '待处理', | 
				
			||||
 | 
					              value: 'pending' | 
				
			||||
 | 
					            }, { | 
				
			||||
 | 
					              label: '已取消', | 
				
			||||
 | 
					              value: 'canceled' | 
				
			||||
 | 
					            }, { | 
				
			||||
 | 
					              label: '已派单', | 
				
			||||
 | 
					              value: 'assigned' | 
				
			||||
 | 
					            }, { | 
				
			||||
 | 
					              label: '已接单', | 
				
			||||
 | 
					              value: 'have_order' | 
				
			||||
 | 
					            }, { | 
				
			||||
 | 
					              label: '已完成', | 
				
			||||
 | 
					              value: 'finished' | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					          ] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '所属网格', | 
				
			||||
 | 
					          columnName: 'gridName', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '', | 
				
			||||
 | 
					          options: [] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '需求类型', | 
				
			||||
 | 
					          columnName: 'categoryName', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '', | 
				
			||||
 | 
					          options: [] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '需求内容', | 
				
			||||
 | 
					          columnName: 'content', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '', | 
				
			||||
 | 
					          options: [] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '上报类型', | 
				
			||||
 | 
					          columnName: 'reportType', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '120', | 
				
			||||
 | 
					          options: [ | 
				
			||||
 | 
					            { | 
				
			||||
 | 
					              label: '社区帮办', | 
				
			||||
 | 
					              value: 'community' | 
				
			||||
 | 
					            }, { | 
				
			||||
 | 
					              label: '楼长帮办', | 
				
			||||
 | 
					              value: 'building_caption' | 
				
			||||
 | 
					            }, { | 
				
			||||
 | 
					              label: '党员帮办', | 
				
			||||
 | 
					              value: 'party' | 
				
			||||
 | 
					            }, { | 
				
			||||
 | 
					              label: '自身上报', | 
				
			||||
 | 
					              value: 'self_help' | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					          ] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '上报人', | 
				
			||||
 | 
					          columnName: 'reportUserName', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '120', | 
				
			||||
 | 
					          options: [] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '上报时间', | 
				
			||||
 | 
					          columnName: 'reportTime', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '120', | 
				
			||||
 | 
					          options: [] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '需求人', | 
				
			||||
 | 
					          columnName: 'demandUserName', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '80', | 
				
			||||
 | 
					          options: [] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '服务方', | 
				
			||||
 | 
					          columnName: 'serviceName', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '120', | 
				
			||||
 | 
					          options: [] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					          label: '服务时间', | 
				
			||||
 | 
					          columnName: 'wantServiceTime', | 
				
			||||
 | 
					          align: 'center', | 
				
			||||
 | 
					          width: '120', | 
				
			||||
 | 
					          options: [] | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					      ], | 
				
			||||
 | 
					      customerId: '', | 
				
			||||
 | 
					      searchForm: { | 
				
			||||
 | 
					        gridId: '', | 
				
			||||
 | 
					        categoryCode: '', | 
				
			||||
 | 
					        level: '', | 
				
			||||
 | 
					        demandUserName: '', | 
				
			||||
 | 
					        reportStartTime: '', | 
				
			||||
 | 
					        reportEndTime: '', | 
				
			||||
 | 
					        status: '', | 
				
			||||
 | 
					        serviceType: '', | 
				
			||||
 | 
					        serverId: '', | 
				
			||||
 | 
					        wantServiceStartTime: '', | 
				
			||||
 | 
					        wantServiceEndTime: '' | 
				
			||||
 | 
					      }, | 
				
			||||
 | 
					      form: { | 
				
			||||
 | 
					        gridId: '', | 
				
			||||
 | 
					        categoryCode: '', | 
				
			||||
 | 
					        parentCode: '', | 
				
			||||
 | 
					        content: '', | 
				
			||||
 | 
					        reportType: '', | 
				
			||||
 | 
					        reportUserName: '', | 
				
			||||
 | 
					        reportUserMobile: '', | 
				
			||||
 | 
					        reportTime: '', | 
				
			||||
 | 
					        wantServiceTime: '', | 
				
			||||
 | 
					        demandUserId: '', | 
				
			||||
 | 
					        demandUserName: '', | 
				
			||||
 | 
					        demandUserMobile: '' | 
				
			||||
 | 
					      }, | 
				
			||||
 | 
					      rules: { | 
				
			||||
 | 
					        gridId: [{ required: true, message: '所属网格不能为空', trigger: 'blur' }], | 
				
			||||
 | 
					        parentCode: [{ required: true, message: '需求分类不能为空', trigger: 'blur' }], | 
				
			||||
 | 
					        content: [{ required: true, message: '需求内容不能为空', trigger: 'blur' }], | 
				
			||||
 | 
					        reportType: [{ required: true, message: '上报类型不能为空', trigger: 'blur' }], | 
				
			||||
 | 
					        reportUserName: [{ required: true, message: '上报人不能为空', trigger: 'blur' }], | 
				
			||||
 | 
					        reportUserMobile: [{ required: true, message: '上报人手机号不能为空', trigger: 'blur' }], | 
				
			||||
 | 
					        reportTime: [{ required: true, message: '上报时间不能为空', trigger: 'blur' }], | 
				
			||||
 | 
					        demandUserId: [{ required: true, message: '需求人不能为空', trigger: 'blur' }], | 
				
			||||
 | 
					        wantServiceTime: [{ required: true, message: '服务时间不能为空', trigger: 'blur' }] | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  async created() { | 
				
			||||
 | 
					    this.customerId = localStorage.getItem('customerId') | 
				
			||||
 | 
					    this.getTableData() | 
				
			||||
 | 
					    this.getOptions() | 
				
			||||
 | 
					    this.pageLoading = true | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  mounted() { | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  methods: { | 
				
			||||
 | 
					    handleSizeChange(val) { | 
				
			||||
 | 
					      console.log(`每页 ${val} 条`) | 
				
			||||
 | 
					      this.pageSize = val | 
				
			||||
 | 
					      this.getTableData() | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    handleCurrentChange(val) { | 
				
			||||
 | 
					      console.log(`当前页: ${val}`) | 
				
			||||
 | 
					      this.currentPage = val | 
				
			||||
 | 
					      this.getTableData() | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    handleFilterSpan(row, item) { | 
				
			||||
 | 
					      let _val = '' | 
				
			||||
 | 
					      if (item.options && item.options.length > 0) { | 
				
			||||
 | 
					        item.options.forEach((n) => { | 
				
			||||
 | 
					          if (n.value === row[item.columnName]) _val = n.label | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					      return _val || row[item.columnName] | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    resetForm(formName) { | 
				
			||||
 | 
					      this.$refs[formName].resetFields() | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    handleSearch(val) { | 
				
			||||
 | 
					      console.log('searchhh--', val) | 
				
			||||
 | 
					      this.currentPage = 1 | 
				
			||||
 | 
					      this.getTableData() | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    handleAdd(type, addType, row) { | 
				
			||||
 | 
					      this.addLevel = type | 
				
			||||
 | 
					      this.addType = addType | 
				
			||||
 | 
					      if (type == '2') this.form = { ...row, categoryName: '' } | 
				
			||||
 | 
					      this.dialogVisible = true | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    handlerCancle() { | 
				
			||||
 | 
					      this.dialogVisible = false | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    async handleLook(row) { | 
				
			||||
 | 
					      const params = { | 
				
			||||
 | 
					        categoryId: row.categoryId, | 
				
			||||
 | 
					        usableFlag: !row.usableFlag | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					      this.$http | 
				
			||||
 | 
					        .post('/heart/icresidemanddict/updatestatus', params) | 
				
			||||
 | 
					        .then(({ data: res }) => { | 
				
			||||
 | 
					          if (res.code !== 0) { | 
				
			||||
 | 
					            return this.$message.error(res.msg) | 
				
			||||
 | 
					          } else { | 
				
			||||
 | 
					            this.getTableData() | 
				
			||||
 | 
					          } | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        .catch(() => { | 
				
			||||
 | 
					          return this.$message.error('网络错误') | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    async handleEdit(row, addType) { | 
				
			||||
 | 
					       | 
				
			||||
 | 
					      this.form = { ...row } | 
				
			||||
 | 
					      this.addLevel = row.level | 
				
			||||
 | 
					      this.addType = addType | 
				
			||||
 | 
					      this.dialogVisible = true | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    async addLevelFirst() { | 
				
			||||
 | 
					      const _form = { | 
				
			||||
 | 
					        customerId: localStorage.getItem('customerId'), | 
				
			||||
 | 
					        categoryName: this.form.categoryName | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					      await this.$http | 
				
			||||
 | 
					        .post('/heart/icresidemanddict/addfirst', _form) | 
				
			||||
 | 
					        .then(({ data: res }) => { | 
				
			||||
 | 
					          if (res.code !== 0) { | 
				
			||||
 | 
					            return this.$message.error(res.msg) | 
				
			||||
 | 
					          } else { | 
				
			||||
 | 
					            this.dialogVisible = false | 
				
			||||
 | 
					            this.getTableData() | 
				
			||||
 | 
					          }  | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        .catch(() => { | 
				
			||||
 | 
					          return this.$message.error('网络错误') | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        this.btnLoading = false | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    async addLevelChild () { | 
				
			||||
 | 
					      const _form = { | 
				
			||||
 | 
					        customerId: localStorage.getItem('customerId'), | 
				
			||||
 | 
					        categoryName: this.form.categoryName, | 
				
			||||
 | 
					        parentCategoryCode: this.form.categoryCode, | 
				
			||||
 | 
					        awardPoint: this.form.awardPoint | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					      await this.$http | 
				
			||||
 | 
					        .post('/heart/icresidemanddict/addchild', _form) | 
				
			||||
 | 
					        .then(({ data: res }) => { | 
				
			||||
 | 
					          if (res.code !== 0) { | 
				
			||||
 | 
					            return this.$message.error(res.msg) | 
				
			||||
 | 
					          } else { | 
				
			||||
 | 
					            this.dialogVisible = false | 
				
			||||
 | 
					            this.getTableData() | 
				
			||||
 | 
					          }  | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        .catch(() => { | 
				
			||||
 | 
					          return this.$message.error('网络错误') | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        this.btnLoading = false | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    async editCate() { | 
				
			||||
 | 
					      const _form = { | 
				
			||||
 | 
					        customerId: localStorage.getItem('customerId'), | 
				
			||||
 | 
					        categoryName: this.form.categoryName, | 
				
			||||
 | 
					        categoryId: this.form.categoryId, | 
				
			||||
 | 
					        level: this.form.level, | 
				
			||||
 | 
					        awardPoint: this.form.awardPoint | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					      await this.$http | 
				
			||||
 | 
					        .post('/heart/icresidemanddict/update', _form) | 
				
			||||
 | 
					        .then(({ data: res }) => { | 
				
			||||
 | 
					          if (res.code !== 0) { | 
				
			||||
 | 
					            return this.$message.error(res.msg) | 
				
			||||
 | 
					          } else { | 
				
			||||
 | 
					            this.dialogVisible = false | 
				
			||||
 | 
					            this.getTableData() | 
				
			||||
 | 
					          }  | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        .catch(() => { | 
				
			||||
 | 
					          return this.$message.error('网络错误') | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        this.btnLoading = false | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    handleSUbmit() { | 
				
			||||
 | 
					      this.$refs.ruleForm.validate(async (valid) => { | 
				
			||||
 | 
					        if (valid) { | 
				
			||||
 | 
					          this.btnLoading = true | 
				
			||||
 | 
					          if (this.addType == 'add') { | 
				
			||||
 | 
					            if (this.addLevel == '1') this.addLevelFirst() | 
				
			||||
 | 
					            else this.addLevelChild() | 
				
			||||
 | 
					          } else this.editCate() | 
				
			||||
 | 
					           | 
				
			||||
 | 
					        } else { | 
				
			||||
 | 
					          console.log('error submit!!'); | 
				
			||||
 | 
					          return false; | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					      }); | 
				
			||||
 | 
					       | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    handleDel(row) { | 
				
			||||
 | 
					      let params = { | 
				
			||||
 | 
					        formCode: 'resi_base_info', | 
				
			||||
 | 
					        icResiUserId: row.icResiUserId | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					      console.log('row1', row) | 
				
			||||
 | 
					      this.$http | 
				
			||||
 | 
					        .post('/epmetuser/icresiuser/delete', params) | 
				
			||||
 | 
					        .then(({ data: res }) => { | 
				
			||||
 | 
					          console.log('row2', row) | 
				
			||||
 | 
					          if (res.code !== 0) { | 
				
			||||
 | 
					            return this.$message.error(res.msg) | 
				
			||||
 | 
					          } else { | 
				
			||||
 | 
					            console.log('row3', row) | 
				
			||||
 | 
					            this.$message.success('删除成功') | 
				
			||||
 | 
					            this.getTableData() | 
				
			||||
 | 
					          } | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        .catch((err) => { | 
				
			||||
 | 
					          console.log('row4', err) | 
				
			||||
 | 
					          return this.$message.error('网络错误') | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					     | 
				
			||||
 | 
					    async getOptions() { | 
				
			||||
 | 
					      const params = { | 
				
			||||
 | 
					        parentCategoryCode: 0 | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					      this.$http | 
				
			||||
 | 
					        .post('/heart/icresidemanddict/subcodelist', params) | 
				
			||||
 | 
					        .then(({ data: res }) => { | 
				
			||||
 | 
					          if (res.code !== 0) { | 
				
			||||
 | 
					            return this.$message.error(res.msg) | 
				
			||||
 | 
					          } else { | 
				
			||||
 | 
					            this.demandOptions = res.data | 
				
			||||
 | 
					          } | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        .catch(() => { | 
				
			||||
 | 
					          return this.$message.error('网络错误') | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    async getTableData() { | 
				
			||||
 | 
					      this.tableLoading = true | 
				
			||||
 | 
					      let params = { | 
				
			||||
 | 
					        ...this.searchForm, | 
				
			||||
 | 
					        pageNo: this.currentPage, | 
				
			||||
 | 
					        pageSize: this.pageSize | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					      await this.$http | 
				
			||||
 | 
					        .post('/heart/userdemand/pagelist', params) | 
				
			||||
 | 
					        .then(({ data: res }) => { | 
				
			||||
 | 
					          if (res.code !== 0) { | 
				
			||||
 | 
					            return this.$message.error(res.msg) | 
				
			||||
 | 
					          } else { | 
				
			||||
 | 
					            this.tableData = res.data.list | 
				
			||||
 | 
					            this.total = res.data.total | 
				
			||||
 | 
					          } | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        .catch(() => { | 
				
			||||
 | 
					          return this.$message.error('网络错误') | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					      this.tableLoading = false | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					     | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					</script> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<style lang="scss" scoped> | 
				
			||||
 | 
					.resi-container .resi-card-table { | 
				
			||||
 | 
					  ::v-deep .el-table th { | 
				
			||||
 | 
					    color: #fff; | 
				
			||||
 | 
					    background-color: rgba(33, 149, 254, 1); | 
				
			||||
 | 
					    // border-right: 1px solid rgba(33, 149, 254, 1); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.resi-table { | 
				
			||||
 | 
					  ::v-deep .el-button--text { | 
				
			||||
 | 
					    text-decoration: underline; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  ::v-deep .btn-color-del { | 
				
			||||
 | 
					    margin-left: 10px; | 
				
			||||
 | 
					    color: rgba(213, 16, 16, 1); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  ::v-deep .btn-color-edit { | 
				
			||||
 | 
					    color: rgba(0, 167, 169, 1); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.form-wr { | 
				
			||||
 | 
					  .input-width { | 
				
			||||
 | 
					    width: 260px; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  .input-width-textarea { | 
				
			||||
 | 
					    width: 400px; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					</style> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<style lang="scss" scoped> | 
				
			||||
 | 
					.resi-row-btn { | 
				
			||||
 | 
					  display: flex; | 
				
			||||
 | 
					  margin-bottom: 13px; | 
				
			||||
 | 
					  ::v-deep .el-button { | 
				
			||||
 | 
					    // margin-left: 10px; | 
				
			||||
 | 
					    border: 0; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  ::v-deep .el-select { | 
				
			||||
 | 
					    margin-right: 10px; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  .el-button--success { | 
				
			||||
 | 
					    background: rgba(34, 193, 195, 1); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.avatar-uploader { | 
				
			||||
 | 
					  ::v-deep | 
				
			||||
 | 
					  .el-upload { | 
				
			||||
 | 
					    cursor: pointer; | 
				
			||||
 | 
					    position: relative; | 
				
			||||
 | 
					    overflow: hidden; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  .el-upload:hover { | 
				
			||||
 | 
					    border-color: #409EFF; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  .avatar { | 
				
			||||
 | 
					    width: 70px; | 
				
			||||
 | 
					    height: 70px; | 
				
			||||
 | 
					    display: block; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  .avatar-uploader-icon { | 
				
			||||
 | 
					    border: 1px dashed #d9d9d9; | 
				
			||||
 | 
					    border-radius: 6px; | 
				
			||||
 | 
					    font-size: 28px; | 
				
			||||
 | 
					    color: #8c939d; | 
				
			||||
 | 
					    width: 70px; | 
				
			||||
 | 
					    height: 70px; | 
				
			||||
 | 
					    line-height: 70px; | 
				
			||||
 | 
					    text-align: center; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					   | 
				
			||||
 | 
					   | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.resi-btns { | 
				
			||||
 | 
					  margin-top: 20px; | 
				
			||||
 | 
					  text-align: center; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					</style> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue