1.接收取消数据

2.导入数据
dev
862857010@qq.com 2 years ago
parent 5d1972a92b
commit add2864818
  1. 54
      cjy-project/src/main/java/com/cjy/reservationdata/controller/AppointmentCenterDataController.java
  2. 16
      cjy-project/src/main/java/com/cjy/reservationdata/domain/AppointmentCenterData.java
  3. 16
      cjy-project/src/main/java/com/cjy/reservationdata/mapper/AppointmentCenterDataMapper.java
  4. 22
      cjy-project/src/main/java/com/cjy/reservationdata/service/IAppointmentCenterDataService.java
  5. 113
      cjy-project/src/main/java/com/cjy/reservationdata/service/impl/AppointmentCenterDataServiceImpl.java
  6. 13
      cjy-project/src/main/resources/mapper/reservationdata/AppointmentCenterDataMapper.xml
  7. BIN
      cjy-project/src/main/resources/static/appointmentInformationStencil.xlsx
  8. 4
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  9. 165
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
  10. 3
      ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
  11. 5
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
  12. 4
      ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
  13. 292
      ruoyi-ui/src/views/reservationdata/appointmentrecord/index.vue

@ -1,10 +1,10 @@
package com.cjy.reservationdata.controller;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson2.JSONArray;
import com.cjy.reservationdata.domain.vo.SynchronousWriteOffDataVO;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
@ -23,7 +23,9 @@ import com.ruoyi.common.enums.BusinessType;
import com.cjy.reservationdata.domain.AppointmentCenterData;
import com.cjy.reservationdata.service.IAppointmentCenterDataService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
* 预约记录Controller
@ -113,6 +115,28 @@ public class AppointmentCenterDataController extends BaseController
}
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) {
ExcelUtil<AppointmentCenterData> util = new ExcelUtil<AppointmentCenterData>(AppointmentCenterData.class);
List<AppointmentCenterData> list = null;
try {
list = util.importExcel(file.getInputStream(), 1);
} catch (Exception e) {
e.printStackTrace();
}
String message = appointmentCenterDataService.importData(list, 2,getUserOrganCode());
return AjaxResult.success(message);
}
/**
* 同步预约数据
* @param list
* @return
*/
@RequestMapping("/synchronousData")
public AjaxResult synchronousData(@RequestBody List<AppointmentCenterData> list) {
try {
@ -123,13 +147,35 @@ public class AppointmentCenterDataController extends BaseController
}
}
/**
* 核销预约数据
* @param list
* @return
*/
@RequestMapping("/synchronousWriteOffData")
public AjaxResult synchronousWriteOffData( @RequestBody SynchronousWriteOffDataVO synchronousWriteOffDataVO) {
public AjaxResult synchronousWriteOffData( @RequestBody List<SynchronousWriteOffDataVO> list) {
try {
//通过id去修改数据
appointmentCenterDataService.synchronousWriteOffData(list);
return AjaxResult.success("接收成功");
}catch (Exception e){
return AjaxResult.error("接收数据异常");
}
}
/**
* 取消预约数据
* @param list
* @return
*/
@RequestMapping("/synchronousCancelData")
public AjaxResult synchronousCancelData( @RequestBody List<String> list) {
try {
//通过id去修改数据
appointmentCenterDataService.synchronousWriteOffData(synchronousWriteOffDataVO);
appointmentCenterDataService.synchronousCancelData(list);
return AjaxResult.success("接收成功");
}catch (Exception e){
e.printStackTrace();
return AjaxResult.error("接收数据异常");
}
}

@ -27,32 +27,32 @@ public class AppointmentCenterData extends BaseEntity
private String appointmentNumber;
/** 景区名称 */
@Excel(name = "景区名称")
@Excel(name = "景区名称(必填)")
private String scenicName;
/** 预约日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "预约日期", width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "预约日期(必填)", width = 30, dateFormat = "yyyy-MM-dd")
private Date appointmentDate;
/** 预约时段 */
@Excel(name = "预约时段")
@Excel(name = "预约时段(必填)")
private String appointmentSlot;
/** 预约人姓名 */
@Excel(name = "预约人姓名")
@Excel(name = "预约人姓名(必填)")
private String appointmentPeopleName;
/** 预约人手机号 */
@Excel(name = "预约人手机号")
@Excel(name = "预约人手机号(必填)")
private String appointmentPeoplePhone;
/** 证件类型 */
@Excel(name = "证件类型")
@Excel(name = "证件类型(必填)")
private String certificateType;
/** 证件号码 */
@Excel(name = "证件号码")
@Excel(name = "证件号码(必填)")
private String documentsNumber;
/** 核销码 */
@ -60,7 +60,7 @@ public class AppointmentCenterData extends BaseEntity
private String verificationCode;
/** 状态 */
@Excel(name = "状态")
@Excel(name = "状态(必填)")
private String state;
/** 核销日期 */

@ -62,11 +62,23 @@ public interface AppointmentCenterDataMapper
public int deleteAppointmentCenterDataByIds(Long[] ids);
/**
* 同步数据批量插入
* 同步预约数据
* @param list
* @return
*/
int synchronousData(@Param("list") List<AppointmentCenterData> list);
int synchronousWriteOffData(SynchronousWriteOffDataVO synchronousWriteOffDataVO);
/**
* 核销预约数据
* @param list
* @return
*/
int synchronousWriteOffData(@Param("list") List<SynchronousWriteOffDataVO> list);
/**
* 取消预约数据
* @param list
* @return
*/
int synchronousCancelData(@Param("list") List<String> list );
}

