소스 검색

完成客户端报表自动打印功能,并对接后台相应的接口

zhoupeng 1 년 전
부모
커밋
3e28a27a10

+ 0 - 4
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/Print.java

@@ -14,10 +14,6 @@ public class Print extends BaseSchedule implements Serializable {
     private Integer id;
 
     /**
-     * 打印任务名称
-     */
-    private String printName;
-    /**
      * 打印机ip
      */
     private String printIp;

+ 14 - 27
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/controller/PrintController.java

@@ -9,6 +9,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+
 @RestController
 @RequestMapping("print")
 @Slf4j
@@ -18,43 +20,28 @@ public class PrintController {
     private PrintService printService;
 
     @PostMapping("/addPrint")
-    public Result addPrint(@RequestBody Print print) {
-        if (Blank.isEmpty(print, print.getPrintName(), print.getPrintIp(), print.getReportTableId(), print.getCron())) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "打印任务名称、打印机ip、报表、定时任务都不能为空");
+    public Result addPrint(@RequestBody Print print, HttpServletRequest request) {
+        if (Blank.isEmpty(print, print.getReportTableId(), print.getCron())) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表、定时任务都不能为空");
         }
+        print.setPrintIp(request.getRequestURI());
         return printService.addPrint(print);
     }
 
-    @PostMapping("/updatePrint")
-    public Result updatePrint(@RequestBody Print print) {
-        if (Blank.isEmpty(print, print.getId(), print.getPrintName(), print.getReportTableId(), print.getReportTableId(), print.getCron())) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "主键、打印任务名称、打印机ip、报表、定时任务都不能为空");
-        }
-        return printService.updatePrint(print);
-    }
-
-    @GetMapping("/getPrintById")
-    public Result getPrintById(Integer id) {
-        if (Blank.isEmpty(id)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "id不能为空");
-        }
-        return printService.getPrintById(id);
-    }
-
-    @PostMapping("/runAutoPrintById")
-    public Result runAutoPrintById(Integer id) {
-        if (Blank.isEmpty(id)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "id不能为空");
+    @GetMapping("/getPrintByReportId")
+    public Result getPrintById(Integer reportTableId) {
+        if (Blank.isEmpty(reportTableId)) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表不能为空不能为空");
         }
-        return printService.runAutoPrintById(id);
+        return printService.getPrintByReportId(reportTableId);
     }
 
     @PostMapping("/stopAutoPrintById")
-    public Result stopAutoPrintById(Integer id) {
-        if (Blank.isEmpty(id)) {
+    public Result stopAutoPrintById(Integer reportTableId) {
+        if (Blank.isEmpty(reportTableId)) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "id不能为空");
         }
-        return printService.stopAutoPrintById(id);
+        return printService.stopAutoPrintById(reportTableId);
     }
 
 }

+ 1 - 5
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dao/PrintDao.java

@@ -5,15 +5,11 @@ import org.springframework.stereotype.Repository;
 
 @Repository
 public interface PrintDao {
-    Print getPrintByName(String printName);
-
     Integer addPrint(Print print);
 
-    Print getPrintByNameNoId(Integer id, String printName);
-
     Integer updatePrint(Print print);
 
-    Print getPrintById(Integer id);
+    Print getPrintByReportId(Integer reportTableId);
 
     Integer runAutoPrintById(Integer id, Integer runState);
 }

+ 2 - 6
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/PrintService.java

@@ -7,12 +7,8 @@ public interface PrintService {
 
     Result addPrint(Print print);
 
-    Result updatePrint(Print print);
+    Result getPrintByReportId(Integer reportTableId);
 
-    Result getPrintById(Integer id);
-
-    Result runAutoPrintById(Integer id);
-
-    Result stopAutoPrintById(Integer id);
+    Result stopAutoPrintById(Integer reportTableId);
 
 }

+ 33 - 43
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/PrintServiceImpl.java

