fix: 物料页的「撤销」按钮文案改成「撤销作废」
「撤销」在中文 UI 里默认指撤销上一步(Ctrl+Z),看不出在撤销什么;这一页又 没有状态列(文案即状态),用户看到一行数据和绿色「撤销」按钮,无从判断这条 物料被作废了。改成「撤销作废」后,按钮自身就说明了这条物料怎么了。 只改这一处按钮文案。全站其他实体(仓库与库位、主数据、组织、角色、往来单位) 仍用「停用/启用」,那是另一套配对,跟这里的「作废/撤销作废」不冲突。 测试补 1 条,同时锁住两个入口的互斥关系(作废的那行不该再有「作废」,有效的 那行不该有「撤销作废」)。变异验证两处:文案改回「撤销」、以及把作废按钮的 状态条件去掉让两个入口同时出现,断言都变红。
This commit is contained in:
parent
43f680219e
commit
b9c0681c47
|
|
@ -1,6 +1,6 @@
|
|||
import { flushPromises, mount } from '@vue/test-utils'
|
||||
import ElementPlus, { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { beforeEach, describe, expect, test, vi } from 'vitest'
|
||||
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
|
||||
import Materials from './Materials.vue'
|
||||
import { codeRulesApi, materialCategoriesApi, unitsApi } from '../api/masterData'
|
||||
|
||||
|
|
@ -324,3 +324,41 @@ describe('物料检索框的候选项', () => {
|
|||
wrapper.unmount()
|
||||
})
|
||||
})
|
||||
|
||||
describe('物料列表的作废入口文案', () => {
|
||||
beforeEach(() => {
|
||||
materialCategoriesApi.list.mockResolvedValue({ data: categories })
|
||||
unitsApi.list.mockResolvedValue({ data: [] })
|
||||
materialsStore.materials = [
|
||||
{ id: 1, material_code: 'A010201', name: '作废物料', status: 'obsolete' },
|
||||
{ id: 2, material_code: 'A010202', name: '有效物料', status: 'active' }
|
||||
]
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
materialsStore.materials = []
|
||||
})
|
||||
|
||||
// 按钮文案得精确匹配:「撤销作废」里也含「作废」,用 includes 会把两个按钮看成同一个。
|
||||
function exactButton(wrapper, text) {
|
||||
return wrapper.findAll('button').find(button => button.text().trim() === text)
|
||||
}
|
||||
|
||||
// 这一页没有状态列(文案即状态),所以按钮文案本身得说清这条物料怎么了。
|
||||
// 「撤销」在中文 UI 里默认指撤销上一步(Ctrl+Z),看不出在撤销什么;「撤销作废」
|
||||
// 才读得出「这条被作废了,点这里撤销那次作废」。
|
||||
test('作废的那行显示「撤销作废」,有效的那行显示「作废」', async () => {
|
||||
const wrapper = mountMaterials()
|
||||
await flushPromises()
|
||||
|
||||
const restore = exactButton(wrapper, '撤销作废')
|
||||
const obsolete = exactButton(wrapper, '作废')
|
||||
|
||||
expect(restore).toBeTruthy()
|
||||
expect(obsolete).toBeTruthy()
|
||||
// 两个入口互斥:作废的那行不该再有「作废」,有效的那行不该有「撤销作废」。
|
||||
expect(restore.element.closest('tr').textContent).toContain('作废物料')
|
||||
expect(obsolete.element.closest('tr').textContent).toContain('有效物料')
|
||||
wrapper.unmount()
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@
|
|||
<el-button size="small" @click="showDetail(row)">详情</el-button>
|
||||
<el-button v-if="authStore.isAdmin" size="small" type="primary" @click="showEditModal(row)">编辑</el-button>
|
||||
<el-button v-if="authStore.isAdmin && row.status !== 'obsolete'" size="small" type="danger" @click="handleDelete(row.id)">作废</el-button>
|
||||
<el-button v-if="authStore.isAdmin && row.status === 'obsolete'" size="small" type="success" @click="handleRestore(row.id)">撤销</el-button>
|
||||
<el-button v-if="authStore.isAdmin && row.status === 'obsolete'" size="small" type="success" @click="handleRestore(row.id)">撤销作废</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</BaseTable>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user