Files
intc-vue3/src/views/invest/exchange/index.vue

286 lines
9.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="app-container">
<div class="search-con">
<div class="title">查询条件</div>
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="名称" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="编号" prop="code">
<el-input v-model="queryParams.code" placeholder="请输入编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择类型" clearable>
<el-option v-for="dict in exchange_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-form>
<div class="search-btn-con">
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button type="info" icon="Refresh" @click="resetQuery">重置</el-button>
</div>
</div>
<div class="main-con">
<div class="title-con">
<div class="title">基本信息</div>
<div class="operate-btn-con">
<el-button @click="handleAdd" icon="Plus" v-hasPermi="['invest:exchange:add']">新增</el-button>
<el-button :disabled="multiple" icon="Delete" @click="handleDelete" v-hasPermi="['invest:exchange:remove']">删除</el-button>
<el-button @click="handleExport" icon="Download" v-hasPermi="['invest:exchange:export']">导出</el-button>
</div>
</div>
<div class="content-con" v-loading="loading">
<el-table v-loading="loading" :data="exchangeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="全称" align="center" prop="name" />
<el-table-column label="编号" align="center" prop="code" />
<el-table-column label="简称" align="center" prop="shortName" />
<el-table-column label="成立时间" align="center" prop="foundingTime" />
<el-table-column label="类型" align="center" prop="type">
<template #default="scope">
<dict-tag :options="exchange_type" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<div class="ctrl-btn d-flex">
<el-tooltip v-for="item in operateList" :key="item.id" class="item" effect="dark" :content="item.title" placement="top">
<el-button :icon="item.icon" :v-hasPermi="item.hasPermi" circle @click="handleOperate(item.id, scope.row)"></el-button>
</el-tooltip>
</div>
</template>
</el-table-column>
</el-table>
<el-pagination small background layout="total, prev, pager, next" :total="total" @current-change="handleCurrentChange" />
</div>
</div>
<!-- 添加或修改交易所基础信息对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="exchangeRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="全称" prop="name">
<el-input v-model="form.name" placeholder="请输入全称" />
</el-form-item>
<el-form-item label="编号" prop="code">
<el-input v-model="form.code" placeholder="请输入编号" />
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="form.type" placeholder="请选择类型">
<el-option v-for="dict in exchange_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="简称" prop="shortName">
<el-input v-model="form.shortName" placeholder="请输入简称" />
</el-form-item>
<el-form-item label="成立时间" prop="foundingTime">
<el-date-picker clearable v-model="form.foundingTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择成立时间"> </el-date-picker>
</el-form-item>
<el-form-item label="简介" prop="introduce">
<el-input v-model="form.introduce" rows="5" type="textarea" placeholder="请输入简介" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template v-if="title !== '查看交易所基础信息'" #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Exchange">
import { listExchange, getExchange, delExchange, addExchange, updateExchange } from '@/api/invest/exchange'
// eslint-disable-next-line no-unused-vars
import { require } from '@/utils/require'
const { proxy } = getCurrentInstance()
const { exchange_type } = proxy.useDict('exchange_type')
const exchangeList = ref([])
const open = ref(false)
const loading = ref(true)
const showSearch = ref(true)
const ids = ref([])
const single = ref(true)
const multiple = ref(true)
const total = ref(0)
const title = ref('')
const operateList = ref([
{ id: 'view', icon: 'View', title: '查看', hasPermi: ['invest:exchange:query'] },
{ id: 'edit', icon: 'Edit', title: '修改', hasPermi: ['invest:exchange:edit'] },
{ id: 'delete', icon: 'Delete', title: '删除', hasPermi: ['invest:exchange:remove'] }
])
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
name: null,
type: null,
code: null,
shortName: null
},
rules: {
name: [{ required: true, message: '全称不能为空', trigger: 'blur' }],
type: [{ required: true, message: '类型1期货2股票不能为空', trigger: 'change' }],
code: [{ required: true, message: '编号不能为空', trigger: 'blur' }],
shortName: [{ required: true, message: '简称不能为空', trigger: 'blur' }]
}
})
const handleOperate = (operate, row) => {
switch (operate) {
case 'view':
handleView(row)
break
case 'edit':
handleUpdate(row)
break
case 'delete':
handleDelete(row)
break
default:
break
}
}
const { queryParams, form, rules } = toRefs(data)
/** 查询交易所基础信息列表 */
function getList() {
loading.value = true
listExchange(queryParams.value).then((response) => {
exchangeList.value = response.rows
total.value = response.total
loading.value = false
})
}
// 取消按钮
function cancel() {
open.value = false
reset()
}
// 表单重置
function reset() {
form.value = {
id: null,
name: null,
type: null,
code: null,
shortName: null,
foundingTime: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
delFlag: null,
remark: null,
introduce: null
}
proxy.resetForm('exchangeRef')
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1
getList()
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef')
handleQuery()
}
// 分页
const handleCurrentChange = (val) => {
queryParams.value.pageNum = val
getList()
}
// 多选框选中数据
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id)
single.value = selection.length !== 1
multiple.value = !selection.length
}
// 查看
const handleView = (row) => {
title.value = '查看交易所基础信息'
form.value = row
open.value = true
}
/** 新增按钮操作 */
function handleAdd() {
reset()
open.value = true
title.value = '添加交易所基础信息'
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset()
const _id = row.id || ids.value
getExchange(_id).then((response) => {
form.value = response.data
open.value = true
title.value = '修改交易所基础信息'
})
}
/** 提交按钮 */
function submitForm() {
proxy.$refs.exchangeRef.validate((valid) => {
if (valid) {
if (form.value.id != null) {
updateExchange(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功')
open.value = false
getList()
})
} else {
addExchange(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功')
open.value = false
getList()
})
}
}
})
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value
proxy.$modal
.confirm('是否确认删除选中的数据项?')
.then(function () {
return delExchange(_ids)
})
.then(() => {
getList()
proxy.$modal.msgSuccess('删除成功')
})
.catch(() => {})
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'invest/exchange/export',
{
...queryParams.value
},
`exchange_${new Date().getTime()}.xlsx`
)
}
getList()
</script>