@@ -34,61 +34,51 @@ public class PrintServiceImpl implements PrintService {
 
     @Override
     public synchronized Result addPrint(Print print) {
-        String printName = print.getPrintName();
-        Print isExistPrint = printDao.getPrintByName(printName);
-        if (Blank.isNotEmpty(isExistPrint)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "已经存在此名称的打印任务了,请更换名称");
-        }
         String cron = print.getCron();
         if (!CronExpression.isValidExpression(cron)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "定时任务配置不正确,请重新配置");
-        }
-        print.setCronId(UUID.randomUUID().toString().replace("-", ""));
-        if (printDao.addPrint(print) <= 0) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "新增打印任务失败");
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "打印的定时任务配置不正确,请重新配置");
         }
-        return Result.ok("新增打印任务成功");
-    }
-
-    @Override
-    public synchronized Result updatePrint(Print print) {
         Integer id = print.getId();
-        String printName = print.getPrintName();
-        Print isExistPrint = printDao.getPrintByNameNoId(id, printName);
-        if (Blank.isNotEmpty(isExistPrint)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "已经存在此名称的打印任务了,请更换名称");
-        }
-        String cron = print.getCron();
-        if (!CronExpression.isValidExpression(cron)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "定时任务配置不正确,请重新配置");
+        Integer reportTableId = print.getReportTableId();
+        if (Blank.isEmpty(id)) {
+            String cronId = UUID.randomUUID().toString().replace("-", "");
+            print.setCronId(cronId);
+            if (printDao.addPrint(print) <= 0) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "新增打印任务失败");
+            }
+            printDao.runAutoPrintById(print.getId(), ConstantStr.START_UP);
+            SchedulingRunnable task = new SchedulingRunnable(PrintTask.class, "autoPrint", new Object[]{print});
+            cronTaskRegister.addCronTask(task, cronId, cron);
+        } else {
+            if (printDao.updatePrint(print) <= 0) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "修改打印任务失败");
+            }
+            Print print1 = printDao.getPrintByReportId(reportTableId);
+            String cronId = print1.getCronId();
+            cronTaskRegister.removeCronTask(cronId);
+            printDao.runAutoPrintById(id, ConstantStr.START_UP);
+            SchedulingRunnable task = new SchedulingRunnable(PrintTask.class, "autoPrint", new Object[]{print});
+            cronTaskRegister.addCronTask(task, cronId, cron);
         }
-        if (printDao.updatePrint(print) <= 0) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "修改打印任务失败");
-        }
-        return Result.ok("修改打印任务成功");
-    }
-
-    @Override
-    public Result getPrintById(Integer id) {
-        return Result.ok(printDao.getPrintById(id));
+        return Result.ok("打印任务配置成功");
     }
 
     @Override
-    public Result runAutoPrintById(Integer id) {
-        Print print = printDao.getPrintById(id);
-        String cronId = print.getCronId();
-        String cron = print.getCron();
-        printDao.runAutoPrintById(id, ConstantStr.START_UP);
-        SchedulingRunnable task = new SchedulingRunnable(PrintTask.class, "autoPrint", new Object[]{print});
-        cronTaskRegister.addCronTask(task, cronId, cron);
-        return Result.ok("打印任务运行成功");
+    public Result getPrintByReportId(Integer reportTableId) {
+        return Result.ok(printDao.getPrintByReportId(reportTableId));
     }
 
     @Override
-    public Result stopAutoPrintById(Integer id) {
-        Print print = printDao.getPrintById(id);
+    public Result stopAutoPrintById(Integer reportTableId) {
+        Print print = printDao.getPrintByReportId(reportTableId);
+        if (Blank.isEmpty(print)) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表未配置打印任务");
+        }
+        if (print.getRunState().equals(ConstantStr.STOP_IT)) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此打印任务已停止");
+        }
         String cronId = print.getCronId();
-        printDao.runAutoPrintById(id, ConstantStr.STOP_IT);
+        printDao.runAutoPrintById(print.getId(), ConstantStr.STOP_IT);
         cronTaskRegister.removeCronTask(cronId);
         return Result.ok("打印任务停止成功");
     }

+ 8 - 23
chaunyi_opc/opc_da/src/main/resources/mapper/PrintDao.xml

@@ -4,18 +4,18 @@
 
     <sql id="print">
         id
