Compare commits
	
		
			2 Commits
		
	
	
		
			4a0a1f929e
			...
			master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| aa45420ed9 | |||
| 79e93c1dfa | 
| @ -2,5 +2,5 @@ | ||||
| ENV = 'development' | ||||
|  | ||||
| # base api | ||||
| VUE_APP_BASE_API = 'http://192.168.2.102:6789' | ||||
| VUE_APP_BASE_API = 'http://192.168.2.22:6789' | ||||
|  | ||||
|  | ||||
| @ -5,9 +5,9 @@ | ||||
|   "author": "https://github.com/wenjianzhang", | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
|     "dev": "vue-cli-service serve", | ||||
|     "build:prod": "vue-cli-service build", | ||||
|     "build:stage": "vue-cli-service build --mode staging", | ||||
|     "dev": " vue-cli-service serve", | ||||
|     "build:prod": " vue-cli-service build", | ||||
|     "build:stage": " vue-cli-service build --mode staging", | ||||
|     "preview": "node build/index.js --preview", | ||||
|     "lint": "eslint --ext .js,.vue src", | ||||
|     "test:unit": "jest --clearCache && vue-cli-service test:unit", | ||||
|  | ||||
| @ -51,3 +51,12 @@ export function getMainUser(data) { | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获取可用api user | ||||
| export function getReverseOptions(params) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-api-user/reverse-options', | ||||
|     method: 'get', | ||||
|     params: params | ||||
|   }) | ||||
| } | ||||
|  | ||||
|  | ||||
							
								
								
									
										46
									
								
								src/api/admin/line-reverse-position.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/api/admin/line-reverse-position.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 查询LineReversePosition列表 | ||||
| export function listLineReversePosition(query) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-position', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 查询LineReversePosition详细 | ||||
| export function getLineReversePosition(id) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-position/' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 新增LineReversePosition | ||||
| export function addLineReversePosition(data) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-position', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 修改LineReversePosition | ||||
| export function updateLineReversePosition(data) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-position/' + data.id, | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 删除LineReversePosition | ||||
| export function delLineReversePosition(data) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-position', | ||||
|     method: 'delete', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
							
								
								
									
										46
									
								
								src/api/admin/line-reverse-setting.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/api/admin/line-reverse-setting.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 查询LineReverseSetting列表 | ||||
| export function listLineReverseSetting(query) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-setting', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 查询LineReverseSetting详细 | ||||
| export function getLineReverseSetting(id) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-setting/' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 新增LineReverseSetting | ||||
| export function addLineReverseSetting(data) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-setting', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 修改LineReverseSetting | ||||
| export function updateLineReverseSetting(data) { | ||||
|   return request({ | ||||
|     url: '/api/v1/line-reverse-setting/' + data.id, | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // // 删除LineReverseSetting | ||||
| // export function delLineReverseSetting(data) { | ||||
| //     return request({ | ||||
| //         url: '/api/v1/line-reverse-setting', | ||||
| //         method: 'delete', | ||||
| //         data: data | ||||
| //     }) | ||||
| // } | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
|  | ||||
| <template> | ||||
|   <BasicLayout> | ||||
|     <template #wrapper> | ||||
| @ -47,7 +46,13 @@ | ||||
|         </el-row> | ||||
|  | ||||
|         <el-table v-loading="loading" :data="lineApiUserList" @selection-change="handleSelectionChange"> | ||||
|           <el-table-column type="selection" width="55" align="center" /><el-table-column label="用户名" align="center" prop="userId" :formatter="userIdFormat" width="100"> | ||||
|           <el-table-column type="selection" width="55" align="center" /><el-table-column | ||||
|             label="用户名" | ||||
|             align="center" | ||||
|             prop="userId" | ||||
|             :formatter="userIdFormat" | ||||
|             width="100" | ||||
|           > | ||||
|             <template slot-scope="scope"> | ||||
|               {{ userIdFormat(scope.row) }} | ||||
|             </template> | ||||
| @ -57,22 +62,12 @@ | ||||
|             prop="apiName" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /> | ||||
|           <el-table-column | ||||
|             label="交易所" | ||||
|             align="center" | ||||
|             prop="apiName" | ||||
|             :show-overflow-tooltip="true" | ||||
|           > | ||||
|             <template #default="{row}"> | ||||
|           <el-table-column label="交易所" align="center" prop="apiName" :show-overflow-tooltip="true"> | ||||
|             <template #default="{ row }"> | ||||
|               {{ exchangeTypeFormat(row) }} | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column | ||||
|             label="apiKey" | ||||
|             align="center" | ||||
|             prop="apiKey" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /><el-table-column | ||||
|           <el-table-column label="apiKey" align="center" prop="apiKey" :show-overflow-tooltip="true" /><el-table-column | ||||
|             label="apiSecret" | ||||
|             align="center" | ||||
|             prop="apiSecret" | ||||
| @ -83,55 +78,9 @@ | ||||
|             prop="ipAddress" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /> | ||||
|           <!-- <el-table-column | ||||
|             label="代码账号密码" | ||||
|             align="center" | ||||
|             prop="userPass" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /> --> | ||||
|           <!-- <el-table-column | ||||
|             label="归属" | ||||
|             align="center" | ||||
|             prop="affiliation" | ||||
|             :show-overflow-tooltip="true" | ||||
|           > | ||||
|             <template #default="{row}">{{ ['现货','合约','现货合约'][row.affiliation-1] }}</template> | ||||
|           </el-table-column> --> | ||||
|           <!-- <el-table-column | ||||
|             label="是否超管可见" | ||||
|             align="center" | ||||
|             prop="adminShow" | ||||
|             :show-overflow-tooltip="true" | ||||
|           > | ||||
|             <template #default="{row}">{{ ['否','是'][row.adminShow] }}</template> | ||||
|           </el-table-column> --> | ||||
|           <!-- <el-table-column | ||||
|             label="允许下单的方向" | ||||
|             align="center" | ||||
|             prop="site" | ||||
|             :show-overflow-tooltip="true" | ||||
|           > | ||||
|             <template #default="{row}">{{ ['多','空','多空'][row.site-1] }}</template> | ||||
|           </el-table-column> --> | ||||
|           <!-- <el-table-column | ||||
|             label="从属关系" | ||||
|             align="center" | ||||
|             prop="subordinate" | ||||
|             :show-overflow-tooltip="true" | ||||
|           > | ||||
|             <template #default="{row}">{{ ['','主账号','副帐号'][row.subordinate] }}</template> | ||||
|           </el-table-column><el-table-column label="所属组id" align="center" prop="groupId" :formatter="groupIdFormat" width="100"> | ||||
|             <template slot-scope="scope"> | ||||
|               {{ groupIdFormat(scope.row) }} | ||||
|             </template> | ||||
|           </el-table-column> --> | ||||
|           <el-table-column | ||||
|             label="开启状态" | ||||
|             align="center" | ||||
|             prop="openStatus" | ||||
|             :show-overflow-tooltip="true" | ||||
|           > | ||||
|             <template #default="{row}"><el-tag size="mini" :type="['danger','success'][row.openStatus]">{{ ['已关闭','已开启'][row.openStatus] }}</el-tag></template> | ||||
|           <el-table-column label="开启状态" align="center" prop="openStatus" :show-overflow-tooltip="true"> | ||||
|             <template #default="{ row }"><el-tag size="mini" :type="['danger', 'success'][row.openStatus]">{{ | ||||
|               ['已关闭', '已开启'][row.openStatus] }}</el-tag></template> | ||||
|           </el-table-column> | ||||
|           <el-table-column | ||||
|             label="合约最后通信时间" | ||||
| @ -139,14 +88,20 @@ | ||||
|             width="180" | ||||
|             prop="futuresLastTime" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /> | ||||
|           > | ||||
|             <template #default="{ row }">{{ parseTime(row.futuresLastTime) }}</template> | ||||
|           </el-table-column> | ||||
|           <el-table-column | ||||
|             label="现货最后通信时间" | ||||
|             align="center" | ||||
|             prop="spotLastTime" | ||||
|             width="180" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /> | ||||
|           > | ||||
|             <template slot-scope="scope"> | ||||
|               {{ parseTime(scope.row.spotLastTime) }} | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="操作" fixed="right" width="150" align="center" class-name="small-padding fixed-width"> | ||||
|             <template slot-scope="scope"> | ||||
|               <el-popconfirm | ||||
| @ -184,7 +139,7 @@ | ||||
|         </el-table> | ||||
|  | ||||
|         <pagination | ||||
|           v-show="total>0" | ||||
|           v-show="total > 0" | ||||
|           :total="total" | ||||
|           :page.sync="queryParams.pageIndex" | ||||
|           :limit.sync="queryParams.pageSize" | ||||
| @ -212,74 +167,50 @@ | ||||
|                 filterable | ||||
|                 size="small" | ||||
|               > | ||||
|                 <el-option | ||||
|                   v-for="dict in exchangeTypes" | ||||
|                   :key="dict.value" | ||||
|                   :label="dict.label" | ||||
|                   :value="dict.value" | ||||
|                 /> | ||||
|                 <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="api用户名" prop="apiName"> | ||||
|               <el-input | ||||
|                 v-model="form.apiName" | ||||
|                 placeholder="api用户名" | ||||
|               /> | ||||
|               <el-input v-model="form.apiName" placeholder="api用户名" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="apiKey" prop="apiKey"> | ||||
|               <el-input | ||||
|                 v-model="form.apiKey" | ||||
|                 placeholder="apiKey" | ||||
|               /> | ||||
|               <el-input v-model="form.apiKey" placeholder="apiKey" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="apiSecret" prop="apiSecret"> | ||||
|               <el-input | ||||
|                 v-model="form.apiSecret" | ||||
|                 placeholder="apiSecret" | ||||
|               /> | ||||
|               <el-input v-model="form.apiSecret" placeholder="apiSecret" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="代理地址" prop="ipAddress"> | ||||
|               <el-input | ||||
|                 v-model="form.ipAddress" | ||||
|                 placeholder="代理地址" | ||||
|               /> | ||||
|               <el-input v-model="form.ipAddress" placeholder="代理地址" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="代码账号密码" prop="userPass"> | ||||
|               <el-input | ||||
|                 v-model="form.userPass" | ||||
|                 placeholder="代码账号密码" | ||||
|               /> | ||||
|               <el-input v-model="form.userPass" placeholder="代码账号密码" /> | ||||
|             </el-form-item> | ||||
|             <!-- <el-form-item label="管理员id" prop="adminId"> | ||||
|                                         <el-input v-model="form.adminId" placeholder="管理员id" | ||||
|                                                       /> | ||||
|                                     </el-form-item> --> | ||||
|             <!-- <el-form-item label="归属" prop="affiliation"> | ||||
|               <el-radio-group v-model="form.affiliation"> | ||||
|                 <el-radio :label="3">现货合约</el-radio> | ||||
|                 <el-radio :label="1">现货</el-radio> | ||||
|                 <el-radio :label="2">合约</el-radio> | ||||
|             <el-form-item label="反向下单" prop="reverseStatus"> | ||||
|               <el-radio-group v-model="form.reverseStatus"> | ||||
|                 <el-radio :label="1">开启</el-radio> | ||||
|                 <el-radio :label="2">关闭</el-radio> | ||||
|               </el-radio-group> | ||||
|             </el-form-item> --> | ||||
|             <!-- <el-form-item label="是否超管可见" prop="adminShow"> | ||||
|                                         <el-input v-model="form.adminShow" placeholder="是否超管可见" | ||||
|                                                       /> | ||||
|                                     </el-form-item> --> | ||||
|             <!-- <el-form-item label="允许下单的方向" prop="site"> | ||||
|               <el-radio-group v-model="form.site"> | ||||
|                 <el-radio label="3">多空</el-radio> | ||||
|                 <el-radio label="1">多</el-radio> | ||||
|                 <el-radio label="2">空</el-radio> | ||||
|               </el-radio-group> | ||||
|             </el-form-item> --> | ||||
|             <!-- <el-form-item label="从属关系" prop="subordinate"> | ||||
|                                         <el-input v-model="form.subordinate" placeholder="从属关系" | ||||
|                                                       /> | ||||
|                                     </el-form-item> --> | ||||
|             <!-- <el-form-item label="所属组id" prop="groupId"> | ||||
|                                         <el-input v-model="form.groupId" placeholder="所属组id" | ||||
|                                                       /> | ||||
|                                     </el-form-item> --> | ||||
|             </el-form-item> | ||||
|             <el-form-item v-if="form.reverseStatus === 1" label="反向API" prop="reverseApiId"> | ||||
|               <el-select | ||||
|                 v-model="form.reverseApiId" | ||||
|                 style="width: 100%;" | ||||
|                 placeholder="请选择反向API" | ||||
|                 clearable | ||||
|                 filterable | ||||
|                 size="small" | ||||
|               > | ||||
|                 <el-option | ||||
|                   v-for="dict in reverseApiList" | ||||
|                   :key="'reverseApiId' + dict.id" | ||||
|                   :label="dict.apiName" | ||||
|                   :value="dict.id" | ||||
|                 /> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item v-if="form.reverseStatus === 1" label="下单比例(%)" prop="orderProportion"> | ||||
|               <el-input-number v-model="form.orderProportion" :min="1" :step="0.1" placeholder="下单比例" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="开启状态" prop="openStatus"> | ||||
|               <el-radio-group v-model="form.openStatus"> | ||||
|                 <el-radio :label="1">开启</el-radio> | ||||
| @ -298,7 +229,7 @@ | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { addLineApiUser, delLineApiUser, getLineApiUser, listLineApiUser, updateLineApiUser } from '@/api/admin/line-api-user' | ||||
| import { addLineApiUser, delLineApiUser, getLineApiUser, listLineApiUser, updateLineApiUser, getReverseOptions } from '@/api/admin/line-api-user' | ||||
|  | ||||
| import { listLineUser } from '@/api/admin/line-user' | ||||
| // import { listLineApiGroup } from '@/api/admin/line-api-group' | ||||
| @ -330,7 +261,7 @@ export default { | ||||
|       // 关系表类型 | ||||
|       userIdOptions: [], | ||||
|       groupIdOptions: [], | ||||
|  | ||||
|       reverseApiList: [], // 反向API列表 | ||||
|       // 查询参数 | ||||
|       queryParams: { | ||||
|         pageIndex: 1, | ||||
| @ -342,7 +273,10 @@ export default { | ||||
|       }, | ||||
|       // 表单校验 | ||||
|       rules: { | ||||
|         exchangeType: [{ required: true, message: '交易所不能为空', trigger: 'blur' }] | ||||
|         exchangeType: [{ required: true, message: '交易所不能为空', trigger: 'blur' }], | ||||
|         reverseStatus: [{ required: true, message: '反向下单不能为空', trigger: 'blur' }], | ||||
|         reverseApiId: [{ required: true, message: '反向下单API不能为空', trigger: 'blur' }], | ||||
|         orderProportion: [{ required: true, message: '下单比例不能为空', trigger: 'blur' }] | ||||
|       }, | ||||
|       exchangeTypes: [] | ||||
|     } | ||||
| @ -360,6 +294,17 @@ export default { | ||||
|     exchangeTypeFormat(row) { | ||||
|       return this.selectDictLabel(this.exchangeTypes || [], row.exchangeType) | ||||
|     }, | ||||
|     // 获取可用反单api | ||||
|     getReverseOptions(params) { | ||||
|       return getReverseOptions(params).then(response => { | ||||
|         if (response && response.code === 200) { | ||||
|           this.reverseApiList = response.data | ||||
|         } | ||||
|       }) | ||||
|         .catch(error => { | ||||
|           console.log(error) | ||||
|         }) | ||||
|     }, | ||||
|     /** 查询参数列表 */ | ||||
|     getList() { | ||||
|       this.loading = true | ||||
| @ -393,7 +338,10 @@ export default { | ||||
|         site: '3', | ||||
|         subordinate: '0', | ||||
|         groupId: undefined, | ||||
|         openStatus: 1 | ||||
|         openStatus: 1, | ||||
|         reverseStatus: 1, | ||||
|         reverseApiId: undefined, | ||||
|         orderProportion: undefined | ||||
|       } | ||||
|       this.resetForm('form') | ||||
|     }, | ||||
| @ -449,18 +397,24 @@ export default { | ||||
|     handleUpdate(row) { | ||||
|       this.reset() | ||||
|       const id = | ||||
|                 row.id || this.ids | ||||
|         row.id || this.ids | ||||
|       getLineApiUser(id).then(response => { | ||||
|         this.form = response.data | ||||
|         this.open = true | ||||
|         this.title = '修改api用户管理' | ||||
|         this.isEdit = true | ||||
|  | ||||
|         this.getReverseOptions({ apiId: this.form.reverseApiId, id: id }) | ||||
|       }) | ||||
|     }, | ||||
|     /** 提交按钮 */ | ||||
|     submitForm: function() { | ||||
|       this.$refs['form'].validate(valid => { | ||||
|         if (valid) { | ||||
|           if (!this.form.reverseApiId) { | ||||
|             this.form.reverseApiId = 0 | ||||
|           } | ||||
|  | ||||
|           if (this.form.id !== undefined) { | ||||
|             updateLineApiUser(this.form).then(response => { | ||||
|               if (response.code === 200) { | ||||
|  | ||||
| @ -2164,6 +2164,7 @@ export default { | ||||
|           if (this.title === '批量添加') { | ||||
|             const params = JSON.parse(JSON.stringify({ | ||||
|               ...this.form, | ||||
|               price: String(this.form.price), | ||||
|               symbol_group_id: String(this.form.symbol_group_id), | ||||
|               api_id: this.form.api_id.toString(), | ||||
|               profit_num_ratio: this.form.profit_num_ratio || 100, | ||||
| @ -2195,6 +2196,7 @@ export default { | ||||
|           } | ||||
|           addOrder({ | ||||
|             ...this.form, | ||||
|             price: String(this.form.price), | ||||
|             reduce_price: this.form.reduce_price || 0, | ||||
|             reduce_num: this.form.reduce_num || 0, | ||||
|             reduce_take_profit: this.form.reduce_take_profit || 0, | ||||
|  | ||||
							
								
								
									
										140
									
								
								src/views/admin/line-reverse-position/detail.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								src/views/admin/line-reverse-position/detail.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,140 @@ | ||||
| <template> | ||||
|  | ||||
|   <!-- 添加或修改对话框 --> | ||||
|   <el-dialog :title="title" :visible.sync="open" width="500px" @close="handleClose"> | ||||
|     <el-form ref="form" :model="form" :rules="rules" label-width="80px"> | ||||
|  | ||||
|       <el-form-item label="api_id" prop="apiId"> | ||||
|         <el-select v-model="form.apiId" placeholder="请选择"> | ||||
|           <el-option v-for="dict in apiIdOptions" :key="dict.value" :label="dict.label" :value="dict.value" /> | ||||
|         </el-select> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="反单api_id" prop="reverseApiId"> | ||||
|         <el-select v-model="form.reverseApiId" placeholder="请选择"> | ||||
|           <el-option | ||||
|             v-for="dict in reverseApiIdOptions" | ||||
|             :key="dict.value" | ||||
|             :label="dict.label" | ||||
|             :value="dict.value" | ||||
|           /> | ||||
|         </el-select> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="反单仓位" prop="reverseAmount"> | ||||
|         <el-input v-model="form.reverseAmount" placeholder="反单仓位" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="买卖方向 BUY SELL" prop="side"> | ||||
|         <el-select v-model="form.side" placeholder="请选择"> | ||||
|           <el-option v-for="dict in sideOptions" :key="dict.value" :label="dict.label" :value="dict.value" /> | ||||
|         </el-select> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="持仓方向 LONG SHORT" prop="positionSide"> | ||||
|         <el-select v-model="form.positionSide" placeholder="请选择"> | ||||
|           <el-option | ||||
|             v-for="dict in positionSideOptions" | ||||
|             :key="dict.value" | ||||
|             :label="dict.label" | ||||
|             :value="dict.value" | ||||
|           /> | ||||
|         </el-select> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="交易对" prop="symbol"> | ||||
|         <el-input v-model="form.symbol" placeholder="交易对" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="仓位状态 1-已开仓 2-已平仓" prop="status"> | ||||
|         <el-input v-model="form.status" placeholder="仓位状态 1-已开仓 2-已平仓" /> | ||||
|       </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> | ||||
|   </el-dialog> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|  | ||||
| export default { | ||||
|   name: 'Detail', | ||||
|   props: { | ||||
|     open: { | ||||
|       type: Boolean, | ||||
|       default: false | ||||
|     }, | ||||
|     title: { | ||||
|       type: String, | ||||
|       default: '添加' | ||||
|     }, | ||||
|     form: { | ||||
|       type: Object, | ||||
|       default: () => ({}) | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|  | ||||
|       // 表单校验 | ||||
|       rules: { | ||||
|         apiId: [{ required: true, message: 'api_id不能为空', trigger: 'blur' }], | ||||
|         reverseApiId: [{ required: true, message: '反单api_id不能为空', trigger: 'blur' }], | ||||
|         side: [{ required: true, message: '买卖方向 BUY SELL不能为空', trigger: 'blur' }], | ||||
|         positionSide: [{ required: true, message: '持仓方向 LONG SHORT不能为空', trigger: 'blur' }], | ||||
|         symbol: [{ required: true, message: '交易对不能为空', trigger: 'blur' }] | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|  | ||||
|     // 取消按钮 | ||||
|     cancel() { | ||||
|       this.open = false | ||||
|       this.reset() | ||||
|     }, | ||||
|     // 表单重置 | ||||
|     reset() { | ||||
|       this.form = { | ||||
|  | ||||
|         id: undefined, | ||||
|         apiId: undefined, | ||||
|         reverseApiId: undefined, | ||||
|         reverseAmount: undefined, | ||||
|         side: undefined, | ||||
|         positionSide: undefined, | ||||
|         symbol: undefined, | ||||
|         status: undefined | ||||
|       } | ||||
|       this.resetForm('form') | ||||
|     }, | ||||
|     /** 提交按钮 */ | ||||
|     submitForm: function() { | ||||
|       this.$refs['form'].validate(valid => { | ||||
|         if (valid) { | ||||
|           // if (this.form.id !== undefined) { | ||||
|           //     updateLineReversePosition(this.form).then(response => { | ||||
|           //         if (response.code === 200) { | ||||
|           //             this.msgSuccess(response.msg) | ||||
|           //             this.handleClose() | ||||
|           //         } else { | ||||
|           //             this.msgError(response.msg) | ||||
|           //         } | ||||
|           //     }) | ||||
|           // } else { | ||||
|           //     addLineReversePosition(this.form).then(response => { | ||||
|           //         if (response.code === 200) { | ||||
|           //             this.msgSuccess(response.msg) | ||||
|           //             this.handleClose() | ||||
|           //         } else { | ||||
|           //             this.msgError(response.msg) | ||||
|           //         } | ||||
|           //     }) | ||||
|           // } | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     handleClose() { | ||||
|       this.$emit('update:open', false) | ||||
|       this.$emit('close') | ||||
|       this.reset() | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
							
								
								
									
										306
									
								
								src/views/admin/line-reverse-position/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										306
									
								
								src/views/admin/line-reverse-position/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,306 @@ | ||||
| <template> | ||||
|   <BasicLayout> | ||||
|     <template #wrapper> | ||||
|       <el-card class="box-card"> | ||||
|         <el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px"> | ||||
|           <el-form-item label="api_id" prop="apiId"><el-input | ||||
|             v-model="queryParams.apiId" | ||||
|             placeholder="请输入api_id" | ||||
|             clearable | ||||
|             size="small" | ||||
|             @keyup.enter.native="handleQuery" | ||||
|           /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="反单api_id" prop="reverseApiId"><el-input | ||||
|             v-model="queryParams.reverseApiId" | ||||
|             placeholder="请输入反单api_id" | ||||
|             clearable | ||||
|             size="small" | ||||
|             @keyup.enter.native="handleQuery" | ||||
|           /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="买卖方向 BUY SELL" prop="side"><el-input | ||||
|             v-model="queryParams.side" | ||||
|             placeholder="请输入买卖方向 BUY SELL" | ||||
|             clearable | ||||
|             size="small" | ||||
|             @keyup.enter.native="handleQuery" | ||||
|           /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="持仓方向 LONG SHORT" prop="positionSide"><el-input | ||||
|             v-model="queryParams.positionSide" | ||||
|             placeholder="请输入持仓方向 LONG SHORT" | ||||
|             clearable | ||||
|             size="small" | ||||
|             @keyup.enter.native="handleQuery" | ||||
|           /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="交易对" prop="symbol"><el-input | ||||
|             v-model="queryParams.symbol" | ||||
|             placeholder="请输入交易对" | ||||
|             clearable | ||||
|             size="small" | ||||
|             @keyup.enter.native="handleQuery" | ||||
|           /> | ||||
|           </el-form-item> | ||||
|  | ||||
|           <el-form-item> | ||||
|             <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | ||||
|             <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|  | ||||
|         <el-row :gutter="10" class="mb8"> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               v-permisaction="['admin:lineReversePosition:add']" | ||||
|               type="primary" | ||||
|               icon="el-icon-plus" | ||||
|               size="mini" | ||||
|               @click="handleAdd" | ||||
|             >新增 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               v-permisaction="['admin:lineReversePosition:edit']" | ||||
|               type="success" | ||||
|               icon="el-icon-edit" | ||||
|               size="mini" | ||||
|               :disabled="single" | ||||
|               @click="handleUpdate" | ||||
|             >修改 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               v-permisaction="['admin:lineReversePosition:remove']" | ||||
|               type="danger" | ||||
|               icon="el-icon-delete" | ||||
|               size="mini" | ||||
|               :disabled="multiple" | ||||
|               @click="handleDelete" | ||||
|             >删除 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|         </el-row> | ||||
|  | ||||
|         <el-table v-loading="loading" :data="lineReversePositionList" @selection-change="handleSelectionChange"> | ||||
|           <el-table-column type="selection" width="55" align="center" /><el-table-column | ||||
|             label="api_id" | ||||
|             align="center" | ||||
|             prop="apiId" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /><el-table-column | ||||
|             label="反单api_id" | ||||
|             align="center" | ||||
|             prop="reverseApiId" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /><el-table-column | ||||
|             label="反单仓位" | ||||
|             align="center" | ||||
|             prop="reverseAmount" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /><el-table-column | ||||
|             label="买卖方向 BUY SELL" | ||||
|             align="center" | ||||
|             prop="side" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /><el-table-column | ||||
|             label="持仓方向 LONG SHORT" | ||||
|             align="center" | ||||
|             prop="positionSide" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /><el-table-column | ||||
|             label="交易对" | ||||
|             align="center" | ||||
|             prop="symbol" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /><el-table-column | ||||
|             label="仓位状态 1-已开仓 2-已平仓" | ||||
|             align="center" | ||||
|             prop="status" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /> | ||||
|           <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||
|             <template slot-scope="scope"> | ||||
|               <el-popconfirm | ||||
|                 class="delete-popconfirm" | ||||
|                 title="确认要修改吗?" | ||||
|                 confirm-button-text="修改" | ||||
|                 @confirm="handleUpdate(scope.row)" | ||||
|               > | ||||
|                 <el-button | ||||
|                   slot="reference" | ||||
|                   v-permisaction="['admin:lineReversePosition:edit']" | ||||
|                   size="mini" | ||||
|                   type="text" | ||||
|                   icon="el-icon-edit" | ||||
|                 >修改 | ||||
|                 </el-button> | ||||
|               </el-popconfirm> | ||||
|               <el-popconfirm | ||||
|                 class="delete-popconfirm" | ||||
|                 title="确认要删除吗?" | ||||
|                 confirm-button-text="删除" | ||||
|                 @confirm="handleDelete(scope.row)" | ||||
|               > | ||||
|                 <el-button | ||||
|                   slot="reference" | ||||
|                   v-permisaction="['admin:lineReversePosition:remove']" | ||||
|                   size="mini" | ||||
|                   type="text" | ||||
|                   icon="el-icon-delete" | ||||
|                 >删除 | ||||
|                 </el-button> | ||||
|               </el-popconfirm> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|         </el-table> | ||||
|  | ||||
|         <pagination | ||||
|           v-show="total > 0" | ||||
|           :total="total" | ||||
|           :page.sync="queryParams.pageIndex" | ||||
|           :limit.sync="queryParams.pageSize" | ||||
|           @pagination="getList" | ||||
|         /> | ||||
|  | ||||
|         <detail :open.sync="open" :title="title" :form="form" :is-edit="isEdit" @close="handleClose" /> | ||||
|       </el-card> | ||||
|     </template> | ||||
|   </BasicLayout> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { delLineReversePosition, listLineReversePosition, getLineReversePosition } from '@/api/admin/line-reverse-position' | ||||
| import Detail from './detail.vue' | ||||
|  | ||||
| export default { | ||||
|   name: 'LineReversePosition', | ||||
|   components: { | ||||
|     Detail | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       // 遮罩层 | ||||
|       loading: true, | ||||
|       // 选中数组 | ||||
|       ids: [], | ||||
|       // 非单个禁用 | ||||
|       single: true, | ||||
|       // 非多个禁用 | ||||
|       multiple: true, | ||||
|       // 总条数 | ||||
|       total: 0, | ||||
|       // 弹出层标题 | ||||
|       title: '', | ||||
|       // 是否显示弹出层 | ||||
|       open: false, | ||||
|       isEdit: false, | ||||
|       // 类型数据字典 | ||||
|       typeOptions: [], | ||||
|       lineReversePositionList: [], | ||||
|       // 关系表类型 | ||||
|  | ||||
|       // 查询参数 | ||||
|       queryParams: { | ||||
|         pageIndex: 1, | ||||
|         pageSize: 10, | ||||
|         apiId: undefined, | ||||
|         reverseApiId: undefined, | ||||
|         side: undefined, | ||||
|         positionSide: undefined, | ||||
|         symbol: undefined | ||||
|  | ||||
|       }, | ||||
|       // 表单参数 | ||||
|       form: { | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|     this.getList() | ||||
|   }, | ||||
|   methods: { | ||||
|     /** 查询参数列表 */ | ||||
|     getList() { | ||||
|       this.loading = true | ||||
|       listLineReversePosition(this.addDateRange(this.queryParams, this.dateRange)).then(response => { | ||||
|         this.lineReversePositionList = response.data.list | ||||
|         this.total = response.data.count | ||||
|         this.loading = false | ||||
|       } | ||||
|       ) | ||||
|     }, | ||||
|     getImgList: function() { | ||||
|       this.form[this.fileIndex] = this.$refs['fileChoose'].resultList[0].fullUrl | ||||
|     }, | ||||
|     fileClose: function() { | ||||
|       this.fileOpen = false | ||||
|     }, | ||||
|     // 关系 | ||||
|     // 文件 | ||||
|     /** 搜索按钮操作 */ | ||||
|     handleQuery() { | ||||
|       this.queryParams.pageIndex = 1 | ||||
|       this.getList() | ||||
|     }, | ||||
|     /** 重置按钮操作 */ | ||||
|     resetQuery() { | ||||
|       this.dateRange = [] | ||||
|       this.resetForm('queryForm') | ||||
|       this.handleQuery() | ||||
|     }, | ||||
|     /** 新增按钮操作 */ | ||||
|     handleAdd() { | ||||
|       this.reset() | ||||
|       this.open = true | ||||
|       this.title = '添加反单管理-仓位' | ||||
|       this.isEdit = false | ||||
|     }, | ||||
|     // 多选框选中数据 | ||||
|     handleSelectionChange(selection) { | ||||
|       this.ids = selection.map(item => item.id) | ||||
|       this.single = selection.length !== 1 | ||||
|       this.multiple = !selection.length | ||||
|     }, | ||||
|     /** 修改按钮操作 */ | ||||
|     handleUpdate(row) { | ||||
|       this.reset() | ||||
|       const id = | ||||
|                 row.id || this.ids | ||||
|       getLineReversePosition(id).then(response => { | ||||
|         this.form = response.data | ||||
|         this.open = true | ||||
|         this.title = '修改反单管理-仓位' | ||||
|         this.isEdit = true | ||||
|       }) | ||||
|     }, | ||||
|     handleClose() { | ||||
|       this.getList() | ||||
|     }, | ||||
|     /** 删除按钮操作 */ | ||||
|     handleDelete(row) { | ||||
|       var Ids = (row.id && [row.id]) || this.ids | ||||
|  | ||||
|       this.$confirm('是否确认删除编号为"' + Ids + '"的数据项?', '警告', { | ||||
|         confirmButtonText: '确定', | ||||
|         cancelButtonText: '取消', | ||||
|         type: 'warning' | ||||
|       }).then(function() { | ||||
|         return delLineReversePosition({ 'ids': Ids }) | ||||
|       }).then((response) => { | ||||
|         if (response.code === 200) { | ||||
|           this.msgSuccess(response.msg) | ||||
|           this.open = false | ||||
|           this.getList() | ||||
|         } else { | ||||
|           this.msgError(response.msg) | ||||
|         } | ||||
|       }).catch(function() { | ||||
|       }) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
							
								
								
									
										331
									
								
								src/views/admin/line-reverse-setting/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										331
									
								
								src/views/admin/line-reverse-setting/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,331 @@ | ||||
| <template> | ||||
|   <BasicLayout> | ||||
|     <template #wrapper> | ||||
|       <el-card class="box-card"> | ||||
|         <el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px"> | ||||
|  | ||||
|           <el-form-item> | ||||
|             <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | ||||
|             <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|  | ||||
|         <el-row :gutter="10" class="mb8"> | ||||
|           <!-- <el-col :span="1.5"> | ||||
|                         <el-button v-permisaction="['admin:lineReverseSetting:add']" type="primary" icon="el-icon-plus" | ||||
|                             size="mini" @click="handleAdd">新增 | ||||
|                         </el-button> | ||||
|                     </el-col> --> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               v-permisaction="['admin:lineReverseSetting:edit']" | ||||
|               type="success" | ||||
|               icon="el-icon-edit" | ||||
|               size="mini" | ||||
|               :disabled="single" | ||||
|               @click="handleUpdate" | ||||
|             >修改 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <!-- <el-col :span="1.5"> | ||||
|                         <el-button v-permisaction="['admin:lineReverseSetting:remove']" type="danger" | ||||
|                             icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete">删除 | ||||
|                         </el-button> | ||||
|                     </el-col> --> | ||||
|         </el-row> | ||||
|  | ||||
|         <el-table v-loading="loading" :data="lineReverseSettingList" @selection-change="handleSelectionChange"> | ||||
|           <el-table-column type="selection" width="55" align="center" /><el-table-column | ||||
|             label="反单下单类型" | ||||
|             align="center" | ||||
|             prop="reverseOrderType" | ||||
|             :show-overflow-tooltip="true" | ||||
|           > | ||||
|             <template slot-scope="scope"> | ||||
|               {{ reverseOrderTypeFormat(scope.row.reverseOrderType) }} | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column | ||||
|             label="溢价百分比" | ||||
|             align="center" | ||||
|             prop="reversePremiumRatio" | ||||
|             :show-overflow-tooltip="true" | ||||
|           /> | ||||
|           <el-table-column label="止盈百分比" align="center" prop="takeProfitRatio" /> | ||||
|           <el-table-column label="止损百分比" align="center" prop="stopLossRatio" /> | ||||
|           <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||
|             <template slot-scope="scope"> | ||||
|               <el-popconfirm | ||||
|                 class="delete-popconfirm" | ||||
|                 title="确认要修改吗?" | ||||
|                 confirm-button-text="修改" | ||||
|                 @confirm="handleUpdate(scope.row)" | ||||
|               > | ||||
|                 <el-button | ||||
|                   slot="reference" | ||||
|                   v-permisaction="['admin:lineReverseSetting:edit']" | ||||
|                   size="mini" | ||||
|                   type="text" | ||||
|                   icon="el-icon-edit" | ||||
|                 >修改 | ||||
|                 </el-button> | ||||
|               </el-popconfirm> | ||||
|               <!-- <el-popconfirm class="delete-popconfirm" title="确认要删除吗?" confirm-button-text="删除" | ||||
|                                 @confirm="handleDelete(scope.row)"> | ||||
|                                 <el-button slot="reference" v-permisaction="['admin:lineReverseSetting:remove']" | ||||
|                                     size="mini" type="text" icon="el-icon-delete">删除 | ||||
|                                 </el-button> | ||||
|                             </el-popconfirm> --> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|         </el-table> | ||||
|  | ||||
|         <pagination | ||||
|           v-show="total > 0" | ||||
|           :total="total" | ||||
|           :page.sync="queryParams.pageIndex" | ||||
|           :limit.sync="queryParams.pageSize" | ||||
|           @pagination="getList" | ||||
|         /> | ||||
|  | ||||
|         <!-- 添加或修改对话框 --> | ||||
|         <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="reverseOrderType"> | ||||
|               <el-radio-group v-model="form.reverseOrderType"> | ||||
|                 <el-radio | ||||
|                   v-for="dict in reverseOrderTypeOptions" | ||||
|                   :key="dict.value" | ||||
|                   :label="dict.value" | ||||
|                 >{{ dict.label | ||||
|                 }}</el-radio> | ||||
|               </el-radio-group> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="溢价百分比" prop="reversePremiumRatio"> | ||||
|               <el-input v-model="form.reversePremiumRatio" placeholder="溢价百分比" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="止盈百分比" prop="takeProfitRatio"> | ||||
|               <el-input v-model="form.takeProfitRatio" placeholder="止盈百分比" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="止损百分比" prop="stopLossRatio"> | ||||
|               <el-input v-model="form.stopLossRatio" 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> | ||||
|         </el-dialog> | ||||
|       </el-card> | ||||
|     </template> | ||||
|   </BasicLayout> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { addLineReverseSetting, getLineReverseSetting, listLineReverseSetting, updateLineReverseSetting } from '@/api/admin/line-reverse-setting' | ||||
|  | ||||
| export default { | ||||
|   name: 'LineReverseSetting', | ||||
|   components: { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       // 遮罩层 | ||||
|       loading: true, | ||||
|       // 选中数组 | ||||
|       ids: [], | ||||
|       // 非单个禁用 | ||||
|       single: true, | ||||
|       // 非多个禁用 | ||||
|       multiple: true, | ||||
|       // 总条数 | ||||
|       total: 0, | ||||
|       // 弹出层标题 | ||||
|       title: '', | ||||
|       // 是否显示弹出层 | ||||
|       open: false, | ||||
|       isEdit: false, | ||||
|       // 类型数据字典 | ||||
|       typeOptions: [], | ||||
|       reverseOrderTypeOptions: [{ | ||||
|         value: 'LIMIT', | ||||
|         label: '限价' | ||||
|       }, { | ||||
|         value: 'MARKET', | ||||
|         label: '市价' | ||||
|       }], | ||||
|       lineReverseSettingList: [], | ||||
|  | ||||
|       // 关系表类型 | ||||
|  | ||||
|       // 查询参数 | ||||
|       queryParams: { | ||||
|         pageIndex: 1, | ||||
|         pageSize: 10 | ||||
|  | ||||
|       }, | ||||
|       // 表单参数 | ||||
|       form: { | ||||
|       }, | ||||
|       // 表单校验 | ||||
|       rules: { | ||||
|         reverseOrderType: [ | ||||
|           { required: true, message: '请选择反单下单类型', trigger: 'blur' } | ||||
|         ], | ||||
|         reversePremiumRatio: [ | ||||
|           { required: true, message: '溢价百分比不能为空', trigger: 'blur' }, | ||||
|           { validator: this.validatePositiveNumber, trigger: 'blur' } | ||||
|         ], | ||||
|         takeProfitRatio: [ | ||||
|           { required: true, message: '止盈百分比不能为空', trigger: 'blur' }, | ||||
|           { validator: this.validatePositiveNumber, trigger: 'blur' } | ||||
|         ], | ||||
|         stopLossRatio: [ | ||||
|           { required: true, message: '止损百分比不能为空', trigger: 'blur' }, | ||||
|           { validator: this.validatePositiveNumber, trigger: 'blur' } | ||||
|         ] | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|     this.getList() | ||||
|   }, | ||||
|   methods: { | ||||
|     validatePositiveNumber(rule, value, callback) { | ||||
|       if (value === '' || value === null || value === undefined) { | ||||
|         return callback(new Error('不能为空')) | ||||
|       } | ||||
|  | ||||
|       const str = value.toString().trim() | ||||
|  | ||||
|       // 只允许数字(整数或小数),不含非法字符 | ||||
|       // 可为 "0", "0.1", "1", "10.23", 但不能是 "0.2x", "1abc", "-1" | ||||
|       const numberPattern = /^(0|[1-9]\d*)(\.\d+)?$/ | ||||
|       if (!numberPattern.test(str)) { | ||||
|         return callback(new Error('请输入合法的非负数字')) | ||||
|       } | ||||
|       callback() | ||||
|     }, | ||||
|     reverseOrderTypeFormat(orderType) { | ||||
|       const data = this.reverseOrderTypeOptions.find(item => item.value === orderType) | ||||
|       return data ? data.label : '' | ||||
|     }, | ||||
|     /** 查询参数列表 */ | ||||
|     getList() { | ||||
|       this.loading = true | ||||
|       listLineReverseSetting(this.addDateRange(this.queryParams, this.dateRange)).then(response => { | ||||
|         this.lineReverseSettingList = response.data.list | ||||
|         this.total = response.data.count | ||||
|         this.loading = false | ||||
|       } | ||||
|       ) | ||||
|     }, | ||||
|     // 取消按钮 | ||||
|     cancel() { | ||||
|       this.open = false | ||||
|       this.reset() | ||||
|     }, | ||||
|     // 表单重置 | ||||
|     reset() { | ||||
|       this.form = { | ||||
|  | ||||
|         id: undefined, | ||||
|         reverseOrderType: undefined, | ||||
|         reversePremiumRatio: undefined | ||||
|       } | ||||
|       this.resetForm('form') | ||||
|     }, | ||||
|     getImgList: function() { | ||||
|       this.form[this.fileIndex] = this.$refs['fileChoose'].resultList[0].fullUrl | ||||
|     }, | ||||
|     // 关系 | ||||
|     // 文件 | ||||
|     /** 搜索按钮操作 */ | ||||
|     handleQuery() { | ||||
|       this.queryParams.pageIndex = 1 | ||||
|       this.getList() | ||||
|     }, | ||||
|     /** 重置按钮操作 */ | ||||
|     resetQuery() { | ||||
|       this.dateRange = [] | ||||
|       this.resetForm('queryForm') | ||||
|       this.handleQuery() | ||||
|     }, | ||||
|     /** 新增按钮操作 */ | ||||
|     handleAdd() { | ||||
|       this.reset() | ||||
|       this.open = true | ||||
|       this.title = '添加反单下单配置' | ||||
|       this.isEdit = false | ||||
|     }, | ||||
|     // 多选框选中数据 | ||||
|     handleSelectionChange(selection) { | ||||
|       this.ids = selection.map(item => item.id) | ||||
|       this.single = selection.length !== 1 | ||||
|       this.multiple = !selection.length | ||||
|     }, | ||||
|     /** 修改按钮操作 */ | ||||
|     handleUpdate(row) { | ||||
|       this.reset() | ||||
|       const id = | ||||
|                 row.id || this.ids | ||||
|       getLineReverseSetting(id).then(response => { | ||||
|         this.form = response.data | ||||
|         this.open = true | ||||
|         this.title = '修改反单下单配置' | ||||
|         this.isEdit = true | ||||
|       }) | ||||
|     }, | ||||
|     /** 提交按钮 */ | ||||
|     submitForm: function() { | ||||
|       this.$refs['form'].validate(valid => { | ||||
|         if (valid) { | ||||
|           if (this.form.id !== undefined) { | ||||
|             updateLineReverseSetting(this.form).then(response => { | ||||
|               if (response.code === 200) { | ||||
|                 this.msgSuccess(response.msg) | ||||
|                 this.open = false | ||||
|                 this.getList() | ||||
|               } else { | ||||
|                 this.msgError(response.msg) | ||||
|               } | ||||
|             }) | ||||
|           } else { | ||||
|             addLineReverseSetting(this.form).then(response => { | ||||
|               if (response.code === 200) { | ||||
|                 this.msgSuccess(response.msg) | ||||
|                 this.open = false | ||||
|                 this.getList() | ||||
|               } else { | ||||
|                 this.msgError(response.msg) | ||||
|               } | ||||
|             }) | ||||
|           } | ||||
|         } | ||||
|       }) | ||||
|     } | ||||
|     /** 删除按钮操作 */ | ||||
|     // handleDelete(row) { | ||||
|     //     var Ids = (row.id && [row.id]) || this.ids | ||||
|  | ||||
|     //     this.$confirm('是否确认删除编号为"' + Ids + '"的数据项?', '警告', { | ||||
|     //         confirmButtonText: '确定', | ||||
|     //         cancelButtonText: '取消', | ||||
|     //         type: 'warning' | ||||
|     //     }).then(function () { | ||||
|     //         return delLineReverseSetting({ 'ids': Ids }) | ||||
|     //     }).then((response) => { | ||||
|     //         if (response.code === 200) { | ||||
|     //             this.msgSuccess(response.msg) | ||||
|     //             this.open = false | ||||
|     //             this.getList() | ||||
|     //         } else { | ||||
|     //             this.msgError(response.msg) | ||||
|     //         } | ||||
|     //     }).catch(function () { | ||||
|     //     }) | ||||
|     // } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
		Reference in New Issue
	
	Block a user