
QueryForm Database Tool:Java/Swing关系数据库前端应用
下载需积分: 50 | 297KB |
更新于2024-11-18
| 159 浏览量 | 举报
收藏
这款工具支持多数据库并发连接,能够连接到多种不同的关系数据库系统。使用 QueryForm,用户可以通过图形界面方便地执行查询和管理数据库。查询结果不仅可以查看,还可以导出为 CSV 文件格式,方便与其他系统集成或者用于数据分析。除此之外,结果还可以导出为 INSERT 语句,这对于数据库备份和迁移操作特别有用。该工具为用户提供了一种比传统命令行或脚本更直观、更高效的方式来操作数据库,尤其适合那些需要频繁进行数据查询和管理的用户。"
详细知识点:
1. QueryForm 应用程序概述:
QueryForm 是一个用 Java 编程语言开发的工具,它利用了 Swing 库来构建其图形用户界面(GUI)。这意味着 QueryForm 可以在所有主流操作系统上运行,包括 Windows、macOS 和 Linux。作为一个开源项目,它允许用户访问源代码,自由使用、复制、修改和分发,前提是遵循其发布的开源许可证条款。
2. 功能特点:
- 多数据库支持:QueryForm 能够与多个关系数据库管理系统(RDBMS)进行交互,如 MySQL、PostgreSQL、Oracle、Microsoft SQL Server 等。这使得它能够成为一个通用的数据库管理工具。
- 并发连接:该工具支持打开多个数据库连接,这对于需要同时处理多个数据库或执行跨数据库查询的情况非常有用。
- 图形用户界面:与其他命令行或脚本驱动的数据库管理工具相比,QueryForm 提供了一个更加用户友好的操作界面,使非技术用户也能高效地管理数据库。
3. 数据操作与导出:
- 查询结果查看:QueryForm 允许用户执行查询,并直观地在界面上查看查询结果。
- 导出为 CSV:用户可以将查询结果导出为逗号分隔值(CSV)文件格式。这种格式广泛被电子表格程序如 Microsoft Excel 所支持,也适用于数据导入和导出操作。
- 导出为 INSERT 语句:通过导出为 SQL INSERT 语句,用户可以创建用于数据库备份或迁移的数据插入脚本。
4. 开源许可与支持文档:
- GNU General Public License:QueryForm 根据 GPL 许可证发行,这意味着任何人都可以自由地使用和修改代码,但修改后的代码也必须以相同的许可证发布。
- 文档:压缩包内提供的文档,包括 instructions.html、INSTRUCTIONS.TXT 和 REQUIRED_LIBRARIES.TXT 等文件,为用户提供使用工具和安装必需库的说明。
- 许可证文件:LICENSE.TXT 文件包含了完整的开源许可证文本,确保用户了解自己的使用权利和义务。
5. 使用场景与用户群体:
- 数据库管理员:对于数据库管理员来说,QueryForm 是一个能够简化日常数据库管理任务的有力工具。
- 数据分析师:数据分析师可以利用 QueryForm 高效地从数据库中提取数据,并将其导出至 CSV 文件中进行进一步分析。
- 开发者:开发者可以利用 QueryForm 作为调试数据库操作的工具,或者在开发过程中轻松地执行数据库查询。
6. 技术架构与开发环境:
- Java/Swing:QueryForm 使用 Java 作为编程语言,Swing 作为用户界面框架。因此,开发者在编写和维护代码时需要对 Java 开发环境和 Swing 组件有深入的理解。
- 数据库连接:QueryForm 可能会使用 JDBC(Java Database Connectivity)来实现与各种数据库的连接和通信。
7. 扩展性与社区支持:
- 开源社区:作为开源软件,QueryForm 很可能拥有一个活跃的社区支持,社区成员可以贡献代码、报告错误、分享使用经验,并参与讨论。
- 自定义和扩展:开发者社区可能会为 QueryForm 创建插件或扩展,以增强其功能或提供对新数据库系统的支持。
综上所述,QueryForm Database Tool 是一款功能强大的开源数据库管理工具,它利用 Java/Swing 技术构建了一个用户友好的前端界面,并支持多数据库连接和多种数据操作功能。该工具对于需要高效管理关系数据库的用户来说是一个宝贵的资源。
相关推荐



