修改整体样式,并且完成型号、舷号管理
This commit is contained in:
		
							parent
							
								
									c3837919b7
								
							
						
					
					
						commit
						cc26a51744
					
				
							
								
								
									
										30
									
								
								src/api/ship.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/api/ship.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
import { getAction, deleteAction, putAction, postAction, httpAction,uploadAction } from '@/api/manage'
 | 
			
		||||
 | 
			
		||||
const shipNumCreate = (params)=>postAction("/shipNum/create",params);
 | 
			
		||||
const shipNumUpdateById = (params)=>putAction("/shipNum/updateById",params);
 | 
			
		||||
const shipNumQueryById = (params)=>getAction("/shipNum/queryById",params);
 | 
			
		||||
const shipNumPageList = (params)=>getAction("/shipNum/pageList",params);
 | 
			
		||||
const shipNumQueryByModelId = (params)=>getAction("/shipNum/queryByModelId",params);
 | 
			
		||||
 | 
			
		||||
const shipModelCreate = (params)=>postAction("/shipModel/create",params);
 | 
			
		||||
const shipModelUpdateById = (params)=>putAction("/shipModel/updateById",params);
 | 
			
		||||
const shipModelQueryById = (params)=>getAction("/shipModel/queryById",params);
 | 
			
		||||
const shipModelPageList = (params)=>getAction("/shipModel/pageList",params);
 | 
			
		||||
const shipModelQueryByModelId = (params)=>getAction("/shipModel/queryByModelId",params);
 | 
			
		||||
const shipModeldeleteById = (params)=>deleteAction("/shipModel/deleteById",params);
 | 
			
		||||