-        ,print_name,print_ip,report_table_id,cron_id,cron,run_state
+        ,print_ip,report_table_id,cron_id,cron,run_state
     </sql>
 
-    <insert id="addPrint">
-        insert into t_print (print_name, print_ip, report_table_id, cron_id, cron)
-            value (#{printName},#{printIp},#{reportTableId},#{cronId},#{cron})
+    <insert id="addPrint" parameterType="com.example.opc_common.entity.TableTemplate" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into t_print (print_ip, report_table_id, cron_id, cron)
+            value (#{printIp},#{reportTableId},#{cronId},#{cron})
     </insert>
 
     <update id="updatePrint">
         update t_print
-        set print_name=#{printName},
-            print_ip=#{printIp},
+        set print_ip=#{printIp},
             report_table_id=#{reportTableId},
             cron=#{cron}
         where id = #{id}
@@ -27,25 +27,10 @@
         where id = #{id}
     </update>
 
-    <select id="getPrintByName" resultType="com.example.opc_common.entity.Print">
+    <select id="getPrintByReportId" resultType="com.example.opc_common.entity.Print">
         select
         <include refid="print"/>
         from t_print
-        where print_name = #{printName}
-    </select>
-
-    <select id="getPrintByNameNoId" resultType="com.example.opc_common.entity.Print">
-        select
-        <include refid="print"/>
-        from t_print
-        where print_name = #{printName}
-        and id!=#{id}
-    </select>
-
-    <select id="getPrintById" resultType="com.example.opc_common.entity.Print">
-        select
-        <include refid="print"/>
-        from t_print
-        where id=#{id}
+        where report_table_id=#{reportTableId}
     </select>
 </mapper>

+ 2 - 2
chuanyi_client2/src/App.vue

@@ -128,7 +128,7 @@ export default {
       let count = 0
       const interval = setInterval(() => {
         count++
-        console.log('count', count)
+        // console.log('count', count)
         if (_this.webSocket && _this.webSocket.readyState === 1) {
           _this.webSocket.send(getToken())
         } else {
@@ -225,4 +225,4 @@ export default {
     margin: 0 0.5rem;
   }
 }
-</style>
+</style>

+ 35 - 1
chuanyi_client2/src/api/datasource.js

@@ -865,4 +865,38 @@ export function clearMessage() {
         },
         method: 'post'
     })
-}
+}
+
+export function getPrintByReportId(id) {
+    let uri = '/print/getPrintByReportId?reportTableId=' + id
+    return request({
+        url: uri,
+        headers: {
+            isToken: true
+        },
+        method: 'get'
+    })
+}
+
+export function addPrint(data) {
+    let uri = '/print/addPrint'
+    return request({
+        url: uri,
+        headers: {
+            isToken: true
+        },
+        method: 'post',
+        data
+    })
+}
+
+export function stopAutoPrintById(reportTableId) {
+    let uri = '/print/stopAutoPrintById?reportTableId=' + reportTableId
+    return request({
+        url: uri,
+        headers: {
+            isToken: true
+        },
+        method: 'post'
+    })
+}

+ 1 - 1
chuanyi_client2/src/views/my_report/index.vue

@@ -2248,4 +2248,4 @@ export default {
     width: 300px;
   }
 }
-</style>
+</style>

+ 49 - 0
chuanyi_client2/src/views/report_template/index.vue

@@ -358,6 +358,9 @@
           <el-button size="mini" type="primary" @click="multipleDataItemEvent"
                      style="width: 100px;margin-top: 4px;">设置数据条件
           </el-button>
+<!--          <el-button size="mini" type="primary" @click="setDriverCondition"-->
+<!--                     style="width: 100px;margin-top: 4px;">配置驱动条件-->
+<!--          </el-button>-->
         </div>
         <div style="height: 30vh; margin-top: 10px; overflow: auto;">
           <el-table :data="chooseGroupItemList"
@@ -514,6 +517,38 @@
       </span>
     </el-dialog>
 
