|
|
|
<template>
|
|
|
|
<div class="app-container">
|
|
|
|
<div>
|
|
|
|
<el-form :inline="true" :model="formSearch" ref="ruleForm" class="demo-form-inline">
|
|
|
|
<el-form-item label="时间:">
|
|
|
|
<el-date-picker
|
|
|
|
v-model="formSearch.time"
|
|
|
|
size="mini"
|
|
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
type="daterange"
|
|
|
|
range-separator="至"
|
|
|
|
start-placeholder="开始日期"
|
|
|
|
end-placeholder="结束日期">
|
|
|
|
</el-date-picker>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="取码单号:">
|
|
|
|
<el-input v-model="formSearch.number" size="mini" placeholder="请输入取码单号" clearable maxlength="50"></el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item>
|
|
|
|
<el-button type="primary" size="mini" icon="el-icon-search" @click="search">查询</el-button>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item class="float-right">
|
|
|
|
<el-button type="danger" size="mini" icon="el-icon-circle-plus-outline" @click="addGetDialog()">创建取码单</el-button>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
|
|
|
</div>
|
|
|
|
<el-table :data="tableData" style="width: 100%" header-row-class-name="">
|
|
|
|
<el-table-column prop="fetchId" label="取码单号"></el-table-column>
|
|
|
|
<el-table-column prop="fetchTime" label="日期"></el-table-column>
|
|
|
|
<!-- <el-table-column prop="summary" label="摘要"></el-table-column> -->
|
|
|
|
<el-table-column prop="fetchCount" label="取码数"></el-table-column>
|
|
|
|
<el-table-column prop="status" label="取码单状态">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<span v-if="scope.row.status == 0" class="color-wait">未生成</span>
|
|
|
|
<span v-else-if="scope.row.status == 1" class="color-send">生成中</span>
|
|
|
|
<span v-else-if="scope.row.status == 2" class="color-success">已生成</span>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="fileName" label="防伪码">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-button type="text" @click="downLoadFile(scope.row.fetchId)">{{scope.row.fileName}}</el-button>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="操作" width="250">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-button type="text" size="small" @click="addGetDialog(scope.row.fetchId,scope.row.fetchTime)">编辑</el-button>
|
|
|
|
<el-button type="text" size="small" @click="confirm(scope.row.fetchId)">生成防伪码印刷文件</el-button>
|
|
|
|
<el-button type="text" size="small" @click="showDetail(scope.row.fetchId)">查看</el-button>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
<el-pagination
|
|
|
|
background
|
|
|
|
@size-change="handleSizeChange"
|
|
|
|
@current-change="handleCurrentChange"
|
|
|
|
:current-page="currentPage"
|
|
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
|
|
:page-size="pageSize"
|
|
|
|
layout="total, prev, pager, next, sizes, jumper"
|
|
|
|
:total="total">
|
|
|
|
</el-pagination>
|
|
|
|
<el-dialog title="发码" :visible.sync="dialogDownloadVisible" width="500px" :close-on-click-modal='false'>
|
|
|
|
<el-form :model="form" :rules="rules" ref="form">
|
|
|
|
<el-form-item label="手机号:" :label-width="formLabelWidth" prop="telPhone" ref="telPhone">
|
|
|
|
<el-input v-model.number="form.telPhone" maxlength="11" autocomplete="off" size="small"></el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="短信验证码:" :label-width="formLabelWidth" prop="vCode">
|
|
|
|
<el-input v-model.number="form.vCode" autocomplete="off" size="small" style="width:110px;margin-right:5px;"></el-input>
|
|
|
|
<el-button type="danger" style="width:100px;" size="small" @click="getSendMessage" :disabled="sendStatus">{{!sendStatus?'获取验证码':timer+'秒'}}</el-button>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
|
<el-button type="primary" size="mini" @click="submitForm('form')">保存</el-button>
|
|
|
|
<el-button type="info" size="mini" @click="resetForm('form')">取消</el-button>
|
|
|
|
</div>
|
|
|
|
</el-dialog>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import {
|
|
|
|
getFetchList,generateFetch,sendMessage,getDownloadUrl
|
|
|
|
} from "@/api/get"
|
|
|
|
import {validatePhone} from "@/utils/validate"
|
|
|
|
export default {
|
|
|
|
name: "getGet",
|
|
|
|
data() {
|
|
|
|
const checkPhoneNum = (rule, value, callback) => {
|
|
|
|
if (!validatePhone(value)) {
|
|
|
|
return callback(new Error('请输入正确的手机号码'));
|
|
|
|
} else {
|
|
|
|
callback()
|
|
|
|
}
|
|
|
|
};
|
|
|
|
return {
|
|
|
|
BASE_URL:config.API_URL,
|
|
|
|
formSearch: {//模糊搜索
|
|
|
|
time: '',
|
|
|
|
number: '',
|
|
|
|
},
|
|
|
|
form:{
|
|
|
|
telPhone:'',
|
|
|
|
vCode:''
|
|
|
|
},
|
|
|
|
rules: {
|
|
|
|
telPhone: [
|
|
|
|
{ required: true, message: '请输入手机号', trigger: 'blur' },
|
|
|
|
{validator:checkPhoneNum,trigger:"blur"}
|
|
|
|
],
|
|
|
|
vCode: [
|
|
|
|
{ required: true, message: '请输入短信验证码', trigger: 'blur' }
|
|
|
|
]
|
|
|
|
},
|
|
|
|
currentPage: 1, //当前页
|
|
|
|
pageSize: 10, //每页条数
|
|
|
|
total: 0, //总条数
|
|
|
|
tableData: [], //表格数据
|
|
|
|
formLabelWidth:'120px',
|
|
|
|
dialogDownloadVisible:false,
|
|
|
|
sendStatus:false,
|
|
|
|
timer:60,
|
|
|
|
fetchId:'',
|
|
|
|
|
|
|
|
};
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
this.initData()
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
//搜索查询
|
|
|
|
search() {
|
|
|
|
this.currentPage = 1
|
|
|
|
this.initData()
|
|
|
|
},
|
|
|
|
//获取用户列表
|
|
|
|
initData() {
|
|
|
|
|
|
|
|
const params = {
|
|
|
|
pageNo: this.currentPage,
|
|
|
|
pageSize: this.pageSize,
|
|
|
|
discardId: this.formSearch.number|| null,
|
|
|
|
startTime:this.formSearch.time?this.formSearch.time[0] : null,
|
|
|
|
endTime:this.formSearch.time?this.formSearch.time[1] : null
|
|
|
|
}
|
|
|
|
getFetchList(params).then(res => {
|
|
|
|
this.tableData = res.data.list
|
|
|
|
this.total = res.data.count
|
|
|
|
})
|
|
|
|
},
|
|
|
|
downLoadFile(id){
|
|
|
|
this.dialogDownloadVisible = true
|
|
|
|
this.fetchId = id
|
|
|
|
},
|
|
|
|
getSendMessage(){
|
|
|
|
this.$refs['form'].validateField('telPhone',(valid) => {
|
|
|
|
if (valid) {
|
|
|
|
console.log('telPhone error');
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
sendMessage({phone:this.form.telPhone+''}).then(res => {
|
|
|
|
this.$message({
|
|
|
|
message: res.msg,
|
|
|
|
type: 'success'
|
|
|
|
});
|
|
|
|
this.timer = 60
|
|
|
|
this.sendStatus = true
|
|
|
|
var flag = setInterval(() =>{
|
|
|
|
if(this.timer == 0)
|
|
|
|
{
|
|
|
|
clearInterval(flag)
|
|
|
|
this.sendStatus = false
|
|
|
|
} else {
|
|
|
|
this.timer--
|
|
|
|
}
|
|
|
|
},1000)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
submitForm(formName) {
|
|
|
|
this.$refs[formName].validate((valid) => {
|
|
|
|
if (valid) {
|
|
|
|
const param ={
|
|
|
|
fetch_id:this.fetchId,
|
|
|
|
phone:this.form.telPhone+'',
|
|
|
|
verify_code:this.form.vCode+''
|
|
|
|
}
|
|
|
|
getDownloadUrl(param).then(res => {
|
|
|
|
window.location.href = this.BASE_URL + res.data
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
console.log('error submit!!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
resetForm(formName) {
|
|
|
|
this.$refs[formName].resetFields();
|
|
|
|
this.dialogDownloadVisible = false
|
|
|
|
},
|
|
|
|
confirm(id){
|
|
|
|
this.$confirm('此操作将生成防伪码印刷文件, 是否继续?', '提示', {
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
type: 'warning'
|
|
|
|
}).then(() => {
|
|
|
|
generateFetch({fetch_id:id}).then(res => {
|
|
|
|
this.$message({
|
|
|
|
type: 'success',
|
|
|
|
message: '操作成功!'
|
|
|
|
});
|
|
|
|
this.initData()
|
|
|
|
}).catch(err => {
|
|
|
|
this.$message({
|
|
|
|
message: err.msg,
|
|
|
|
type: err.code == 200 ? 'success' : 'error'
|
|
|
|
});
|
|
|
|
})
|
|
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
this.$message({
|
|
|
|
type: 'info',
|
|
|
|
message: '已取消操作'
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
//防伪取码详情
|
|
|
|
showDetail(id) {
|
|
|
|
this.$router.push({name:'getGetDetail',query:{id:id}})
|
|
|
|
},
|
|
|
|
//点击创建取码单
|
|
|
|
addGetDialog(ids = null,times = null){
|
|
|
|
this.$router.push({name:'addGet',query:{ids:ids,times:times}})
|
|
|
|
},
|
|
|
|
//每页条数变化
|
|
|
|
handleSizeChange(val) {
|
|
|
|
this.pageSize = val
|
|
|
|
this.initData()
|
|
|
|
},
|
|
|
|
//当前页变化
|
|
|
|
handleCurrentChange(val) {
|
|
|
|
this.currentPage = val
|
|
|
|
this.initData()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
|
|
.input-with-select {
|
|
|
|
float: left;
|
|
|
|
top: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-input {
|
|
|
|
width: 230px;
|
|
|
|
}
|
|
|
|
</style>
|