export {
 | 
			
		||||
    shipNumCreate,
 | 
			
		||||
    shipNumUpdateById,
 | 
			
		||||
    shipNumQueryById,
 | 
			
		||||
    shipNumPageList,
 | 
			
		||||
    shipNumQueryByModelId,
 | 
			
		||||
    shipModelCreate,
 | 
			
		||||
    shipModelUpdateById,
 | 
			
		||||
    shipModelQueryById,
 | 
			
		||||
    shipModelPageList,
 | 
			
		||||
    shipModelQueryByModelId,
 | 
			
		||||
    shipModeldeleteById
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +100,7 @@
 | 
			
		|||
  width: 0;
 | 
			
		||||
  height: 0;
 | 
			
		||||
  border: 6px solid transparent;
 | 
			
		||||
  border-top-color: rgba(0, 0, 0, 0.25);
 | 
			
		||||
  border-top-color: #1890FF;
 | 
			
		||||
  transition: all .3s linear;
 | 
			
		||||
  transform-origin: center;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +121,7 @@
 | 
			
		|||
  margin: 2px 0;
 | 
			
		||||
  border-radius: 4px;
 | 
			
		||||
  outline: none;
 | 
			
		||||
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
 | 
			
		||||
  box-shadow: 0 2px 8px #1890FF;
 | 
			
		||||
 | 
			
		||||
  transition: opacity 0.15s, transform 0.3s !important;
 | 
			
		||||
  transform-origin: center top !important;
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +133,7 @@
 | 
			
		|||
  padding: 6px 0;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  font-size: 14px;
 | 
			
		||||
  color: #565656;
 | 
			
		||||
  color: #ffffff;
 | 
			
		||||
  list-style: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -169,7 +169,7 @@
 | 
			
		|||
  margin: 2px 0;
 | 
			
		||||
  border-radius: 4px;
 | 
			
		||||
  outline: none;
 | 
			
		||||
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
 | 
			
		||||
  box-shadow: 0 2px 8px #1890FF;
 | 
			
		||||
 | 
			
		||||
  transition: opacity 0.15s, transform 0.3s !important;
 | 
			
		||||
  transform-origin: center top !important;
 | 
			
		||||
| 
						 | 
				
			
			@ -249,11 +249,11 @@
 | 
			
		|||
 | 
			
		||||
.cascader-menu-list::-webkit-scrollbar-thumb:vertical,
 | 
			
		||||
.area-selectable-list-wrap::-webkit-scrollbar-thumb:vertical {
 | 
			
		||||
  background-color: #b8b8b8;
 | 
			
		||||
  background-color: #ffffff;
 | 
			
		||||
  border-radius: 4px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.cascader-menu-list::-webkit-scrollbar-thumb:vertical:hover,
 | 
			
		||||
.area-selectable-list-wrap::-webkit-scrollbar-thumb:vertical:hover {
 | 
			
		||||
  background-color: #777;
 | 
			
		||||
  background-color: #ffffff;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,12 +1,12 @@
 | 
			
		|||
@bordercolor      : #C8C8C8;
 | 
			
		||||
@headercolor      : #1f232a;
 | 
			
		||||
@backcolor        : #454959;
 | 
			
		||||
@headercolor      : #ffffff;
 | 
			
		||||
@backcolor        : #ffffff;
 | 
			
		||||
@inpuitbackcolor  : #ffffff;
 | 
			
		||||
@labelDeaultColor : #282828;
 | 
			
		||||
@defaultWhiteColor: #eeeeee;
 | 
			
		||||
@labelDeaultColor : #000000;
 | 
			
		||||
@defaultWhiteColor: #ffffff;
 | 
			
		||||
@fontfamily       : 'Microsoft YaHei';
 | 
			
		||||
@tableheadColor   : #e5e8eb;
 | 
			
		||||
@tableColor   : #575D63;
 | 
			
		||||
@tableheadColor   : #fafafa;
 | 
			
		||||
@tableColor   : #000000;
 | 
			
		||||
 | 
			
		||||
/* 滚动条优化 start */
 | 
			
		||||
::-webkit-scrollbar {
 | 
			
		||||
| 
						 | 
				
			
			@ -670,7 +670,7 @@ textarea,
 | 
			
		|||
.ant-btn:hover,
 | 
			
		||||
.ant-btn:active,
 | 
			
		||||
.ant-btn:focus {
 | 
			
		||||
  background: url('~@/assets/img/buttonSelect.png') !important;
 | 
			
		||||
  //background: url('~@/assets/img/buttonSelect.png') !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ant-menu-light {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,6 @@ i {
 | 
			
		|||
  cursor: pointer;
 | 
			
		||||
}
 | 
			
		||||
.trcolor{
 | 
			
		||||
  background-color: rgba(255, 192, 203, 0.31);
 | 
			
		||||
  background-color: #1890FF;
 | 
			
		||||
  color:red;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -209,10 +209,10 @@
 | 
			
		|||
 | 
			
		||||
        .ant-modal-close {
 | 
			
		||||
          right: 56px;
 | 
			
		||||
          color: rgba(0, 0, 0, 0.45);
 | 
			
		||||
          color: rgba(255, 255, 255, 0.45);
 | 
			
		||||
 | 
			
		||||
          &:hover {
 | 
			
		||||
            color: rgba(0, 0, 0, 0.75);
 | 
			
		||||
            color: rgb(255, 255, 255);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										199
									
								
								src/views/ship/modules/QuartzJobModal.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										199
									
								
								src/views/ship/modules/QuartzJobModal.vue
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,199 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <a-modal
 | 
			
		||||
    :title="title"
 | 
			
		||||
    :width="800"
 | 
			
		||||
    :visible="visible"
 | 
			
		||||
    :confirmLoading="confirmLoading"
 | 
			
		||||
    @ok="handleOk"
 | 
			
		||||
    @cancel="handleCancel"
 | 
			
		||||
    okText="保存并安排任务"
 | 
			
		||||
    cancelText="关闭">
 | 
			
		||||
 | 
			
		||||
    <a-spin :spinning="confirmLoading">
 | 
			
		||||
      <a-form :form="form">
 | 
			
		||||
        <a-form-item label="任务名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
 | 
			
		||||
          <a-input v-decorator="['quartzName']" ></a-input>
 | 
			
		||||
        </a-form-item>
 | 
			
		||||
        <a-form-item label="同步策略名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
 | 
			
		||||
          <j-select-multiple v-model="dataStrategySelected" :options="strategys"/>
 | 
			
		||||
        </a-form-item>
 | 
			
		||||
        <a-form-item
 | 
			
		||||
          :labelCol="labelCol"
 | 
			
		||||
          :wrapperCol="wrapperCol"
 | 
			
		||||
          label="cron表达式">
 | 
			
		||||
          <j-cron ref="innerVueCron" v-decorator="['cronExpression', { initialValue: '* * * * * ? *' }]" @change="setCorn"></j-cron>
 | 
			
		||||
        </a-form-item>
 | 
			
		||||
        <a-form-item
 | 
			
		||||
          :labelCol="labelCol"
 | 
			
		||||
          :wrapperCol="wrapperCol"
 | 
			
		||||
          label="描述">
 | 
			
		||||
          <a-textarea placeholder="请输入描述" :rows="3" v-decorator="['description', {}]" />
 | 
			
		||||
        </a-form-item>
 | 
			
		||||
      </a-form>
 | 
			
		||||
    </a-spin>
 | 
			
		||||
  </a-modal>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  import { httpAction } from '@/api/manage'
 | 
			
		||||
  import JCron from "@/components/jeecg/JCron";
 | 
			
		||||
  import JSelectMultiple from '@/components/jeecg/JSelectMultiple'
 | 
			
		||||
  import pick from 'lodash.pick'
 | 
			
		||||
  // import moment from "moment"
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    name: "QuartzJobModal",
 | 
			
		||||
    components: {
 | 
			
		||||
      JCron,
 | 
			
		||||
      JSelectMultiple
 | 
			
		||||
    },
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        title:"操作",
 | 
			
		||||
        buttonStyle: 'solid',
 | 
			
		||||
        visible: false,
 | 
			
		||||
        status:'',
 | 
			
		||||
        model: {},
 | 
			
		||||
        labelCol: {
 | 
			
		||||
          xs: { span: 24 },
 | 
			
		||||
          sm: { span: 5 },
 | 
			
		||||
        },
 | 
			
		||||
        wrapperCol: {
 | 
			
		||||
          xs: { span: 24 },
 | 
			
		||||
          sm: { span: 16 },
 | 
			
		||||
        },
 | 
			
		||||
        cron: {
 | 
			
		||||
          label: '',
 | 
			
		||||
          value: ''
 | 
			
		||||
        },
 | 
			
		||||
        confirmLoading: false,
 | 
			
		||||
        form: this.$form.createForm(this),
 | 
			
		||||
        validatorRules: {
 | 
			
		||||
          cron: {
 | 
			
		||||
            rules: [{
 | 
			
		||||
              required: true, message: '请输入cron表达式!'
 | 
			
		||||
            }]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        url: {
 | 
			
		||||
          add: "/sys/quartzJob/add",
 | 
			
		||||
          edit: "/sys/quartzJob/edit",
 | 
			
		||||
          queryEditStrategyList:"/sys/quartzJob/editSynchronSelectDetails",
 | 
			
		||||
          queryAddStrategyList:"/sys/quartzJob/addSynchronSelectDetails"
 | 
			
		||||
        },
 | 
			
		||||
        strategys:[],
 | 
			
		||||
        dataStrategySelected:'',
 | 
			
		||||
        idcDataStrategyId:""
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    created () {
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    methods: {
 | 
			
		||||
      add () {
 | 
			
		||||
        this.edit({});
 | 
			
		||||
      },
 | 
			
		||||
      edit (record) {
 | 
			
		||||
        let that = this;
 | 
			
		||||
        that.form.resetFields();
 | 
			
		||||
        this.model = Object.assign({},record);
 | 
			
		||||
        this.visible = true;
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          if(this.model.id){
 | 
			
		||||
            this.status = this.model.status;
 | 
			
		||||
            this.getEditStrategyList();
 | 
			
		||||
          }else{
 | 
			
		||||
            this.getAddStrategyList();
 | 
			
		||||
          }
 | 
			
		||||
          this.dataStrategySelected = this.model.strategyId;
 | 
			
		||||
          this.form.setFieldsValue(pick(this.model,'cronExpression','description','quartzName'));
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
      },
 | 
			
		||||
      close () {
 | 
			
		||||
        this.$emit('close');
 | 
			
		||||
        this.visible = false;
 | 
			
		||||
      },
 | 
			
		||||
      //add获取同步策略列表
 | 
			
		||||
      getAddStrategyList(){
 | 
			
		||||
        httpAction(this.url.queryAddStrategyList,{},"get").then((res)=>{
 | 
			
		||||
          if(res.success){
 | 
			
		||||
            this.strategys=res.result;
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      //edit获取同步策略列表
 | 
			
		||||
      getEditStrategyList(){
 | 
			
		||||
        httpAction(this.url.queryEditStrategyList,{},"get").then((res)=>{
 | 
			
		||||
          if(res.success){
 | 
			
		||||
            this.strategys=res.result;
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      strategyChange(value){
 | 
			
		||||
        this.idcDataStrategyId = value;
 | 
			
		||||
      },
 | 
			
		||||
      handleOk () {
 | 
			
		||||
        const that = this;
 | 
			
		||||
        // 触发表单验证
 | 
			
		||||
        this.form.validateFields((err, values) => {
 | 
			
		||||
          console.log('values',values)
 | 
			
		||||
          if (!err) {
 | 
			
		||||
            if (typeof values.cronExpression == "undefined" || Object.keys(values.cronExpression).length==0 ) {
 | 
			
		||||
              this.$message.warning('请输入cron表达式!');
 | 
			
		||||
              return false;
 | 
			
		||||
            }
 | 
			
		||||
            that.confirmLoading = true;
 | 
			
		||||
            let httpurl = '';
 | 
			
		||||
            let method = '';
 | 
			
		||||
            if(!this.model.id){
 | 
			
		||||
              httpurl+=this.url.add;
 | 
			
		||||
              method = 'post';
 | 
			
		||||
            }else{
 | 
			
		||||
              httpurl+=this.url.edit;
 | 
			
		||||
              method = 'put';
 | 
			
		||||
            }
 | 
			
		||||
            httpAction(httpurl, {quartzName:values.quartzName,strategyId:this.dataStrategySelected,cronExpression:values.cronExpression,description:values.description,id:this.model.id,status:this.status},method).then((res)=>{
 | 
			
		||||
              if(res.success){
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.$emit('ok');
 | 
			
		||||
              }else{
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            }).finally(() => {
 | 
			
		||||
              that.confirmLoading = false;
 | 
			
		||||
              that.close();
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
      handleCancel () {
 | 
			
		||||
        this.close()
 | 
			
		||||
      },
 | 
			
		||||
      setCorn(data){
 | 
			
		||||
        console.log('data)',data);
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.model.cronExpression = data;
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        if (Object.keys(data).length==0) {
 | 
			
		||||
          this.$message.warning('请输入cron表达式!');
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      validateCron(rule, value, callback){
 | 
			
		||||
        if(!value){
 | 
			
		||||
          callback()
 | 
			
		||||
        }else if (Object.keys(value).length==0) {
 | 
			
		||||
          callback("请输入cron表达式!");
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
.disabled{
 | 
			
		||||
  pointer-events: none;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										399
									
								
								src/views/ship/shipMode.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										399
									
								
								src/views/ship/shipMode.vue
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,399 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <a-card :bordered="false">
 | 
			
		||||
 | 
			
		||||
    <!-- 查询区域 -->
 | 
			
		||||
    <div class="table-page-search-wrapper">
 | 
			
		||||
      <a-form layout="inline" @keyup.enter.native="searchQuery">
 | 
			
		||||
        <a-row :gutter="30">
 | 
			
		||||
          <a-col :md="6" :sm="10">
 | 
			
		||||
            <a-form-item label="定时任务名称">
 | 
			
		||||
              <a-input placeholder="请输入定时任务名称" v-model="queryParam.quartzName"></a-input>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
          </a-col>
 | 
			
		||||
          <a-col :md="6" :sm="10">
 | 
			
		||||
            <a-form-item label="同步策略名称">
 | 
			
		||||
              <a-input placeholder="请输入同步策略名称" v-model="queryParam.strategyName"></a-input>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
          </a-col>
 | 
			
		||||
          <a-col :md="6" :sm="10">
 | 
			
		||||
            <a-form-item label="任务状态">
 | 
			
		||||
              <a-select style="width: 220px" v-model="queryParam.status" placeholder="请选择状态">
 | 
			
		||||
                <a-select-option value="">全部</a-select-option>
 | 
			
		||||
                <a-select-option value="0">正常</a-select-option>
 | 
			
		||||
                <a-select-option value="-1">停止</a-select-option>
 | 
			
		||||
              </a-select>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
          </a-col>
 | 
			
		||||
          <a-col :md="6" :sm="10" >
 | 
			
		||||
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
 | 
			
		||||
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
 | 
			
		||||
              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
 | 
			
		||||
            </span>
 | 
			
		||||
          </a-col>
 | 
			
		||||
        </a-row>
 | 
			
		||||
      </a-form>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- 操作按钮区域 -->
 | 
			
		||||
    <div class="table-operator">
 | 
			
		||||
      <a-button @click="handleAdd" type="primary" v-has="'cont:btn'" icon="plus">新增</a-button>
 | 
			
		||||
      <a-button type="primary" v-has="'cont:btn'" icon="download" @click="handleExportXls('定时任务信息')">导出</a-button>
 | 
			
		||||
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
 | 
			
		||||
        <a-button type="primary" v-has="'cont:btn'" icon="import">导入</a-button>
 | 
			
		||||
      </a-upload>
 | 
			
		||||
      <a-button type="primary" v-has="'cont:btn'" @click="batchDel" icon="del">批量删除</a-button>
 | 
			
		||||
      <a-button type="primary" v-has="'cont:btn'" @click="batchStart" icon="start" style="margin-left: 8px">批量启动</a-button>
 | 
			
		||||
      <a-button type="primary" v-has="'cont:btn'" @click="pauseJobBatch" icon="pauseJob" style="margin-left: 8px">批量暂停</a-button>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- table区域-begin -->
 | 
			
		||||
    <div style="height:615px;overflow-y:auto;">
 | 
			
		||||
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
 | 
			
		||||
        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
 | 
			
		||||
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <a-table
 | 
			
		||||
        ref="table"
 | 
			
		||||
        size="middle"
 | 
			
		||||
        bordered
 | 
			
		||||
        rowKey="id"
 | 
			
		||||
        :columns="columns"
 | 
			
		||||
        :dataSource="dataSource"
 | 
			
		||||
        :pagination="ipagination"
 | 
			
		||||
        :loading="loading"
 | 
			
		||||
        :rowSelection="{selectedRowKeys: selectedRowKeys,onChange: onSelectChange}"
 | 
			
		||||
        @change="handleTableChange">
 | 
			
		||||
<!--        :locale="myLocale"-->
 | 
			
		||||
 | 
			
		||||
        <div slot="expandedRowRender" slot-scope="record" style="margin: 0">
 | 
			
		||||
          <div style="margin-bottom: 5px">
 | 
			
		||||
            <span v-for="(item,index) in record.strategyName.split(',')" :key="index">
 | 
			
		||||
              <a-badge status="success" style="vertical-align: middle;"/><span>{{ item }}<br></span>
 | 
			
		||||
            </span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <!-- 字符串超长截取省略号显示-->
 | 
			
		||||
        <span slot="description" slot-scope="text">
 | 
			
		||||
          <j-ellipsis :value="text" :length="20" />
 | 
			
		||||
        </span>
 | 
			
		||||
        <span slot="parameterRender" slot-scope="text">
 | 
			
		||||
          <j-ellipsis :value="text" :length="20" />
 | 
			
		||||
        </span>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <span slot="action" slot-scope="text, record">
 | 
			
		||||
          <a @click="resumeJob(record)" v-if="record.status==-1" v-has="'cont:btn'">启动</a>
 | 
			
		||||
          <a @click="pauseJob(record)" v-if="record.status==0" v-has="'cont:btn'">停止</a>
 | 
			
		||||
 | 
			
		||||
          <a-divider type="vertical" v-has="'cont:btn'" />
 | 
			
		||||
          <a-dropdown v-has="'cont:btn'">
 | 
			
		||||
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
 | 
			
		||||
            <a-menu slot="overlay">
 | 
			
		||||
              <a-menu-item><a @click="executeImmediately(record)">立即执行</a></a-menu-item>
 | 
			
		||||
              <a-menu-item><a @click="handleEdit(record)">编辑</a></a-menu-item>
 | 
			
		||||
              <a-menu-item>
 | 
			
		||||
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
 | 
			
		||||
                  <a>删除</a>
 | 
			
		||||
                </a-popconfirm>
 | 
			
		||||
              </a-menu-item>
 | 
			
		||||
            </a-menu>
 | 
			
		||||
          </a-dropdown>
 | 
			
		||||
          <a-divider type="vertical" v-has="'cont:btn'" />
 | 
			
		||||
          <a @click="handleDetail(record)">详情</a>
 | 
			
		||||
        </span>
 | 
			
		||||
 | 
			
		||||
        <!-- 状态渲染模板 -->
 | 
			
		||||
        <template slot="customRenderStatus" slot-scope="status">
 | 
			
		||||
          <a-tag v-if="status==0" color="green">已启动</a-tag>
 | 
			
		||||
          <a-tag v-if="status==-1" color="orange">已暂停</a-tag>
 | 
			
		||||
        </template>
 | 
			
		||||
      </a-table>
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- table区域-end -->
 | 
			
		||||
 | 
			
		||||
    <!-- 表单区域 -->
 | 
			
		||||
    <quartzJob-modal ref="modalForm" @ok="modalFormOk"></quartzJob-modal>
 | 
			
		||||
  </a-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  import QuartzJobModal from './modules/QuartzJobModal'
 | 
			
		||||
  import { getAction } from '@/api/manage'
 | 
			
		||||
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 | 
			
		||||
  import JEllipsis from "@/components/jeecg/JEllipsis";
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    name: "QuartzJobList",
 | 
			
		||||
    mixins:[JeecgListMixin],
 | 
			
		||||
    components: {
 | 
			
		||||
      QuartzJobModal,
 | 
			
		||||
      JEllipsis,
 | 
			
		||||
      VNodes: {
 | 
			
		||||
        functional: true,
 | 
			
		||||
        render: (h, ctx) => ctx.props.vnodes,
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        description: '定时任务在线管理',
 | 
			
		||||
        dataSources: [],
 | 
			
		||||
        // 查询条件
 | 
			
		||||
        queryParam: {},
 | 
			
		||||
        //myLocale: {emptyText: '同步策略已全部配置'},
 | 
			
		||||
        // 表头
 | 
			
		||||
        columns: [
 | 
			
		||||
          {
 | 
			
		||||
            title: '#',
 | 
			
		||||
            dataIndex: '',
 | 
			
		||||
            key:'rowIndex',
 | 
			
		||||
            width:60,
 | 
			
		||||
            align:"center",
 | 
			
		||||
            customRender:function (t,r,index) {
 | 
			
		||||
              return parseInt(index)+1;
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: '定时任务名称',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            dataIndex: 'quartzName',
 | 
			
		||||
            sorter: true,
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: 'cron表达式',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            dataIndex: 'cronExpression'
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: '描述',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            width: 250,
 | 
			
		||||
            dataIndex: 'description',
 | 
			
		||||
            scopedSlots: {customRender: 'description'},
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: '状态',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            dataIndex: 'status',
 | 
			
		||||
            scopedSlots: { customRender: 'customRenderStatus' },
 | 
			
		||||
            filterMultiple: false,
 | 
			
		||||
            filters: [
 | 
			
		||||
              { text: '已启动', value: '0' },
 | 
			
		||||
              { text: '已暂停', value: '-1' },
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: '操作',
 | 
			
		||||
            dataIndex: 'action',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            width:180,
 | 
			
		||||
            scopedSlots: { customRender: 'action' },
 | 
			
		||||
          }
 | 
			
		||||
        ],
 | 
			
		||||
		url: {
 | 
			
		||||
          list: "/sys/quartzJob/list",
 | 
			
		||||
          delete: "/sys/quartzJob/delete",
 | 
			
		||||
          deleteBatch: "/sys/quartzJob/deleteBatch",
 | 
			
		||||
          startBatch: "/sys/quartzJob/startBatch",
 | 
			
		||||
          pauseJobBatch: "/sys/quartzJob/pauseJobBatch",
 | 
			
		||||
          pause: "/sys/quartzJob/pause",
 | 
			
		||||
          resume: "/sys/quartzJob/resume",
 | 
			
		||||
          exportXlsUrl: "sys/quartzJob/exportXls",
 | 
			
		||||
          importExcelUrl: "sys/quartzJob/importExcel",
 | 
			
		||||
          execute: "sys/quartzJob/execute",
 | 
			
		||||
        },
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    computed: {
 | 
			
		||||
      importExcelUrl: function () {
 | 
			
		||||
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    created () {
 | 
			
		||||
    },
 | 
			
		||||
    methods: {
 | 
			
		||||
      //筛选需要重写handleTableChange
 | 
			
		||||
      handleTableChange(pagination, filters, sorter) {
 | 
			
		||||
        //分页、排序、筛选变化时触发
 | 
			
		||||
        //TODO 筛选
 | 
			
		||||
        if (Object.keys(sorter).length > 0) {
 | 
			
		||||
          this.isorter.column = sorter.field;
 | 
			
		||||
          this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
 | 
			
		||||
        }
 | 
			
		||||
        //这种筛选方式只支持单选
 | 
			
		||||
        //this.filters.status = filters.status[0];
 | 
			
		||||
        this.ipagination = pagination;
 | 
			
		||||
        this.loadData();
 | 
			
		||||
      },
 | 
			
		||||
      pauseJobBatch: function () {
 | 
			
		||||
        if(!this.url.pauseJobBatch){
 | 
			
		||||
          this.$message.error("请设置url.pauseJobBatch属性!")
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        let content_ = '是否暂停选中数据?';
 | 
			
		||||
        if (this.selectedRowKeys.length <= 0) {
 | 
			
		||||
          content_ = '是否暂停全部数据?'
 | 
			
		||||
        }
 | 
			
		||||
        var ids = "";
 | 
			
		||||
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
 | 
			
		||||
          ids += this.selectedRowKeys[a] + ",";
 | 
			
		||||
        }
 | 
			
		||||
        var that = this;
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title: "确认暂停",
 | 
			
		||||
          content: content_,
 | 
			
		||||
          onOk: function () {
 | 
			
		||||
            that.loading = true;
 | 
			
		||||
            getAction(that.url.pauseJobBatch, {ids: ids}).then((res) => {
 | 
			
		||||
              if (res.success) {
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              } else {
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            }).finally(() => {
 | 
			
		||||
              that.loading = false;
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      loadData(arg) {
 | 
			
		||||
        if(!this.url.list){
 | 
			
		||||
          this.$message.error("请设置url.list属性!")
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        //加载数据 若传入参数1则加载第一页的内容
 | 
			
		||||
        if (arg === 1) {
 | 
			
		||||
          this.ipagination.current = 1;
 | 
			
		||||
        }
 | 
			
		||||
        let params = this.getQueryParams();//查询条件
 | 
			
		||||
        let strategyName = params.strategyName;
 | 
			
		||||
        let status = "";
 | 
			
		||||
        if(this.idcDataSourceTableId){
 | 
			
		||||
          strategyName = this.idcDataSourceSelected + "-" + this.sourceUserId + "-" + this.idcDataSourceTableId;
 | 
			
		||||
        }else if(this.sourceUserId && this.sourceUserId.length > 0){
 | 
			
		||||
          strategyName = this.idcDataSourceSelected + "-" + this.sourceUserId;
 | 
			
		||||
        }else if(this.idcDataSourceSelected){
 | 
			
		||||
          strategyName = this.idcDataSourceSelected;
 | 
			
		||||
        }
 | 
			
		||||
        this.$set(this.queryParam,'strategyName',strategyName);
 | 
			
		||||
        console.log(params)
 | 
			
		||||
        if(params.status){
 | 
			
		||||
          status = params.status;
 | 
			
		||||
        }
 | 
			
		||||
        this.loading = true;
 | 
			
		||||
        getAction(this.url.list, {quartzName:params.quartzName,strategyName:strategyName,status:status,pageNo:params.pageNo,pageSize:params.pageSize,order:params.order,column:params.column}).then((res) => {
 | 
			
		||||
          if (res.success) {
 | 
			
		||||
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
 | 
			
		||||
            this.dataSource = res.result.records||res.result;
 | 
			
		||||
            if(res.result.total)
 | 
			
		||||
            {
 | 
			
		||||
              this.ipagination.total = res.result.total;
 | 
			
		||||
            }
 | 
			
		||||
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
 | 
			
		||||
          }
 | 
			
		||||
          if(res.code===510){
 | 
			
		||||
            this.$message.warning(res.message)
 | 
			
		||||
          }
 | 
			
		||||
          this.loading = false;
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
      batchStart: function () {
 | 
			
		||||
        if(!this.url.startBatch){
 | 
			
		||||
          this.$message.error("请设置url.startBatch属性!")
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        let content_ = '是否启动选中数据?';
 | 
			
		||||
        if (this.selectedRowKeys.length <= 0) {
 | 
			
		||||
          content_ = '是否启动全部数据?'
 | 
			
		||||
        }
 | 
			
		||||
        var ids = "";
 | 
			
		||||
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
 | 
			
		||||
          ids += this.selectedRowKeys[a] + ",";
 | 
			
		||||
        }
 | 
			
		||||
        var that = this;
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title: "确认启动",
 | 
			
		||||
          content: content_,
 | 
			
		||||
          onOk: function () {
 | 
			
		||||
            that.loading = true;
 | 
			
		||||
            getAction(that.url.startBatch, {ids: ids}).then((res) => {
 | 
			
		||||
              if (res.success) {
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              } else {
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            }).finally(() => {
 | 
			
		||||
              that.loading = false;
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      pauseJob: function(record){
 | 
			
		||||
        var that = this;
 | 
			
		||||
        //暂停定时任务
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title:"确认暂停",
 | 
			
		||||
          content:"是否暂停选中任务?",
 | 
			
		||||
          onOk: function(){
 | 
			
		||||
            getAction(that.url.pause,{id:record.id}).then((res)=>{
 | 
			
		||||
              if(res.success){
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              }else{
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
      },
 | 
			
		||||
      resumeJob: function(record){
 | 
			
		||||
        var that = this;
 | 
			
		||||
        //恢复定时任务
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title:"确认启动",
 | 
			
		||||
          content:"是否启动选中任务?",
 | 
			
		||||
          onOk: function(){
 | 
			
		||||
            getAction(that.url.resume,{id:record.id}).then((res)=>{
 | 
			
		||||
              if(res.success){
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              }else{
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      executeImmediately(record){
 | 
			
		||||
        var that = this;
 | 
			
		||||
        //立即执行定时任务
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title:"确认提示",
 | 
			
		||||
          content:"是否立即执行任务?",
 | 
			
		||||
          onOk: function(){
 | 
			
		||||
            getAction(that.url.execute,{id:record.id}).then((res)=>{
 | 
			
		||||
              if(res.success){
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              }else{
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
<style scoped>
 | 
			
		||||
  @import '~@assets/less/common.less';
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										399
									
								
								src/views/ship/shipNum.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										399
									
								
								src/views/ship/shipNum.vue
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,399 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <a-card :bordered="false">
 | 
			
		||||
 | 
			
		||||
    <!-- 查询区域 -->
 | 
			
		||||
    <div class="table-page-search-wrapper">
 | 
			
		||||
      <a-form layout="inline" @keyup.enter.native="searchQuery">
 | 
			
		||||
        <a-row :gutter="30">
 | 
			
		||||
          <a-col :md="6" :sm="10">
 | 
			
		||||
            <a-form-item label="定时任务名称">
 | 
			
		||||
              <a-input placeholder="请输入定时任务名称" v-model="queryParam.quartzName"></a-input>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
          </a-col>
 | 
			
		||||
          <a-col :md="6" :sm="10">
 | 
			
		||||
            <a-form-item label="同步策略名称">
 | 
			
		||||
              <a-input placeholder="请输入同步策略名称" v-model="queryParam.strategyName"></a-input>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
          </a-col>
 | 
			
		||||
          <a-col :md="6" :sm="10">
 | 
			
		||||
            <a-form-item label="任务状态">
 | 
			
		||||
              <a-select style="width: 220px" v-model="queryParam.status" placeholder="请选择状态">
 | 
			
		||||
                <a-select-option value="">全部</a-select-option>
 | 
			
		||||
                <a-select-option value="0">正常</a-select-option>
 | 
			
		||||
                <a-select-option value="-1">停止</a-select-option>
 | 
			
		||||
              </a-select>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
          </a-col>
 | 
			
		||||
          <a-col :md="6" :sm="10" >
 | 
			
		||||
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
 | 
			
		||||
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
 | 
			
		||||
              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
 | 
			
		||||
            </span>
 | 
			
		||||
          </a-col>
 | 
			
		||||
        </a-row>
 | 
			
		||||
      </a-form>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- 操作按钮区域 -->
 | 
			
		||||
    <div class="table-operator">
 | 
			
		||||
      <a-button @click="handleAdd" type="primary" v-has="'cont:btn'" icon="plus">新增</a-button>
 | 
			
		||||
      <a-button type="primary" v-has="'cont:btn'" icon="download" @click="handleExportXls('定时任务信息')">导出</a-button>
 | 
			
		||||
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
 | 
			
		||||
        <a-button type="primary" v-has="'cont:btn'" icon="import">导入</a-button>
 | 
			
		||||
      </a-upload>
 | 
			
		||||
      <a-button type="primary" v-has="'cont:btn'" @click="batchDel" icon="del">批量删除</a-button>
 | 
			
		||||
      <a-button type="primary" v-has="'cont:btn'" @click="batchStart" icon="start" style="margin-left: 8px">批量启动</a-button>
 | 
			
		||||
      <a-button type="primary" v-has="'cont:btn'" @click="pauseJobBatch" icon="pauseJob" style="margin-left: 8px">批量暂停</a-button>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- table区域-begin -->
 | 
			
		||||
    <div style="height:615px;overflow-y:auto;">
 | 
			
		||||
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
 | 
			
		||||
        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
 | 
			
		||||
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <a-table
 | 
			
		||||
        ref="table"
 | 
			
		||||
        size="middle"
 | 
			
		||||
        bordered
 | 
			
		||||
        rowKey="id"
 | 
			
		||||
        :columns="columns"
 | 
			
		||||
        :dataSource="dataSource"
 | 
			
		||||
        :pagination="ipagination"
 | 
			
		||||
        :loading="loading"
 | 
			
		||||
        :rowSelection="{selectedRowKeys: selectedRowKeys,onChange: onSelectChange}"
 | 
			
		||||
        @change="handleTableChange">
 | 
			
		||||
<!--        :locale="myLocale"-->
 | 
			
		||||
 | 
			
		||||
        <div slot="expandedRowRender" slot-scope="record" style="margin: 0">
 | 
			
		||||
          <div style="margin-bottom: 5px">
 | 
			
		||||
            <span v-for="(item,index) in record.strategyName.split(',')" :key="index">
 | 
			
		||||
              <a-badge status="success" style="vertical-align: middle;"/><span>{{ item }}<br></span>
 | 
			
		||||
            </span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <!-- 字符串超长截取省略号显示-->
 | 
			
		||||
        <span slot="description" slot-scope="text">
 | 
			
		||||
          <j-ellipsis :value="text" :length="20" />
 | 
			
		||||
        </span>
 | 
			
		||||
        <span slot="parameterRender" slot-scope="text">
 | 
			
		||||
          <j-ellipsis :value="text" :length="20" />
 | 
			
		||||
        </span>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <span slot="action" slot-scope="text, record">
 | 
			
		||||
          <a @click="resumeJob(record)" v-if="record.status==-1" v-has="'cont:btn'">启动</a>
 | 
			
		||||
          <a @click="pauseJob(record)" v-if="record.status==0" v-has="'cont:btn'">停止</a>
 | 
			
		||||
 | 
			
		||||
          <a-divider type="vertical" v-has="'cont:btn'" />
 | 
			
		||||
          <a-dropdown v-has="'cont:btn'">
 | 
			
		||||
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
 | 
			
		||||
            <a-menu slot="overlay">
 | 
			
		||||
              <a-menu-item><a @click="executeImmediately(record)">立即执行</a></a-menu-item>
 | 
			
		||||
              <a-menu-item><a @click="handleEdit(record)">编辑</a></a-menu-item>
 | 
			
		||||
              <a-menu-item>
 | 
			
		||||
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
 | 
			
		||||
                  <a>删除</a>
 | 
			
		||||
                </a-popconfirm>
 | 
			
		||||
              </a-menu-item>
 | 
			
		||||
            </a-menu>
 | 
			
		||||
          </a-dropdown>
 | 
			
		||||
          <a-divider type="vertical" v-has="'cont:btn'" />
 | 
			
		||||
          <a @click="handleDetail(record)">详情</a>
 | 
			
		||||
        </span>
 | 
			
		||||
 | 
			
		||||
        <!-- 状态渲染模板 -->
 | 
			
		||||
        <template slot="customRenderStatus" slot-scope="status">
 | 
			
		||||
          <a-tag v-if="status==0" color="green">已启动</a-tag>
 | 
			
		||||
          <a-tag v-if="status==-1" color="orange">已暂停</a-tag>
 | 
			
		||||
        </template>
 | 
			
		||||
      </a-table>
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- table区域-end -->
 | 
			
		||||
 | 
			
		||||
    <!-- 表单区域 -->
 | 
			
		||||
    <quartzJob-modal ref="modalForm" @ok="modalFormOk"></quartzJob-modal>
 | 
			
		||||
  </a-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  import QuartzJobModal from './modules/QuartzJobModal'
 | 
			
		||||
  import { getAction } from '@/api/manage'
 | 
			
		||||
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 | 
			
		||||
  import JEllipsis from "@/components/jeecg/JEllipsis";
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    name: "QuartzJobList",
 | 
			
		||||
    mixins:[JeecgListMixin],
 | 
			
		||||
    components: {
 | 
			
		||||
      QuartzJobModal,
 | 
			
		||||
      JEllipsis,
 | 
			
		||||
      VNodes: {
 | 
			
		||||
        functional: true,
 | 
			
		||||
        render: (h, ctx) => ctx.props.vnodes,
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        description: '定时任务在线管理',
 | 
			
		||||
        dataSources: [],
 | 
			
		||||
        // 查询条件
 | 
			
		||||
        queryParam: {},
 | 
			
		||||
        //myLocale: {emptyText: '同步策略已全部配置'},
 | 
			
		||||
        // 表头
 | 
			
		||||
        columns: [
 | 
			
		||||
          {
 | 
			
		||||
            title: '#',
 | 
			
		||||
            dataIndex: '',
 | 
			
		||||
            key:'rowIndex',
 | 
			
		||||
            width:60,
 | 
			
		||||
            align:"center",
 | 
			
		||||
            customRender:function (t,r,index) {
 | 
			
		||||
              return parseInt(index)+1;
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: '定时任务名称',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            dataIndex: 'quartzName',
 | 
			
		||||
            sorter: true,
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: 'cron表达式',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            dataIndex: 'cronExpression'
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: '描述',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            width: 250,
 | 
			
		||||
            dataIndex: 'description',
 | 
			
		||||
            scopedSlots: {customRender: 'description'},
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: '状态',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            dataIndex: 'status',
 | 
			
		||||
            scopedSlots: { customRender: 'customRenderStatus' },
 | 
			
		||||
            filterMultiple: false,
 | 
			
		||||
            filters: [
 | 
			
		||||
              { text: '已启动', value: '0' },
 | 
			
		||||
              { text: '已暂停', value: '-1' },
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            title: '操作',
 | 
			
		||||
            dataIndex: 'action',
 | 
			
		||||
            align:"center",
 | 
			
		||||
            width:180,
 | 
			
		||||
            scopedSlots: { customRender: 'action' },
 | 
			
		||||
          }
 | 
			
		||||
        ],
 | 
			
		||||
		url: {
 | 
			
		||||
          list: "/sys/quartzJob/list",
 | 
			
		||||
          delete: "/sys/quartzJob/delete",
 | 
			
		||||
          deleteBatch: "/sys/quartzJob/deleteBatch",
 | 
			
		||||
          startBatch: "/sys/quartzJob/startBatch",
 | 
			
		||||
          pauseJobBatch: "/sys/quartzJob/pauseJobBatch",
 | 
			
		||||
          pause: "/sys/quartzJob/pause",
 | 
			
		||||
          resume: "/sys/quartzJob/resume",
 | 
			
		||||
          exportXlsUrl: "sys/quartzJob/exportXls",
 | 
			
		||||
          importExcelUrl: "sys/quartzJob/importExcel",
 | 
			
		||||
          execute: "sys/quartzJob/execute",
 | 
			
		||||
        },
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    computed: {
 | 
			
		||||
      importExcelUrl: function () {
 | 
			
		||||
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    created () {
 | 
			
		||||
    },
 | 
			
		||||
    methods: {
 | 
			
		||||
      //筛选需要重写handleTableChange
 | 
			
		||||
      handleTableChange(pagination, filters, sorter) {
 | 
			
		||||
        //分页、排序、筛选变化时触发
 | 
			
		||||
        //TODO 筛选
 | 
			
		||||
        if (Object.keys(sorter).length > 0) {
 | 
			
		||||
          this.isorter.column = sorter.field;
 | 
			
		||||
          this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
 | 
			
		||||
        }
 | 
			
		||||
        //这种筛选方式只支持单选
 | 
			
		||||
        //this.filters.status = filters.status[0];
 | 
			
		||||
        this.ipagination = pagination;
 | 
			
		||||
        this.loadData();
 | 
			
		||||
      },
 | 
			
		||||
      pauseJobBatch: function () {
 | 
			
		||||
        if(!this.url.pauseJobBatch){
 | 
			
		||||
          this.$message.error("请设置url.pauseJobBatch属性!")
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        let content_ = '是否暂停选中数据?';
 | 
			
		||||
        if (this.selectedRowKeys.length <= 0) {
 | 
			
		||||
          content_ = '是否暂停全部数据?'
 | 
			
		||||
        }
 | 
			
		||||
        var ids = "";
 | 
			
		||||
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
 | 
			
		||||
          ids += this.selectedRowKeys[a] + ",";
 | 
			
		||||
        }
 | 
			
		||||
        var that = this;
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title: "确认暂停",
 | 
			
		||||
          content: content_,
 | 
			
		||||
          onOk: function () {
 | 
			
		||||
            that.loading = true;
 | 
			
		||||
            getAction(that.url.pauseJobBatch, {ids: ids}).then((res) => {
 | 
			
		||||
              if (res.success) {
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              } else {
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            }).finally(() => {
 | 
			
		||||
              that.loading = false;
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      loadData(arg) {
 | 
			
		||||
        if(!this.url.list){
 | 
			
		||||
          this.$message.error("请设置url.list属性!")
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        //加载数据 若传入参数1则加载第一页的内容
 | 
			
		||||
        if (arg === 1) {
 | 
			
		||||
          this.ipagination.current = 1;
 | 
			
		||||
        }
 | 
			
		||||
        let params = this.getQueryParams();//查询条件
 | 
			
		||||
        let strategyName = params.strategyName;
 | 
			
		||||
        let status = "";
 | 
			
		||||
        if(this.idcDataSourceTableId){
 | 
			
		||||
          strategyName = this.idcDataSourceSelected + "-" + this.sourceUserId + "-" + this.idcDataSourceTableId;
 | 
			
		||||
        }else if(this.sourceUserId && this.sourceUserId.length > 0){
 | 
			
		||||
          strategyName = this.idcDataSourceSelected + "-" + this.sourceUserId;
 | 
			
		||||
        }else if(this.idcDataSourceSelected){
 | 
			
		||||
          strategyName = this.idcDataSourceSelected;
 | 
			
		||||
        }
 | 
			
		||||
        this.$set(this.queryParam,'strategyName',strategyName);
 | 
			
		||||
        console.log(params)
 | 
			
		||||
        if(params.status){
 | 
			
		||||
          status = params.status;
 | 
			
		||||
        }
 | 
			
		||||
        this.loading = true;
 | 
			
		||||
        getAction(this.url.list, {quartzName:params.quartzName,strategyName:strategyName,status:status,pageNo:params.pageNo,pageSize:params.pageSize,order:params.order,column:params.column}).then((res) => {
 | 
			
		||||
          if (res.success) {
 | 
			
		||||
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
 | 
			
		||||
            this.dataSource = res.result.records||res.result;
 | 
			
		||||
            if(res.result.total)
 | 
			
		||||
            {
 | 
			
		||||
              this.ipagination.total = res.result.total;
 | 
			
		||||
            }
 | 
			
		||||
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
 | 
			
		||||
          }
 | 
			
		||||
          if(res.code===510){
 | 
			
		||||
            this.$message.warning(res.message)
 | 
			
		||||
          }
 | 
			
		||||
          this.loading = false;
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
      batchStart: function () {
 | 
			
		||||
        if(!this.url.startBatch){
 | 
			
		||||
          this.$message.error("请设置url.startBatch属性!")
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        let content_ = '是否启动选中数据?';
 | 
			
		||||
        if (this.selectedRowKeys.length <= 0) {
 | 
			
		||||
          content_ = '是否启动全部数据?'
 | 
			
		||||
        }
 | 
			
		||||
        var ids = "";
 | 
			
		||||
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
 | 
			
		||||
          ids += this.selectedRowKeys[a] + ",";
 | 
			
		||||
        }
 | 
			
		||||
        var that = this;
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title: "确认启动",
 | 
			
		||||
          content: content_,
 | 
			
		||||
          onOk: function () {
 | 
			
		||||
            that.loading = true;
 | 
			
		||||
            getAction(that.url.startBatch, {ids: ids}).then((res) => {
 | 
			
		||||
              if (res.success) {
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              } else {
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            }).finally(() => {
 | 
			
		||||
              that.loading = false;
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      pauseJob: function(record){
 | 
			
		||||
        var that = this;
 | 
			
		||||
        //暂停定时任务
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title:"确认暂停",
 | 
			
		||||
          content:"是否暂停选中任务?",
 | 
			
		||||
          onOk: function(){
 | 
			
		||||
            getAction(that.url.pause,{id:record.id}).then((res)=>{
 | 
			
		||||
              if(res.success){
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              }else{
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
      },
 | 
			
		||||
      resumeJob: function(record){
 | 
			
		||||
        var that = this;
 | 
			
		||||
        //恢复定时任务
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title:"确认启动",
 | 
			
		||||
          content:"是否启动选中任务?",
 | 
			
		||||
          onOk: function(){
 | 
			
		||||
            getAction(that.url.resume,{id:record.id}).then((res)=>{
 | 
			
		||||
              if(res.success){
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              }else{
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      executeImmediately(record){
 | 
			
		||||
        var that = this;
 | 
			
		||||
        //立即执行定时任务
 | 
			
		||||
        this.$confirm({
 | 
			
		||||
          title:"确认提示",
 | 
			
		||||
          content:"是否立即执行任务?",
 | 
			
		||||
          onOk: function(){
 | 
			
		||||
            getAction(that.url.execute,{id:record.id}).then((res)=>{
 | 
			
		||||
              if(res.success){
 | 
			
		||||
                that.$message.success(res.message);
 | 
			
		||||
                that.loadData();
 | 
			
		||||
                that.onClearSelected();
 | 
			
		||||
              }else{
 | 
			
		||||
                that.$message.warning(res.message);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
<style scoped>
 | 
			
		||||
  @import '~@assets/less/common.less';
 | 
			
		||||
</style>
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user