Browse Source

[Feature][UI Next][V1.0.0-Alpha] Unify clickable text in tables. (#8813)

3.0.0/version-upgrade
Amy0104 3 years ago committed by GitHub
parent
commit
f5711e4fcd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      dolphinscheduler-ui-next/src/components/button-link/index.module.scss
  2. 51
      dolphinscheduler-ui-next/src/components/button-link/index.tsx
  3. 9
      dolphinscheduler-ui-next/src/components/modal/index.tsx
  4. 2
      dolphinscheduler-ui-next/src/service/service.ts
  5. 27
      dolphinscheduler-ui-next/src/utils/log.ts
  6. 14
      dolphinscheduler-ui-next/src/views/datasource/list/use-columns.ts
  7. 9
      dolphinscheduler-ui-next/src/views/projects/list/use-table.ts
  8. 10
      dolphinscheduler-ui-next/src/views/projects/task/definition/index.module.scss
  9. 15
      dolphinscheduler-ui-next/src/views/projects/task/definition/use-table.ts
  10. 8
      dolphinscheduler-ui-next/src/views/projects/workflow/definition/index.module.scss
  11. 62
      dolphinscheduler-ui-next/src/views/projects/workflow/definition/use-table.ts
  12. 8
      dolphinscheduler-ui-next/src/views/projects/workflow/instance/index.module.scss
  13. 81
      dolphinscheduler-ui-next/src/views/projects/workflow/instance/use-table.ts
  14. 14
      dolphinscheduler-ui-next/src/views/resource/file/table/use-table.ts
  15. 8
      dolphinscheduler-ui-next/src/views/resource/udf/resource/index.module.scss
  16. 37
      dolphinscheduler-ui-next/src/views/resource/udf/resource/use-table.ts
  17. 81
      dolphinscheduler-ui/src/sass/common/_table.scss

6
dolphinscheduler-ui-next/src/views/resource/file/table/index.module.scss → dolphinscheduler-ui-next/src/components/button-link/index.module.scss

@ -14,10 +14,10 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
.button-link {
cursor: pointer;
color: var(--n-color-target);
.links {
color: #2080f0;
text-decoration: none;
&:hover { &:hover {
text-decoration: underline; text-decoration: underline;
} }

51
dolphinscheduler-ui-next/src/components/button-link/index.tsx

@ -0,0 +1,51 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { defineComponent, PropType, renderSlot } from 'vue'
import { NButton } from 'naive-ui'
import styles from './index.module.scss'
const props = {
disabled: {
type: Boolean,
default: false
},
iconPlacement: {
type: String as PropType<'left' | 'right'>,
default: 'left'
}
}
const ButtonLink = defineComponent({
name: 'button-link',
props,
emits: ['click'],
setup(props, { slots, emit }) {
const onClick = (ev: MouseEvent) => {
emit('click', ev)
}
return () => (
<NButton {...props} onClick={onClick} text class={styles['button-link']}>
{{
default: renderSlot(slots, 'default'),
icon: renderSlot(slots, 'icon')
}}
</NButton>
)
}
})
export default ButtonLink

9
dolphinscheduler-ui-next/src/components/modal/index.tsx

@ -15,8 +15,9 @@
* limitations under the License. * limitations under the License.
*/ */
import { defineComponent, h, PropType, renderSlot, Ref } from 'vue' import { defineComponent, PropType, renderSlot, Ref } from 'vue'
import { NModal, NCard, NButton, NSpace, NIcon } from 'naive-ui' import { NModal, NCard, NButton, NSpace } from 'naive-ui'
import ButtonLink from '@/components/button-link'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import styles from './index.module.scss' import styles from './index.module.scss'
import { LinkOption } from '@/components/modal/types' import { LinkOption } from '@/components/modal/types'
@ -108,12 +109,12 @@ const Modal = defineComponent({
.filter((item: any) => item.show) .filter((item: any) => item.show)
.map((item: any) => { .map((item: any) => {
return ( return (
<NButton text onClick={item.action}> <ButtonLink onClick={item.action}>
{{ {{
default: () => item.text, default: () => item.text,
icon: () => item.icon() icon: () => item.icon()
}} }}
</NButton> </ButtonLink>
) )
})} })}
</NSpace> </NSpace>

2
dolphinscheduler-ui-next/src/service/service.ts

@ -29,7 +29,7 @@ const userStore = useUserStore()
* @description Log and display errors * @description Log and display errors
* @param {Error} error Error object * @param {Error} error Error object
*/ */
const handleError = (res: AxiosResponse<any, any>) => { const handleError = (res: AxiosResponse<any, any>) => {
// Print to console // Print to console
if (import.meta.env.MODE === 'development') { if (import.meta.env.MODE === 'development') {
utils.log.capsule('DolphinScheduler', 'UI-NEXT') utils.log.capsule('DolphinScheduler', 'UI-NEXT')

27
dolphinscheduler-ui-next/src/utils/log.ts

@ -27,11 +27,20 @@ const log = {
const typeColor = (type = 'primary') => { const typeColor = (type = 'primary') => {
let color = '' let color = ''
switch (type) { switch (type) {
case 'primary': color = '#1890ff'; break case 'primary':
case 'success': color = '#52c41a'; break color = '#1890ff'
case 'warning': color = '#faad14'; break break
case 'error': color = '#ff4d4f'; break case 'success':
default:; break color = '#52c41a'
break
case 'warning':
color = '#faad14'
break
case 'error':
color = '#ff4d4f'
break
default:
break
} }
return color return color
} }
@ -42,11 +51,13 @@ const typeColor = (type = 'primary') => {
* @param {String} text info text * @param {String} text info text
* @param {String} type style * @param {String} type style
*/ */
log.capsule = (title: string, text: string, type: string = 'primary') => { log.capsule = (title: string, text: string, type: string = 'primary') => {
console.log( console.log(
`%c ${title} %c ${text} %c`, `%c ${title} %c ${text} %c`,
'background:#35495E; padding: 2px ; border-radius: 3px 0 0 3px; color: #fff;', 'background:#35495E; padding: 2px ; border-radius: 3px 0 0 3px; color: #fff;',
`background:${typeColor(type)}; padding: 2px; border-radius: 0 3px 3px 0; color: #fff;`, `background:${typeColor(
type
)}; padding: 2px; border-radius: 0 3px 3px 0; color: #fff;`,
'background:transparent' 'background:transparent'
) )
} }
@ -61,4 +72,4 @@ log.error = function (info) {
console.groupEnd() console.groupEnd()
} }
export default log export default log

14
dolphinscheduler-ui-next/src/views/datasource/list/use-columns.ts

@ -20,6 +20,7 @@ import { useI18n } from 'vue-i18n'
import { NPopover, NButton, NIcon, NPopconfirm, NSpace } from 'naive-ui' import { NPopover, NButton, NIcon, NPopconfirm, NSpace } from 'naive-ui'
import { EditOutlined, DeleteOutlined } from '@vicons/antd' import { EditOutlined, DeleteOutlined } from '@vicons/antd'
import JsonHighlight from './json-highlight' import JsonHighlight from './json-highlight'
import ButtonLink from '@/components/button-link'
import { TableColumns } from './types' import { TableColumns } from './types'
export function useColumns(onCallback: Function) { export function useColumns(onCallback: Function) {
@ -52,16 +53,9 @@ export function useColumns(onCallback: Function) {
{ trigger: 'click' }, { trigger: 'click' },
{ {
trigger: () => trigger: () =>
h( h(ButtonLink, null, {
NButton, default: () => t('datasource.click_to_view')
{ }),
quaternary: true,
type: 'primary'
},
{
default: () => t('datasource.click_to_view')
}
),
default: () => h(JsonHighlight, { rowData }) default: () => h(JsonHighlight, { rowData })
} }
) )

9
dolphinscheduler-ui-next/src/views/projects/list/use-table.ts

@ -18,6 +18,7 @@
import { h, reactive, ref } from 'vue' import { h, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useAsyncState } from '@vueuse/core' import { useAsyncState } from '@vueuse/core'
import ButtonLink from '@/components/button-link'
import { queryProjectListPaging } from '@/service/modules/projects' import { queryProjectListPaging } from '@/service/modules/projects'
import { parseTime } from '@/utils/common' import { parseTime } from '@/utils/common'
import { deleteProject } from '@/service/modules/projects' import { deleteProject } from '@/service/modules/projects'
@ -77,18 +78,14 @@ export function useTable() {
{ {
default: () => default: () =>
h( h(
'a', ButtonLink,
{ {
onClick: () => { onClick: () => {
menuStore.setProjectCode(row.code) menuStore.setProjectCode(row.code)
router.push({ path: `/projects/${row.code}` }) router.push({ path: `/projects/${row.code}` })
} }
}, },
{ { default: () => row.name }
default: () => {
return row.name
}
}
), ),
tooltip: () => row.name tooltip: () => row.name
} }

10
dolphinscheduler-ui-next/src/views/projects/task/definition/index.module.scss

@ -42,13 +42,3 @@
justify-content: center; justify-content: center;
} }
} }
.links {
color: dodgerblue;
text-decoration: none;
cursor: pointer;
&:hover {
text-decoration: underline;
}
}

15
dolphinscheduler-ui-next/src/views/projects/task/definition/use-table.ts

@ -18,6 +18,7 @@
import { useAsyncState } from '@vueuse/core' import { useAsyncState } from '@vueuse/core'
import { reactive, h, ref } from 'vue' import { reactive, h, ref } from 'vue'
import { NButton, NIcon, NPopconfirm, NSpace, NTag, NTooltip } from 'naive-ui' import { NButton, NIcon, NPopconfirm, NSpace, NTag, NTooltip } from 'naive-ui'
import ButtonLink from '@/components/button-link'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { import {
DeleteOutlined, DeleteOutlined,
@ -30,7 +31,6 @@ import {
deleteTaskDefinition deleteTaskDefinition
} from '@/service/modules/task-definition' } from '@/service/modules/task-definition'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import styles from './index.module.scss'
import type { import type {
TaskDefinitionItem, TaskDefinitionItem,
TaskDefinitionRes TaskDefinitionRes
@ -55,18 +55,11 @@ export function useTable(onEdit: Function) {
width: 400, width: 400,
render: (row: IRecord) => render: (row: IRecord) =>
h( h(
'a', ButtonLink,
{ {
class: styles.links, onClick: () => void onEdit(row, true)
onClick: () => {
onEdit(row, true)
}
}, },
{ { default: () => row.taskName }
default: () => {
return row.taskName
}
}
) )
}, },
{ {

8
dolphinscheduler-ui-next/src/views/projects/workflow/definition/index.module.scss

@ -86,11 +86,3 @@
width: 86%; width: 86%;
} }
} }
.links {
color: #2080f0;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}

62
dolphinscheduler-ui-next/src/views/projects/workflow/definition/use-table.ts

@ -29,10 +29,10 @@ import {
release release
} from '@/service/modules/process-definition' } from '@/service/modules/process-definition'
import TableAction from './components/table-action' import TableAction from './components/table-action'
import { IDefinitionParam } from './types' import { IDefinitionParam } from './types'
import styles from './index.module.scss' import styles from './index.module.scss'
import { NEllipsis, NTag } from 'naive-ui' import { NEllipsis, NTag } from 'naive-ui'
import ButtonLink from '@/components/button-link'
export function useTable() { export function useTable() {
const { t } = useI18n() const { t } = useI18n()
@ -72,17 +72,15 @@ export function useTable() {
{ {
default: () => default: () =>
h( h(
'a', ButtonLink,
{ {
href: 'javascript:',
class: styles.links,
onClick: () => onClick: () =>
router.push({ void router.push({
name: 'workflow-definition-detail', name: 'workflow-definition-detail',
params: { code: row.code } params: { code: row.code }
}) })
}, },
row.name { default: () => row.name }
), ),
tooltip: () => row.name tooltip: () => row.name
} }
@ -191,15 +189,14 @@ export function useTable() {
} }
const deleteWorkflow = (row: any) => { const deleteWorkflow = (row: any) => {
deleteByCode(variables.projectCode, row.code) deleteByCode(variables.projectCode, row.code).then(() => {
.then(() => { window.$message.success(t('project.workflow.success'))
window.$message.success(t('project.workflow.success')) getTableData({
getTableData({ pageSize: variables.pageSize,
pageSize: variables.pageSize, pageNo: variables.page,
pageNo: variables.page, searchVal: variables.searchVal
searchVal: variables.searchVal
})
}) })
})
} }
const releaseWorkflow = (row: any) => { const releaseWorkflow = (row: any) => {
@ -209,15 +206,14 @@ export function useTable() {
| 'OFFLINE' | 'OFFLINE'
| 'ONLINE' | 'ONLINE'
} }
release(data, variables.projectCode, row.code) release(data, variables.projectCode, row.code).then(() => {
.then(() => { window.$message.success(t('project.workflow.success'))
window.$message.success(t('project.workflow.success')) getTableData({
getTableData({ pageSize: variables.pageSize,
pageSize: variables.pageSize, pageNo: variables.page,
pageNo: variables.page, searchVal: variables.searchVal
searchVal: variables.searchVal
})
}) })
})
} }
const copyWorkflow = (row: any) => { const copyWorkflow = (row: any) => {
@ -225,15 +221,14 @@ export function useTable() {
codes: String(row.code), codes: String(row.code),
targetProjectCode: variables.projectCode targetProjectCode: variables.projectCode
} }
batchCopyByCodes(data, variables.projectCode) batchCopyByCodes(data, variables.projectCode).then(() => {
.then(() => { window.$message.success(t('project.workflow.success'))
window.$message.success(t('project.workflow.success')) getTableData({
getTableData({ pageSize: variables.pageSize,
pageSize: variables.pageSize, pageNo: variables.page,
pageNo: variables.page, searchVal: variables.searchVal
searchVal: variables.searchVal
})
}) })
})
} }
const downloadBlob = (data: any, fileNameS = 'json') => { const downloadBlob = (data: any, fileNameS = 'json') => {
@ -267,10 +262,9 @@ export function useTable() {
const data = { const data = {
codes: String(row.code) codes: String(row.code)
} }
batchExportByCodes(data, variables.projectCode) batchExportByCodes(data, variables.projectCode).then((res: any) => {
.then((res: any) => { downloadBlob(res, fileName)
downloadBlob(res, fileName) })
})
} }
const gotoTimingManage = (row: any) => { const gotoTimingManage = (row: any) => {

8
dolphinscheduler-ui-next/src/views/projects/workflow/instance/index.module.scss

@ -86,11 +86,3 @@
width: 86%; width: 86%;
} }
} }
.links {
color: #2080f0;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}

81
dolphinscheduler-ui-next/src/views/projects/workflow/instance/use-table.ts

@ -22,6 +22,7 @@ import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import type { Router } from 'vue-router' import type { Router } from 'vue-router'
import { NTooltip, NIcon, NSpin } from 'naive-ui' import { NTooltip, NIcon, NSpin } from 'naive-ui'
import ButtonLink from '@/components/button-link'
import { RowKey } from 'naive-ui/lib/data-table/src/interface' import { RowKey } from 'naive-ui/lib/data-table/src/interface'
import { import {
queryProcessInstanceListPaging, queryProcessInstanceListPaging,
@ -74,24 +75,18 @@ export function useTable() {
title: t('project.workflow.workflow_name'), title: t('project.workflow.workflow_name'),
key: 'name', key: 'name',
width: 200, width: 200,
render: (_row: IWorkflowInstance) => render: (row: IWorkflowInstance) =>
h( h(
'a', ButtonLink,
{ {
href: 'javascript:',
class: styles.links,
onClick: () => onClick: () =>
router.push({ void router.push({
name: 'workflow-instance-detail', name: 'workflow-instance-detail',
params: { id: _row.id }, params: { id: row.id },
query: { code: _row.processDefinitionCode } query: { code: row.processDefinitionCode }
}) })
}, },
{ { default: () => row.name }
default: () => {
return _row.name
}
}
) )
}, },
{ {
@ -276,15 +271,14 @@ export function useTable() {
} }
const deleteInstance = (id: number) => { const deleteInstance = (id: number) => {
deleteProcessInstanceById(id, variables.projectCode) deleteProcessInstanceById(id, variables.projectCode).then(() => {
.then(() => { window.$message.success(t('project.workflow.success'))
window.$message.success(t('project.workflow.success')) if (variables.tableData.length === 1 && variables.page > 1) {
if (variables.tableData.length === 1 && variables.page > 1) { variables.page -= 1
variables.page -= 1 }
}
getTableData() getTableData()
}) })
} }
const batchDeleteInstance = () => { const batchDeleteInstance = () => {
@ -292,32 +286,30 @@ export function useTable() {
processInstanceIds: _.join(variables.checkedRowKeys, ',') processInstanceIds: _.join(variables.checkedRowKeys, ',')
} }
batchDeleteProcessInstanceByIds(data, variables.projectCode) batchDeleteProcessInstanceByIds(data, variables.projectCode).then(() => {
.then(() => { window.$message.success(t('project.workflow.success'))
window.$message.success(t('project.workflow.success'))
if ( if (
variables.tableData.length === variables.checkedRowKeys.length && variables.tableData.length === variables.checkedRowKeys.length &&
variables.page > 1 variables.page > 1
) { ) {
variables.page -= 1 variables.page -= 1
} }
variables.checkedRowKeys = [] variables.checkedRowKeys = []
getTableData() getTableData()
}) })
} }
/** /**
* operating * operating
*/ */
const _upExecutorsState = (param: ExecuteReq) => { const _upExecutorsState = (param: ExecuteReq) => {
execute(param, variables.projectCode) execute(param, variables.projectCode).then(() => {
.then(() => { window.$message.success(t('project.workflow.success'))
window.$message.success(t('project.workflow.success'))
getTableData() getTableData()
}) })
} }
/** /**
@ -348,14 +340,13 @@ export function useTable() {
const _countDownFn = (param: ICountDownParam) => { const _countDownFn = (param: ICountDownParam) => {
const { index } = param const { index } = param
variables.tableData[index].buttonType = param.buttonType variables.tableData[index].buttonType = param.buttonType
execute(param, variables.projectCode) execute(param, variables.projectCode).then(() => {
.then(() => { variables.tableData[index].disabled = true
variables.tableData[index].disabled = true window.$message.success(t('project.workflow.success'))
window.$message.success(t('project.workflow.success')) _countDown(() => {
_countDown(() => { getTableData()
getTableData() }, index)
}, index) })
})
} }
return { return {

14
dolphinscheduler-ui-next/src/views/resource/file/table/use-table.ts

@ -22,9 +22,9 @@ import { bytesToSize } from '@/utils/common'
import { useFileStore } from '@/store/file/file' import { useFileStore } from '@/store/file/file'
import TableAction from './table-action' import TableAction from './table-action'
import { IRenameFile } from '../types' import { IRenameFile } from '../types'
import ButtonLink from '@/components/button-link'
import type { Router } from 'vue-router' import type { Router } from 'vue-router'
import type { TableColumns } from 'naive-ui/es/data-table/src/interface' import type { TableColumns } from 'naive-ui/es/data-table/src/interface'
import styles from './index.module.scss'
const goSubFolder = (router: Router, item: any) => { const goSubFolder = (router: Router, item: any) => {
const fileStore = useFileStore() const fileStore = useFileStore()
@ -55,17 +55,11 @@ export function useTable(renameResource: IRenameFile, updateList: () => void) {
width: 120, width: 120,
render: (row) => render: (row) =>
h( h(
'a', ButtonLink,
{ {
href: 'javascript:', onClick: () => void goSubFolder(router, row)
class: styles.links,
onClick: () => goSubFolder(router, row)
}, },
{ { default: () => row.name }
default: () => {
return row.name
}
}
) )
}, },
{ title: t('resource.file.user_name'), width: 100, key: 'user_name' }, { title: t('resource.file.user_name'), width: 100, key: 'user_name' },

8
dolphinscheduler-ui-next/src/views/resource/udf/resource/index.module.scss

@ -70,12 +70,4 @@
align-items: center; align-items: center;
margin-top: 20px; margin-top: 20px;
} }
.links {
color: #2080f0;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
} }

37
dolphinscheduler-ui-next/src/views/resource/udf/resource/use-table.ts

@ -31,8 +31,8 @@ import {
deleteResource, deleteResource,
queryResourceById queryResourceById
} from '@/service/modules/resources' } from '@/service/modules/resources'
import ButtonLink from '@/components/button-link'
import { IUdfResourceParam } from './types' import { IUdfResourceParam } from './types'
import styles from './index.module.scss'
const goSubFolder = (router: Router, item: any) => { const goSubFolder = (router: Router, item: any) => {
const fileStore = useFileStore() const fileStore = useFileStore()
@ -75,23 +75,15 @@ export function useTable() {
title: t('resource.udf.udf_source_name'), title: t('resource.udf.udf_source_name'),
key: 'alias', key: 'alias',
render: (row) => { render: (row) => {
if (!row.directory) { return !row.directory
return row.alias ? row.alias
} else { : h(
return h( ButtonLink,
'a', {
{ onClick: () => void goSubFolder(router, row)
href: 'javascript:', },
class: styles.links, { default: () => row.alias }
onClick: () => goSubFolder(router, row) )
},
{
default: () => {
return row.alias
}
}
)
}
} }
}, },
{ {
@ -265,11 +257,10 @@ export function useTable() {
fullName fullName
}, },
id id
) ).then((res: any) => {
.then((res: any) => { fileStore.setCurrentDir(res.fullName)
fileStore.setCurrentDir(res.fullName) router.push({ name: 'resource-sub-manage', params: { id: res.id } })
router.push({ name: 'resource-sub-manage', params: { id: res.id } }) })
})
} }
return { return {

81
dolphinscheduler-ui/src/sass/common/_table.scss

@ -14,43 +14,43 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
.ansfont { .ansfont {
font-size: 16px; font-size: 16px;
font-style: normal; font-style: normal;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.as { .as {
display: inline-block; display: inline-block;
font-size: 14px; font-size: 14px;
text-rendering: auto; text-rendering: auto;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.as-spin { .as-spin {
-webkit-animation: as-spin 2s infinite linear; -webkit-animation: as-spin 2s infinite linear;
animation: as-spin 2s infinite linear; animation: as-spin 2s infinite linear;
}
@-webkit-keyframes as-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
} }
@-webkit-keyframes as-spin { 100% {
0% { -webkit-transform: rotate(359deg);
-webkit-transform: rotate(0deg); transform: rotate(359deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
} }
@keyframes as-spin { }
0% { @keyframes as-spin {
-webkit-transform: rotate(0deg); 0% {
transform: rotate(0deg); -webkit-transform: rotate(0deg);
} transform: rotate(0deg);
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
} }
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
.table-box { .table-box {
border-top: 1px solid #ecf3ff; border-top: 1px solid #ecf3ff;
.ans-checkbox-wrapper-disabled { .ans-checkbox-wrapper-disabled {
@ -71,7 +71,7 @@
.ellipsis { .ellipsis {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
display: block; display: block;
} }
button { button {
@ -97,7 +97,8 @@
&:hover { &:hover {
background: #ddecff; background: #ddecff;
} }
th,td{ th,
td {
&:nth-child(1) { &:nth-child(1) {
width: 50px; width: 50px;
text-align: center; text-align: center;
@ -108,13 +109,13 @@
width: 60px; width: 60px;
text-align: center; text-align: center;
} }
>span { > span {
font-size: 12px; font-size: 12px;
color: #555; color: #555;
} }
} }
td { td {
>span { > span {
font-size: 12px; font-size: 12px;
color: #666; color: #666;
} }
@ -126,21 +127,16 @@
} }
} }
} }
.links {
color: #2d8cf0;
&:hover {
text-decoration: underline;
}
}
} }
.table-small-model { .table-small-model {
padding: 0 10px; padding: 0 10px;
table { table {
width: 100%; width: 100%;
tr{ tr {
background: #fff; background: #fff;
th,td { th,
td {
padding-left: 8px; padding-left: 8px;
} }
th { th {
@ -149,19 +145,16 @@
font-size: 12px; font-size: 12px;
font-weight: bold; font-weight: bold;
color: #333; color: #333;
border-bottom: 2px solid #ECEDEC; border-bottom: 2px solid #ecedec;
} }
td { td {
height: 32px; height: 32px;
line-height: 32px; line-height: 32px;
border-bottom: 1px solid #ECEDEC; border-bottom: 1px solid #ecedec;
span { span {
font-size: 12px; font-size: 12px;
color: #333; color: #333;
} }
.links {
color:#2d8cf0;
}
} }
&:hover { &:hover {
td { td {
@ -171,10 +164,10 @@
} }
} }
} }
.el-table--enable-row-hover .el-table__body tr:hover>td { .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #ddecff; background-color: #ddecff;
} }
.el-table th>.cell { .el-table th > .cell {
color: #555; color: #555;
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;
@ -182,7 +175,7 @@
.el-table td div { .el-table td div {
color: #666; color: #666;
} }
.el-table td>.cell { .el-table td > .cell {
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;
} }

Loading…
Cancel
Save