| | |
| | | <template> |
| | | <div class="c-model"> |
| | | <div class="search-bar"> |
| | | <div> |
| | | <label>模型标识</label> |
| | | <el-input v-model="searchParams.key" size="small"></el-input> |
| | | </div> |
| | | <div> |
| | | <label>模型名称</label> |
| | | <el-input v-model="searchParams.name" size="small"></el-input> |
| | | </div> |
| | | <div> |
| | | <el-button type="primary" @click="search" size="mini" icon="el-icon-search">搜索</el-button> |
| | | <el-button type="default" @click="reset" size="mini" icon="el-icon-refresh">重置</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="c-model__content"> |
| | | <table-template |
| | | :data="tableData" |
| | | :total="total" |
| | | @page-change="handlePageChange" |
| | | > |
| | | <template #toolbar> |
| | | <el-button type="primary" @click="showAddDialog = true" size="mini" plain icon="el-icon-plus">新建模型</el-button> |
| | | </template> |
| | | <template #columns> |
| | | <el-table-column |
| | | prop="key" |
| | | label="模型标识" |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="模型名称" |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="category" |
| | | label="分类"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="version" |
| | | label="版本"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | width="320" |
| | | prop="lastUpdateTime" |
| | | :formatter="handleDateTime" |
| | | label="创建时间"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | width="320" |
| | | label="操作"> |
| | | <template slot-scope="scope"> |
| | | <!--primary / success / warning / danger / info / text--> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleDesign(scope.$index, scope.row)">设计</el-button> |
| | | <el-button |
| | | v-if="!scope.row.deploymentId" |
| | | size="mini" |
| | | type="text" |
| | | @click="handlePublish(scope.$index, scope.row)">发布</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleExport(scope.$index, scope.row)">导出</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleDelete(scope.$index, scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </table-template> |
| | | </div> |
| | | <el-dialog |
| | | title="新建模型" |
| | | :visible.sync="showAddDialog" |
| | | > |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | | <el-form-item label="模型标识"> |
| | | <el-input v-model="form.key"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="模型名称"> |
| | | <el-input v-model="form.name"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="分类"> |
| | | <el-input v-model="form.category"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="描述"> |
| | | <el-input type="textarea" v-model="form.description"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <div class="c-model"> |
| | | <div class="search-bar"> |
| | | <div> |
| | | <label>模型标识</label> |
| | | <el-input v-model="searchParams.key" size="small"></el-input> |
| | | </div> |
| | | <div> |
| | | <label>模型名称</label> |
| | | <el-input v-model="searchParams.name" size="small"></el-input> |
| | | </div> |
| | | <div> |
| | | <el-button type="primary" @click="search" size="mini" icon="el-icon-search">搜索</el-button> |
| | | <el-button type="default" @click="reset" size="mini" icon="el-icon-refresh">重置</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="c-model__content"> |
| | | <table-template |
| | | :data="tableData" |
| | | :total="total" |
| | | @page-change="handlePageChange" |
| | | > |
| | | <template #toolbar> |
| | | <el-button type="primary" @click="showAddDialog = true" size="mini" plain icon="el-icon-plus">新建模型</el-button> |
| | | </template> |
| | | <template #columns> |
| | | <el-table-column |
| | | prop="key" |
| | | label="模型标识" |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="模型名称" |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="category" |
| | | label="分类"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="version" |
| | | label="版本"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | width="320" |
| | | prop="lastUpdateTime" |
| | | :formatter="handleDateTime" |
| | | label="创建时间"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | width="320" |
| | | label="操作"> |
| | | <template slot-scope="scope"> |
| | | <!--primary / success / warning / danger / info / text--> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleDesign(scope.$index, scope.row)">设计 |
| | | </el-button> |
| | | <el-button |
| | | v-if="!scope.row.deploymentId" |
| | | size="mini" |
| | | type="text" |
| | | @click="handlePublish(scope.$index, scope.row)">发布 |
| | | </el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleExport(scope.$index, scope.row)">导出 |
| | | </el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleDelete(scope.$index, scope.row)">删除 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </table-template> |
| | | </div> |
| | | <el-dialog |
| | | title="新建模型" |
| | | :visible.sync="showAddDialog" |
| | | > |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | | <el-form-item label="模型标识"> |
| | | <el-input v-model="form.key"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="模型名称"> |
| | | <el-input v-model="form.name"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="分类"> |
| | | <el-input v-model="form.category"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="描述"> |
| | | <el-input type="textarea" v-model="form.description"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="showAddDialog = false">取 消</el-button> |
| | | <el-button type="primary" @click="handleAddModel">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import {getModelLists, addModel, publishModelById, deleteModelById} from "./api/model.js"; |
| | | import commonHelper from "@/utils/common.js" |
| | | import TableTemplate from "@/components/TableTemplate"; |
| | | |
| | | export default { |
| | | name: "ModelManagement", |
| | | components: { |
| | | TableTemplate |
| | | name: "ModelManagement", |
| | | components: { |
| | | TableTemplate |
| | | }, |
| | | data() { |
| | | return { |
| | | responseData: {}, |
| | | showAddDialog: false, |
| | | form: { |
| | | key: "", |
| | | name: "", |
| | | category: "", |
| | | description: "", |
| | | }, |
| | | searchParams: { |
| | | name: "", |
| | | key: "", |
| | | pageSize: 10, |
| | | pageNum: 1, |
| | | orderByColumn: "modelSort", |
| | | isAsc: "asc", |
| | | }, |
| | | }; |
| | | }, |
| | | computed: { |
| | | tableData() { |
| | | return this.responseData.rows || [] |
| | | }, |
| | | data() { |
| | | return { |
| | | responseData: {}, |
| | | showAddDialog: false, |
| | | form: { |
| | | key: "", |
| | | name: "", |
| | | category: "", |
| | | description: "", |
| | | }, |
| | | searchParams: { |
| | | name: "", |
| | | key: "", |
| | | pageSize: 10, |
| | | pageNum: 1, |
| | | orderByColumn: "modelSort", |
| | | isAsc: "asc", |
| | | }, |
| | | }; |
| | | }, |
| | | computed: { |
| | | tableData() { |
| | | return this.responseData.rows || [] |
| | | }, |
| | | total() { |
| | | return this.responseData.total || 0 |
| | | } |
| | | }, |
| | | created() { |
| | | this.getModelByParams(this.searchParams); |
| | | }, |
| | | methods: { |
| | | getModelByParams(params) { |
| | | getModelLists(params).then(res => { |
| | | this.responseData = res; |
| | | }); |
| | | }, |
| | | handleAddModel() { |
| | | const formData = commonHelper.objectToFormData(this.form); |
| | | addModel(formData).then(res => { |
| | | console.log(res); |
| | | this.showAddDialog = false; |
| | | this.getModelByParams(this.searchParams) |
| | | this.$message.success("添加成功!"); |
| | | ["key", "name", "category", "description"].forEach(key => { |
| | | this.form[key] = ""; |
| | | }); |
| | | }); |
| | | }, |
| | | handleDateTime(row) { |
| | | const {createTime} = row; |
| | | return commonHelper.normalizeDateTimeString(createTime); |
| | | }, |
| | | handleDesign(index, row) { |
| | | // flowable改变设计的路径 |
| | | const path = "/designer/index.html#/editor/" + row.id; |
| | | // const path = "/editor?modelId=" + row.id; |
| | | commonHelper.openWindow(path); |
| | | }, |
| | | handlePublish(index, row) { |
| | | const id = row.id; |
| | | publishModelById(id).then(res => { |
| | | this.$message.success("部署成功!"); |
| | | this.getModelByParams(this.searchParams); |
| | | }); |
| | | }, |
| | | handleExport(index, row) { |
| | | const {key ,id} = row; |
| | | const a = document.createElement("a"); |
| | | const url = process.env.VUE_APP_TAB_URL_PREFIX + "/model/manage/export/" + id; |
| | | a.href = url; |
| | | a.click(); |
| | | }, |
| | | handleDelete(index, row) { |
| | | this.$confirm('确定删除该条模型信息吗?', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | const id = row.id; |
| | | deleteModelById(id).then(res => { |
| | | this.$message.success("删除成功!"); |
| | | this.getModelByParams(this.searchParams); |
| | | }); |
| | | }); |
| | | |
| | | }, |
| | | search() { |
| | | this.getModelByParams(this.searchParams); |
| | | }, |
| | | reset() { |
| | | this.searchParams.name = ""; |
| | | this.searchParams.key = ""; |
| | | this.getModelByParams(this.searchParams); |
| | | }, |
| | | handlePageChange({pageNum, pageSize}) { |
| | | this.searchParams.pageNum = pageNum; |
| | | this.searchParams.pageSize = pageSize; |
| | | this.getModelByParams(this.searchParams); |
| | | }, |
| | | total() { |
| | | return this.responseData.total || 0 |
| | | } |
| | | }, |
| | | created() { |
| | | this.getModelByParams(this.searchParams); |
| | | }, |
| | | methods: { |
| | | getModelByParams(params) { |
| | | getModelLists(params).then(res => { |
| | | this.responseData = res; |
| | | }); |
| | | }, |
| | | handleAddModel() { |
| | | const formData = commonHelper.objectToFormData(this.form); |
| | | addModel(formData).then(res => { |
| | | console.log(res); |
| | | this.showAddDialog = false; |
| | | this.getModelByParams(this.searchParams) |
| | | this.$message.success("添加成功!"); |
| | | ["key", "name", "category", "description"].forEach(key => { |
| | | this.form[key] = ""; |
| | | }); |
| | | }); |
| | | }, |
| | | handleDateTime(row) { |
| | | const {createTime} = row; |
| | | return commonHelper.normalizeDateTimeString(createTime); |
| | | }, |
| | | handleDesign(index, row) { |
| | | // flowable改变设计的路径 |
| | | const path = process.env.VUE_APP_FLOWABLE_PREFIX + "/designer/index.html#/editor/" + row.id; |
| | | // const path = "/editor?modelId=" + row.id; |
| | | window.open(path, '') |
| | | }, |
| | | handlePublish(index, row) { |
| | | const id = row.id; |
| | | publishModelById(id).then(res => { |
| | | this.$message.success("部署成功!"); |
| | | this.getModelByParams(this.searchParams); |
| | | }); |
| | | }, |
| | | handleExport(index, row) { |
| | | const {key, id} = row; |
| | | const a = document.createElement("a"); |
| | | const url = process.env.VUE_APP_FLOWABLE_PREFIX + "/model/manage/export/" + id; |
| | | a.href = url; |
| | | a.click(); |
| | | }, |
| | | handleDelete(index, row) { |
| | | this.$confirm('确定删除该条模型信息吗?', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | const id = row.id; |
| | | deleteModelById(id).then(res => { |
| | | this.$message.success("删除成功!"); |
| | | this.getModelByParams(this.searchParams); |
| | | }); |
| | | }); |
| | | |
| | | }, |
| | | search() { |
| | | this.getModelByParams(this.searchParams); |
| | | }, |
| | | reset() { |
| | | this.searchParams.name = ""; |
| | | this.searchParams.key = ""; |
| | | this.getModelByParams(this.searchParams); |
| | | }, |
| | | handlePageChange({pageNum, pageSize}) { |
| | | this.searchParams.pageNum = pageNum; |
| | | this.searchParams.pageSize = pageSize; |
| | | this.getModelByParams(this.searchParams); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style> |
| | | label { |
| | | font-size: 14px; |
| | | color: #606266; |
| | | margin-right: 8px; |
| | | font-size: 14px; |
| | | color: #606266; |
| | | margin-right: 8px; |
| | | } |
| | | |
| | | .search-bar { |
| | | display: flex; |
| | | margin-top: 8px; |
| | | margin-left: 8px; |
| | | display: flex; |
| | | margin-top: 8px; |
| | | margin-left: 8px; |
| | | } |
| | | |
| | | .el-input { |
| | | display: inline-block; |
| | | width: 300px; |
| | | margin-right: 10px; |
| | | display: inline-block; |
| | | width: 300px; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .el-textarea { |
| | | width: 300px; |
| | | width: 300px; |
| | | } |
| | | </style> |
| | | </style> |