code
This commit is contained in:
BIN
g.rar → dist.rar
BIN
g.rar → dist.rar
Binary file not shown.
@ -51,4 +51,20 @@ export function getSameSymbol(params) {
|
|||||||
params
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 导出交易对
|
||||||
|
export function exportSymbols(params) {
|
||||||
|
return request({
|
||||||
|
url: '/api/v1/line-symbol/export',
|
||||||
|
method: 'get',
|
||||||
|
responseType: 'blob',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function symbolAll(params) {
|
||||||
|
return request({
|
||||||
|
url: '/api/v1/line-symbol/all',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,6 +44,9 @@ service.interceptors.response.use(
|
|||||||
* You can also judge the status by HTTP Status Code
|
* You can also judge the status by HTTP Status Code
|
||||||
*/
|
*/
|
||||||
response => {
|
response => {
|
||||||
|
if (['blob'].includes(response.config.responseType)) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
const code = response.data.code
|
const code = response.data.code
|
||||||
if (code === 401) {
|
if (code === 401) {
|
||||||
store.dispatch('user/resetToken')
|
store.dispatch('user/resetToken')
|
||||||
|
|||||||
@ -32,17 +32,15 @@ export function downLoadFile(str) {
|
|||||||
* @param {*} res blob响应内容
|
* @param {*} res blob响应内容
|
||||||
* @param {String} mimeType MIME类型
|
* @param {String} mimeType MIME类型
|
||||||
*/
|
*/
|
||||||
export function resolveBlob(res, mimeType) {
|
export function resolveBlob(res, name, mimeType) {
|
||||||
const aLink = document.createElement('a')
|
const aLink = document.createElement('a')
|
||||||
var blob = new Blob([res.data], { type: mimeType })
|
var blob = new Blob([res], { type: mimeType || 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
|
||||||
// //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
|
// //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
|
||||||
var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
|
// var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
|
||||||
var contentDisposition = decodeURI(res.headers['content-disposition'])
|
// var contentDisposition = decodeURI(res.headers['content-disposition'])
|
||||||
var result = patt.exec(contentDisposition)
|
// var result = patt.exec(contentDisposition)
|
||||||
var fileName = result[1]
|
|
||||||
fileName = fileName.replace(/\"/g, '')
|
|
||||||
aLink.href = URL.createObjectURL(blob)
|
aLink.href = URL.createObjectURL(blob)
|
||||||
aLink.setAttribute('download', fileName) // 设置下载文件名称
|
aLink.setAttribute('download', name) // 设置下载文件名称
|
||||||
document.body.appendChild(aLink)
|
document.body.appendChild(aLink)
|
||||||
aLink.click()
|
aLink.click()
|
||||||
document.body.appendChild(aLink)
|
document.body.appendChild(aLink)
|
||||||
|
|||||||
@ -84,6 +84,32 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="减仓状态" prop="hedgeStatus"><el-select
|
||||||
|
v-model="queryParams.hedgeStatus"
|
||||||
|
placeholder="请选择减仓状态"
|
||||||
|
size="small"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dict in [{l:'全部',v:-1},{l:'未减仓',v:0},{l:'已减仓',v:1}]"
|
||||||
|
:key="dict.k"
|
||||||
|
:label="dict.l"
|
||||||
|
:value="dict.v"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="加仓状态" prop="addPositionStatus"><el-select
|
||||||
|
v-model="queryParams.addPositionStatus"
|
||||||
|
placeholder="请选择加仓状态"
|
||||||
|
size="small"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dict in [{l:'全部',v:-1},{l:'未加仓',v:0},{l:'已加仓',v:1}]"
|
||||||
|
:key="dict.k"
|
||||||
|
:label="dict.l"
|
||||||
|
:value="dict.v"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="status"><el-select
|
<el-form-item label="状态" prop="status"><el-select
|
||||||
v-model="queryParams.status"
|
v-model="queryParams.status"
|
||||||
placeholder="请选择状态"
|
placeholder="请选择状态"
|
||||||
|
|||||||
@ -130,92 +130,95 @@
|
|||||||
|
|
||||||
<!-- 添加或修改对话框 -->
|
<!-- 添加或修改对话框 -->
|
||||||
<el-dialog :title="title" :visible.sync="open" width="600px">
|
<el-dialog :title="title" :visible.sync="open" width="600px">
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
<div v-loading="formLoading">
|
||||||
<el-form-item label="交易所" prop="exchangeType">
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||||
<el-select
|
<el-form-item label="交易所" prop="exchangeType">
|
||||||
v-model="form.exchangeType"
|
<el-select
|
||||||
style="width: 100%;"
|
v-model="form.exchangeType"
|
||||||
placeholder="请选择交易所"
|
style="width: 100%;"
|
||||||
clearable
|
placeholder="请选择交易所"
|
||||||
filterable
|
clearable
|
||||||
size="small"
|
filterable
|
||||||
@change="onchangeForm"
|
size="small"
|
||||||
>
|
@change="onchangeForm"
|
||||||
<el-option
|
>
|
||||||
v-for="dict in exchangeTypes"
|
<el-option
|
||||||
:key="dict.value"
|
v-for="dict in exchangeTypes"
|
||||||
:label="dict.label"
|
:key="dict.value"
|
||||||
:value="dict.value"
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="交易对组名称" prop="groupName">
|
||||||
|
<el-input
|
||||||
|
v-model="form.groupName"
|
||||||
|
placeholder="交易对组名称"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-form-item>
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="交易对组名称" prop="groupName">
|
|
||||||
<el-input
|
|
||||||
v-model="form.groupName"
|
|
||||||
placeholder="交易对组名称"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<!-- <el-form-item label="分组类型:1=普通类型" prop="groupType">
|
<!-- <el-form-item label="分组类型:1=普通类型" prop="groupType">
|
||||||
<el-input v-model="form.groupType" placeholder="分组类型:1=普通类型"
|
<el-input v-model="form.groupType" placeholder="分组类型:1=普通类型"
|
||||||
/>
|
/>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="类型" prop="type">
|
<el-form-item label="类型" prop="type">
|
||||||
<el-radio-group v-model="form.type" @change="onchangeForm">
|
<el-radio-group v-model="form.type" @change="onchangeForm">
|
||||||
<el-radio label="1">现货</el-radio>
|
<el-radio label="1">现货</el-radio>
|
||||||
<el-radio label="2">合约</el-radio>
|
<el-radio label="2">合约</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="交易对" prop="curChange">
|
<el-form-item label="交易对" prop="curChange">
|
||||||
<el-radio-group v-model="curChange" @change="form.symbol = undefined">
|
<el-radio-group v-model="curChange" @change="form.symbol = undefined">
|
||||||
<el-radio :label="1">输入</el-radio>
|
<el-radio :label="1">输入</el-radio>
|
||||||
<el-radio :label="2">选择</el-radio>
|
<el-radio :label="2">选择</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="curChange===2" label="" prop="symbol">
|
<el-form-item v-if="curChange===2" label="" prop="symbol">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="form.symbol"
|
v-model="form.symbol"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
placeholder="请选择交易对"
|
placeholder="请选择交易对"
|
||||||
multiple
|
multiple
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
:remote-method="getSymbol"
|
:remote-method="getSymbol"
|
||||||
:loading="searchLoding"
|
:loading="searchLoding"
|
||||||
remote
|
remote
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in symbol.symbolList"
|
v-for="dict in symbol.symbolList"
|
||||||
:key="dict.id"
|
:key="dict.id"
|
||||||
:label="dict.symbol"
|
:label="dict.symbol"
|
||||||
:value="dict.symbol"
|
:value="dict.symbol"
|
||||||
/>
|
|
||||||
<div class="page">
|
|
||||||
<pagination
|
|
||||||
v-show="symbol.total>0"
|
|
||||||
:background="false"
|
|
||||||
:total="symbol.total"
|
|
||||||
layout="prev, pager, next"
|
|
||||||
:page.sync="symbol.pageIndex"
|
|
||||||
:limit.sync="symbol.pageSize"
|
|
||||||
@pagination="getSymbol"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
<div class="page">
|
||||||
</el-select>
|
<pagination
|
||||||
</el-form-item>
|
v-show="symbol.total>0"
|
||||||
<el-form-item v-else label="" prop="symbol">
|
:background="false"
|
||||||
<el-input
|
:total="symbol.total"
|
||||||
v-model="form.symbol"
|
layout="prev, pager, next"
|
||||||
type="textarea"
|
:page.sync="symbol.pageIndex"
|
||||||
:autosize="{ minRows: 4, maxRows: 8 }"
|
:limit.sync="symbol.pageSize"
|
||||||
placeholder="请输入交易对"
|
@pagination="getSymbol"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</div>
|
||||||
</el-form>
|
</el-select>
|
||||||
<div slot="footer" class="dialog-footer">
|
</el-form-item>
|
||||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
<el-form-item v-else label="" prop="symbol">
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-input
|
||||||
|
v-model="form.symbol"
|
||||||
|
type="textarea"
|
||||||
|
:autosize="{ minRows: 4, maxRows: 10 }"
|
||||||
|
placeholder="请输入交易对"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer" style="text-align: right;">
|
||||||
|
<el-button @click="onAll">所有交易对</el-button>
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -224,7 +227,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listLineSymbol } from '@/api/admin/line-symbol'
|
import { symbolAll, listLineSymbol } from '@/api/admin/line-symbol'
|
||||||
import { addLineSymbolGroup, delLineSymbolGroup, getLineSymbolGroup, listLineSymbolGroup, updateLineSymbolGroup } from '@/api/admin/line-symbol-group'
|
import { addLineSymbolGroup, delLineSymbolGroup, getLineSymbolGroup, listLineSymbolGroup, updateLineSymbolGroup } from '@/api/admin/line-symbol-group'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -278,7 +281,8 @@ export default {
|
|||||||
},
|
},
|
||||||
searchLoding: false,
|
searchLoding: false,
|
||||||
exchangeTypes: [],
|
exchangeTypes: [],
|
||||||
curChange: 1
|
curChange: 1,
|
||||||
|
formLoading: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@ -296,6 +300,15 @@ export default {
|
|||||||
this.form.symbol = undefined
|
this.form.symbol = undefined
|
||||||
this.getSymbol({})
|
this.getSymbol({})
|
||||||
},
|
},
|
||||||
|
onAll() {
|
||||||
|
this.formLoading = true
|
||||||
|
const { exchangeType, type } = this.form
|
||||||
|
symbolAll({ exchangeType, type }).then(response => {
|
||||||
|
this.form.symbol = response.data.toString()
|
||||||
|
}).finally(() => {
|
||||||
|
this.formLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
// 交易对列表
|
// 交易对列表
|
||||||
getSymbol(e, type) {
|
getSymbol(e, type) {
|
||||||
this.searchLoding = true
|
this.searchLoding = true
|
||||||
@ -388,23 +401,28 @@ export default {
|
|||||||
submitForm: function() {
|
submitForm: function() {
|
||||||
this.$refs['form'].validate(valid => {
|
this.$refs['form'].validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
this.formLoading = true
|
||||||
if (this.form.id !== undefined) {
|
if (this.form.id !== undefined) {
|
||||||
updateLineSymbolGroup({ ...this.form, symbol: this.form.symbol.toString() }).then(response => {
|
updateLineSymbolGroup({ ...this.form, symbol: this.form.symbol.toString() }).then(response => {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
|
this.formLoading = false
|
||||||
this.msgSuccess(response.msg)
|
this.msgSuccess(response.msg)
|
||||||
this.open = false
|
this.open = false
|
||||||
this.getList()
|
this.getList()
|
||||||
} else {
|
} else {
|
||||||
|
this.formLoading = false
|
||||||
this.msgError(response.msg)
|
this.msgError(response.msg)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
addLineSymbolGroup({ ...this.form, symbol: this.form.symbol.toString() }).then(response => {
|
addLineSymbolGroup({ ...this.form, symbol: this.form.symbol.toString() }).then(response => {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
|
this.formLoading = false
|
||||||
this.msgSuccess(response.msg)
|
this.msgSuccess(response.msg)
|
||||||
this.open = false
|
this.open = false
|
||||||
this.getList()
|
this.getList()
|
||||||
} else {
|
} else {
|
||||||
|
this.formLoading = false
|
||||||
this.msgError(response.msg)
|
this.msgError(response.msg)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -62,6 +62,16 @@
|
|||||||
>修改
|
>修改
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
v-permisaction="['admin:lineSymbol:edit']"
|
||||||
|
type="warning"
|
||||||
|
icon="el-icon-upload"
|
||||||
|
size="mini"
|
||||||
|
@click="handleExport"
|
||||||
|
>导出
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
v-permisaction="['admin:lineSymbol:remove']"
|
v-permisaction="['admin:lineSymbol:remove']"
|
||||||
@ -212,7 +222,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { addLineSymbol, delLineSymbol, getLineSymbol, listLineSymbol, updateLineSymbol } from '@/api/admin/line-symbol'
|
import { resolveBlob } from '@/utils/zipdownload'
|
||||||
|
import { addLineSymbol, delLineSymbol, getLineSymbol, listLineSymbol, updateLineSymbol, exportSymbols } from '@/api/admin/line-symbol'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'LineSymbol',
|
name: 'LineSymbol',
|
||||||
@ -308,7 +319,7 @@ export default {
|
|||||||
/** 查询参数列表 */
|
/** 查询参数列表 */
|
||||||
getList() {
|
getList() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
listLineSymbol(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
|
listLineSymbol(this.queryParams).then(response => {
|
||||||
this.lineSymbolList = response.data.list
|
this.lineSymbolList = response.data.list
|
||||||
this.total = response.data.count
|
this.total = response.data.count
|
||||||
this.loading = false
|
this.loading = false
|
||||||
@ -426,6 +437,18 @@ export default {
|
|||||||
}
|
}
|
||||||
}).catch(function() {
|
}).catch(function() {
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
this.$confirm('确认导出当前页面数据吗?', '警告', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
exportSymbols(this.queryParams).then(res => {
|
||||||
|
resolveBlob(res, '交易对导出数据')
|
||||||
|
this.msgSuccess('导出成功')
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user