<!--
|
* @Date: 2024-05-26 16:12:09
|
* @LastEditors: Sneed
|
* @LastEditTime: 2024-06-16 16:19:02
|
* @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/dnc/craft/document/index.vue
|
-->
|
<!--
|
* @Date: 2024-05-21 22:46:05
|
* @LastEditors: Sneed
|
* @LastEditTime: 2024-05-26 21:50:37
|
* @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/dnc/craft/document/index.vue
|
-->
|
<template>
|
<el-main style="height: 100%;">
|
<el-card shadow="never" style="height: 100%;" body-style="height: 100%">
|
<el-container>
|
<el-aside width="200px">
|
<el-tree :expand-on-click-node="false" ref="group" node-key="id" :props="{
|
label: 'name',
|
hasChildren: 'id'
|
}" @node-click="nodeClick" highlight-current :current-node-key="selectNode.id" :load="loadNode"
|
lazy></el-tree>
|
</el-aside>
|
<el-container>
|
<el-header>
|
<el-button style="margin-left: 8px;" type="danger" plain :disabled="selection.length === 0"
|
@click="del">删除</el-button>
|
<el-button style="margin-left: 8px;margin-right: auto;" type="primary"
|
@click="addNew">新增</el-button>
|
<!-- <el-select v-model="params.type" style="width: 240px;margin-left: 8px;">
|
<template #prefix>
|
查询目标
|
</template>
|
<el-option v-for="item in options.type" :key="item.value" :label="item.label" :value="item.value" />
|
</el-select>
|
<el-input style="width: 240px;margin-left: 8px;" v-model="params.keyword" placeholder="请输入检索内容"></el-input>
|
<el-button @click="search" style="margin-left: 8px;" type="primary" icon="el-icon-search"></el-button> -->
|
</el-header>
|
<el-main v-if="selectNode.id || selectNode.id == 0">
|
<el-row :gutter="20">
|
<el-col :span="12">
|
<scTable highlight-current-row @dataChange="dataChange" @row-click="rowClick"
|
ref="table" :params="params" :apiObj="apiObj" @selection-change="selectionChange"
|
stripe>
|
<el-table-column type="selection" width="50"></el-table-column>
|
<el-table-column label="工艺包名称" prop="name" width="160">
|
</el-table-column>
|
<el-table-column label="工艺包编号" prop="code" width="160"></el-table-column>
|
<el-table-column label="操作" fixed="right" align="right" width="160">
|
<template #default="scope">
|
<el-button-group>
|
<el-button text type="primary" size="small"
|
@click="table_edit(scope.row, scope.$index)">编辑</el-button>
|
<el-button text type="primary" size="small"
|
@click="openLog(scope.row)">变更日志</el-button>
|
</el-button-group>
|
</template>
|
</el-table-column>
|
</scTable>
|
</el-col>
|
<el-col :span="12">
|
<h2 style="background-color: var(--el-color-primary);color: #fff;padding: 4px 20px;">
|
工艺包详情</h2>
|
<el-row style="margin: 14px 0;">
|
<el-col :span="12">
|
工艺包名称:{{ info.name }}
|
</el-col>
|
<el-col :span="12">
|
工艺包编号:{{ info.code }}
|
</el-col>
|
<el-col :span="12">
|
工艺包所在目录:{{ info.sourcePath }}
|
</el-col>
|
<el-col :span="24" style="margin: 14px 0;">
|
<Children @success="success" :list="list" @delete="searchFile" :id="info.id">
|
</Children>
|
</el-col>
|
</el-row>
|
</el-col>
|
</el-row>
|
|
</el-main>
|
</el-container>
|
</el-container>
|
</el-card>
|
<scDialog v-model="newVisible">
|
<scForm ref="form" :config="config" :rules="rules" v-model="form" @submit="submit">
|
</scForm>
|
</scDialog>
|
<scDialog v-model="logVisible">
|
<el-container>
|
<el-header>
|
<el-button type="primary" @click="exportExcel">导出</el-button>
|
<el-input v-model="searchParams.fileName" style="width: 240px;margin-left: 8px;" placeholder="">
|
<template #prefix>文件名称</template>
|
</el-input>
|
<el-select v-model="searchParams.fileClass" style="width: 240px;margin-left: 8px;">
|
<template #prefix>
|
文件类型
|
</template>
|
<el-option v-for="item in options.fileClass" :key="item.value" :label="item.label"
|
:value="item.value" />
|
</el-select>
|
<el-select v-model="searchParams.fileType" style="width: 240px;margin-left: 8px;">
|
<template #prefix>
|
文件属性
|
</template>
|
<el-option v-for="item in options.fileType" :key="item.value" :label="item.label"
|
:value="item.value" />
|
</el-select>
|
</el-header>
|
<el-main>
|
<scTable highlight-current-row ref="table1" :apiObj="apiObj1" @selection-change="selectionChange"
|
stripe>
|
<el-table-column label="文件名称" prop="fileName" width="160">
|
</el-table-column>
|
<el-table-column label="版本号" prop="version" width="160"></el-table-column>
|
<el-table-column label="文件类型" prop="suffix" width="160"></el-table-column>
|
<el-table-column label="文件属性" prop="fileType" width="160"></el-table-column>
|
<el-table-column label="操作类型" prop="operationType" width="160"></el-table-column>
|
<el-table-column label="操作人员" prop="operatorName" width="160"></el-table-column>
|
<el-table-column label="操作时间" prop="operationTime" width="160"></el-table-column>
|
</scTable>
|
</el-main>
|
</el-container>
|
</scDialog>
|
|
</el-main>
|
</template>
|
|
<script>
|
import Children from './Children.vue'
|
export default {
|
components: {
|
Children
|
},
|
watch: {
|
searchParams: {
|
handler() {
|
this.$refs?.table1?.reload()
|
},
|
deep: true
|
}
|
},
|
data() {
|
return {
|
treeData: [],
|
selection: [],
|
params: {
|
type: 'BAG_OR_PROCESS'
|
},
|
selectNode: {
|
// id: 0
|
},
|
apiObj: {
|
get: async (data) => {
|
let params = {
|
...data,
|
catalogueId: this.selectNode.id,
|
// ...this.params
|
}
|
return await this.$HTTP.get(`/api/blade-dnc/dnc-art-bag/cur-sub-page`, {}, { params }).then(res => {
|
return res
|
})
|
}
|
},
|
apiObj1: {
|
get: async (data) => {
|
let params = {
|
...data,
|
catalogueId: this.selectNode.id,
|
// ...this.params
|
}
|
return await this.$HTTP.post(`/api/blade-dnc/dnc-art-bag-log/page`, {}, { params, data: { ...this.searchParams } }).then(res => {
|
return res
|
})
|
}
|
},
|
newVisible: false,
|
config: {
|
labelWidth: 120,
|
formItems: [
|
{
|
component: 'input',
|
label: '工艺包名称',
|
name: 'name',
|
options: {
|
placeholder: '',
|
maxlength: 100,
|
}
|
},
|
{
|
component: 'input',
|
label: '工艺包编号',
|
name: 'code',
|
options: {
|
multiple: false,
|
data: []
|
},
|
disabled: false
|
}
|
]
|
},
|
form: {
|
},
|
rules: {
|
name: [
|
{ required: true, message: '请输入' },
|
],
|
code: [
|
{ required: true, message: '请输入' },
|
]
|
},
|
selection: [],
|
logVisible: false,
|
row: {},
|
options: {
|
type: [
|
{
|
value: 'BAG_OR_PROCESS',
|
label: '工艺包和程序文档'
|
},
|
{
|
value: 'ONLY_BAG',
|
label: '仅工艺包'
|
},
|
{
|
value: 'ONLY_PROCESS',
|
label: '仅程序文档'
|
},
|
],
|
fileType: [
|
{
|
value: 1,
|
label: '程序'
|
},
|
{
|
value: 2,
|
label: '文档'
|
},
|
]
|
},
|
searchParams: {
|
fileName: '',
|
fileClass: '',
|
fileType: '',
|
},
|
info: {},
|
list: []
|
}
|
},
|
created() {
|
this.init()
|
},
|
methods: {
|
init() {
|
this.$HTTP.get(`/api/blade-system/param/detail?paramKey=dnc.support.file.suffix.list`).then(res => {
|
this.options.fileClass = res.data.paramValue.split(',').map(v => {
|
return {
|
value: v,
|
label: v
|
}
|
})
|
})
|
},
|
loadNode(node, resolve) {
|
console.log(node, '>>>>>>')
|
let id = node.level === 0 ? '' : node.data.id
|
this.$HTTP.get(`/api/blade-dnc/dnc-process-catalogue/lazy-list?parentId=${id}`).then(res => {
|
if (node.level === 0) {
|
this.$nextTick(() => {
|
this.nodeClick(res.data[0])
|
})
|
}
|
resolve(res.data)
|
})
|
},
|
addNew() {
|
this.$refs?.form?.resetFields()
|
this.form = {
|
name: '',
|
code: ''
|
}
|
this.config.formItems[1].disabled = false
|
this.newVisible = true
|
},
|
submit() {
|
if (this.form.id) {
|
return this.$HTTP.put(`/api/blade-dnc/dnc-art-bag/update?id=${this.form.id}&name=${this.form.name}`).then(res => {
|
if (res.success) {
|
this.newVisible = false
|
this.$refs.table.reload()
|
}
|
})
|
}
|
this.$HTTP.post(`/api/blade-dnc/dnc-art-bag/insert`, {
|
catalogueId: this.selectNode.id,
|
...this.form
|
}).then(res => {
|
if (res.success) {
|
this.newVisible = false
|
this.$refs.table.reload()
|
} else {
|
this.$message.error(res.msg)
|
}
|
|
})
|
},
|
table_edit(row) {
|
this.$refs?.form?.resetFields()
|
this.form = {
|
name: row.name,
|
code: row.code,
|
id: row.id,
|
}
|
this.config.formItems[1].disabled = true
|
this.newVisible = true
|
},
|
selectionChange(selection) {
|
this.selection = selection
|
},
|
del() {
|
this.$confirm(`是否确认删除?`, '提示', {
|
type: 'warning',
|
}).then(() => {
|
this.$HTTP.delete(`/api/blade-dnc/dnc-art-bag/remove`, {}, { data: this.selection.map(v => v.id) }).then(res => {
|
this.$message.success("操作成功");
|
this.$refs.table.reload()
|
})
|
}).catch(() => {
|
return false
|
})
|
|
},
|
nodeClick(node, treeNode) {
|
console.log(node, treeNode)
|
this.selectNode = {
|
...node,
|
parentName: treeNode?.parent?.data?.name || '-'
|
}
|
this.$refs?.table?.reload()
|
},
|
openLog(row) {
|
this.logVisible = true
|
this.row = row
|
},
|
dataChange(data) {
|
console.log(data, '>>>>>>>>dataChange')
|
this.rowClick(data.data.records[0])
|
},
|
rowClick(row) {
|
if (!row) return this.info = {}
|
this.$HTTP.get(`/api/blade-dnc/dnc-art-bag/get/${row.id}`).then(res => {
|
if (res.success) {
|
this.info = res.data
|
this.searchFile()
|
} else {
|
this.info = {}
|
}
|
})
|
|
},
|
searchFile() {
|
this.$HTTP.get(`/api/blade-dnc/dnc-art-file/list?artBagId=${this.info.id}`).then(res => {
|
if (res.success) {
|
this.list = res.data
|
}
|
})
|
},
|
exportExcel() {
|
|
},
|
search() {
|
|
},
|
success() {
|
this.searchFile()
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped></style>
|