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 | ||||
|   }) | ||||
| } | ||||
| // 导出交易对 | ||||
| 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 | ||||
|    */ | ||||
|   response => { | ||||
|     if (['blob'].includes(response.config.responseType)) { | ||||
|       return response.data | ||||
|     } | ||||
|     const code = response.data.code | ||||
|     if (code === 401) { | ||||
|       store.dispatch('user/resetToken') | ||||
|  | ||||
| @ -32,17 +32,15 @@ export function downLoadFile(str) { | ||||
|  * @param {*} res blob响应内容 | ||||
|  * @param {String} mimeType MIME类型 | ||||
|  */ | ||||
| export function resolveBlob(res, mimeType) { | ||||
| export function resolveBlob(res, name, mimeType) { | ||||
|   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") 设置的文件名; | ||||
|   var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') | ||||
|   var contentDisposition = decodeURI(res.headers['content-disposition']) | ||||
|   var result = patt.exec(contentDisposition) | ||||
|   var fileName = result[1] | ||||
|   fileName = fileName.replace(/\"/g, '') | ||||
|   // var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') | ||||
|   // var contentDisposition = decodeURI(res.headers['content-disposition']) | ||||
|   // var result = patt.exec(contentDisposition) | ||||
|   aLink.href = URL.createObjectURL(blob) | ||||
|   aLink.setAttribute('download', fileName) // 设置下载文件名称 | ||||
|   aLink.setAttribute('download', name) // 设置下载文件名称 | ||||
|   document.body.appendChild(aLink) | ||||
|   aLink.click() | ||||
|   document.body.appendChild(aLink) | ||||
|  | ||||
| @ -84,6 +84,32 @@ | ||||
|             /> | ||||
|           </el-select> | ||||
|           </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 | ||||
|             v-model="queryParams.status" | ||||
|             placeholder="请选择状态" | ||||
|  | ||||
| @ -130,92 +130,95 @@ | ||||
|  | ||||
|         <!-- 添加或修改对话框 --> | ||||
|         <el-dialog :title="title" :visible.sync="open" width="600px"> | ||||
|           <el-form ref="form" :model="form" :rules="rules" label-width="120px"> | ||||
|             <el-form-item label="交易所" prop="exchangeType"> | ||||
|               <el-select | ||||
|                 v-model="form.exchangeType" | ||||
|                 style="width: 100%;" | ||||
|                 placeholder="请选择交易所" | ||||
|                 clearable | ||||
|                 filterable | ||||
|                 size="small" | ||||
|                 @change="onchangeForm" | ||||
|               > | ||||
|                 <el-option | ||||
|                   v-for="dict in exchangeTypes" | ||||
|                   :key="dict.value" | ||||
|                   :label="dict.label" | ||||
|                   :value="dict.value" | ||||
|           <div v-loading="formLoading"> | ||||
|             <el-form ref="form" :model="form" :rules="rules" label-width="120px"> | ||||
|               <el-form-item label="交易所" prop="exchangeType"> | ||||
|                 <el-select | ||||
|                   v-model="form.exchangeType" | ||||
|                   style="width: 100%;" | ||||
|                   placeholder="请选择交易所" | ||||
|                   clearable | ||||
|                   filterable | ||||
|                   size="small" | ||||
|                   @change="onchangeForm" | ||||
|                 > | ||||
|                   <el-option | ||||
|                     v-for="dict in exchangeTypes" | ||||
|                     :key="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 label="交易对组名称" prop="groupName"> | ||||
|               <el-input | ||||
|                 v-model="form.groupName" | ||||
|                 placeholder="交易对组名称" | ||||
|               /> | ||||
|             </el-form-item> | ||||
|               </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-form-item> --> | ||||
|             <el-form-item label="类型" prop="type"> | ||||
|               <el-radio-group v-model="form.type" @change="onchangeForm"> | ||||
|                 <el-radio label="1">现货</el-radio> | ||||
|                 <el-radio label="2">合约</el-radio> | ||||
|               </el-radio-group> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="交易对" prop="curChange"> | ||||
|               <el-radio-group v-model="curChange" @change="form.symbol = undefined"> | ||||
|                 <el-radio :label="1">输入</el-radio> | ||||
|                 <el-radio :label="2">选择</el-radio> | ||||
|               </el-radio-group> | ||||
|             </el-form-item> | ||||
|             <el-form-item v-if="curChange===2" label="" prop="symbol"> | ||||
|               <el-select | ||||
|                 v-model="form.symbol" | ||||
|                 style="width: 100%;" | ||||
|                 placeholder="请选择交易对" | ||||
|                 multiple | ||||
|                 clearable | ||||
|                 filterable | ||||
|                 :remote-method="getSymbol" | ||||
|                 :loading="searchLoding" | ||||
|                 remote | ||||
|                 size="small" | ||||
|               > | ||||
|                 <el-option | ||||
|                   v-for="dict in symbol.symbolList" | ||||
|                   :key="dict.id" | ||||
|                   :label="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" | ||||
|               <el-form-item label="类型" prop="type"> | ||||
|                 <el-radio-group v-model="form.type" @change="onchangeForm"> | ||||
|                   <el-radio label="1">现货</el-radio> | ||||
|                   <el-radio label="2">合约</el-radio> | ||||
|                 </el-radio-group> | ||||
|               </el-form-item> | ||||
|               <el-form-item label="交易对" prop="curChange"> | ||||
|                 <el-radio-group v-model="curChange" @change="form.symbol = undefined"> | ||||
|                   <el-radio :label="1">输入</el-radio> | ||||
|                   <el-radio :label="2">选择</el-radio> | ||||
|                 </el-radio-group> | ||||
|               </el-form-item> | ||||
|               <el-form-item v-if="curChange===2" label="" prop="symbol"> | ||||
|                 <el-select | ||||
|                   v-model="form.symbol" | ||||
|                   style="width: 100%;" | ||||
|                   placeholder="请选择交易对" | ||||
|                   multiple | ||||
|                   clearable | ||||
|                   filterable | ||||
|                   :remote-method="getSymbol" | ||||
|                   :loading="searchLoding" | ||||
|                   remote | ||||
|                   size="small" | ||||
|                 > | ||||
|                   <el-option | ||||
|                     v-for="dict in symbol.symbolList" | ||||
|                     :key="dict.id" | ||||
|                     :label="dict.symbol" | ||||
|                     :value="dict.symbol" | ||||
|                   /> | ||||
|                 </div> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item v-else label="" prop="symbol"> | ||||
|               <el-input | ||||
|                 v-model="form.symbol" | ||||
|                 type="textarea" | ||||
|                 :autosize="{ minRows: 4, maxRows: 8 }" | ||||
|                 placeholder="请输入交易对" | ||||
|               /> | ||||
|             </el-form-item> | ||||
|           </el-form> | ||||
|           <div slot="footer" class="dialog-footer"> | ||||
|             <el-button type="primary" @click="submitForm">确 定</el-button> | ||||
|             <el-button @click="cancel">取 消</el-button> | ||||
|                   <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> | ||||
|                 </el-select> | ||||
|               </el-form-item> | ||||
|               <el-form-item v-else label="" prop="symbol"> | ||||
|                 <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> | ||||
|         </el-dialog> | ||||
|       </el-card> | ||||
| @ -224,7 +227,7 @@ | ||||
| </template> | ||||
|  | ||||
| <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' | ||||
|  | ||||
| export default { | ||||
| @ -278,7 +281,8 @@ export default { | ||||
|       }, | ||||
|       searchLoding: false, | ||||
|       exchangeTypes: [], | ||||
|       curChange: 1 | ||||
|       curChange: 1, | ||||
|       formLoading: false | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
| @ -296,6 +300,15 @@ export default { | ||||
|       this.form.symbol = undefined | ||||
|       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) { | ||||
|       this.searchLoding = true | ||||
| @ -388,23 +401,28 @@ export default { | ||||
|     submitForm: function() { | ||||
|       this.$refs['form'].validate(valid => { | ||||
|         if (valid) { | ||||
|           this.formLoading = true | ||||
|           if (this.form.id !== undefined) { | ||||
|             updateLineSymbolGroup({ ...this.form, symbol: this.form.symbol.toString() }).then(response => { | ||||
|               if (response.code === 200) { | ||||
|                 this.formLoading = false | ||||
|                 this.msgSuccess(response.msg) | ||||
|                 this.open = false | ||||
|                 this.getList() | ||||
|               } else { | ||||
|                 this.formLoading = false | ||||
|                 this.msgError(response.msg) | ||||
|               } | ||||
|             }) | ||||
|           } else { | ||||
|             addLineSymbolGroup({ ...this.form, symbol: this.form.symbol.toString() }).then(response => { | ||||
|               if (response.code === 200) { | ||||
|                 this.formLoading = false | ||||
|                 this.msgSuccess(response.msg) | ||||
|                 this.open = false | ||||
|                 this.getList() | ||||
|               } else { | ||||
|                 this.formLoading = false | ||||
|                 this.msgError(response.msg) | ||||
|               } | ||||
|             }) | ||||
|  | ||||
| @ -62,6 +62,16 @@ | ||||
|             >修改 | ||||
|             </el-button> | ||||
|           </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-button | ||||
|               v-permisaction="['admin:lineSymbol:remove']" | ||||
| @ -212,7 +222,8 @@ | ||||
| </template> | ||||
|  | ||||
| <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 { | ||||
|   name: 'LineSymbol', | ||||
| @ -308,7 +319,7 @@ export default { | ||||
|     /** 查询参数列表 */ | ||||
|     getList() { | ||||
|       this.loading = true | ||||
|       listLineSymbol(this.addDateRange(this.queryParams, this.dateRange)).then(response => { | ||||
|       listLineSymbol(this.queryParams).then(response => { | ||||
|         this.lineSymbolList = response.data.list | ||||
|         this.total = response.data.count | ||||
|         this.loading = false | ||||
| @ -426,6 +437,18 @@ export default { | ||||
|         } | ||||
|       }).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
	 shilin
					shilin