master
飘泊客 1 year ago
parent b4779098f6
commit 2a131844cd

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -42,3 +42,21 @@ export function getInfo() {
}) })
} }
// 投流下载-上传excel
export function uploadFiles(data) {
return request({
url: '/api/deliveryGender/upload/files',
method: 'post',
data
})
}
// 投流下载-上传excel
export function delRecord(data) {
return request({
url: '/api/deliveryGender',
method: 'delete',
data
})
}

@ -0,0 +1,27 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/tbTemplate',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/tbTemplate/',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/tbTemplate',
method: 'put',
data
})
}
export default { add, edit, del }

@ -78,6 +78,14 @@
style="width: 160px" style="width: 160px"
class="filter-item" class="filter-item"
/> />
<el-select v-model="chartLeft.version" filterable style="width: 15%;">
<el-option
v-for="item in versionArray"
:key="item.version"
:label="item.display_name"
:value="item.version"
/>
</el-select>
<el-button type="success" icon="el-icon-search" class="filter-item" size="mini" @click="searchNumber"></el-button> <el-button type="success" icon="el-icon-search" class="filter-item" size="mini" @click="searchNumber"></el-button>
</div> </div>
<div> <div>
@ -254,6 +262,7 @@ export default {
] ]
}, },
chartLeft: { chartLeft: {
version: 2,
uploadTime: '', // uploadTime: '', //
tags: '', // tag tags: '', // tag
mail: '15158080631@163.com' // mail: '15158080631@163.com' //
@ -290,6 +299,10 @@ export default {
name: '广点通', name: '广点通',
value: 5 value: 5
} }
],
versionArray: [
{ version: 1, display_name: '旧版查询' },
{ version: 2, display_name: '新版查询' }
] ]
} }
}, },