@ -60,8 +60,26 @@ public interface IAppointmentCenterDataService
*/
public int deleteAppointmentCenterDataById(Long id);
/**
* 同步预约数据
* @param list
* @return
*/
int synchronousData(List<AppointmentCenterData> list);
int synchronousWriteOffData(SynchronousWriteOffDataVO synchronousWriteOffDataVO);
/**
* 核销预约数据
* @param list
* @return
*/
int synchronousWriteOffData(List<SynchronousWriteOffDataVO> list );
/**
* 取消预约数据
* @param list
* @return
*/
int synchronousCancelData(List<String> list );
String importData( List<AppointmentCenterData> list,int row,Long organCode);
}

@ -1,9 +1,15 @@
package com.cjy.reservationdata.service.impl;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.cjy.reservationdata.domain.vo.SynchronousWriteOffDataVO;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.service.ISysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cjy.reservationdata.mapper.AppointmentCenterDataMapper;
@ -21,7 +27,8 @@ public class AppointmentCenterDataServiceImpl implements IAppointmentCenterDataS
{
@Autowired
private AppointmentCenterDataMapper appointmentCenterDataMapper;
@Autowired
private ISysDictDataService iSysDictDataService;
/**
* 查询预约记录
*
@ -96,13 +103,113 @@ public class AppointmentCenterDataServiceImpl implements IAppointmentCenterDataS
return appointmentCenterDataMapper.deleteAppointmentCenterDataById(id);
}
/**
* 同步预约数据
* @param list
* @return
*/
@Override
public int synchronousData(List<AppointmentCenterData> list) {
return appointmentCenterDataMapper.synchronousData(list);
}
/**
* 核销预约数据
* @param list
* @return
*/
@Override
public int synchronousWriteOffData(List<SynchronousWriteOffDataVO> list) {
return appointmentCenterDataMapper.synchronousWriteOffData(list);
}
/**
* 取消预约数据
* @param list
* @return
*/
@Override
public int synchronousCancelData(List<String> list) {
return appointmentCenterDataMapper.synchronousCancelData(list);
}
@Override
public int synchronousWriteOffData(SynchronousWriteOffDataVO synchronousWriteOffDataVO) {
return appointmentCenterDataMapper.synchronousWriteOffData(synchronousWriteOffDataVO);
public String importData(List<AppointmentCenterData> list, int row,Long organCode) {
List<AppointmentCenterData> newList= new ArrayList<>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<String> dictTypes =new ArrayList<>();
dictTypes.add("write_off_status");
dictTypes.add("certificate_type");
List<SysDictData> dictData=iSysDictDataService.selectDictDataListByType(dictTypes);
for (int i = 0; i < list.size(); i++) {
AppointmentCenterData appointmentCenterData= new AppointmentCenterData();
appointmentCenterData.setDataSources("1");
appointmentCenterData.setOrganCode(organCode);
if (StringUtils.isBlank(list.get(i).getScenicName())) {
return "第" + (row + i) + "行数据,景区名称不能为空,请核验";
}
appointmentCenterData.setScenicName(list.get(i).getScenicName());
if (StringUtils.isBlank( dateFormat.format(list.get(i).getAppointmentDate()))) {
return "第" + (row + i) + "行数据,预约日期不能为空,请核验";
}
appointmentCenterData.setAppointmentDate(list.get(i).getAppointmentDate());
if (StringUtils.isBlank( list.get(i).getAppointmentSlot())) {
return "第" + (row + i) + "行数据,预约时段不能为空,请核验";
}
appointmentCenterData.setAppointmentSlot( list.get(i).getAppointmentSlot());
if (StringUtils.isBlank( list.get(i).getAppointmentPeopleName())) {
return "第" + (row + i) + "行数据,预约人姓名不能为空,请核验";
}
appointmentCenterData.setAppointmentPeopleName(list.get(i).getAppointmentPeopleName());
if (StringUtils.isBlank( list.get(i).getAppointmentPeoplePhone())) {
return "第" + (row + i) + "行数据,预约人电话不能为空,请核验";
}
appointmentCenterData.setAppointmentPeoplePhone(list.get(i).getAppointmentPeoplePhone());
if (StringUtils.isBlank( list.get(i).getDocumentsNumber())) {
return "第" + (row + i) + "行数据,证件号码不能为空,请核验";
}
appointmentCenterData.setDocumentsNumber(list.get(i).getDocumentsNumber());
if (StringUtils.isBlank( list.get(i).getCertificateType())) {
return "第" + (row + i) + "行数据,证件类型不能为空,请核验";
}
try {
int finalI = i;
String state=dictData.stream().filter(dataSate ->dataSate.getDictLabel().equals(list.get(finalI).getState())).collect(Collectors.toList()).get(0).getDictValue();
appointmentCenterData.setState(state);
}catch (Exception e){
return "第" + (row + i) + "行数据,证件类型不能正确,请核验";
}
if (StringUtils.isBlank( list.get(i).getState())) {
return "第" + (row + i) + "行数据,状态不能为空,请核验";
}
try {
int finalI = i;
String state = dictData.stream().filter(dataSate -> dataSate.getDictLabel().equals(list.get(finalI).getState())).collect(Collectors.toList()).get(0).getDictValue();
appointmentCenterData.setState(state);
}catch (Exception e){
return "第" + (row + i) + "行数据,状态数据错,请核验";
}
if(newList.size()<1000){
newList.add(appointmentCenterData);
}else {
appointmentCenterDataMapper.synchronousData(newList);
newList.clear();
newList.add(appointmentCenterData);
}
}
if(!newList.isEmpty()){
appointmentCenterDataMapper.synchronousData(newList);
}
return "导入"+newList.size() + "条数据";
}
}

@ -155,6 +155,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</update>
<update id="synchronousWriteOffData">
update appointment_center_data set state=1,write_off_time=#{date} where appointment_people_id=#{id}
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update appointment_center_data set state=1,write_off_time=#{item.date}
where appointment_people_id=#{item.id}
</foreach>
</update>
<update id="synchronousCancelData">
update appointment_center_data set state=3 where appointment_people_id in
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</update>
</mapper>

@ -111,9 +111,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求
.authorizeRequests()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
.antMatchers("/device/**","/login", "/register", "/captchaImage","/enterprise/loginPageConfig","/app/login","/weibo/**","/reservationdata/appointmentrecord/synchronousData","/reservationdata/appointmentrecord/synchronousWriteOffData").permitAll()
.antMatchers("/device/**","/login", "/register", "/captchaImage","/enterprise/loginPageConfig","/app/login","/weibo/**","/reservationdata/appointmentrecord/synchronousData","/reservationdata/appointmentrecord/synchronousWriteOffData","/reservationdata/appointmentrecord/synchronousCancelData").permitAll()
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**","/**/*.xlsx").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated()

@ -1,6 +1,7 @@
package com.ruoyi.system.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.common.core.domain.entity.SysDictData;
@ -9,95 +10,97 @@ import com.ruoyi.common.core.domain.entity.SysDictData;
*
* @author ruoyi
*/
public interface SysDictDataMapper
{
/**
* 根据条件分页查询字典数据
*
* @param dictData 字典数据信息
* @return 字典数据集合信息
*/
public List<SysDictData> selectDictDataList(SysDictData dictData);
public interface SysDictDataMapper {
/**
* 根据条件分页查询字典数据
*
* @param dictData 字典数据信息
* @return 字典数据集合信息
*/
public List<SysDictData> selectDictDataList(SysDictData dictData);
/**
* 根据字典类型查询字典数据
*
* @param dictType 字典类型
* @return 字典数据集合信息
*/
public List<SysDictData> selectDictDataByType(String dictType);
/**
* 根据字典类型查询字典数据
*
* @param dictType 字典类型
* @return 字典数据集合信息
*/
public List<SysDictData> selectDictDataByType(String dictType);
/**
* 通过 dictType 和dictValue 获取数据
*
* @param dictType
* @param list
* @return
*/
public List<SysDictData> selectDictDataByTypeAndDictValue(@Param("dictType") String dictType, @Param("list") List<String> list);
/**
* 通过 dictType 和dictValue 获取数据
* @param dictType
* @param list
* @return
*/
public List<SysDictData> selectDictDataByTypeAndDictValue(@Param("dictType") String dictType,@Param("list") List<String> list);
/**
* 根据字典类型和字典键值查询字典数据信息
*
* @param dictType 字典类型
* @param dictValue 字典键值
* @return 字典标签
*/
public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
/**
* 根据字典类型和字典键值查询字典数据信息
*
* @param dictType 字典类型
* @param dictValue 字典键值
* @return 字典标签
*/
public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
/**
* 根据字典数据ID查询信息
*
* @param dictCode 字典数据ID
* @return 字典数据
*/
public SysDictData selectDictDataById(Long dictCode);
/**
* 根据字典数据ID查询信息
*
* @param dictCode 字典数据ID
* @return 字典数据
*/
public SysDictData selectDictDataById(Long dictCode);
/**
* 查询字典数据
*
* @param dictType 字典类型
* @return 字典数据
*/
public int countDictDataByType(String dictType);
/**
* 查询字典数据
*
* @param dictType 字典类型
* @return 字典数据
*/
public int countDictDataByType(String dictType);
/**
* 通过字典ID删除字典数据信息
*
* @param dictCode 字典数据ID
* @return 结果
*/
public int deleteDictDataById(Long dictCode);
/**
* 通过字典ID删除字典数据信息
*
* @param dictCode 字典数据ID
* @return 结果
*/
public int deleteDictDataById(Long dictCode);
/**
* 批量删除字典数据信息
*
* @param dictCodes 需要删除的字典数据ID
* @return 结果
*/
public int deleteDictDataByIds(Long[] dictCodes);
/**
* 批量删除字典数据信息
*
* @param dictCodes 需要删除的字典数据ID
* @return 结果
*/
public int deleteDictDataByIds(Long[] dictCodes);
/**
* 新增字典数据信息
*
* @param dictData 字典数据信息
* @return 结果
*/
public int insertDictData(SysDictData dictData);
/**
* 新增字典数据信息
*
* @param dictData 字典数据信息
* @return 结果
*/
public int insertDictData(SysDictData dictData);
/**
* 修改字典数据信息
*
* @param dictData 字典数据信息
* @return 结果
*/
public int updateDictData(SysDictData dictData);
/**
* 修改字典数据信息
*
* @param dictData 字典数据信息
* @return 结果
*/
public int updateDictData(SysDictData dictData);
/**
* 同步修改字典类型
*
* @param oldDictType 旧字典类型
* @param newDictType 新旧字典类型
* @return 结果
*/
public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
/**
* 同步修改字典类型
*
* @param oldDictType 旧字典类型
* @param newDictType 新旧字典类型
* @return 结果
*/
public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
String getDictValueByDictLabel(@Param("dictType") String dictType, @Param("dictLable") String dictLable);
}

@ -2,6 +2,7 @@ package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysDictData;
import org.apache.ibatis.annotations.Param;
/**
* 字典 业务层
@ -65,4 +66,6 @@ public interface ISysDictDataService
* @return
*/
public List<SysDictData> selectDictDataListByType(List<String> dictTypes);
String getDictValueByDictLabel( String dictType, String dictLable);
}

@ -131,4 +131,9 @@ public class SysDictDataServiceImpl implements ISysDictDataService
}
return list;
}
@Override
public String getDictValueByDictLabel(String dictType, String dictLable) {
return dictDataMapper.getDictValueByDictLabel(dictType,dictLable);
}
}

