|
@@ -35,13 +35,15 @@
|
|
|
<el-button
|
|
|
hc-btn
|
|
|
color="#e03997" style="color: white;"
|
|
|
+ :loading="resetLoad"
|
|
|
+ @click="resetModalClick"
|
|
|
>
|
|
|
<HcIcon name="restart" />
|
|
|
<span>重置编号</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative-basic-code-delete">
|
|
|
- <el-button hc-btn color="red">
|
|
|
+ <el-button hc-btn color="red" :loading="delModalLoad" @click="delModalClick">
|
|
|
<HcIcon name="delete-bin-2" />
|
|
|
<span>删除</span>
|
|
|
</el-button>
|
|
@@ -55,20 +57,22 @@
|
|
|
@selection-change="tableSelection"
|
|
|
>
|
|
|
<template #type="{ row }">
|
|
|
- <el-select v-model="row.type" placeholder="请选择">
|
|
|
+ <el-select v-if="row.isEdit" v-model="row.type" placeholder="请选择">
|
|
|
<el-option
|
|
|
- v-for="item in menuOptions"
|
|
|
+ v-for="item in typeOptions"
|
|
|
:key="item.key"
|
|
|
:label="item.label"
|
|
|
:value="item.key"
|
|
|
/>
|
|
|
</el-select>
|
|
|
+ <span v-else>{{ getTypeLabel(row.type) }}</span>
|
|
|
</template>
|
|
|
<template #data="{ row }">
|
|
|
- <el-input v-model="row.data" placeholder="请输入数据" />
|
|
|
+ <el-input v-if="row.isEdit" v-model="row.data" placeholder="请输入数据" />
|
|
|
+ <span v-else>{{ row.data }}</span>
|
|
|
</template>
|
|
|
<template #isAutoIncrement="{ row }">
|
|
|
- <el-checkbox v-model="row.isAutoIncrement">是否自增</el-checkbox>
|
|
|
+ <el-checkbox v-if="row?.type === '6'" v-model="row.isAutoIncrement" :disabled="!row.isEdit">是否自增</el-checkbox>
|
|
|
</template>
|
|
|
<template #action="{ row }">
|
|
|
<el-button
|
|
@@ -84,25 +88,23 @@
|
|
|
v-if="row.isEdit"
|
|
|
type="success"
|
|
|
link
|
|
|
- @click="handleSave(row)"
|
|
|
+ :loading="row.saveLoading"
|
|
|
+ @click="handleSave(row)"
|
|
|
>
|
|
|
<HcIcon name="save-3" />
|
|
|
保存
|
|
|
</el-button>
|
|
|
<el-button
|
|
|
- type="danger"
|
|
|
+ v-del-com:[handleDelete]="row"
|
|
|
+ type="danger"
|
|
|
+
|
|
|
link
|
|
|
- @click="handleDelete(row)"
|
|
|
>
|
|
|
<HcIcon name="delete-bin-2" />
|
|
|
删除
|
|
|
</el-button>
|
|
|
</template>
|
|
|
</HcTable>
|
|
|
-
|
|
|
- <template #action>
|
|
|
- <HcPages :pages="searchForm" @change="pageChange" />
|
|
|
- </template>
|
|
|
</hc-card>
|
|
|
</hc-body>
|
|
|
</template>
|
|
@@ -110,15 +112,28 @@
|
|
|
<script setup>
|
|
|
import { onMounted, ref } from 'vue'
|
|
|
import { getDictionary } from '~api/other'
|
|
|
-import { getArrValue } from 'js-fast-way'
|
|
|
-
|
|
|
+import { arrToId, getArrValue } from 'js-fast-way'
|
|
|
+import dataApi from '~api/basic/code'
|
|
|
+import { useAppStore } from '~src/store'
|
|
|
+import { HcDelMsg } from 'hc-vue3-ui'
|
|
|
+const store = useAppStore()
|
|
|
+const projectId = ref(store.getProjectId)
|
|
|
+const contractId = ref(store.getContractId)
|
|
|
onMounted(()=>{
|
|
|
- getMenuOptions()
|
|
|
+ getTypeOptions()
|
|
|
+ getTableData()
|
|
|
})
|
|
|
//左侧菜单
|
|
|
const menuKey = ref('1')
|
|
|
-const menuOptions = ref([])
|
|
|
-const getMenuOptions = async ()=>{
|
|
|
+const menuOptions = ref([
|
|
|
+ { key: '1', label: '材料编号' },
|
|
|
+ { key: '2', label: '样品编号' },
|
|
|
+ { key: '3', label: '委托单编号' },
|
|
|
+ { key: '4', label: '记录表编号' },
|
|
|
+ { key: '5', label: '报告表编号' },
|
|
|
+])
|
|
|
+const typeOptions = ref([])
|
|
|
+const getTypeOptions = async ()=>{
|
|
|
const { data } = await getDictionary({
|
|
|
code: 'trial_number_rule',
|
|
|
})
|
|
@@ -131,24 +146,19 @@ const getMenuOptions = async ()=>{
|
|
|
key: newData[i]['dictKey'],
|
|
|
})
|
|
|
}
|
|
|
- menuOptions.value = newArr
|
|
|
+ typeOptions.value = newArr
|
|
|
+}
|
|
|
+// 查找typeOptions中对应的label
|
|
|
+const getTypeLabel = (typeKey) => {
|
|
|
+ return typeOptions.value.find(item => item.key === typeKey)?.label || '未知类型'
|
|
|
}
|
|
|
const handleMenuValue = (item) => {
|
|
|
- console.log(item)
|
|
|
+
|
|
|
menuKey.value = item.key
|
|
|
}
|
|
|
-//搜索表单
|
|
|
-const searchForm = ref({
|
|
|
-
|
|
|
- current: 1, size: 20, total: 0,
|
|
|
-})
|
|
|
|
|
|
-//分页被点击
|
|
|
-const pageChange = ({ current, size }) => {
|
|
|
- searchForm.value.current = current
|
|
|
- searchForm.value.size = size
|
|
|
- getTableData()
|
|
|
-}
|
|
|
+
|
|
|
+
|
|
|
//获取数据
|
|
|
const tableLoad = ref(true)
|
|
|
const tableData = ref([])
|
|
@@ -161,21 +171,21 @@ const tableColumn = ref([
|
|
|
|
|
|
])
|
|
|
const getTableData = async () => {
|
|
|
- // tableLoad.value = true
|
|
|
- // const { error, code, data } = await approachApi.queryPage({
|
|
|
- // projectId: projectId.value,
|
|
|
- // contractId: contractId.value,
|
|
|
- // ...searchForm.value,
|
|
|
- // })
|
|
|
- // //处理数据
|
|
|
- // tableLoad.value = false
|
|
|
- // if (!error && code === 200) {
|
|
|
- // tableData.value = getArrValue(data['records'])
|
|
|
- // searchForm.value.total = data.total || 0
|
|
|
- // } else {
|
|
|
- // tableData.value = []
|
|
|
- // searchForm.value.total = 0
|
|
|
- // }
|
|
|
+ tableLoad.value = true
|
|
|
+ const { error, code, data } = await dataApi.getTrialNumberRule({
|
|
|
+ projectId: projectId.value,
|
|
|
+ contractId: contractId.value,
|
|
|
+ type: menuKey.value,
|
|
|
+ })
|
|
|
+ //处理数据
|
|
|
+ tableLoad.value = false
|
|
|
+ if (!error && code === 200) {
|
|
|
+ tableData.value = getArrValue(data['records'])
|
|
|
+
|
|
|
+ } else {
|
|
|
+ tableData.value = []
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//多选
|
|
@@ -187,19 +197,67 @@ const tableSelection = (rows) => {
|
|
|
const handleEdit = (row) => {
|
|
|
row.isEdit = true
|
|
|
}
|
|
|
+const saveLoading = ref(false)
|
|
|
|
|
|
// 保存行
|
|
|
const handleSave = async (row) => {
|
|
|
- row.isEdit = false
|
|
|
+ saveLoading.value = true
|
|
|
+ const { error, code, msg } = await dataApi.save({
|
|
|
+ ...row,
|
|
|
+ projectId: projectId.value,
|
|
|
+ contractId: contractId.value,
|
|
|
+ })
|
|
|
+ //处理数据
|
|
|
+ saveLoading.value = false
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window?.$message?.success(msg)
|
|
|
+ row.isEdit = false
|
|
|
+
|
|
|
+
|
|
|
+ getTableData()
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-// 删除行
|
|
|
-const handleDelete = async (row) => {
|
|
|
- console.log(row)
|
|
|
+
|
|
|
+const handleDelete = async ({ item }, resolve) => {
|
|
|
+ await delData(item.id)
|
|
|
+ resolve()
|
|
|
+}
|
|
|
+//删除请求
|
|
|
+const delData = async (id) => {
|
|
|
+ const { error, code, msg } = await dataApi.delData({
|
|
|
+ contractId: contractId.value,
|
|
|
+ pkeyId: id,
|
|
|
+
|
|
|
+ }, false)
|
|
|
+ //判断状态
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window?.$message?.success(msg)
|
|
|
+ getTableData()
|
|
|
+ } else {
|
|
|
+ window?.$message?.error(msg)
|
|
|
+ }
|
|
|
+}
|
|
|
+//删除节点
|
|
|
+const delModalLoad = ref(false)
|
|
|
+const delModalClick = () => {
|
|
|
+ delModalLoad.value = true
|
|
|
+ const rows = tableCheckedKeys.value
|
|
|
+ const ids = arrToId(rows)
|
|
|
+ HcDelMsg(async (resolve) => {
|
|
|
+ await delData(ids)
|
|
|
+ delModalLoad.value = false
|
|
|
+ resolve() //关闭弹窗的回调
|
|
|
+ })
|
|
|
}
|
|
|
const handleAdd = () => {
|
|
|
tableData.value.push({
|
|
|
isEdit: true,
|
|
|
})
|
|
|
}
|
|
|
+const resetLoad = ref(false)
|
|
|
+const resetModalClick = () => {
|
|
|
+ getTableData()
|
|
|
+}
|
|
|
</script>
|