@ -12,38 +12,51 @@
<div class="head-container"> <div class="head-container">
<div> <div>
<!-- 搜索 --> <!-- 搜索 -->
<date-range-picker v-model="query.createTime" class="date-item" /> <el-input
v-model="query.taskName"
clearable
size="small"
placeholder="输入上传任务名称"
style="width: 200px"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<rrOperation /> <rrOperation />
</div> </div>
<div> <div>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-plus" @click="resourcesDialog = true">上传文件</el-button> <el-button class="filter-item" size="mini" type="primary" icon="el-icon-plus" @click="resourcesDialog = true">
上传文件
</el-button>
</div> </div>
</div> </div>
<!--表格渲染--> <!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" :header-cell-style="{'text-align':'left'}" style="width: 100%;"> <el-table
<el-table-column :show-overflow-tooltip="true" prop="companyName" label="公司名称" /> ref="table"
v-loading="crud.loading"
:data="crud.data"
:header-cell-style="{'text-align':'left'}"
style="width: 100%;"
>
<el-table-column :show-overflow-tooltip="true" prop="taskName" label="任务名称" /> <el-table-column :show-overflow-tooltip="true" prop="taskName" label="任务名称" />
<el-table-column :show-overflow-tooltip="true" prop="clueNum" label="资源条数" /> <el-table-column :show-overflow-tooltip="true" prop="num" label="资源条数" />
<el-table-column :show-overflow-tooltip="true" prop="createTime" width="135" label="创建日期"> <el-table-column :show-overflow-tooltip="true" prop="createTime" label="创建日期">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column :show-overflow-tooltip="true" prop="status" label="下载状态"> <el-table-column :show-overflow-tooltip="true" prop="createTime" label="返回时间">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag :type="scope.row.status == 0 ? 'danger' : 'success'">{{ scope.row.status == 0 ? '未下载' : '已下载' }}</el-tag> <span>{{ parseTime(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> --> </el-table-column>
<el-table-column <el-table-column
label="操作" label="操作"
width="300"
align="center"
fixed="right" fixed="right"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="scope.row.type === 1 && scope.row.clueNum >= 100" @click="sendEmail(scope.row.id)"></el-button> <el-button type="danger" @click="toDelete(scope.row)"></el-button>
<el-button v-if="scope.row.status === 1" type="primary" @click="downloadUrl('email', scope.row)"></el-button> <el-button v-if="scope.row.status === 1" type="primary" @click="downloadUrl(scope.row)"></el-button>
<el-button v-if="scope.row.type === 2 || (scope.row.type === 1 && scope.row.clueNum < 100)" type="success" @click="downloadUrl('excel', scope.row)">excel</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -96,7 +109,8 @@
:loading="uploading" :loading="uploading"
type="primary" type="primary"
@click="submitUpload" @click="submitUpload"
>上传资源</el-button> >上传资源
</el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@ -107,15 +121,16 @@ import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation' import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker' import DateRangePicker from '@/components/DateRangePicker'
import { uploadFiles, sendEmail } from '@/api/index' import { uploadFiles, delRecord } from '@/api/index'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import '@riophae/vue-treeselect/dist/vue-treeselect.css' import '@riophae/vue-treeselect/dist/vue-treeselect.css'
const defaultForm = {} const defaultForm = {}
export default { export default {
name: 'CurrentDownload', name: 'CurrentDownload',
components: { rrOperation, pagination, DateRangePicker }, components: { rrOperation, pagination, DateRangePicker },
cruds() { cruds() {
return CRUD({ title: '性别筛选', url: 'api-management/api/down/record' }) return CRUD({ title: '性别筛选', url: '/api/deliveryGender' })
}, },
mixins: [presenter(), header(), form(defaultForm), crud()], mixins: [presenter(), header(), form(defaultForm), crud()],
data() { data() {
@ -138,7 +153,8 @@ export default {
'user' 'user'
]) ])
}, },
created() {}, created() {
},
mounted: function() { mounted: function() {
const that = this const that = this
window.onresize = function temp() { window.onresize = function temp() {
@ -146,22 +162,26 @@ export default {
} }
}, },
methods: { methods: {
downloadUrl(type, data) { downloadUrl(data) {
const a = document.createElement('a') const a = document.createElement('a')
a.style.display = 'none' a.style.display = 'none'
if (type === 'email') { a.href = data.downUrl
a.href = data.emailFilePath
}
if (type === 'excel') {
a.href = data.filePath
}
document.body.appendChild(a) document.body.appendChild(a)
a.click() a.click()
document.body.removeChild(a) document.body.removeChild(a)
}, },
sendEmail(id) { toDelete(data) {
sendEmail({ id: id }).then(res => { this.$confirm(`确认删除选中的数据?`, '提示', {
this.$message.success('发送成功') confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.crud.delAllLoading = true
const arrayIds = Array.of(data.id)
delRecord(arrayIds).then((res) => {
this.crud.toQuery()
})
}).catch(() => {
}) })
}, },
colseFileDialog() { colseFileDialog() {
@ -223,6 +243,7 @@ export default {
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
} }
.label { .label {
min-width: 60px; min-width: 60px;
line-height: 32px; line-height: 32px;

@ -0,0 +1,174 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission"/>
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0"
title="新增" width="50%">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="模板名称" prop="templateName">
<el-input v-model="form.templateName" width="50%"/>
</el-form-item>
<el-form-item label="模板内容" prop="sendMessage">
<textarea v-model="form.sendMessage" placeholder=" ${value}
备案签名速领 12 元券日日鲜牛奶 750ml2 20 符离集烧鸡 21.8 / ${value}" style="width: 100%;height: 100px"/>
</el-form-item>
<el-form-item label="跳转链接" prop="linkUrl">
<el-input v-model="form.linkUrl" width="50%"/>
</el-form-item>
<el-form-item label="申请备注" prop="remark">
<textarea v-model="form.remark" style="width: 100%;height: 100px"/>
</el-form-item>
<el-form-item v-if="form.templateStatus != null" label="审核状态">
<el-select v-model="form.templateStatus" placeholder="请选择审核结果" style="width: 40%"
@change="changeTemplateStatus" :disabled="form.auditTime != null">
<el-option :value="0" label="申请中"/>
<el-option :value="1" label="审核通过"/>
<el-option :value="-1" label="审核不通过"/>
</el-select>
</el-form-item>
<el-form-item v-if="form.templateStatus === -1" label="拒绝原因" >
<textarea v-model="form.rejectedMsg" style="width: 100%;height: 100px" :disabled="form.auditTime != null"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU"></el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU"></el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;"
@selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55"/>
<el-table-column prop="templateName" label="模板名称"/>
<el-table-column align="center" label="模板状态" prop="templateStatus">
<template slot-scope="scope">
<el-tag>{{ scope.row.templateStatus | templateStatusFilter }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="sendMessage" label="发送的信息"/>
<el-table-column prop="remark" label="备注"/>
<el-table-column prop="gmtCreate" label="生成时间">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.gmtCreate) }}</span>
</template>
</el-table-column>
<el-table-column prop="operator" label="申请人"/>
<el-table-column v-permission="['admin','tbTemplate:review','tbTemplate:del']" label="操作" width="150px"
align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination/>
</div>
</div>
</template>
<script>
import crudTbTemplate from '@/api/sms/tbTemplate'
import CRUD, {presenter, header, form, crud} from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
const defaultForm = {
id: null,
templateName: null,
templateStatus: null,
sendMessage: null,
auditTime: null,
lastUpdateTime: null,
remark: null,
reviewer: null,
rejectedMsg: null,
gmtCreate: null,
gmtModified: null,
operator: null,
linkUrl: null
};
export default {
filters: {
templateStatusFilter(status) {
if (status === 1) {
return "可使用";
} else if (status === -1) {
return "审核未通过";
} else {
return "待审核";
}
}
},
name: 'TbTemplate',
components: {pagination, crudOperation, rrOperation, udOperation},
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: 'TemplateController',
url: 'api/tbTemplate',
idField: 'id',
sort: 'id,desc',
crudMethod: {...crudTbTemplate}
})
},
data() {
const validateUrl = (rule, value, callback) => {
let reg = /(https?|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/
if (!reg.test(value)) {
callback(new Error('请输入正确的链接'))
} else {
callback()
}
};
return {
permission: {
add: ['admin', 'tbTemplate:add'],
edit: ['admin', 'tbTemplate:edit'],
del: ['admin', 'tbTemplate:del']
},
rules: {
templateName: [
{required: true, message: '模板名称不能为空', trigger: 'blur'}
],
sendMessage: [
{required: true, message: '模板内容不能为空', trigger: 'blur'}
],
linkUrl: [
{validator: validateUrl, message: '填写正确的url地址', trigger: 'blur'}
],
}
}
},
methods: {
// false
[CRUD.HOOK.beforeRefresh]() {
return true
},
changeTemplateStatus(val) {
if (val) {
}
}
}
}
</script>
<style scoped>
</style>
Loading…
Cancel
Save