| 
					
				 | 
			
			
				@@ -0,0 +1,838 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div class="app-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="用户" prop="userId"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="queryParams.userId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder="请输入用户id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @keyup.enter.native="handleQuery" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="联系方式" prop="phone"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="queryParams.phone" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder="请输入联系方式" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @keyup.enter.native="handleQuery" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="处理状态" prop="isHandle"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="queryParams.isHandle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder="请选择处理状态" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-option label="未处理" value="0"></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-option label="已处理" value="1"></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="投诉时间" prop="complaintTime"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-date-picker v-model="complaintTime" size="small" style="width: 220px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="changeTime"></el-date-picker> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-row :gutter="10" class="mb8"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-col :span="1.5"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type="warning" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          plain 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          icon="el-icon-download" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          size="mini" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :loading="exportLoading" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @click="handleExport" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-hasPermi="['his:complaint:export']" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        >导出</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-table border v-loading="loading" :data="complaintList" @selection-change="handleSelectionChange"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column type="selection" width="55" align="center" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="id" align="center" prop="id" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="用户" align="center" prop="nickName" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="投诉方式" align="center" prop="complaintType" > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template slot-scope="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <template v-for="item in complaintTypeOptions"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-tag v-if="item.dictValue === scope.row.complaintType" :key="item.dictValue"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {{ item.dictLabel }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="投诉类型" align="center" prop="type" > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template slot-scope="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <dict-tag :options="typeOptions" :value="scope.row.type"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="投诉时间" align="center" prop="createTime" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label="是否处理" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        align="center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        prop="isHandlePlatform" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :render-header="renderHandleHeader" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template slot-scope="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :type="scope.row.isHandlePlatform == 1 ? 'success' : 'warning'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            disable-transitions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ formatHandleStatus(scope.row.isHandle) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label="店铺是否处理" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        align="center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        prop="isHandlePlatform" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :render-header="renderHandleHeader" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template slot-scope="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :type="(scope.row.isHandleStore == 1)? 'success' : 'warning'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            disable-transitions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ formatHandleStatus(scope.row.isHandle) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="备注" align="center" prop="remarks" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template slot-scope="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            size="mini" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            icon="el-icon-edit" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-hasPermi="['his:complaint:edit']" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @click="handleUpdate(scope.row)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          >投诉详情</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            size="mini" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            icon="el-icon-delete" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @click="handleDelete(scope.row)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-hasPermi="['his:complaint:remove']" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          >删除</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-table> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <pagination 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      v-show="total>0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :total="total" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :page.sync="queryParams.pageNum" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :limit.sync="queryParams.pageSize" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @pagination="getList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 修改用户投诉对话框 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <!-- 修改tab-click事件处理器名称 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-tabs v-model="activeTab" type="card" @tab-click="handleClick"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- 投诉详情标签页 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-tab-pane label="投诉详情" name="complaint"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-form ref="form" :model="form" :rules="rules" label-width="80px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="投诉内容" prop="name"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-input v-model="form.name" :disabled="true" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="详细内容" v-if="form.content && form.content!=''"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-input type="textarea" v-model="form.content" :disabled="true"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="联系方式" prop="phone" v-if="form.phone && form.phone!=''"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-input v-model="form.phone" :disabled="true"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="图片" v-if="form.images && form.images!=''"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div v-for="(url, index) in imageUrls(form.images)" :key="index" class="image-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-image :src="url" :preview-src-list="[url]" style="width: 100px; height: 100px;"></el-image> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- <el-form-item label="交易截图" v-if="form.tradeImage && form.tradeImage!=''"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div v-for="(url, index) in imageUrls(form.tradeImage)" :key="index" class="image-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-image :src="url" :preview-src-list="[url]" style="width: 100px; height: 100px;"></el-image> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="用户" prop="nickName"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-input v-model="form.nickName" :disabled="true"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="是否处理" prop="isHandle"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-select v-model="form.isHandlePlatform" placeholder="请选择处理状态" :disabled="true"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-option label="未处理" :value="0"></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-option label="已处理" :value="1"></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="备注" prop="remarks" > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-input type="textarea" v-model="form.remarks" :maxlength="250" :disabled="true"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-tab-pane> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- 回复详情标签页 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-tab-pane label="回复详情" name="replies"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="reply-section"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 添加回复表单 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-card class="add-reply-card" shadow="never"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div slot="header"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span>添加回复</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-form :model="replyForm" ref="replyForm" label-width="80px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="回复内容" prop="content" :rules="[{ required: true, message: '请输入回复内容', trigger: 'blur' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    type="textarea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    v-model="replyForm.content" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    placeholder="请输入回复内容" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    :rows="3" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    maxlength="500" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    show-word-limit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <!-- 添加图片上传功能 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="上传图片" prop="images"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <!-- <div class="image-upload-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     <el-upload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      ref="imageUpload" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :action="uploadUrl" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :show-file-list="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :file-list="replyImageList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :on-success="handleSuccess" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :before-upload="beforeUpload" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :limit="4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      list-type="picture-card" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      accept="image/*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <i class="el-icon-plus"></i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <div slot="tip" class="el-upload__tip"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        最多上传4张图片,单张图片不超过2MB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-upload> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <ImageUpload v-model="replyForm.images" type="image" :num="4" :width="150" :height="150"/>   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <el-button type="primary" size="small" @click="submitReply" :loading="replyLoading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <i class="el-icon-s-promotion"></i> 发送回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-card> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 回复列表 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-card class="reply-list-card" shadow="never"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div slot="header"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span>回复记录 ({{ replyTotal }}条)</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div v-loading="replyLoading" class="reply-list"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div v-if="replyList.length === 0" class="empty-replies"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <el-empty description="暂无回复记录" :image-size="100"></el-empty> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div v-else> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div v-for="reply in replyList" :key="reply.id" class="reply-item"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <div class="reply-header"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <div class="reply-user"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-avatar :size="32" :src="reply.avatar || '/default-avatar.png'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          {{ reply.userName ? reply.userName.charAt(0) : 'U' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </el-avatar> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <!-- <span class="user-name">{{ reply.userName || '系统管理员' }}</span> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-tag size="mini" :type="reply.sendType != 1 ? 'success' : 'info'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          {{ reply.sendType === 1 ? '用户' : reply.sendType === 2 ? '系统平台':'店铺平台' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <div class="reply-time"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        {{ reply.createTime }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <div class="reply-content"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {{ reply.content }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <!-- 显示回复中的图片 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <div class="reply-images" v-if="reply.images && reply.images !== ''"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <div v-for="(url, index) in imageUrls(reply.images)" :key="index" class="reply-image-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-image  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          :src="url"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          :preview-src-list="imageUrls(reply.images)"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          style="width: 80px; height: 80px;" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          fit="cover" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ></el-image> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <div class="reply-actions" v-if="reply.userType === 'admin'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <el-button type="text" size="mini" @click="editReply(reply)"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <i class="el-icon-edit"></i> 编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <el-button type="text" size="mini" @click="deleteReply(reply)" style="color: #f56c6c;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <i class="el-icon-delete"></i> 删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <!-- 回复分页 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="reply-pagination" v-if="replyTotal > 0"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-pagination 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  @size-change="handleReplySizeChange" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  @current-change="handleReplyCurrentChange" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :current-page="replyQueryParams.pageNum" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :page-sizes="[5, 10, 20]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :page-size="replyQueryParams.pageSize" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  layout="total, sizes, prev, pager, next, jumper" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :total="replyTotal" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  small 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-card> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-tab-pane> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-tabs> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div slot="footer" class="dialog-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" @click="submitForm" v-if="activeTab === 'complaint' && form.id==null">确 定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button @click="cancel">取 消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 编辑回复对话框 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-dialog title="编辑回复" :visible.sync="editReplyVisible" width="500px" append-to-body> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form :model="editReplyForm" ref="editReplyForm" label-width="80px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="回复内容" prop="content" :rules="[{ required: true, message: '请输入回复内容', trigger: 'blur' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type="textarea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-model="editReplyForm.content" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            placeholder="请输入回复内容" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :rows="4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            maxlength="500" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            show-word-limit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div slot="footer" class="dialog-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" @click="updateReply" :loading="replyLoading">确 定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button @click="editReplyVisible = false">取 消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { listComplaint, getComplaint, delComplaint, addComplaint, updateComplaint, exportComplaint,listMsg,addMsg } from "@/api/his/complaint"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ImageUpload from '@/components/ImageUpload/index'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name: "Complaint", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  components: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     ImageUpload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      replyImageList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      complaintId:null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      activeName:"0", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      typeOptions:[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictValue:'0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictLabel:'默认' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictValue:'1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictLabel:'店铺' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictValue:'2', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictLabel:'商品' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      complaintTypeOptions:[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictValue:1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictLabel:'咨询' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictValue:2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dictLabel:'投诉/举报' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      complaintTime:null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 遮罩层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loading: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 导出遮罩层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      exportLoading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 选中数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ids: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 非单个禁用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      single: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 非多个禁用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      multiple: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 显示搜索条件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showSearch: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 总条数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      total: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 用户投诉表格数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      complaintList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 弹出层标题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 是否显示弹出层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      open: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 当前激活的标签页 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      activeTab: 'complaint', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 查询参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      queryParams: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageNum: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageSize: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userId: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userName: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        templateId: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        phone: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        urls: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        account: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isHandle: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 表单参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      form: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 表单校验 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      rules: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userId: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { required: true, message: "用户id不能为空", trigger: "blur" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        templateId: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { required: true, message: "投诉模板id不能为空", trigger: "blur" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 回复相关数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      replyList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      replyTotal: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      replyLoading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      replyQueryParams: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageNum: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageSize: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        complaintId: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      replyForm: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        complaintId: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 编辑回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      editReplyVisible: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      editReplyForm: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  created() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleClick(tab) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (tab.name === 'replies') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.getReplyList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    renderHandleHeader(h, { column }) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (column.label === '是否处理') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return h('div', [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          '是否处理', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          h('el-tooltip', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              content: '仅需要处理投诉/举报类', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placement: 'top' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            h('i', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class: 'el-icon-question', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style: 'margin-left: 5px; cursor: pointer; color: #909399;' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else if (column.label === '店铺是否处理') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return h('div', [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          '店铺是否处理', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          h('el-tooltip', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              content: '仅需要处理咨询类', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placement: 'top' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            h('i', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class: 'el-icon-question', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style: 'margin-left: 5px; cursor: pointer; color: #909399;' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return column.label; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    imageUrls(urls) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return String(urls).split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    formatHandleStatus(status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return status == 1 ? '已处理' : '未处理'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 查询用户投诉列表 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.loading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      listComplaint(this.queryParams).then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.complaintList = response.rows; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.total = response.total; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.loading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 取消按钮 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cancel() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.open = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.resetReplyData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 表单重置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    reset() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.form = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userId: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        templateId: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        phone: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        urls: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        account: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        createTime: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isHandle: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        remarks:null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.resetForm("form"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 重置回复数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    resetReplyData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.activeTab = 'complaint'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.replyList = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.replyTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.replyQueryParams = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageNum: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageSize: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        complaintId: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.replyForm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        complaintId: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        images: '' // 重置图片字段 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.replyImageList = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.editReplyImageList = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 搜索按钮操作 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleQuery() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.queryParams.pageNum = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 重置按钮操作 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    resetQuery() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.complaintTime = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.queryParams.complaintsTime=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.queryParams.complainteTime=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.resetForm("queryForm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.handleQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 多选框选中数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleSelectionChange(selection) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.ids = selection.map(item => item.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.single = selection.length !== 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.multiple = !selection.length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 新增按钮操作 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleAdd() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.open = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.title = "添加用户投诉"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 修改按钮操作 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleUpdate(row) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.resetReplyData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // const id = row.id || this.ids 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const complaintId = row.id || this.complaintId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.complaintId = complaintId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getComplaint(complaintId).then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.form = response.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.replyForm.complaintId = complaintId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.replyQueryParams.complaintId = complaintId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.open = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.title = "投诉详情"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 加载回复列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.getReplyList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 提交按钮 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    submitForm() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs["form"].validate(valid => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (this.form.id != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateComplaint(this.form).then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.msgSuccess("修改成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.open = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addComplaint(this.form).then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.msgSuccess("新增成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.open = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 删除按钮操作 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleDelete(row) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const ids = row.id || this.ids; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$confirm('是否确认删除用户投诉编号为"' + ids + '"的数据项?', "警告", { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          confirmButtonText: "确定", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cancelButtonText: "取消", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: "warning" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).then(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return delComplaint(ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.msgSuccess("删除成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).catch(() => {}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 导出按钮操作 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleExport() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const queryParams = this.queryParams; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$confirm('是否确认导出所有用户投诉数据项?', "警告", { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          confirmButtonText: "确定", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cancelButtonText: "取消", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: "warning" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.exportLoading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return exportComplaint(queryParams); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.download(response.msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.exportLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).catch(() => {}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    changeTime(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(this.complaintTime!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.queryParams.complaintsTime=this.complaintTime[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.queryParams.complainteTime=this.complaintTime[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.queryParams.complaintsTime=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.queryParams.complainteTime=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获取回复列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getReplyList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.replyLoading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 模拟API调用 - 你需要替换为实际的API 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 模拟数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listMsg(this.replyQueryParams).then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyList = response.rows; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyTotal = response.total; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 提交回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    submitReply() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.replyForm.validate(valid => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.replyLoading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // const imageUrls = this.replyImageList.map(file => file.url || file.response?.url).filter(url => url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // this.replyForm.images = imageUrls.join(','); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // 模拟API调用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const newReply = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              content: this.replyForm.content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              complaintId:this.replyForm.complaintId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              images: this.replyForm.images, // 包含图片数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              sendType: 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addMsg(newReply).then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.$message.success('回复发送成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyForm.content = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyForm.images = ''; // 重置图片字段 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyImageList = []; // 重置图片列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.getReplyList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 编辑回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    editReply(reply) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.editReplyForm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: reply.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: reply.content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        images: reply.images || '' // 包含图片数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.editReplyImageList = reply.images ?  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reply.images.split(',').map((url, index) => ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          uid: index, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          name: `image-${index}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          url: url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })) : []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.editReplyVisible = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 更新回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    updateReply() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.editReplyForm.validate(valid => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.replyLoading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // const imageUrls = this.editReplyImageList.map(file => file.url || file.response?.url).filter(url => url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // this.editReplyForm.images = imageUrls.join(','); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // 模拟API调用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const index = this.replyList.findIndex(item => item.id === this.editReplyForm.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (index !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyList[index].content = this.editReplyForm.content; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.replyList[index].images = this.editReplyForm.images; // 更新图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.editReplyVisible = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.replyLoading = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$message.success('回复更新成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 删除回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    deleteReply(reply) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$confirm('确定要删除这条回复吗?', '提示', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        confirmButtonText: '确定', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cancelButtonText: '取消', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type: 'warning' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }).then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const index = this.replyList.findIndex(item => item.id === reply.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (index !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.replyList.splice(index, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.replyTotal--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$message.success('删除成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 回复分页大小改变 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleReplySizeChange(val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.replyQueryParams.pageSize = val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.getReplyList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 回复当前页改变 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleReplyCurrentChange(val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.replyQueryParams.pageNum = val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.getReplyList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleSuccess(res, file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(res.code==200){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.form.licenseImages=res.url; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$forceUpdate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.msgError(res.msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    beforeUpload(file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const isLt1M = file.size / 1024 / 1024 < 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!isLt1M) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$message.error('上传图片大小不能超过 1MB!'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return   isLt1M; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-section { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-top: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.add-reply-card { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-list-card { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  min-height: 400px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-list { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  min-height: 300px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.empty-replies { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 200px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-item { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-bottom: 1px solid #f0f0f0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 15px 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-item:last-child { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-bottom: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-header { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: space-between; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-user { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  gap: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.user-name { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-weight: 500; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #303133; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-time { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #909399; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-content { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background-color: #f8f9fa; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  line-height: 1.5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #606266; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-actions { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reply-pagination { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-top: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.image-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-right: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |