新大宝股票管理后台
1
PC-20250623MANY\Administrator
2025-08-09 a0fa29ab341150d36e427375f9409f5d40a83223
1
3 files modified
1 files added
557 ■■■■ changed files
src/api/allsetting.js 323 ●●●● patch | view | raw | blame | history
src/config/router.config.js 6 ●●●●● patch | view | raw | blame | history
src/views/allsetting/exchangerate.vue 224 ●●●●● patch | view | raw | blame | history
src/views/product/shares.vue 4 ●●●● patch | view | raw | blame | history
src/api/allsetting.js
@@ -1,27 +1,29 @@
import request from '@/utils/request'
import qs from 'qs'
const userApi = {
    artlist: '/admin/art/list.do', // 公告列表
    adminupload: '/admin/upload.do', // 上传图片
    artadd: '/admin/art/add.do', // 添加公告
    artupdate: '/admin/art/update.do', // 修改公告
    artdelArt: '/admin/art/delArt.do', // 删除公告
    bannerslist: '/admin/banners/list.do', // banner列表
    bannersupdate: '/admin/banners/update.do', // 修改轮播图
    bannersadd: '/admin/banners/add.do', // 添加轮播图
    bannersdelete: '/admin/banners/delete.do', // 删除轮播图
    paylist: '/admin/pay/list.do', // 支付渠道列表
    paydel: '/admin/pay/del.do', // 删除支付渠道
    payadd: '/admin/pay/add.do', // 添加支付渠道
    payupdate: '/admin/pay/update.do', // 修改支付渠道
    sitegetInfo: '/api/site/getInfo.do', // 系统设置
    infoupdate: '/admin/info/update.do', // 修改系统设置
    queryAll: 'admin/stockTimeSetting/queryAll.do', // 查看股票时间
    updatetime: '/admin/stockTimeSetting/update.do', // 修改股票时间
    SettingqueryAll: 'admin/stockSetting/queryAll.do', // 盘前交易列表
    stockadd: '/admin/stockSetting/add.do', // 新增盘前交易
    stockupdata: '/admin/stockSetting/update.do', // 修改盘前交易
    stockdelete: '/admin/stockSetting/delete.do'// 删除盘前
  artlist: '/admin/art/list.do', // 公告列表
  adminupload: '/admin/upload.do', // 上传图片
  artadd: '/admin/art/add.do', // 添加公告
  artupdate: '/admin/art/update.do', // 修改公告
  artdelArt: '/admin/art/delArt.do', // 删除公告
  bannerslist: '/admin/banners/list.do', // banner列表
  bannersupdate: '/admin/banners/update.do', // 修改轮播图
  bannersadd: '/admin/banners/add.do', // 添加轮播图
  bannersdelete: '/admin/banners/delete.do', // 删除轮播图
  paylist: '/admin/pay/list.do', // 支付渠道列表
  paydel: '/admin/pay/del.do', // 删除支付渠道
  payadd: '/admin/pay/add.do', // 添加支付渠道
  payupdate: '/admin/pay/update.do', // 修改支付渠道
  sitegetInfo: '/api/site/getInfo.do', // 系统设置
  infoupdate: '/admin/info/update.do', // 修改系统设置
  queryAll: 'admin/stockTimeSetting/queryAll.do', // 查看股票时间
  updatetime: '/admin/stockTimeSetting/update.do', // 修改股票时间
  SettingqueryAll: 'admin/stockSetting/queryAll.do', // 盘前交易列表
  stockadd: '/admin/stockSetting/add.do', // 新增盘前交易
  stockupdata: '/admin/stockSetting/update.do', // 修改盘前交易
  stockdelete: '/admin/stockSetting/delete.do', // 删除盘前
  rateInfo: '/admin/rate/getInfo.do', // 汇率列表
  editRate: '/admin/rate/editRate.do', // 汇率新增/编辑
}
/**
@@ -35,164 +37,179 @@
 * @param parameter
 * @returns {*}
 */
 export function stockdelete (parameter) {
     return request({
         url: userApi.stockdelete,
         method: 'post',
         data: qs.stringify(parameter)
     })
 }
 export function stockupdata (parameter) {
     return request({
         url: userApi.stockupdata,
         method: 'post',
         data: qs.stringify(parameter)
     })
 }
 export function stockadd (parameter) {
     return request({
         url: userApi.stockadd,
         method: 'post',
         data: qs.stringify(parameter)
     })
 }
 export function SettingqueryAll (parameter) {
     return request({
         url: userApi.SettingqueryAll,
         method: 'post',
         data: qs.stringify(parameter)
     })
 }
 export function updatetime (parameter) {
     return request({
         url: userApi.updatetime,
         method: 'post',
         data: qs.stringify(parameter)
     })
 }
 export function queryAll (parameter) {
     return request({
         url: userApi.queryAll,
         method: 'post',
         data: qs.stringify(parameter)
     })
 }