@ -130,5 +130,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sysdate()
)
</insert>
<select id="getDictValueByDictLabel" resultType="java.lang.String">
select dict_value from sys_dict_data where dict_type = #{dictType} and dict_label=#{dictLable}
</select>
</mapper>

@ -1,6 +1,8 @@
<template>
<div class="app-container">
<el-form :model="queryParams" @submit.native.prevent @submit.native.prevent ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px">
<el-form :model="queryParams" @submit.native.prevent @submit.native.prevent ref="queryForm" size="small"
:inline="true" v-show="showSearch" label-width="120px"
>
<el-form-item label="景区名称" prop="scenicName">
<el-input
@ -46,10 +48,11 @@
</el-form-item>
<el-form-item label="预约日期" prop="appointmentDate">
<el-date-picker clearable
v-model="queryParams.appointmentDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预约日期">
v-model="queryParams.appointmentDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预约日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="预约时段" prop="appointmentSlot">
@ -72,9 +75,12 @@
</el-select>
</el-form-item>
<el-form-item label="数据来源" prop="dataSources">
<el-select v-model="queryParams.dataSources" placeholder="数据来源" clearable style="width: 240px" @change="$forceUpdate()">
<el-select v-model="queryParams.dataSources" placeholder="数据来源" clearable style="width: 240px"
@change="$forceUpdate()"
>
<el-option v-for="dict in dict.type.data_sources" :key="dict.value" :label="dict.label"
:value="dict.value" />
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
@ -92,7 +98,8 @@
size="mini"
@click="handleAdd"
v-hasPermi="['reservationdata:appointmentrecord:add']"
>新增</el-button>
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
@ -103,7 +110,8 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['reservationdata:appointmentrecord:edit']"
>修改</el-button>
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
@ -114,40 +122,50 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['reservationdata:appointmentrecord:remove']"
>删除</el-button>
>删除
</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['reservationdata:appointmentrecord:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button type="primary"
plain
icon="el-icon-upload2"
size="mini"
@click="importFile">
导入档案
</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['reservationdata:appointmentrecord:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="appointmentrecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="预约单号" align="center" prop="appointmentNumber" />
<el-table-column label="景区名称" align="center" prop="scenicName" />
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="预约单号" align="center" prop="appointmentNumber"/>
<el-table-column label="景区名称" align="center" prop="scenicName"/>
<el-table-column label="预约日期" align="center" prop="appointmentDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.appointmentDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="预约时段" align="center" prop="appointmentSlot" />
<el-table-column label="预约人姓名" align="center" prop="appointmentPeopleName" />
<el-table-column label="预约人手机号" align="center" prop="appointmentPeoplePhone" />
<el-table-column label="预约时段" align="center" prop="appointmentSlot"/>
<el-table-column label="预约人姓名" align="center" prop="appointmentPeopleName"/>
<el-table-column label="预约人手机号" align="center" prop="appointmentPeoplePhone"/>
<el-table-column label="证件类型" align="center" prop="certificateType">
<template slot-scope="scope">
<dict-tag :options="dict.type.certificate_type" :value="scope.row.certificateType"/>
</template>
</el-table-column>
<el-table-column label="证件号码" align="center" prop="documentsNumber" />
<el-table-column label="预约码" align="center" prop="verificationCode" />
<el-table-column label="证件号码" align="center" prop="documentsNumber"/>
<el-table-column label="预约码" align="center" prop="verificationCode"/>
<el-table-column label="状态" align="center" prop="state">
<template slot-scope="scope">
<dict-tag :options="dict.type.write_off_status" :value="scope.row.state"/>
@ -158,7 +176,7 @@
<span>{{ parseTime(scope.row.writeOffTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="数据来源" align="center" prop="dataSources" >
<el-table-column label="数据来源" align="center" prop="dataSources">
<template slot-scope="scope">
<dict-tag :options="dict.type.data_sources" :value="scope.row.dataSources"/>
</template>
@ -171,7 +189,8 @@
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['reservationdata:appointmentrecord:edit']"
>修改</el-button>
>修改
</el-button>
<el-button
size="mini"
type="text"
@ -192,30 +211,31 @@
/>
<!-- 添加或修改预约记录对话框 -->
<el-dialog :title="title" :visible.sync="open" append-to-body>
<el-dialog :title="title" :visible.sync="open" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="预约单号" prop="appointmentNumber">
<el-input v-model="form.appointmentNumber" placeholder="请输入预约单号" />
<el-input v-model="form.appointmentNumber" placeholder="请输入预约单号"/>
</el-form-item>
<el-form-item label="景区名称" prop="scenicName">
<el-input v-model="form.scenicName" placeholder="请输入景区名称" />
<el-input v-model="form.scenicName" placeholder="请输入景区名称"/>
</el-form-item>
<el-form-item label="预约日期" prop="appointmentDate">
<el-date-picker clearable
v-model="form.appointmentDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预约日期">
v-model="form.appointmentDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预约日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="预约时段" prop="appointmentSlot">
<el-input v-model="form.appointmentSlot" placeholder="请输入预约时段" />
<el-input v-model="form.appointmentSlot" placeholder="请输入预约时段"/>
</el-form-item>
<el-form-item label="预约人姓名" prop="appointmentPeopleName">
<el-input v-model="form.appointmentPeopleName" placeholder="请输入预约人姓名" />
<el-input v-model="form.appointmentPeopleName" placeholder="请输入预约人姓名"/>
</el-form-item>
<el-form-item label="预约人手机号" prop="appointmentPeoplePhone">
<el-input v-model="form.appointmentPeoplePhone" placeholder="请输入预约人手机号" />
<el-input v-model="form.appointmentPeoplePhone" placeholder="请输入预约人手机号"/>
</el-form-item>
<el-form-item label="证件类型" prop="certificateType">
<el-select v-model="form.certificateType" placeholder="请选择证件类型">
@ -228,10 +248,10 @@
</el-select>
</el-form-item>
<el-form-item label="证件号码" prop="documentsNumber">
<el-input v-model="form.documentsNumber" placeholder="请输入证件号码" />
<el-input v-model="form.documentsNumber" placeholder="请输入证件号码"/>
</el-form-item>
<el-form-item label="预约码" prop="verificationCode">
<el-input v-model="form.verificationCode" placeholder="请输入核销码" />
<el-input v-model="form.verificationCode" placeholder="请输入核销码"/>
</el-form-item>
<el-form-item label="状态" prop="state">
<el-select v-model="form.state" placeholder="状态" clearable>
@ -245,10 +265,11 @@
</el-form-item>
<el-form-item label="核销日期" prop="writeOffTime">
<el-date-picker clearable
v-model="form.writeOffTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择核销日期">
v-model="form.writeOffTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择核销日期"
>
</el-date-picker>
</el-form-item>
</el-form>
@ -257,17 +278,47 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px">
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<!-- <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
<el-link type="info" style="font-size:12px" @click="downloadTemplate">下载模板</el-link>
</div>
<div class="el-upload__tip" style="color:red" slot="tip">提示仅允许导入xlsxlsx格式文件</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="xlsSubmitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listAppointmentrecord, getAppointmentrecord, delAppointmentrecord, addAppointmentrecord, updateAppointmentrecord } from "@/api/reservationdata/appointmentrecord";
import {
listAppointmentrecord,
getAppointmentrecord,
delAppointmentrecord,
addAppointmentrecord,
updateAppointmentrecord
} from '@/api/reservationdata/appointmentrecord'
import { getToken } from '@/utils/auth'
export default {
name: "Appointmentrecord",
dicts: ['certificate_type','write_off_status','data_sources'],
name: 'Appointmentrecord',
dicts: ['certificate_type', 'write_off_status', 'data_sources'],
data() {
return {change:false,
return {
change: false,
//
loading: true,
//
@ -283,9 +334,23 @@ export default {
//
appointmentrecordList: [],
//
title: "",
title: '',
//
open: false,
upload: {
//
open: false,
//
title: '',
//
isUploading: false,
//
updateSupport: 0,
//
headers: { Authorization: 'Bearer ' + getToken() },
//
url: process.env.VUE_APP_BASE_API + '/reservationdata/appointmentrecord/importData'
},
//
queryParams: {
pageNum: 1,
@ -307,40 +372,66 @@ export default {
//
form: {},
//
rules: {
}
};
rules: {}
}
},
watch:{
'open':{
deep:true,
immediate:true,
handler(val){
if (val == false){
watch: {
'open': {
deep: true,
immediate: true,
handler(val) {
if (val == false) {
this.change = false
}else {
} else {
this.change = true
}
}
}
},
created() {
this.getList();
this.getList()
},
methods: {
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
//
xlsSubmitFileForm() {
this.$refs.upload.submit();
},
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
this.getList();
},
downloadTemplate() {
var url = process.env.VUE_APP_BASE_API + '/appointmentInformationStencil.xlsx'
var suffix = url.substring(url.lastIndexOf('.'), url.length)
const a = document.createElement('a')
a.setAttribute('download', '预约信息导入模板' + suffix)
a.setAttribute('target', '_blank')
a.setAttribute('href', url)
a.click()
},
importFile() {
this.upload.title = '数据上传'
this.upload.open = true
},
/** 查询预约记录列表 */
getList() {
this.loading = true;
this.loading = true
listAppointmentrecord(this.queryParams).then(response => {
this.appointmentrecordList = response.rows;
this.total = response.total;
this.loading = false;
});
this.appointmentrecordList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false;
this.reset();
this.open = false
this.reset()
},
//
reset() {
@ -364,70 +455,71 @@ export default {
updateBy: null,
updateTime: null,
organCode: null
};
this.resetForm("form");
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加预约记录";
this.reset()
this.open = true
this.title = '添加预约记录'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.reset()
const id = row.id || this.ids
getAppointmentrecord(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改预约记录";
});
this.form = response.data
this.open = true
this.title = '修改预约记录'
})
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateAppointmentrecord(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addAppointmentrecord(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
}
}
});
})
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
const ids = row.id || this.ids
this.$modal.confirm('是否确认删除预约记录编号为"' + ids + '"的数据项?').then(function() {
return delAppointmentrecord(ids);
return delAppointmentrecord(ids)
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
@ -436,5 +528,5 @@ export default {
}, `appointmentrecord_${new Date().getTime()}.xlsx`)
}
}
};
}
</script>

Loading…
Cancel
Save