+    <!-- 配置驱动条件 -->
+<!--    <el-dialog-->
+<!--        title="配置驱动条件"-->
+<!--        width="600px"-->
+<!--        top="10vh"-->
+<!--        center-->
+<!--        v-dialog-drag-->
+<!--        v-if="dialogDriverConditionVisible"-->
+<!--        :before-close="dialogDriverConditionClose"-->
+<!--        :visible.sync="dialogDriverConditionVisible"-->
+<!--        :close-on-click-modal="false"-->
+<!--        :append-to-body="true">-->
+<!--      <el-form label-width="100px" ref="itemConditionForm" :model="itemConditionForm" :rules="itemConditionFormRules">-->
+<!--        <el-form-item label="驱动项:" prop="valueType">-->
+<!--          <el-button size="mini" type="info">选择数据项</el-button>-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="驱动条件:" prop="valueTakingMode" v-if="templateReportType == 2">-->
+<!--          <el-radio v-for="item in driverConditionList"-->
+<!--                    v-model="itemConditionForm.valueType"-->
+<!--                    :label="item.value">{{ item.label }}-->
+<!--          </el-radio>-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="驱动值:" prop="bucketType" v-if="templateReportType == 2">-->
+<!--          <el-input v-model="input" placeholder="请输入条件值"></el-input>-->
+<!--        </el-form-item>-->
+<!--      </el-form>-->
+<!--      <span slot='footer'>-->
+<!--        <el-button type="primary" @click="chooseDataItemConfigEvent" style="margin-top: 20px;">确定</el-button>-->
+<!--        <el-button @click="dialogDataItemConfigClose" style="margin-top: 20px;">取消</el-button>-->
+<!--      </span>-->
+<!--    </el-dialog>-->
+
     <!-- 模板报表类型选择 -->
     <el-dialog
         title="选择模板报表类型"
@@ -586,6 +621,7 @@ export default {
       dialogBaseDataVisible: false,
       dialogReportTypeVisible: false,
       dialogDataItemConfigVisible: false,
+      // dialogDriverConditionVisible: false,
       isSelectAllItem: false,
       menuLeft: 0,
       menuTop: 0,
@@ -625,6 +661,11 @@ export default {
         {'label': '最小值', 'value': 2},
         {'label': '瞬时值', 'value': 3},
       ],
+      // driverConditionList: [
+      //   {'label': '大于', 'value': 0},
+      //   {'label': '小于', 'value': 1},
+      //   {'label': '等于', 'value': 2}
+      // ],
       // 数据项取值条件
       itemConditionForm: {
         valueType: 0, // 0原始值1计算值
@@ -938,6 +979,14 @@ export default {
         }
       })
     },