<template>
<a-card :bordered="false" style="margin-bottom: 10px;">
</a-card>
<a-card :bordered="false" >
<bt-inventory-add-form
v-if="showAddModal"
ref="btInventoryAddForm"
:contractId="contractId"
@ok="getList"
@close="showAddModal = false"
/>
<bt-inventory-edit-form
v-if="showEditModal"
ref="btInventoryEditForm"
:contractId="contractId"
@ok="getList"
@close="showEditModal = false"
/>
<a-tooltip title="刷新">
<a-icon @click="getList" class="action" :type="loading ? 'loading' : 'reload'" />
</a-tooltip>
<a-table
:loading="loading"
rowKey="id"
size="middle"
@change="handleTableChange"
@refresh="getList"
:columns="columns"
:data-source="btInventoryList"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="false"
>
</a-table>
</a-card>
暂无相关库存数据
<a-tag v-if="isOutbound" color="green" style="margin-left:8px;">已出库</a-tag>
</template>
<script>
import { listBtInventory, delBtInventory, exportBtInventory } from '@/api/tt/Inventory'
import AdvanceTable from '@/components/pt/table/AdvanceTable'
import BtInventoryAddForm from '@/views/bt/btoutbound/modules/BtInventoryAddForm'
import BtInventoryEditForm from '@/views/bt/btoutbound/modules/BtInventoryEditForm'
export default {
name: 'BtInventory',
props: {
isOutbound: {
type: Boolean,
default: false, // 默认不显示“已出库”
},
contractId: {
type: String,
required: true
},
title: {
type: String,
default: '子表'
}
},watch: {
hasData: {
immediate: true,
handler(newVal) {
if (!newVal && !this.isOutbound) {
this.$emit('outbound-status', true);
this.isOutbound = true;
}
}
}
},
components: {
AdvanceTable,
BtInventoryAddForm,
BtInventoryEditForm
},
data () {
return {
hasData:false,
showAddModal: false,
showEditModal: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 选中的主键集合
selectedRowKeys: [],
// 选中的数据集合
selectedRows: [],
// 高级搜索 展开/关闭
advanced: false,
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 总条数
total: 0,
// label的百分比
labelCol: { span: 6 },
// 内容区域的百分比
wrapperCol: { span: 18 },
// 合同管理表格数据
btInventoryList: [],
// 查询参数
queryParam: {
pageNum: 1,
pageSize: 1000,
itemName: undefined,
description: undefined,
quantity: undefined,
beginIndate: undefined
},
columns: [
{
title: '物资名称',
dataIndex: 'itemName',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '规格型号',
dataIndex: 'description',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '总库存',
dataIndex: 'fulfilledQuantity',
align: 'right',
width: '12.8%'
},
{
title: '当前库存数量',
dataIndex: 'quantity',
align: 'right',
width: '12.8%'
},
{
title: '入库日期',
dataIndex: 'indate',
align: 'center',
width: '12.8%'
},
// {
// title: '操作',
// dataIndex: 'operation',
// align: 'center',
// width: '10%',
// scopedSlots: { customRender: 'operation' }
// }
]
}
},
created () {
this.getList()
},
methods: {
/** 查询合同管理列表 */
getList () {
this.loading = true
this.queryParam.contractId = this.contractId
listBtInventory(this.queryParam).then(response => {
this.btInventoryList = response.data.list
this.total = response.data.total
this.loading = false
if(this.btInventoryList.length > 0){
this.hasData = true
}else{
this.hasData = false
}
})
},
/** 搜索按钮操作 */
handleQuery () {
this.queryParam.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery () {
this.queryParam = {
pageNum: 1,
pageSize: 1000,
itemName: undefined,
description: undefined,
quantity: undefined,
beginIndate: undefined
}
this.handleQuery()
},
/** 翻页操作 */
onShowSizeChange (current, pageSize) {
this.queryParam.pageSize = pageSize
this.getList()
},
/** 翻页操作 */
onSizeChange (current, size) {
this.queryParam.pageNum = 1
this.queryParam.pageSize = size
this.getList()
},
/** 翻页操作 */
changeSize (current, pageSize) {
this.queryParam.pageNum = current
this.queryParam.pageSize = pageSize
this.getList()
},
/** 翻页操作 */
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
this.ids = this.selectedRows.map(item => item.id)
this.single = selectedRowKeys.length !== 1
this.multiple = !selectedRowKeys.length
},
/** 查询折叠和展开操作 */
toggleAdvanced () {
this.advanced = !this.advanced
},
handleAdd () {
this.showAddModal = true
this.$nextTick(() => (
this.$refs.btInventoryAddForm.handleAdd()
))
},
handleUpdate (record, ids) {
this.showEditModal = true
this.$nextTick(() => (
this.$refs.btInventoryEditForm.handleUpdate(record, ids)
))
},
/** 删除按钮操作 */
handleDelete (row) {
var that = this
const btInventoryIds = row.id || this.ids
this.$confirm({
title: '确认删除所选中数据?',
onOk () {
return delBtInventory(btInventoryIds)
.then(() => {
that.onSelectChange([], [])
that.getList()
that.$message.success(
'删除成功',
3
)
})
},
onCancel () {}
})
},
/** 导出按钮操作 */
handleExport () {
var that = this
this.$confirm({
title: '是否确认导出?',
content: '此操作将导出当前条件下所有数据而非选中数据',
onOk () {
return exportBtInventory(that.queryParam)
.then(response => {
that.download(response.msg)
that.$message.success(
'导出成功',
3
)
})
},
onCancel () {}
})
},
handleTableChange (pagination, filters, sorter) {
if (sorter.field !== undefined && sorter.field !== null && sorter.field !== '') {
this.queryParam.orderByColumn = 'a.' + sorter.field
this.queryParam.isAsc = sorter.order
}
this.getList()
}
}
}
</script>
<style scoped>
.empty-container {
padding: 20px;
text-align: center;
background: #fff;
border-radius: 4px;
}
.action {
font-size: 16px;
cursor: pointer;
margin-left: 8px;
}
.action:hover {
color: #1890ff;
}
</style><template>
<a-card :bordered="false" style="margin-bottom: 10px;">
<a-form :labelCol="labelCol" :wrapperCol="wrapperCol" ref="queryForm">
<a-row :gutter="32">
<a-col :span="6" >
<a-form-item label="合同名称">
<a-input v-model="queryParam.contractName" placeholder="请输入合同名称" allow-clear @keyup.enter.native="handleQuery"/>
</a-form-item>
</a-col>
<a-col :span="6" >
<a-form-item label="合同正式编号">
<a-input v-model="queryParam.contractId" placeholder="请输入合同正式编号" allow-clear @keyup.enter.native="handleQuery"/>
</a-form-item>
</a-col>
<a-col :span="6" >
<a-form-item label="对方签约单位">
<a-input v-model="queryParam.counterpartContractUnit" placeholder="请输入对方签约单位" allow-clear @keyup.enter.native="handleQuery"/>
</a-form-item>
</a-col>
<a-col>
<a-button type="primary" @click="handleQuery"><a-icon type="search" />查询</a-button>
<a-button style="margin-left: 8px" @click="resetQuery"><a-icon type="redo" />重置</a-button>
{{ advanced ? '收起' : '展开' }}
<a-icon :type="advanced ? 'up' : 'down'"/>
</a-col>
</a-row>
</a-form>
</a-card>
<a-card :bordered="false" class="table-card">
<bt-contracts-detailed-add-form
v-if="showAddModal"
ref="contractmanageAddForm"
:firstContractTypeOptions="firstContractTypeOptions"
:secondContractTypeOptions="secondContractTypeOptions"
:sealTypeOptions="sealTypeOptions"
:signTypeOptions="signTypeOptions"
@ok="getList"
@close="showAddModal = false"
/>
<bt-contracts-detailed-edit-form
v-if="showEditModal"
ref="contractmanageEditForm"
:firstContractTypeOptions="firstContractTypeOptions"
:secondContractTypeOptions="secondContractTypeOptions"
:sealTypeOptions="sealTypeOptions"
:signTypeOptions="signTypeOptions"
@ok="getList"
@close="showEditModal = false"
/>
<BtLiveEidt
v-if="showLiveModal"
ref="liveEidt"
:firstContractTypeOptions="firstContractTypeOptions"
:secondContractTypeOptions="secondContractTypeOptions"
:sealTypeOptions="sealTypeOptions"
:signTypeOptions="signTypeOptions"
@ok="getList"
@close="showLiveModal = false"
/>
<outBound
v-if="visible"
ref="outBoundref"
@close="onClose"
/>
<advance-table
title="出库管理"
:pagination="{
current: queryParam.pageNum,
pageSize: queryParam.pageSize,
total: total,
showSizeChanger: true,
showLessItems: true,
showQuickJumper: true,
showTotal: (total, range) => `第 ${range[0]}-${range[1]} 条,总计 ${total} 条`,
onChange: changeSize,
onShowSizeChange: onShowSizeChange
}"
tableKey="base-contractmanage-index-table"
@change="handleTableChange"
rowKey="id"
size="middle"
@refresh="getList"
:columns="columns"
:data-source="contractmanageList"
:loading="loading"
:format-conditions="true"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
>
<bt-inventory-index
ref="BtInventoryIndex"
title="子表"
:contractId="record.id"
@outbound-status="(status) => handleOutboundStatus(record, status)"
/>
{{ firstContractTypeFormat(record) }}
{{ secondContractTypeFormat(record) }}
{{ sealTypeFormat(record) }}
{{ signTypeFormat(record) }}
<a-radio-group default-value="a" size="small">
<a-button type="primary" @click="handleUpdate1(record)" v-hasPermi="['bt:btOutbound:edit']" :size="size" ghost>
<a-icon type="upload" />生活出库
</a-button>
|
<a-button type="primary" @click="handleUpdate(record)" v-hasPermi="['bt:btOutbound:edit']" :size="size" >
<a-icon type="upload" />生产出库
</a-button>
|
<a-button type="dashed" @click="showDrawer(record)" v-hasPermi="['bt:btOutbound:list']" :size="size">
<a-icon type="table" />出库记录
</a-button>
<a-button
v-if="record.hasOutbound"
type="danger"
@click="resetOutboundStatus(record)"
:size="size"
>
<a-icon type="undo" />重置为未出库
</a-button>
</a-radio-group>
<a-tag v-if="record.hasOutbound" color="green">已出库</a-tag>
<a-tag v-else color="orange">未出库</a-tag>
</advance-table>
</a-card>
</template>
<script>
import { listBtContractsDetailed, delBtContractsDetailed, exportBtContractsDetailed, getInitData } from '@/api/tt/ContractsDetailed'
import AdvanceTable from '@/components/pt/table/AdvanceTable'
import BtContractsDetailedAddForm from '@/views/bt/btoutbound/modules/BtContractsDetailedAddForm'
import BtContractsDetailedEditForm from '@/views/bt/btoutbound/modules/BtContractsDetailedEditForm'
import BtInventoryIndex from '@/views/bt/btoutbound/BtInventoryIndex'
import outBound from '@/views/bt/btoutbound/outbound/index.vue'
import BtLiveEidt from './modules/BtLiveEidt.vue'
export default {
name: 'BtoutBound',
components: {
AdvanceTable,
BtInventoryIndex,
outBound,
BtContractsDetailedAddForm,
BtContractsDetailedEditForm,
BtLiveEidt
},
data () {
return {
size:'small',
visible: false,
showAddModal: false,
showEditModal: false,
showLiveModal: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 选中的主键集合
selectedRowKeys: [],
// 选中的数据集合
selectedRows: [],
// 高级搜索 展开/关闭
advanced: false,
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 总条数
total: 0,
// label的百分比
labelCol: { span: 6 },
// 内容区域的百分比
wrapperCol: { span: 18 },
// 合同管理表格数据
contractmanageList: [],
// 一级合同类型字典
firstContractTypeOptions: [],
// 二级合同类型字典
secondContractTypeOptions: [],
// 用章类别字典
sealTypeOptions: [],
// 签署类型字典
signTypeOptions: [],
outBoundId: 0,
// 查询参数
queryParam: {
pageNum: 1,
pageSize: 10,
contractName: undefined,
contractId: undefined,
organizer: undefined,
counterpartContractUnit: undefined
},
columns: [
{
title: '合同分类',
dataIndex: 'contractClassification',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '合同名称',
dataIndex: 'contractName',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '合同正式编号',
dataIndex: 'contractId',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '采购方式',
dataIndex: 'procurementMethod',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '对方签约单位',
dataIndex: 'counterpartContractUnit',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '我方签订日期',
dataIndex: 'ourSignDate',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '合同总金额',
dataIndex: 'totalContractAmount',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '删除作废',
dataIndex: 'deletedOrVoided',
ellipsis: true,
align: 'left',
width: '12.8%'
},
{
title: '出库状态',
dataIndex: 'hasOutbound',
align: 'center',
width: '10%',
customRender: (text, record) => {
return record.hasOutbound
? <a-tag color="green">已出库</a-tag>
: <a-tag color="orange">未出库</a-tag>;
}
},
{
title: '操作',
dataIndex: 'operation',
align: 'center',
width: '60%',
scopedSlots: { customRender: 'operation' }
}
]
}
},
created () {
this.getList()
getInitData('contract_type_level1,contract_type_level2,sys_oper_type,sys_oper_type').then(response => {
this.firstContractTypeOptions = response.data.contract_type_level1
this.secondContractTypeOptions = response.data.contract_type_level2
this.sealTypeOptions = response.data.sys_oper_type
this.signTypeOptions = response.data.sys_oper_type
})
},
methods: {
resetOutboundStatus(record) {
const index = this.contractmanageList.findIndex(item => item.id === record.id);
if (index !== -1) {
this.$set(this.contractmanageList[index], 'hasOutbound', false); // 更新前端状态
localStorage.removeItem(`outbound_${record.id}`); // 清除 localStorage 存储
this.$message.success("已重置为未出库");
}
},
handleOutboundStatus(record, status) {
const index = this.contractmanageList.findIndex(item => item.id === record.id);
if (index !== -1 && status && !this.contractmanageList[index].hasOutbound) {
this.$set(this.contractmanageList[index], 'hasOutbound', true);
localStorage.setItem(`outbound_${record.id}`, 'true'); // 存储到 localStorage
}
},
onClose () {
this.visible = false
this.$emit('close')
},
showDrawer(record) {
this.visible = true
const that = this
that.$nextTick(() => (
that.$refs.outBoundref.handleList(record)
))
},
// onClose() {
// this.visible = false;
// },
/** 查询合同管理列表 */
getList () {
this.loading = true;
listBtContractsDetailed(this.queryParam).then(response => {
this.contractmanageList = response.data.list.map(item => {
// 从 localStorage 读取是否已出库
const storedOutbound = localStorage.getItem(`outbound_${item.id}`);
return {
...item,
hasOutbound: storedOutbound === 'true' || false,
};
});
this.total = response.data.total;
this.loading = false;
});
},
// 一级合同类型字典翻译
firstContractTypeFormat (row) {
if (row.firstContractType) {
return this.selectDictLabel(this.firstContractTypeOptions, row.firstContractType)
} else {
return ''
}
},
// 二级合同类型字典翻译
secondContractTypeFormat (row) {
if (row.secondContractType) {
return this.selectDictLabel(this.secondContractTypeOptions, row.secondContractType)
} else {
return ''
}
},
// 用章类别字典翻译
sealTypeFormat (row) {
if (row.sealType) {
return this.selectDictLabel(this.sealTypeOptions, row.sealType)
} else {
return ''
}
},
// 签署类型字典翻译
signTypeFormat (row) {
if (row.signType) {
return this.selectDictLabel(this.signTypeOptions, row.signType)
} else {
return ''
}
},
/** 搜索按钮操作 */
handleQuery () {
this.queryParam.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery () {
this.queryParam = {
pageNum: 1,
pageSize: 10,
contractName: undefined,
contractId: undefined,
organizer: undefined,
counterpartContractUnit: undefined
}
this.handleQuery()
},
/** 翻页操作 */
onShowSizeChange (current, pageSize) {
this.queryParam.pageSize = pageSize
this.getList()
},
/** 翻页操作 */
onSizeChange (current, size) {
this.queryParam.pageNum = 1
this.queryParam.pageSize = size
this.getList()
},
/** 翻页操作 */
changeSize (current, pageSize) {
this.queryParam.pageNum = current
this.queryParam.pageSize = pageSize
this.getList()
},
/** 翻页操作 */
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
this.ids = this.selectedRows.map(item => item.id)
this.single = selectedRowKeys.length !== 1
this.multiple = !selectedRowKeys.length
},
/** 查询折叠和展开操作 */
toggleAdvanced () {
this.advanced = !this.advanced
},
handleAdd () {
this.showAddModal = true
this.$nextTick(() => (
this.$refs.contractmanageAddForm.handleAdd()
))
},
//生活导出
handleUpdate1 (record, ids) {
this.showLiveModal = true
this.$nextTick(() => (
this.$refs.liveEidt.handleUpdate(record, ids)
))
},
handleUpdate (record, ids) {
this.showEditModal = true
this.$nextTick(() => (
this.$refs.contractmanageEditForm.handleUpdate(record, ids)
))
},
/** 删除按钮操作 */
handleDelete (row) {
var that = this
const contractmanageIds = row.id || this.ids
this.$confirm({
title: '确认删除所选中数据?',
onOk () {
return delBtContractsDetailed(contractmanageIds)
.then(() => {
that.onSelectChange([], [])
that.getList()
that.$message.success(
'删除成功',
3
)
})
},
onCancel () {}
})
},
/** 导出按钮操作 */
handleExport () {
var that = this
this.$confirm({
title: '是否确认导出?',
content: '此操作将导出当前条件下所有数据而非选中数据',
onOk () {
return exportBtContractsDetailed(that.queryParam)
.then(response => {
that.download(response.msg)
that.$message.success(
'导出成功',
3
)
})
},
onCancel () {}
})
},
handleTableChange (pagination, filters, sorter) {
if (sorter.field !== undefined && sorter.field !== null && sorter.field !== '') {
this.queryParam.orderByColumn = 'a.' + sorter.field
this.queryParam.isAsc = sorter.order
}
this.getList()
}
}
}
</script>
进行修改,我现在的未出库和已出库是存储在客户端,但现在要改成存储到数据库里,/**
* 修改合同管理
*/
@PreAuthorize("@ss.hasPermi('bt:btOutbound:edit')")
@Log(title = "合同管理", businessType = BusinessType.UPDATE)
@PutMapping
public R edit(@RequestBody @Validated ContractsDetailed btContractsDetailed) {
return R.status(btContractsDetailedService.save(btContractsDetailed));
}存储时调用这个接口里的 `ecc_transfer` varchar(50) DEFAULT NULL COMMENT '传输ECC',
这个字段,直接存储汉字
<a-card :bordered="false" style="margin-bottom: 10px;">
</a-card>
<a-card :bordered="false" >
<bt-inventory-add-form
v-if="showAddModal"
ref="btInventoryAddForm"
:contractId="contractId"
@ok="getList"
@close="showAddModal = false"
/>
<bt-inventory-edit-form
v-if="showEditModal"
ref="btInventoryEditForm"
:contractId="contractId"
@ok="getList"
@close="showEditModal = false"
/>
<a-tooltip title="刷新">
<a-icon @click="getList" class="action" :type="loading ? 'loading' : 'reload'" />
</a-tooltip>
<a-table
:loading="loading"
rowKey="id"
size="middle"
@change="handleTableChange"
@refresh="getList"
:columns="columns"
:data-source="btInventoryList"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="false"
>
</a-table>
</a-card>
暂无相关库存数据 <a-tag v-if="isOutbound" color="green" style="margin-left:8px;">已出库</a-tag>
<a-form :labelCol="labelCol" :wrapperCol="wrapperCol" ref="queryForm">
<a-row :gutter="32">
<a-col :span="6" >
<a-form-item label="合同名称">
<a-input v-model="queryParam.contractName" placeholder="请输入合同名称" allow-clear @keyup.enter.native="handleQuery"/>
</a-form-item>
</a-col>
<a-col :span="6" >
<a-form-item label="合同正式编号">
<a-input v-model="queryParam.contractId" placeholder="请输入合同正式编号" allow-clear @keyup.enter.native="handleQuery"/>
</a-form-item>
</a-col>
<a-col :span="6" >
<a-form-item label="对方签约单位">
<a-input v-model="queryParam.counterpartContractUnit" placeholder="请输入对方签约单位" allow-clear @keyup.enter.native="handleQuery"/>
</a-form-item>
</a-col>
<a-col>
<a-button type="primary" @click="handleQuery"><a-icon type="search" />查询</a-button>
<a-button style="margin-left: 8px" @click="resetQuery"><a-icon type="redo" />重置</a-button>
{{ advanced ? '收起' : '展开' }}
<a-icon :type="advanced ? 'up' : 'down'"/>
</a-col>
</a-row>
</a-form>
</a-card>
<a-card :bordered="false" class="table-card">
<bt-contracts-detailed-add-form
v-if="showAddModal"
ref="contractmanageAddForm"
:firstContractTypeOptions="firstContractTypeOptions"
:secondContractTypeOptions="secondContractTypeOptions"
:sealTypeOptions="sealTypeOptions"
:signTypeOptions="signTypeOptions"
@ok="getList"
@close="showAddModal = false"
/>
<bt-contracts-detailed-edit-form
v-if="showEditModal"
ref="contractmanageEditForm"
:firstContractTypeOptions="firstContractTypeOptions"
:secondContractTypeOptions="secondContractTypeOptions"
:sealTypeOptions="sealTypeOptions"
:signTypeOptions="signTypeOptions"
@ok="getList"
@close="showEditModal = false"
/>
<BtLiveEidt
v-if="showLiveModal"
ref="liveEidt"
:firstContractTypeOptions="firstContractTypeOptions"
:secondContractTypeOptions="secondContractTypeOptions"
:sealTypeOptions="sealTypeOptions"
:signTypeOptions="signTypeOptions"
@ok="getList"
@close="showLiveModal = false"
/>
<outBound
v-if="visible"
ref="outBoundref"
@close="onClose"
/>
<advance-table
title="出库管理"
:pagination="{
current: queryParam.pageNum,
pageSize: queryParam.pageSize,
total: total,
showSizeChanger: true,
showLessItems: true,
showQuickJumper: true,
showTotal: (total, range) => `第 ${range[0]}-${range[1]} 条,总计 ${total} 条`,
onChange: changeSize,
onShowSizeChange: onShowSizeChange
}"
tableKey="base-contractmanage-index-table"
@change="handleTableChange"
rowKey="id"
size="middle"
@refresh="getList"
:columns="columns"
:data-source="contractmanageList"
:loading="loading"
:format-conditions="true"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
>
<bt-inventory-index
ref="BtInventoryIndex"
title="子表"
:contractId="record.id"
@outbound-status="(status) => handleOutboundStatus(record, status)"
/>
{{ firstContractTypeFormat(record) }}
{{ secondContractTypeFormat(record) }}
{{ sealTypeFormat(record) }}
{{ signTypeFormat(record) }}
<a-radio-group default-value="a" size="small">
<a-button type="primary" @click="handleUpdate1(record)" v-hasPermi="['bt:btOutbound:edit']" :size="size" ghost>
<a-icon type="upload" />生活出库
</a-button>
|
<a-button type="primary" @click="handleUpdate(record)" v-hasPermi="['bt:btOutbound:edit']" :size="size" >
<a-icon type="upload" />生产出库
</a-button>
|
<a-button type="dashed" @click="showDrawer(record)" v-hasPermi="['bt:btOutbound:list']" :size="size">
<a-icon type="table" />出库记录
</a-button>
<a-button
v-if="record.hasOutbound"
type="danger"
@click="resetOutboundStatus(record)"
:size="size"
>
<a-icon type="undo" />重置为未出库
</a-button>
</a-radio-group>
<a-tag v-if="record.hasOutbound" color="green">已出库</a-tag>
<a-tag v-else color="orange">未出库</a-tag>
</advance-table>
</a-card>








