表单
This commit is contained in:
		| @@ -7,9 +7,9 @@ | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|   import Add from './components/Add' | ||||
|   import List from './components/List' | ||||
|   import Detail from './components/Detail' | ||||
|   import FormDetail from './components/FormDetail' | ||||
|  | ||||
|   export default { | ||||
|     name: 'AppRatingTask', | ||||
| @@ -31,7 +31,7 @@ | ||||
|     components: { | ||||
|       Detail, | ||||
|       List, | ||||
|       Add | ||||
|       FormDetail | ||||
|     }, | ||||
|  | ||||
|     methods: { | ||||
| @@ -41,8 +41,8 @@ | ||||
|           this.params = data.params | ||||
|         } | ||||
|  | ||||
|         if (data.type === 'Add') { | ||||
|           this.component = 'Add' | ||||
|         if (data.type === 'FormDetail') { | ||||
|           this.component = 'FormDetail' | ||||
|           this.params = data.params | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -1,13 +0,0 @@ | ||||
| <template> | ||||
|  | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default { | ||||
|  | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style> | ||||
|  | ||||
| </style> | ||||
| @@ -1,123 +1,102 @@ | ||||
|  <template> | ||||
|   <ai-detail isHasSidebar v-loading="isLoading"> | ||||
|     <template slot="title"> | ||||
|       <ai-title title="返乡报备详情" isShowBack isShowBottomBorder @onBackClick="cancel(false)"> | ||||
|       <ai-title title="任务详情" isShowBack isShowBottomBorder @onBackClick="cancel(false)"> | ||||
|       </ai-title> | ||||
|     </template> | ||||
|     <template slot="content"> | ||||
|       <AiSidebar :tabTitle="tabList" v-model="currIndex"></AiSidebar> | ||||
|       <div v-show="currIndex === 0"> | ||||
|         <ai-card title="基本信息" v-show="currIndex === 0"> | ||||
|           <template #content> | ||||
|             <ai-wrapper | ||||
|               label-width="120px"> | ||||
|               <ai-info-item label="姓名" :value="info.name"></ai-info-item> | ||||
|               <ai-info-item label="填报时间" :value="info.createTime"></ai-info-item> | ||||
|               <ai-info-item label="身份证号" :value="info.idNumber"></ai-info-item> | ||||
|               <ai-info-item label="手机号码" :value="info.phone"></ai-info-item> | ||||
|               <ai-info-item label="人员类别" :value="dict.getLabel('EP_registerPersonType', info.type)"></ai-info-item> | ||||
|               <ai-info-item label="是否从事高危行业" :value="dict.getLabel('EP_highRiskIndustries', info.highRiskIndustries)"></ai-info-item> | ||||
|             </ai-wrapper> | ||||
|           </template> | ||||
|         </ai-card> | ||||
|         <ai-card title="行程信息"> | ||||
|           <template #content> | ||||
|             <ai-wrapper | ||||
|               label-width="120px"> | ||||
|               <ai-info-item label="出发时间" :value="info.startTime"></ai-info-item> | ||||
|               <ai-info-item label="出发地" > | ||||
|                 <span  :style="{color: info.denger == 1 ? '#FF4466' : '#333'}">{{info.startAreaName}} </span> | ||||
|               </ai-info-item> | ||||
|               <ai-info-item label="出发地详址" isLine :value="info.startAddress"></ai-info-item> | ||||
|               <ai-info-item label="出行方式" :value="info.travelTypeNames"></ai-info-item> | ||||
|               <ai-info-item label="车次/航班" isLine :value="info.trainNo"></ai-info-item> | ||||
|               <ai-info-item label="行程描述" :value="info.description"></ai-info-item> | ||||
|               <ai-info-item label="抵平卡口" :value="info.gatewayName"></ai-info-item> | ||||
|               <ai-info-item label="抵平时间" :value="info.arriveTime"></ai-info-item> | ||||
|               <ai-info-item label="目的地" :value="info.arriveAreaName"></ai-info-item> | ||||
|               <ai-info-item label="目的地详址" isLine :value="info.arriveAddress"></ai-info-item> | ||||
|             </ai-wrapper> | ||||
|           </template> | ||||
|         </ai-card> | ||||
|         <ai-card title="健康状况"> | ||||
|           <template #content> | ||||
|             <ai-wrapper | ||||
|               label-width="120px"> | ||||
|               <ai-info-item label="是否有风险旅居史" v-if="info.fromHighRiskArea === '1'"> | ||||
|                 <span style="color: red">{{ info.highRiskAreaName }}</span> | ||||
|               </ai-info-item> | ||||
|               <ai-info-item label="是否有风险旅居史" v-else value="否"></ai-info-item> | ||||
|               <ai-info-item label="7天内是否接触新冠确诊或疑似患者"> | ||||
|                 <span :style="{color: info.contactPatients === '1' ? 'red' : ''}">{{ dict.getLabel('yesOrNo', info.contactPatients) }}</span> | ||||
|               </ai-info-item> | ||||
|               <ai-info-item label="当前健康状况" v-if="info.abnormalHealth === '1'"> | ||||
|                 <span style="color: red">{{ dict.getLabel('EP_abnormalType', info.abnormalType) }}</span> | ||||
|               </ai-info-item> | ||||
|               <ai-info-item label="当前健康状况" v-else value="否"></ai-info-item> | ||||
|             </ai-wrapper> | ||||
|           </template> | ||||
|         </ai-card> | ||||
|       </div> | ||||
|       <div v-show="currIndex === 1"> | ||||
|         <ai-card title="风险处置"> | ||||
|           <template #right> | ||||
|             <el-button type="primary" v-if="info.status === '0'" @click="release">解除异常</el-button> | ||||
|           </template> | ||||
|           <template #content> | ||||
|             <ai-wrapper | ||||
|               label-width="120px"> | ||||
|               <ai-info-item label="姓名" :value="info.name"></ai-info-item> | ||||
|               <ai-info-item label="填报时间" :value="info.createTime"></ai-info-item> | ||||
|               <ai-info-item label="身份证号" :value="info.idNumber"></ai-info-item> | ||||
|               <ai-info-item label="手机号码" :value="info.phone"></ai-info-item> | ||||
|               <ai-info-item label="人员类别" :value="dict.getLabel('EP_registerPersonType', info.type)"></ai-info-item> | ||||
|               <ai-info-item label="是否从事高危行业" :value="dict.getLabel('EP_highRiskIndustries', info.highRiskIndustries)"></ai-info-item> | ||||
|             </ai-wrapper> | ||||
|           </template> | ||||
|         </ai-card> | ||||
|         <ai-card title="风险处理意见"> | ||||
|           <template #content> | ||||
|             <ai-table | ||||
|               :isShowPagination="false" | ||||
|               tableSize="small" | ||||
|               border | ||||
|               :tableData="info.riskDisposalList" | ||||
|               :col-configs="colConfigs" | ||||
|               @getList="() => {}"> | ||||
|             </ai-table> | ||||
|           </template> | ||||
|         </ai-card> | ||||
|         <ai-card title="社区初排" v-if="info.cmAdvanceDisposal"> | ||||
|           <template #content> | ||||
|             <ai-wrapper | ||||
|               style="margin-bottom: 20px;" | ||||
|               label-width="120px"> | ||||
|               <ai-info-item label="处置意见" :value="dict.getLabel('EP_communityHandleType', info.cmAdvanceDisposal.communityHandleType)"></ai-info-item> | ||||
|               <ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="居家状态" :value="dict.getLabel('EP_homeStatus2', info.cmAdvanceDisposal.homeStatus)"></ai-info-item> | ||||
|               <ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="隔离时间" :value="info.cmAdvanceDisposal.quarantineBeginTime + ' - ' + info.cmAdvanceDisposal.quarantineEndTime"></ai-info-item> | ||||
|               <ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="隔离策略" :value="dict.getLabel('EP_quarantineStrategy', info.cmAdvanceDisposal.quarantineStrategy)"></ai-info-item> | ||||
|               <ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="管控方式" :value="dict.getLabel('EP_controlMethod', info.cmAdvanceDisposal.controlMethod)"></ai-info-item> | ||||
|               <ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="图片" isLine> | ||||
|                 <ai-uploader | ||||
|                   :instance="instance" | ||||
|                   :value="info.cmAdvanceDisposal.fileList" | ||||
|                   disabled | ||||
|                   :limit="9"> | ||||
|                 </ai-uploader> | ||||
|               </ai-info-item> | ||||
|               <ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '2'" label="风险解除证明文件" isLine> | ||||
|                 <ai-uploader | ||||
|                   :instance="instance" | ||||
|                   :value="info.cmAdvanceDisposal.proveFileList" | ||||
|                   disabled | ||||
|                   :limit="9"> | ||||
|                 </ai-uploader> | ||||
|               </ai-info-item> | ||||
|             </ai-wrapper> | ||||
|             <ai-empty style="margin-bottom: 60px;" v-if="!info.cmAdvanceDisposal"></ai-empty> | ||||
|           </template> | ||||
|         </ai-card> | ||||
|       </div> | ||||
|       <ai-card title="任务信息"> | ||||
|         <template #content> | ||||
|           <ai-wrapper | ||||
|             label-width="120px"> | ||||
|             <ai-info-item label="任务名称" :value="info.name"></ai-info-item> | ||||
|             <ai-info-item label="创建时间" :value="info.createTime"></ai-info-item> | ||||
|             <ai-info-item label="更新时间" :value="info.idNumber"></ai-info-item> | ||||
|             <ai-info-item label="创建人" :value="info.phone"></ai-info-item> | ||||
|             <ai-info-item label="任务完成度" :value="dict.getLabel('EP_registerPersonType', info.type)"></ai-info-item> | ||||
|           </ai-wrapper> | ||||
|         </template> | ||||
|       </ai-card> | ||||
|       <ai-card title="评分表单"> | ||||
|         <template #content> | ||||
|           <ai-search-bar> | ||||
|             <template #left> | ||||
|               <el-button type="primary" @click="isShow = true">添加表单</el-button> | ||||
|             </template> | ||||
|             <template #right> | ||||
|               <el-input | ||||
|                 v-model="search.name" | ||||
|                 size="small" | ||||
|                 placeholder="请输入参评人姓名" | ||||
|                 clearable | ||||
|                 v-throttle="() => {search.current = 1, getList()}" | ||||
|                 @clear="search.current = 1, search.name = '', getList()" | ||||
|                 suffix-icon="iconfont iconSearch"> | ||||
|               </el-input> | ||||
|             </template> | ||||
|           </ai-search-bar> | ||||
|           <ai-table | ||||
|             :isShowPagination="false" | ||||
|             tableSize="small" | ||||
|             border | ||||
|             :tableData="info.riskDisposalList" | ||||
|             :col-configs="colConfigs" | ||||
|             @getList="() => {}"> | ||||
|           </ai-table> | ||||
|         </template> | ||||
|       </ai-card> | ||||
|       <ai-dialog | ||||
|         :visible.sync="isShow" | ||||
|         width="780px" | ||||
|         title="添加表单" | ||||
|         @onConfirm="onConfirm"> | ||||
|         <el-form ref="form" class="ai-form" :model="form" label-width="110px" label-position="right"> | ||||
|           <el-form-item label="选择模板" style="width: 100%" prop="type" :rules="[{required: true, message: '请选择模板', trigger: 'blur'}]"> | ||||
|             <ai-select | ||||
|               v-model="form.type" | ||||
|               clearable | ||||
|               placeholder="请选择模板"> | ||||
|             </ai-select> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="表单名称" style="width: 100%" prop="name" :rules="[{required: true, message: '请输入任务名称', trigger: 'blur'}]"> | ||||
|             <el-input v-model="form.name" size="small" placeholder="请输入任务名称"></el-input> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="参评人员" style="width: 100%" prop="examinesName1" :rules="[{required: true, message: '请选择参评人员', trigger: 'change'}]"> | ||||
|             <ai-user-selecter :instance="instance" v-model="form.examines" @change="e => onUserChange(e, 'examinesName1')"> | ||||
|               <div class="AppAnnounceDetail-select"> | ||||
|                 <el-input class="AppAnnounceDetail-select__input" size="small" placeholder="请选择..." v-model="form.examinesName1"></el-input> | ||||
|                 <div class="select-left" v-if="form.examines.length"> | ||||
|                   <span v-for="(item, index) in form.examines" :key="index">{{ item.name }}</span> | ||||
|                 </div> | ||||
|                 <i v-if="!form.examines.length">请选择</i> | ||||
|                 <div class="select-right">{{ form.examines.length ? '重新选择' : '选择' }}</div> | ||||
|               </div> | ||||
|             </ai-user-selecter> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="评分人员" style="width: 100%" prop="examinesName2" :rules="[{required: true, message: '请选择评分人员', trigger: 'change'}]"> | ||||
|             <ai-user-selecter :instance="instance" v-model="form.examines1" @change="e => onUserChange(e, 'examinesName2')"> | ||||
|               <div class="AppAnnounceDetail-select"> | ||||
|                 <el-input class="AppAnnounceDetail-select__input" size="small" placeholder="请选择..." v-model="form.examinesName2"></el-input> | ||||
|                 <div class="select-left" v-if="form.examines1.length"> | ||||
|                   <span v-for="(item, index) in form.examines1" :key="index">{{ item.name }}</span> | ||||
|                 </div> | ||||
|                 <i v-if="!form.examines1.length">请选择</i> | ||||
|                 <div class="select-right">{{ form.examines1.length ? '重新选择' : '选择' }}</div> | ||||
|               </div> | ||||
|             </ai-user-selecter> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="开始结束时间" style="width: 100%" prop="date" :rules="[{required: true, message: '请选择开始结束时间', trigger: 'change'}]"> | ||||
|             <el-date-picker | ||||
|               v-model="form.date" | ||||
|               type="daterange" | ||||
|               size="small" | ||||
|               range-separator="至" | ||||
|               start-placeholder="开始日期" | ||||
|               end-placeholder="结束日期"> | ||||
|             </el-date-picker> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|       </ai-dialog> | ||||
|     </template> | ||||
|   </ai-detail> | ||||
| </template> | ||||
| @@ -135,6 +114,20 @@ | ||||
|     data () { | ||||
|       return { | ||||
|         info: {}, | ||||
|         form: { | ||||
|           date: '', | ||||
|           name: '', | ||||
|           type: '', | ||||
|           examines: [], | ||||
|           examines1: [], | ||||
|           examinesName2: '', | ||||
|           examinesName1: '' | ||||
|         }, | ||||
|         search: { | ||||
|           current: 1, | ||||
|           size: 10, | ||||
|           name: '' | ||||
|         }, | ||||
|         isShow: false, | ||||
|         currIndex: 0, | ||||
|         isLoading: false, | ||||
| @@ -149,12 +142,11 @@ | ||||
|     }, | ||||
|  | ||||
|     created () { | ||||
|       this.isLoading = true | ||||
|       if (this.params && this.params.id) { | ||||
|         this.id = this.params.id | ||||
|         this.$dict.load(['EP_registerPersonType', 'EP_communityHandleType', 'EP_highRiskIndustries', 'EP_travelType', 'yesOrNo', 'EP_homeStatus2', 'EP_quarantineStrategy', 'EP_controlMethod', 'EP_abnormalType']).then(() => { | ||||
|           this.getInfo(this.params.id) | ||||
|         }) | ||||
|         // this.$dict.load(['EP_registerPersonType', 'EP_communityHandleType', 'EP_highRiskIndustries', 'EP_travelType', 'yesOrNo', 'EP_homeStatus2', 'EP_quarantineStrategy', 'EP_controlMethod', 'EP_abnormalType']).then(() => { | ||||
|         //   this.getInfo(this.params.id) | ||||
|         // }) | ||||
|       } | ||||
|     }, | ||||
|  | ||||
| @@ -174,6 +166,28 @@ | ||||
|         }) | ||||
|       }, | ||||
|  | ||||
|       onUserChange(e, type) { | ||||
|         if (e.length) { | ||||
|           this.form[type] = '1' | ||||
|         } else { | ||||
|           this.form[type] = '' | ||||
|         } | ||||
|       }, | ||||
|  | ||||
|       onConfirm (id) { | ||||
|         this.$refs.form.validate((valid) => { | ||||
|           if (valid) { | ||||
|             this.isShow = false | ||||
|             this.$emit('change', { | ||||
|               type: 'Detail', | ||||
|               params: { | ||||
|                 id: id || '' | ||||
|               } | ||||
|             }) | ||||
|           } | ||||
|         }) | ||||
|       }, | ||||
|  | ||||
|       cancel () { | ||||
|         this.$emit('change', { | ||||
|           type: 'List', | ||||
| @@ -185,4 +199,85 @@ | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
| .AppAnnounceDetail-select { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   min-height: 32px; | ||||
|   line-height: 1; | ||||
|   background: #F5F5F5; | ||||
|   border-radius: 4px; | ||||
|   border: 1px solid #D0D4DC; | ||||
|   cursor: pointer; | ||||
|   overflow: hidden; | ||||
|   transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); | ||||
|  | ||||
|   &:hover { | ||||
|     border-color: #26f; | ||||
|   } | ||||
|  | ||||
|   & > i { | ||||
|     flex: 1; | ||||
|     height: 100%; | ||||
|     line-height: 32px; | ||||
|     padding: 0 12px; | ||||
|     color: #888888; | ||||
|     font-size: 14px; | ||||
|     font-style: normal; | ||||
|     border-right: 1px solid #D0D4DC; | ||||
|     background: #fff; | ||||
|   } | ||||
|  | ||||
|   .AppAnnounceDetail-select__input { | ||||
|     position: absolute; | ||||
|     left: 0; | ||||
|     top: 0; | ||||
|     z-index: -1; | ||||
|     opacity: 0; | ||||
|     height: 100%; | ||||
|   } | ||||
|  | ||||
|   .select-right { | ||||
|     height: 100%; | ||||
|     padding: 0 12px; | ||||
|     color: #222222; | ||||
|     font-size: 12px; | ||||
|     cursor: pointer; | ||||
|     transition: all ease 0.3s; | ||||
|  | ||||
|     &:hover { | ||||
|       opacity: 0.5; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .select-left { | ||||
|     display: flex; | ||||
|     flex-wrap: wrap; | ||||
|     flex: 1; | ||||
|     padding: 5px 0 0px 12px; | ||||
|     border-right: 1px solid #D0D4DC; | ||||
|     border-radius: 4px 0 0 4px; | ||||
|     background: #fff; | ||||
|  | ||||
|     em { | ||||
|       height: 22px; | ||||
|       line-height: 22px; | ||||
|       margin: 0 4px 5px 0; | ||||
|       color: #222222; | ||||
|       font-size: 12px; | ||||
|       font-style: normal; | ||||
|     } | ||||
|  | ||||
|     span { | ||||
|       height: 22px; | ||||
|       line-height: 22px; | ||||
|       margin: 0 4px 5px 0; | ||||
|       padding: 0 8px; | ||||
|       font-size: 12px; | ||||
|       color: #222222; | ||||
|       background: #F3F4F7; | ||||
|       border-radius: 2px; | ||||
|       border: 1px solid #D0D4DC; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|   | ||||
							
								
								
									
										301
									
								
								project/hlj/app/AppRatingTask/components/FormDetail.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										301
									
								
								project/hlj/app/AppRatingTask/components/FormDetail.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,301 @@ | ||||
| <template> | ||||
|   <ai-detail class="AppAnnounceDetail"> | ||||
|     <template slot="title"> | ||||
|       <ai-title title="表单详情" isShowBack isShowBottomBorder @onBackClick="cancel(false)"> | ||||
|       </ai-title> | ||||
|     </template> | ||||
|     <template slot="content"> | ||||
|       <ai-card title="基础信息"> | ||||
|         <template #content> | ||||
|           <ai-wrapper> | ||||
|             <ai-info-item label="任务名称" isLine :value="info.taskTitle"></ai-info-item> | ||||
|             <ai-info-item label="创建时间" :value="info.createTime"></ai-info-item> | ||||
|             <ai-info-item label="群发时间" :value="info.choiceTime"></ai-info-item> | ||||
|             <ai-info-item label="结束时间" :value="info.taskEndTime" v-if="info.sendChannel === '1'"></ai-info-item> | ||||
|           </ai-wrapper> | ||||
|         </template> | ||||
|       </ai-card> | ||||
|       <ai-card> | ||||
|         <template #title> | ||||
|           <div class="AppAnnounceDetail-title"> | ||||
|             <span :class="[currIndex === 0 ? 'active' : '']" @click="currIndex = 0">填写统计</span> | ||||
|             <span :class="[currIndex === 1 ? 'active' : '']" @click="currIndex = 1">考核统计</span> | ||||
|           </div> | ||||
|         </template> | ||||
|         <template #content> | ||||
|           <div class="content-item" v-if="currIndex === 0"> | ||||
|             <div class="bottom"> | ||||
|               <ai-search-bar> | ||||
|                 <template #left> | ||||
|                   <el-button type="primary" @click="isShow = true">导出明细</el-button> | ||||
|                   <ai-select | ||||
|                     v-model="search1.type" | ||||
|                     clearable | ||||
|                     placeholder="请选择完成情况"> | ||||
|                   </ai-select> | ||||
|                 </template> | ||||
|                 <template #right> | ||||
|                   <el-input | ||||
|                     v-model="search1.name" | ||||
|                     size="small" | ||||
|                     placeholder="请输入参评人、评分人姓名" | ||||
|                     clearable | ||||
|                     v-throttle="() => {search.current = 1, getList()}" | ||||
|                     @clear="search.current = 1, search.name = '', getList()" | ||||
|                     suffix-icon="iconfont iconSearch"> | ||||
|                   </el-input> | ||||
|                 </template> | ||||
|               </ai-search-bar> | ||||
|               <ai-table | ||||
|                 :tableData="tableData1" | ||||
|                 :col-configs="colConfigs1" | ||||
|                 :total="total1" | ||||
|                 border | ||||
|                 tableSize="small" | ||||
|                 :current.sync="search1.current" | ||||
|                 :size.sync="search1.size" | ||||
|                 @getList="getMemberInfo"> | ||||
|                 <el-table-column slot="user" label="成员" align="left"> | ||||
|                   <template slot-scope="{ row }"> | ||||
|                     <div class="userinfo"> | ||||
|                       <span>{{ row.groupOwnerName }}</span> | ||||
|                       <span style="color: #999">{{ row.mainDepartmentName }}</span> | ||||
|                     </div> | ||||
|                   </template> | ||||
|                 </el-table-column> | ||||
|               </ai-table> | ||||
|             </div> | ||||
|           </div> | ||||
|           <div class="content-item" v-if="currIndex === 1"> | ||||
|             <div class="bottom"> | ||||
|               <ai-search-bar> | ||||
|                 <template #left> | ||||
|                   <el-button type="primary" @click="isShow = true">导出明细</el-button> | ||||
|                 </template> | ||||
|                 <template #right> | ||||
|                   <el-input | ||||
|                     v-model="search1.name" | ||||
|                     size="small" | ||||
|                     placeholder="请输入参评人姓名" | ||||
|                     clearable | ||||
|                     v-throttle="() => {search.current = 1, getList()}" | ||||
|                     @clear="search.current = 1, search.name = '', getList()" | ||||
|                     suffix-icon="iconfont iconSearch"> | ||||
|                   </el-input> | ||||
|                 </template> | ||||
|               </ai-search-bar> | ||||
|               <ai-table | ||||
|                 :tableData="tableData2" | ||||
|                 :col-configs="colConfigs2" | ||||
|                 :total="total2" | ||||
|                 border | ||||
|                 tableSize="small" | ||||
|                 :current.sync="search2.current" | ||||
|                 :size.sync="search2.size" | ||||
|                 @getList="getGroupInfo"> | ||||
|                 <el-table-column slot="user" label="群主" align="center"> | ||||
|                   <template slot-scope="{ row }"> | ||||
|                     <div class="userinfo"> | ||||
|                       <span>{{ row.groupOwnerName }}</span> | ||||
|                       <span style="color: #999">{{ row.mainDepartmentName }}</span> | ||||
|                     </div> | ||||
|                   </template> | ||||
|                 </el-table-column> | ||||
|               </ai-table> | ||||
|             </div> | ||||
|           </div> | ||||
|         </template> | ||||
|       </ai-card> | ||||
|     </template> | ||||
|   </ai-detail> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|   import { mapState } from 'vuex' | ||||
|   export default { | ||||
|     name: 'Detail', | ||||
|  | ||||
|     props: { | ||||
|       instance: Function, | ||||
|       dict: Object, | ||||
|       params: Object | ||||
|     }, | ||||
|  | ||||
|     data () { | ||||
|       return { | ||||
|         total1: 0, | ||||
|         isShowPhone: false, | ||||
|         total2: 0, | ||||
|         user1: [], | ||||
|         user2: [], | ||||
|         name1: '', | ||||
|         name2: '', | ||||
|         radio1: '未执行', | ||||
|         search1: { | ||||
|           current: 1, | ||||
|           size: 10, | ||||
|           deptartId: '', | ||||
|           type: 0, | ||||
|           sendStatus: '0' | ||||
|         }, | ||||
|         search2: { | ||||
|           current: 1, | ||||
|           size: 10, | ||||
|           deptartId: '', | ||||
|           type: 1, | ||||
|           sendStatus: '0' | ||||
|         }, | ||||
|         memberInfo: {}, | ||||
|         groupInfo: {}, | ||||
|         tableData1: [], | ||||
|         fileList: [], | ||||
|         tableData2: [], | ||||
|         info: {}, | ||||
|         content: '', | ||||
|         currIndex: 0, | ||||
|         colConfigs1: [ | ||||
|           { slot: 'user', label: '成员' }, | ||||
|           { prop: 'groupCount', label: '预计送达居民群', align: 'center' } | ||||
|         ], | ||||
|         colConfigs2: [ | ||||
|           { prop: 'groupName', label: '居民群' }, | ||||
|           { prop: 'memberCount', label: '群人数', align: 'center' }, | ||||
|           { slot: 'user', label: '群主', align: 'center' }, | ||||
|         ], | ||||
|         groups: [], | ||||
|         timer: null, | ||||
|         min: 60, | ||||
|         isDisabled: false, | ||||
|         rejecterId: '' | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     computed: { | ||||
|       ...mapState(['user']) | ||||
|     }, | ||||
|  | ||||
|     created () { | ||||
|       this.getInfo(this.params.id) | ||||
|     }, | ||||
|  | ||||
|     methods: { | ||||
|       getMemberInfo () { | ||||
|         this.instance.post(`/app/appmasssendingtask/detailStatistics`, null, { | ||||
|           params: { | ||||
|             ...this.search1, | ||||
|             taskId: this.params.id | ||||
|           } | ||||
|         }).then(res => { | ||||
|           if (res.code === 0) { | ||||
|             this.tableData1 = res.data.executedList.records | ||||
|             this.total1 = res.data.executedList.total | ||||
|             this.memberInfo = res.data | ||||
|           } | ||||
|         }) | ||||
|       }, | ||||
|  | ||||
|       getGroupInfo () { | ||||
|         this.instance.post(`/app/appmasssendingtask/detailStatistics`, null, { | ||||
|           params: { | ||||
|             ...this.search2, | ||||
|             taskId: this.params.id | ||||
|           } | ||||
|         }).then(res => { | ||||
|           if (res.code === 0) { | ||||
|             this.tableData2 = res.data.executedList.records.map(v => { | ||||
|               return { | ||||
|                 ...v, | ||||
|                 groupName: v.groupName || '未命名群聊' | ||||
|               } | ||||
|             }) | ||||
|             this.total2 = res.data.executedList.total | ||||
|             this.groupInfo = res.data | ||||
|           } | ||||
|         }) | ||||
|       }, | ||||
|  | ||||
|       getInfo (id) { | ||||
|         this.instance.post(`/app/appmasssendingtask/queryDetailById?id=${id}`).then(res => { | ||||
|           if (res.code === 0) { | ||||
|             this.info = res.data | ||||
|             if (res.data.status === '4' && res.data.remindTime) { | ||||
|               this.countdown() | ||||
|             } | ||||
|  | ||||
|             const content = res.data.contents.filter(v => v.msgType === '0') | ||||
|  | ||||
|             if (content.length) { | ||||
|               this.content = content[0].content | ||||
|             } | ||||
|  | ||||
|             this.fileList = res.data.contents.filter(v => v.msgType !== '0').map(v => { | ||||
|               return { | ||||
|                 ...v, | ||||
|                 ...v.sysFile | ||||
|               } | ||||
|             }) | ||||
|  | ||||
|             this.info.wxGroups = res.data.wxGroups.map(v => { | ||||
|               this.groups.push(...v.groupIds.split(',')) | ||||
|  | ||||
|               return { | ||||
|                 ...v, | ||||
|                 groupIds: v.groupIds.split(',') | ||||
|               } | ||||
|             }) | ||||
|  | ||||
|             if (res.data.examines && res.data.examines.length) { | ||||
|               const user = res.data.examines.filter(v => v.examineStatus === '2') | ||||
|  | ||||
|               if (user.length) { | ||||
|                 this.rejecterId = user[0].examineUserId | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         }) | ||||
|       }, | ||||
|  | ||||
|       cancel (isRefresh) { | ||||
|         this.$emit('change', { | ||||
|           type: 'List', | ||||
|           isRefresh: !!isRefresh | ||||
|         }) | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
|   .AppAnnounceDetail { | ||||
|     ::v-deep .AppAnnounceDetail-title { | ||||
|       display: flex; | ||||
|       align-items: center; | ||||
|  | ||||
|       span { | ||||
|         height: 100%; | ||||
|         line-height: 56px; | ||||
|         margin-right: 32px; | ||||
|         color: #888888; | ||||
|         font-size: 16px; | ||||
|         font-weight: 600; | ||||
|         transition: all ease 0.3s; | ||||
|         border-bottom: 3px solid transparent; | ||||
|         cursor: pointer; | ||||
|         user-select: none; | ||||
|  | ||||
|         &:hover { | ||||
|           color: #222; | ||||
|         } | ||||
|  | ||||
|         &:last-child { | ||||
|           margin-right: 0; | ||||
|         } | ||||
|  | ||||
|         &.active { | ||||
|           color: #222222; | ||||
|           border-bottom: 3px solid #2266FF; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| </style> | ||||
| @@ -5,7 +5,7 @@ | ||||
|       <div class="content"> | ||||
|         <ai-search-bar bottomBorder> | ||||
|           <template #left> | ||||
|             <el-button type="primary" @click="toAdd">新建评分任务</el-button> | ||||
|             <el-button type="primary" @click="isShow = true">新建评分任务</el-button> | ||||
|           </template> | ||||
|           <template #right> | ||||
|             <el-input | ||||
| @@ -38,6 +38,17 @@ | ||||
|           </el-table-column> | ||||
|         </ai-table> | ||||
|       </div> | ||||
|       <ai-dialog | ||||
|         :visible.sync="isShow" | ||||
|         width="590px" | ||||
|         title="新建评分任务" | ||||
|         @onConfirm="onConfirm"> | ||||
|         <el-form ref="form" :model="form" label-width="110px" label-position="right"> | ||||
|           <el-form-item label="返乡登记" prop="name" :rules="[{required: true, message: '请输入任务名称', trigger: 'blur'}]"> | ||||
|             <el-input v-model="form.name" size="small" placeholder="请输入任务名称"></el-input> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|       </ai-dialog> | ||||
|     </template> | ||||
|   </ai-list> | ||||
| </template> | ||||
| @@ -58,6 +69,9 @@ | ||||
|           size: 10, | ||||
|           name: '' | ||||
|         }, | ||||
|         form: { | ||||
|           name: '' | ||||
|         }, | ||||
|         colConfigs: [ | ||||
|           { prop: 'name', label: '任务名称' }, | ||||
|           { prop: 'phone', align: 'center', label: '创建人' }, | ||||
| @@ -67,7 +81,8 @@ | ||||
|         ids: [], | ||||
|         tableData: [], | ||||
|         total: 0, | ||||
|         loading: false | ||||
|         loading: false, | ||||
|         isShow: false | ||||
|       } | ||||
|     }, | ||||
|  | ||||
| @@ -98,11 +113,16 @@ | ||||
|         }) | ||||
|       }, | ||||
|  | ||||
|       toDetail (id) { | ||||
|         this.$emit('change', { | ||||
|           type: 'Detail', | ||||
|           params: { | ||||
|             id: id || '' | ||||
|       onConfirm (id) { | ||||
|         this.$refs.form.validate((valid) => { | ||||
|           if (valid) { | ||||
|             this.isShow = false | ||||
|             this.$emit('change', { | ||||
|               type: 'FormDetail', | ||||
|               params: { | ||||
|                 id: id || '' | ||||
|               } | ||||
|             }) | ||||
|           } | ||||
|         }) | ||||
|       }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user