+    /** 配置驱动条件 */
+    setDriverCondition() {
+      this.dialogDriverConditionVisible = true;
+    },
+    /** 配置驱动条件 */
+    dialogDriverConditionClose() {
+      this.dialogDriverConditionVisible = false;
+    },
     /** 选择模板报表类型 */
     chooseTemplateReportTypeEvent() {
       if (!this.templateReportType) {

+ 188 - 25
chuanyi_client2/src/views/run_config/index.vue

@@ -20,9 +20,9 @@
       </el-input>
       <el-button style="margin-left: 5px;" @click="searchReportEvent">查询</el-button>
     </div>
-<!--    <el-button v-if="btnType === ''" type="primary" class="cy-nav-btn" icon="el-icon-circle-plus-outline"-->
-<!--               size="mini" @click="addReportEvent">新增-->
-<!--    </el-button>-->
+    <!--    <el-button v-if="btnType === ''" type="primary" class="cy-nav-btn" icon="el-icon-circle-plus-outline"-->
+    <!--               size="mini" @click="addReportEvent">新增-->
+    <!--    </el-button>-->
     <!--    <el-button v-if="btnType === ''" type="success" class="cy-nav-btn" icon="el-icon-refresh"-->
     <!--               size="mini" @click="refreshReportEvent">刷新</el-button>-->
     <el-divider></el-divider>
@@ -77,12 +77,12 @@
                            icon="el-icon-setting"
                            @click="editReportItem(scope.row)">配置
                 </el-button>
-<!--                <el-button type="text"-->
-<!--                           v-if="uid == scope.row.userId"-->
-<!--                           size="small"-->
-<!--                           icon="el-icon-edit"-->
-<!--                           @click="editReportItem(scope.row)">修改-->
-<!--                </el-button>-->
+                <!--                <el-button type="text"-->
+                <!--                           v-if="uid == scope.row.userId"-->
+                <!--                           size="small"-->
+                <!--                           icon="el-icon-edit"-->
+                <!--                           @click="editReportItem(scope.row)">修改-->
+                <!--                </el-button>-->
                 <el-button type="text"
                            v-if="uid == scope.row.userId && scope.row.reportTableType == 1 && scope.row.runState == 0"
                            size="small"
@@ -98,6 +98,12 @@
                 <el-button type="text"
                            v-if="uid == scope.row.userId"
                            size="small"
+                           icon="el-icon-printer"
+                           @click="setAutoPrint(scope.row)">打印
+                </el-button>
+                <el-button type="text"
+                           v-if="uid == scope.row.userId"
+                           size="small"
                            icon="el-icon-user"
                            @click="setUserGroupEvent(scope.row)">授权
                 </el-button>
@@ -144,7 +150,9 @@
         <el-row v-if="btnType == 'showShared'" style="margin: 10px 20px;">
           <el-button type="primary" size="mini" icon="el-icon-download" @click="downloadReport">下载</el-button>
           <el-button type="warning" size="mini" icon="el-icon-printer" @click="printExcel">打印</el-button>
-          <el-button v-if="chooseMyReport && chooseMyReport.reportTableType != 0" type="info" size="mini" icon="el-icon-document" @click="historyReport">运行记录</el-button>
+          <el-button v-if="chooseMyReport && chooseMyReport.reportTableType != 0" type="info" size="mini"
+                     icon="el-icon-document" @click="historyReport">运行记录
+          </el-button>
           <el-button type="danger" size="mini" icon="el-icon-circle-close" @click="cancelSaveReport">关闭</el-button>
         </el-row>
         <el-row v-if="btnType == 'showChild'" style="margin: 10px 20px;">
@@ -208,8 +216,11 @@
           </el-date-picker>
         </el-form-item>
         <el-form-item label="运行时间" prop="cronLabel" v-if="reportForm.reportTableType == 1">
-          <el-input placeholder="请设置运行时间" v-model="reportForm.cronLabel" style="width: calc(100% - 105px);" readonly></el-input>
-          <el-button size="mini" @click="settingAutoReportTime" style="float: right;width: 100px;line-height: 20px;">设置运行时间</el-button>
+          <el-input placeholder="请设置运行时间" v-model="reportForm.cronLabel" style="width: calc(100% - 105px);"
+                    readonly></el-input>
+          <el-button size="mini" @click="settingAutoReportTime" style="float: right;width: 100px;line-height: 20px;">
+            设置运行时间
+          </el-button>
         </el-form-item>
       </el-form>
       <span slot='footer'>
@@ -218,6 +229,87 @@
       </span>
     </el-dialog>
 
+    <!-- 配置打印定时任务 -->
+    <el-dialog
+        :title="printDialogTitle"
+        width="700px"
+        top="10vh"
+        center
+        v-dialog-drag
+        v-if="dialogAutoPrintVisible"
+        :before-close="dialogClose"
+        :visible.sync="dialogAutoPrintVisible"
+        :close-on-click-modal="false"
+        :append-to-body="true">
+      <el-form ref="reportForm" :model="reportForm" :rules="reportRules" label-width="80px">
+        <el-radio-group v-model="radioByCron">
+          <el-form-item label="秒">
+            <el-radio :label="1">
+              <span style="margin-right: 10px;">每</span>
+              <el-input-number size="mini" v-model="radioByCronValS" :min="1" :max="59"></el-input-number>
+              <span style="margin-left: 10px;">秒执行一次</span>
+            </el-radio>
+          </el-form-item>
+          <el-form-item label="分钟">
+            <el-radio :label="2">
+              <span style="margin-right: 10px;">每</span>
+              <el-input-number size="mini" v-model="radioByCronValM" :min="1" :max="59"></el-input-number>
+              <span style="margin-left: 10px;">分钟执行一次</span>
+            </el-radio>
+          </el-form-item>
+          <el-form-item label="小时">
+            <el-radio :label="3">
+              <span style="margin-right: 10px;">每</span>
+              <el-input-number size="mini" v-model="radioByCronValH" :min="1" :max="2"></el-input-number>
+              <span style="margin-left: 10px;">小时执行一次</span>
+            </el-radio>
+          </el-form-item>
+          <el-form-item label="指定时间">
+            <el-radio :label="4">
+              <span style="margin-right: 10px;">在每天的</span>
+              <el-time-picker v-model="radioByCronValD"
+                              size="mini"
+                              placeholder="请选择时间"
+                              :clearable="false"
+                              :editable="false"
+                              value-format="HH:mm:ss"
+                              :picker-options="{
+                                format: 'HH:mm:ss'
+                              }">
+              </el-time-picker>
+              <span style="margin-left: 10px;">执行一次</span>
+            </el-radio>
+          </el-form-item>
+          <el-form-item label="">
+            <el-radio :label="5">
+              <span style="margin-right: 10px;">在每月</span>
+              <el-input-number size="mini" v-model="radioByCronValMo" :min="1" :max="31"></el-input-number>
+              <span style="margin-right: 10px; margin-left: 10px;">号的</span>
+              <el-time-picker v-model="radioByCronValMoD"
+                              size="mini"
+                              placeholder="请选择时间"
+                              :clearable="false"
+                              :editable="false"
+                              value-format="HH:mm:ss"
+                              :picker-options="{
+                                format: 'HH:mm:ss'
+                              }">
+              </el-time-picker>
+              <span style="margin-left: 10px;">执行一次</span>
+            </el-radio>
+          </el-form-item>
+        </el-radio-group>
+      </el-form>
+      <span slot='footer'>
+        <el-button type="primary" @click="chooseCronPrint" style="margin-top: 20px;">确定</el-button>
+        <el-button type="warning" v-if="printForm.runState==1" @click="stopAutoPrint"
+                   style="margin-top: 20px;">停止</el-button>
+        <el-button type="warning" disabled v-if="printForm.runState!=1" @click="stopAutoPrint"
+                   style="margin-top: 20px;">停止</el-button>
+        <el-button @click="dialogClose" style="margin-top: 20px;">取消</el-button>
+      </span>
+    </el-dialog>
+
     <!-- 用户组选择 -->
     <el-dialog
         title="选择用户组"