export function artlist (parameter) {
    return request({
        url: userApi.artlist,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function stockdelete(parameter) {
  return request({
    url: userApi.stockdelete,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function stockupdata(parameter) {
  return request({
    url: userApi.stockupdata,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function stockadd(parameter) {
  return request({
    url: userApi.stockadd,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function SettingqueryAll(parameter) {
  return request({
    url: userApi.SettingqueryAll,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function updatetime(parameter) {
  return request({
    url: userApi.updatetime,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function queryAll(parameter) {
  return request({
    url: userApi.queryAll,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function artlist(parameter) {
  return request({
    url: userApi.artlist,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function adminupload (parameter) {
    return request({
        url: userApi.adminupload,
        method: 'post',
        data: parameter
    })
export function adminupload(parameter) {
  return request({
    url: userApi.adminupload,
    method: 'post',
    data: parameter,
  })
}
export function artadd (parameter) {
    return request({
        url: userApi.artadd,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function artadd(parameter) {
  return request({
    url: userApi.artadd,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function artupdate (parameter) {
    return request({
        url: userApi.artupdate,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function artupdate(parameter) {
  return request({
    url: userApi.artupdate,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function artdelArt (parameter) {
    return request({
        url: userApi.artdelArt,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function artdelArt(parameter) {
  return request({
    url: userApi.artdelArt,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function bannerslist (parameter) {
    return request({
        url: userApi.bannerslist,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function bannerslist(parameter) {
  return request({
    url: userApi.bannerslist,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function bannersupdate (parameter) {
    return request({
        url: userApi.bannersupdate,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function bannersupdate(parameter) {
  return request({
    url: userApi.bannersupdate,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function bannersadd (parameter) {
    return request({
        url: userApi.bannersadd,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function bannersadd(parameter) {
  return request({
    url: userApi.bannersadd,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function bannersdelete (parameter) {
    return request({
        url: userApi.bannersdelete,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function bannersdelete(parameter) {
  return request({
    url: userApi.bannersdelete,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function paylist (parameter) {
    return request({
        url: userApi.paylist,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function paylist(parameter) {
  return request({
    url: userApi.paylist,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function paydel (parameter) {
    return request({
        url: userApi.paydel,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function paydel(parameter) {
  return request({
    url: userApi.paydel,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function payadd (parameter) {
    return request({
        url: userApi.payadd,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function payadd(parameter) {
  return request({
    url: userApi.payadd,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function payupdate (parameter) {
    return request({
        url: userApi.payupdate,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function payupdate(parameter) {
  return request({
    url: userApi.payupdate,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function sitegetInfo (parameter) {
    return request({
        url: userApi.sitegetInfo,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function sitegetInfo(parameter) {
  return request({
    url: userApi.sitegetInfo,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function infoupdate (parameter) {
    return request({
        url: userApi.infoupdate,
        method: 'post',
        data: qs.stringify(parameter)
    })
export function infoupdate(parameter) {
  return request({
    url: userApi.infoupdate,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function getRateInfo(parameter) {
  return request({
    url: userApi.rateInfo,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
export function setRateInfo(parameter) {
  return request({
    url: userApi.editRate,
    method: 'post',
    data: qs.stringify(parameter),
  })
}
src/config/router.config.js
@@ -398,6 +398,12 @@
            component: () => import('@/views/allsetting/paysetting'),
            meta: { title: '支付渠道设置', keepAlive: true, permission: ['paysetting'] },
          },
          {
            path: '/allsetting/exchangerate',
            name: 'exchangerate',
            component: () => import('@/views/allsetting/exchangerate'),
            meta: { title: '汇率', keepAlive: true, permission: ['paysetting'] },
          },
        ],
      },
src/views/allsetting/exchangerate.vue
New file
@@ -0,0 +1,224 @@
<template>
  <page-header-wrapper>
    <a-card :bordered="false">
      <div class="table-page-search-wrapper">
        <a-form layout="inline">
          <a-row :gutter="48">
            <a-col :md="12" :lg="6" :sm="24">
              <a-form-item>
                <span class="table-page-search-submitButtons">
                  <a-button
                    type="primary"
                    icon="plus"
                    style="margin-left: 8px"
                    @click="
                      addUserdialog = true
                      currentDetails = null
                    "
                  >
                    新增汇率
                  </a-button>
                </span>
              </a-form-item>
            </a-col>
          </a-row>
        </a-form>
      </div>
    </a-card>
    <a-card :bordered="false">
      <a-table
        bordered
        :loading="loading"
        :pagination="pagination"
        :columns="columns"
        :data-source="datalist"
        rowKey="id"
      >
        <template slot="action" slot-scope="text, record">
          <a slot="action" href="javascript:;" @click="setCurrency(record)">修改基础货币</a>
        </template>
      </a-table>
    </a-card>
    <a-modal
      :title="currentDetails ? '编辑汇率' : '新增汇率'"
      :width="800"
      :visible="addUserdialog"
      :confirmLoading="addUserDialogloading"
      @ok="OkaddUserdialog"
      @cancel="CanceladdUserdialog"
    >
      <a-form :form="addUserform" ref="addUserform">
        <a-form-item label="原始货币" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <a-select
            placeholder="请选择"
            v-decorator="['currency', { rules: [{ required: true, message: '请选择' }] }]"
            :disabled="currentDetails"
          >
            <a-select-option :value="item.value" v-for="item in hbList" :key="item.value">
              {{ item.label }}
            </a-select-option>
          </a-select>
        </a-form-item>
        <a-form-item label="转换货币" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <a-select
            placeholder="请选择"
            v-decorator="['conversionCurrency', { rules: [{ required: true, message: '请选择' }] }]"
            :disabled="currentDetails"
          >
            <a-select-option :value="item.value" v-for="item in hbList" :key="item.value">
              {{ item.label }}
            </a-select-option>
          </a-select>
        </a-form-item>
        <a-form-item label="汇率" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <a-input placeholder="请输入" v-decorator="['rata', { rules: [{ required: true, message: '请输入' }] }]" />
        </a-form-item>
      </a-form>
    </a-modal>
  </page-header-wrapper>
</template>
<script>
import { getRateInfo, setRateInfo } from '@/api/allsetting'
import pick from 'lodash.pick'
export default {
  name: 'Basecurrency',
  data() {
    return {
      columns: [
        {
          title: '原始货币',
          dataIndex: 'currency',
          align: 'center',
        },
        {
          title: '转换货币',
          dataIndex: 'conversionCurrency',
          align: 'center',
        },
        {
          title: '汇率',
          dataIndex: 'rata',
          align: 'center',
        },
        {
          title: '操作',
          key: 'action',
          align: 'center',
          fixed: 'right',
          width: 200,
          scopedSlots: { customRender: 'action' },
        },
      ],
      // 表头
      pagination: {
        total: 0,
        pageSize: 10, // 每页中显示10条数据
        showSizeChanger: true,
        pageSizeOptions: ['10', '20', '50', '100'], // 每页中显示的数据
        onShowSizeChange: (current, pageSize) => this.onSizeChange(current, pageSize), // 改变每页数量时更新显示
        onChange: (page, pageSize) => this.onPageChange(page, pageSize), // 点击页码事件
        showTotal: (total) => `共有 ${total} 条数据`, // 分页中显示总的数据
      },
      loading: false,
      queryParam: {
        pageNum: 1,
        pageSize: 10,
        coinCode: '',
        coinName: '',
      },
      datalist: [],
      addUserdialog: false,
      addUserDialogloading: false,
      addUserform: this.$form.createForm(this),
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 },
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 18 },
      },
      currentDetails: null,
      fields: ['conversionCurrency', 'currency', 'rata'],
      hbList: [
        {
          value: 'USD',
          label: 'US',
        },
        {
          value: 'MXN',
          label: 'MEX',
        },
      ],
    }
  },
  created() {
    this.getlist()
  },
  methods: {
    setCurrency(row) {
      this.currentDetails = row
      this.addUserdialog = true
      this.fields.forEach((v) => this.addUserform.getFieldDecorator(v))
      this.addUserform.setFieldsValue(pick(row, this.fields))
    },
    getlist() {
      this.loading = true
      getRateInfo(this.queryParam).then((res) => {
        this.datalist = res.data.list
        this.pagination.total = res.data.total
        this.loading = false
      })
    },
    onPageChange(page, pageSize) {
      this.queryParam.pageNum = page
      this.getlist()
    },
    onSizeChange(current, pageSize) {
      this.queryParam.pageNum = current
      this.queryParam.pageSize = pageSize
      this.getlist()
    },
    OkaddUserdialog() {
      const form = this.$refs.addUserform.form
      form.validateFields((errors, values) => {
        if (!errors) {
          this.addUserDialogloading = true
          if (!!this.currentDetails) values.id = this.currentDetails.id
          // console.log(values)
          setRateInfo(values).then((res) => {
            if (res.status == 0) {
              this.addUserdialog = false
              this.$message.success({ content: '提交成功', duration: 2 })
              form.resetFields()
              this.getlist()
            } else {
              this.$message.error(res.msg)
            }
            this.addUserDialogloading = false
          })
        }
      })
    },
    CanceladdUserdialog() {
      this.addUserdialog = false
      const form = this.$refs.addUserform.form
      form.resetFields()
    },
  },
}
</script>
<style scoped>
.greens {
  color: #52c41a;
}
.reds {
  color: #f5222d;
}
</style>
src/views/product/shares.vue
@@ -16,8 +16,8 @@
            <a-col :md="12" :lg="6" :sm="24">
              <a-form-item label="股票市场">
                <a-select v-model="queryParam.stockGid" placeholder="请选择股票市场">
                  <a-select-option value="nse">nse</a-select-option>
                  <a-select-option value="bse">bse</a-select-option>
                  <a-select-option value="US">US</a-select-option>
                  <a-select-option value="MEX">MEX</a-select-option>
                </a-select>
              </a-form-item>
            </a-col>