123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- import Card from '@/components/card'
- import { SearchOutlined } from '@vicons/antd'
- import {
- NButton,
- NDataTable,
- NIcon,
- NInput,
- NPagination,
- NSpace,
- NTooltip,
- NPopconfirm
- } from 'naive-ui'
- import { defineComponent, onMounted, toRefs, watch } from 'vue'
- import { useI18n } from 'vue-i18n'
- import { useTable } from './use-table'
- import ImportModal from './components/import-modal'
- import StartModal from './components/start-modal'
- import TimingModal from './components/timing-modal'
- import VersionModal from './components/version-modal'
- import CopyModal from './components/copy-modal'
- import { useRouter, useRoute } from 'vue-router'
- import type { Router } from 'vue-router'
- import styles from './index.module.scss'
- export default defineComponent({
- name: 'WorkflowDefinitionList',
- setup() {
- const router: Router = useRouter()
- const route = useRoute()
- const projectCode = Number(route.params.projectCode)
- const {
- variables,
- createColumns,
- getTableData,
- batchDeleteWorkflow,
- batchExportWorkflow,
- batchCopyWorkflow
- } = useTable()
- const requestData = () => {
- getTableData({
- pageSize: variables.pageSize,
- pageNo: variables.page,
- searchVal: variables.searchVal
- })
- }
- const handleUpdateList = () => {
- requestData()
- }
- const handleCopyUpdateList = () => {
- variables.checkedRowKeys = []
- requestData()
- }
- const handleSearch = () => {
- variables.page = 1
- requestData()
- }
- const handleChangePageSize = () => {
- variables.page = 1
- requestData()
- }
- const createDefinition = () => {
- router.push({
- path: `/projects/${projectCode}/workflow/definitions/create`
- })
- }
- watch(useI18n().locale, () => {
- createColumns(variables)
- })
- onMounted(() => {
- createColumns(variables)
- requestData()
- })
- return {
- requestData,
- handleSearch,
- handleUpdateList,
- createDefinition,
- handleChangePageSize,
- batchDeleteWorkflow,
- batchExportWorkflow,
- batchCopyWorkflow,
- handleCopyUpdateList,
- ...toRefs(variables)
- }
- },
- render() {
- const { t } = useI18n()
- return (
- <div class={styles.content}>
- <Card class={styles.card}>
- <div class={styles.header}>
- <NSpace>
- <NButton
- type='primary'
- onClick={this.createDefinition}
- class='btn-create-process'
- >
- {t('project.workflow.create_workflow')}
- </NButton>
- <NButton strong secondary onClick={() => (this.showRef = true)}>
- {t('project.workflow.import_workflow')}
- </NButton>
- </NSpace>
- <div class={styles.right}>
- <div class={styles.search}>
- <div class={styles.list}>
- <NButton type='primary' onClick={this.handleSearch}>
- <NIcon>
- <SearchOutlined />
- </NIcon>
- </NButton>
- </div>
- <div class={styles.list}>
- <NInput
- placeholder={t('resource.function.enter_keyword_tips')}
- v-model={[this.searchVal, 'value']}
- />
- </div>
- </div>
- </div>
- </div>
- </Card>
- <Card title={t('project.workflow.workflow_definition')}>
- <NDataTable
- rowKey={(row) => row.code}
- columns={this.columns}
- data={this.tableData}
- striped
- class={styles.table}
- v-model:checked-row-keys={this.checkedRowKeys}
- row-class-name='items'
- scrollX={this.tableWidth}
- />
- <div class={styles.pagination}>
- <NPagination
- v-model:page={this.page}
- v-model:page-size={this.pageSize}
- page-count={this.totalPage}
- show-size-picker
- page-sizes={[10, 30, 50]}
- show-quick-jumper
- onUpdatePage={this.requestData}
- onUpdatePageSize={this.handleChangePageSize}
- />
- </div>
- <div class={styles['batch-button']}>
- <NTooltip>
- {{
- default: () => t('project.workflow.delete'),
- trigger: () => (
- <NPopconfirm onPositiveClick={this.batchDeleteWorkflow}>
- {{
- default: () => t('project.workflow.delete_confirm'),
- trigger: () => (
- <NButton
- tag='div'
- type='primary'
- disabled={this.checkedRowKeys.length <= 0}
- class='btn-delete-all'
- >
- {t('project.workflow.delete')}
- </NButton>
- )
- }}
- </NPopconfirm>
- )
- }}
- </NTooltip>
- <NTooltip>
- {{
- default: () => t('project.workflow.export'),
- trigger: () => (
- <NButton
- tag='div'
- type='primary'
- disabled={this.checkedRowKeys.length <= 0}
- onClick={this.batchExportWorkflow}
- class='btn-delete-all'
- >
- {t('project.workflow.export')}
- </NButton>
- )
- }}
- </NTooltip>
- <NTooltip>
- {{
- default: () => t('project.workflow.batch_copy'),
- trigger: () => (
- <NButton
- tag='div'
- type='primary'
- disabled={this.checkedRowKeys.length <= 0}
- onClick={() => (this.copyShowRef = true)}
- class='btn-delete-all'
- >
- {t('project.workflow.batch_copy')}
- </NButton>
- )
- }}
- </NTooltip>
- </div>
- </Card>
- <ImportModal
- v-model:show={this.showRef}
- onUpdateList={this.handleUpdateList}
- />
- <StartModal
- v-model:row={this.row}
- v-model:show={this.startShowRef}
- onUpdateList={this.handleUpdateList}
- />
- <TimingModal
- v-model:row={this.row}
- v-model:show={this.timingShowRef}
- onUpdateList={this.handleUpdateList}
- />
- <VersionModal
- v-model:row={this.row}
- v-model:show={this.versionShowRef}
- onUpdateList={this.handleUpdateList}
- />
- <CopyModal
- v-model:codes={this.checkedRowKeys}
- v-model:show={this.copyShowRef}
- onUpdateList={this.handleCopyUpdateList}
- />
- </div>
- )
- }
- })
|