@@ -344,7 +436,7 @@
       </el-form>
       <span slot='footer'>
           <el-button type="primary" @click="chooseCronEvent">确定</el-button>
-<!--          <el-button @click="dialogClose">取消</el-button>-->
+        <!--          <el-button @click="dialogClose">取消</el-button>-->
       </span>
     </el-dialog>
 
@@ -384,7 +476,7 @@
         :append-to-body="true">
       <div style="text-align: center;">
         <el-radio v-model="downloadType" label="1">Excel</el-radio>
-<!--        <el-radio v-model="downloadType" label="2" disabled>PDF</el-radio>-->
+        <!--        <el-radio v-model="downloadType" label="2" disabled>PDF</el-radio>-->
       </div>
       <div style="text-align: center; margin-top: 40px;">
         <el-button type="primary" @click="downloadReportEvent">确定</el-button>
@@ -439,13 +531,13 @@
           <!--                      type="warning" style="margin-right: 5px;">已分享</el-tag>-->
           <!--            </template>-->
           <!--          </el-table-column>-->
-<!--          <el-table-column-->
-<!--              align="center"-->
-<!--              label="当前版本"-->
-<!--              sortable="custom"-->
-<!--              prop="version"-->
-<!--              width="120">-->
-<!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--              align="center"-->
+          <!--              label="当前版本"-->
+          <!--              sortable="custom"-->
+          <!--              prop="version"-->
+          <!--              width="120">-->
+          <!--          </el-table-column>-->
           <el-table-column
               align="center"
               label="运行时间"