DeepIndaba
- 粉丝: 43
最新资源
- SwarmRFSControl: Matlab代码实现群体ILQR和MPC控制
- 贝岭的MATLAB代码与都灵科技活动聚合器
- SimonSays游戏模拟:探讨分心对编程任务的影响
- 前端开发教程:掌握HTML、CSS及JQuery
- GitHub OAuth 测试客户端简易实现教程
- PHP-Tricorder: 探索 PHPDocumentor 扫描并提供建议的命令行工具
- KZMachO:用于内存中破解mach二进制文件的工具
- 自动化下载广场资源:使用Python脚本的教程
- Spring Boot集成JPA与Swagger的微服务实践
- JsTaric: TARIC数据转换为CSV的Java Swing应用
- blimp机制:Docker容器跨主机迁移的简易方案
- QC-LDPC码Trapping集枚举方法与实现:Cole树算法
- 快速网络质量控制的Matlab工具:temp-network-QC
- TypeScript项目快速搭建指南
- Ensoniq SQ-80 系列:深度软件合成器及工具探索
- AnHyDeg:宏基因组数据集中厌氧碳氢化合物降解基因的精选数据库
- MUI框架使用教程:轻量级HTML、CSS和JS开发
- BAK_open-hackathon:微软开源的黑客马拉松平台
- BCAMultiBlocks:Java语言开发的BCA专用多块系统
- RocketBeans.TV Android时间表应用发布
- Spree Commerce购物车添加功能的AJAX实现
- jlls-mailsettings API:轻松管理邮件设置
- 家乡主题网页设计:创意与传统的融合
- VC#.NET+OpenGL构建交互式CAD系统教程