@@ -541,7 +633,10 @@ import {
   tableAssignUserById,
   tableExchangeTypeById,
   updateReportTable,
-  updateTableNameById
+  updateTableNameById,
+  getPrintByReportId,
+  addPrint,
+  stopAutoPrintById
 } from '@/api/datasource'
 import Print from 'print-js'
 import {getUsername} from '@/utils/auth'
@@ -579,6 +674,7 @@ export default {
       dialogUserGroupVisible: false,
       dialogHistoryReportVisible: false,
       dialogGroupUserVisible: false,
+      dialogAutoPrintVisible: false,
       reportType: '0',
       downloadType: '1',
       btnType: '',
@@ -611,6 +707,14 @@ export default {
         cron: '',
         dateRange: ''
       },
+      printDialogTitle: '打印任务配置',
+      printForm: {
+        id: null,
+        reportTableId: null,
+        cronId: '',
+        cron: '',
+        runState: null
+      },
       searchValue: null,
       searchTxt: '',
       searchHistoryTxt: '',
@@ -1400,6 +1504,64 @@ export default {
         showAlertWin(this, null, e)
       })
     },
+    /** 设置自动打印 */
+    setAutoPrint(data) {
+      this.resetPrint();
+      const loading = showLoading(this, '设置中,请稍候···')
+      this.printForm.reportTableId = data.id;
+      getPrintByReportId(data.id).then(res => {
+        loading.close()
+        if (res.data) {
+          this.printForm.id = res.data.id;
+          this.printForm.cronId = res.data.cronId;
+          this.printForm.cron = res.data.cron;
+          this.printForm.runState = res.data.runState;
+          this.analysisCron(res.data.cron)
+        }
+        this.dialogAutoPrintVisible = true
+      }).catch((e) => {
+        loading.close()
+      })
+    },
+    resetPrint() {
+      this.printForm.id = null;
+      this.printForm.reportTableId = null;
+      this.printForm.cronId = '';
+      this.printForm.cron = '';
+      this.printForm.runState = null;
+    },
+    /** 选择定时打印 */
+    chooseCronPrint() {
+      if (!this.getCron()) {
+        showAlertMsgWin(this, null, '请指定定时任务类型或运行时间!')
+        return
+      }
+      this.printForm.cron = this.getCron();
+      if (!this.validCron(this.printForm.cron)) {
+        showAlertMsgWin(this, null, '定时任务表达式格式不正确!')
+        return
+      }
+      addPrint(this.printForm).then(res => {
+        let msg = res.data ? '配置成功!' : '配置失败!'
+        showAlertMsgWin(this, null, msg)
+        this.showMainView = false
+        this.dialogAutoPrintVisible = false;
+      }).catch(e => {
+        showAlertWin(this, null, e)
+      })
+    },
+    /** 停止打印 */
+    stopAutoPrint() {
+      console.log(this.printForm.reportTableId)
+      stopAutoPrintById(this.printForm.reportTableId).then(res => {
+        showAlertWin(this, null, res.data)
+        if(res.code==200){
+          this.dialogAutoPrintVisible = false;
+        }
+      }).catch(e => {
+        showAlertWin(this, null, e)
+      })
+    },
     /** 设置用户组信息 */
     setUserGroupEvent(data) {
       if (data.userId != this.uid) {
@@ -1677,7 +1839,7 @@ export default {
       eventTables.forEach((data, i) => {
         x += 1
         y = 0
-        let { dataList, dataTimeList, itemName } = data
+        let {dataList, dataTimeList, itemName} = data
         itemName = (itemName != null && itemName != undefined) ? itemName : cqcyCode['invalidData']
         luckysheet.setCellValue(x, y, itemName)
         dataList.forEach((val, j) => {
@@ -1879,7 +2041,7 @@ export default {
             })
           }
         })
-      }catch (error){
+      } catch (error) {
         console.log(error)
       }
     },
@@ -2170,6 +2332,7 @@ export default {
         this.dialogAutoReportVisible = false
         this.dialogReportTypeVisible = false
         this.dialogUserGroupVisible = false
+        this.dialogAutoPrintVisible = false
       }
     },
     /** 弹出层关闭事件 */
@@ -2302,4 +2465,4 @@ export default {
     width: 300px;
   }
 }
-</style>
+</style>