feat: org disable 整改 + biz_meeting 补字段 + 表格 0/1 显示标准化
1. backend: 禁用主账号 dual-write + 子账号登录校验主账号状态
- BizOrgServiceImpl.toggleStatus: 同步 biz_org.status 与 sys_user.status
- BizOrgController.toggleStatus: 严格校验 '0'/'1'
- BizAuthController.smsLogin 4.5: 子账号校验主账号状态拦截
2. fix: BizMeeting 补 9 个字段 getters/setters
- projectId / projectName / orgName / supervisionOpinion / supervisionBy
- supervisionTime / invitationUrl / scheduleUrl / laborSigned
- 解决 Meetings.vue 修改/复制 projectId 为空的 bug
3. frontend: 0/1 status 标准化显示
- 10 个 Orgs/People 表格 el-tag 由 raw 0/1 改为 正常/禁用
- 4 个 People 页面修复 row.status || '正常' 在 '0' 时不
回退的 bug (字符串 '0' 是 truthy)
- 筛选下拉 / 编辑表单 / onToggleStatus label 全部对齐 0/1 语义
- DB 迁移: 10 行脏数据 (7 正常/合作中 → 0, 3 禁用 → 1)
- 备份表 biz_org_backup_20260819
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -91,6 +91,10 @@ export const bizGet = (entity, id) => request.get(`/business/${entity}/${id}`)
|
||||
// opts 透传给 request (例如 { __silentError: true } 让拦截器不自动 toast, 由调用方控制)
|
||||
export const bizAdd = (entity, data, opts) => request.post(`/business/${entity}`, data, opts)
|
||||
export const bizUpdate = (entity, data, opts) => request.put(`/business/${entity}`, data, opts)
|
||||
|
||||
// org 启用/禁用: PUT /business/org/toggleStatus, 同步主账号 sys_user.status
|
||||
// (bizUpdate('org', {orgId, status}) 只改 biz_org.status, 不联动主账号, 已被 toggleStatus 替代)
|
||||
export const toggleOrgStatus = (orgId, status) => request.put('/business/org/toggleStatus', { orgId, status })
|
||||
export const bizDelete = (entity, ids) => request.delete(`/business/${entity}/${ids}`)
|
||||
|
||||
// 人员批量导入 (unitType: 'sponsor' | 'executor')
|
||||
|
||||
@@ -16,11 +16,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="合作状态">
|
||||
<el-select v-model="q.status" placeholder="请选择" clearable style="width:140px">
|
||||
<el-option label="正常" value="正常" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="禁用" value="禁用" />
|
||||
<el-option label="0正常" value="0" />
|
||||
<el-option label="1禁用" value="1" />
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -40,7 +37,7 @@
|
||||
<el-table-column prop="taxNo" label="税号/统一社会信用代码" min-width="180" />
|
||||
<el-table-column label="合作状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" width="120" align="center">
|
||||
@@ -91,9 +88,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isEdit" label="状态">
|
||||
<el-select v-model="form.status" style="width:160px">
|
||||
<el-option label="0正常" value="0" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="1禁用" value="1" />
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -108,7 +104,7 @@
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { bizList, bizAdd, bizUpdate } from '@/api/public'
|
||||
import { bizList, bizAdd, bizUpdate, toggleOrgStatus } from '@/api/public'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
|
||||
const router = useRouter()
|
||||
@@ -119,12 +115,11 @@ const loading = ref(false)
|
||||
const page = reactive({ pageNum: 1, pageSize: 10, total: 0 })
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '正常' || s === '0' || s === '合作中') return 'success'
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'info'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '禁用' || row.status === '1'
|
||||
return row.status === '1'
|
||||
}
|
||||
function formatDate(d) {
|
||||
if (!d) return ''
|
||||
@@ -162,7 +157,7 @@ async function onToggleStatus(row) {
|
||||
} catch { return }
|
||||
}
|
||||
try {
|
||||
await bizUpdate('org', { orgId: row.orgId, status: newStatus })
|
||||
await toggleOrgStatus(row.orgId, newStatus)
|
||||
ElMessage.success('已' + label)
|
||||
load()
|
||||
} catch (e) { ElMessage.error(e?.msg || '操作失败') }
|
||||
@@ -203,7 +198,7 @@ function onView(row) {
|
||||
`地址: ${row.address || '-'}\n` +
|
||||
`税号: ${row.taxNo || '-'}\n` +
|
||||
`联系人: ${row.contactName || '-'} (${row.contactPhone || '-'})\n` +
|
||||
`状态: ${row.status}\n` +
|
||||
`状态: ${row.status === '1' ? '禁用' : '正常'}\n` +
|
||||
`创建日期: ${formatDate(row.createTime)}`,
|
||||
'服务机构详情',
|
||||
{ confirmButtonText: '关闭' }
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<el-table-column prop="position" label="职务" min-width="100" />
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status || '正常' }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
@@ -106,11 +106,11 @@ const loading = ref(false)
|
||||
const page = reactive({ pageNum: 1, pageSize: 10, total: 0 })
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'success'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '禁用' || row.status === '1'
|
||||
return row.status === '1'
|
||||
}
|
||||
|
||||
async function load() {
|
||||
|
||||
@@ -26,11 +26,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="合作状态">
|
||||
<el-select v-model="q.status" placeholder="请选择" clearable style="width:140px">
|
||||
<el-option label="正常" value="正常" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="禁用" value="禁用" />
|
||||
<el-option label="0正常" value="0" />
|
||||
<el-option label="1禁用" value="1" />
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -59,7 +56,7 @@
|
||||
<el-table-column prop="taxNo" label="税号/统一社会信用代码" min-width="180" />
|
||||
<el-table-column label="合作状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" width="120" align="center">
|
||||
@@ -116,9 +113,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isEdit" label="状态">
|
||||
<el-select v-model="form.status" style="width:160px">
|
||||
<el-option label="正常/合作中" value="0" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="禁用" value="禁用" />
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -141,12 +137,11 @@ const loading = ref(false)
|
||||
const page = reactive({ pageNum: 1, pageSize: 10, total: 0 })
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '正常' || s === '0' || s === '合作中') return 'success'
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'info'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '禁用' || row.status === '1'
|
||||
return row.status === '1'
|
||||
}
|
||||
function formatDate(d) {
|
||||
if (!d) return ''
|
||||
@@ -171,7 +166,7 @@ function reset() {
|
||||
|
||||
async function onToggleStatus(row) {
|
||||
const disabled = isDisabled(row)
|
||||
const newStatus = disabled ? (row.orgType === 'sponsor' ? '正常' : '0') : '禁用'
|
||||
const newStatus = disabled ? '0' : '1' // 0=正常, 1=禁用
|
||||
const label = disabled ? '恢复' : '禁用'
|
||||
if (!disabled) {
|
||||
try {
|
||||
@@ -183,7 +178,7 @@ async function onToggleStatus(row) {
|
||||
} catch { return }
|
||||
}
|
||||
try {
|
||||
await bizUpdate('org', { orgId: row.orgId, status: newStatus })
|
||||
await toggleOrgStatus(row.orgId, newStatus)
|
||||
ElMessage.success('已' + label)
|
||||
load()
|
||||
} catch (e) { ElMessage.error(e?.msg || '操作失败') }
|
||||
@@ -224,7 +219,7 @@ function onView(row) {
|
||||
`地址: ${row.address || '-'}\n` +
|
||||
`税号: ${row.taxNo || '-'}\n` +
|
||||
`联系人: ${row.contactName || '-'} (${row.contactPhone || '-'})\n` +
|
||||
`状态: ${row.status}\n` +
|
||||
`状态: ${row.status === '1' ? '禁用' : '正常'}\n` +
|
||||
`创建日期: ${formatDate(row.createTime)}`,
|
||||
'公司详情',
|
||||
{ confirmButtonText: '关闭' }
|
||||
|
||||
@@ -17,11 +17,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="合作状态">
|
||||
<el-select v-model="q.status" placeholder="请选择" clearable style="width:140px">
|
||||
<el-option label="正常" value="正常" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="禁用" value="禁用" />
|
||||
<el-option label="0正常" value="0" />
|
||||
<el-option label="1禁用" value="1" />
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -41,7 +38,7 @@
|
||||
<el-table-column prop="taxNo" label="税号/统一社会信用代码" min-width="180" />
|
||||
<el-table-column label="合作状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" width="120" align="center">
|
||||
@@ -92,9 +89,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isEdit" label="状态">
|
||||
<el-select v-model="form.status" style="width:160px">
|
||||
<el-option label="正常" value="正常" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="禁用" value="禁用" />
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -109,7 +105,7 @@
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { bizList, bizAdd, bizUpdate } from '@/api/public'
|
||||
import { bizList, bizAdd, bizUpdate, toggleOrgStatus } from '@/api/public'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
|
||||
const router = useRouter()
|
||||
@@ -120,12 +116,11 @@ const loading = ref(false)
|
||||
const page = reactive({ pageNum: 1, pageSize: 10, total: 0 })
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '正常' || s === '0' || s === '合作中') return 'success'
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'info'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '禁用' || row.status === '1'
|
||||
return row.status === '1'
|
||||
}
|
||||
function formatDate(d) {
|
||||
if (!d) return ''
|
||||
@@ -150,7 +145,7 @@ function reset() {
|
||||
|
||||
async function onToggleStatus(row) {
|
||||
const disabled = isDisabled(row)
|
||||
const newStatus = disabled ? '正常' : '禁用'
|
||||
const newStatus = disabled ? '0' : '1' // 0=正常, 1=禁用
|
||||
const label = disabled ? '恢复' : '禁用'
|
||||
if (!disabled) {
|
||||
try {
|
||||
@@ -162,7 +157,7 @@ async function onToggleStatus(row) {
|
||||
} catch { return }
|
||||
}
|
||||
try {
|
||||
await bizUpdate('org', { orgId: row.orgId, status: newStatus })
|
||||
await toggleOrgStatus(row.orgId, newStatus)
|
||||
ElMessage.success('已' + label)
|
||||
load()
|
||||
} catch (e) { ElMessage.error(e?.msg || '操作失败') }
|
||||
@@ -174,7 +169,7 @@ const saving = ref(false)
|
||||
const formRef = ref(null)
|
||||
const form = reactive({
|
||||
orgId: null, orgType: 'sponsor', orgName: '', address: '', taxNo: '',
|
||||
contactName: '', contactPhone: '', status: '正常'
|
||||
contactName: '', contactPhone: '', status: '0'
|
||||
})
|
||||
const rules = {
|
||||
orgName: [{ required: true, message: '请输入公司名称', trigger: 'blur' }]
|
||||
@@ -184,7 +179,7 @@ function openAdd() {
|
||||
isEdit.value = false
|
||||
Object.assign(form, {
|
||||
orgId: null, orgType: 'sponsor', orgName: '', address: '', taxNo: '',
|
||||
contactName: '', contactPhone: '', status: '正常'
|
||||
contactName: '', contactPhone: '', status: '0'
|
||||
})
|
||||
dialogVisible.value = true
|
||||
}
|
||||
@@ -203,7 +198,7 @@ function onView(row) {
|
||||
`地址: ${row.address || '-'}\n` +
|
||||
`税号: ${row.taxNo || '-'}\n` +
|
||||
`联系人: ${row.contactName || '-'} (${row.contactPhone || '-'})\n` +
|
||||
`状态: ${row.status}\n` +
|
||||
`状态: ${row.status === '1' ? '禁用' : '正常'}\n` +
|
||||
`创建日期: ${formatDate(row.createTime)}`,
|
||||
'支持单位详情',
|
||||
{ confirmButtonText: '关闭' }
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<el-table-column prop="position" label="职务" min-width="100" />
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status || '正常' }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
@@ -107,11 +107,11 @@ const loading = ref(false)
|
||||
const page = reactive({ pageNum: 1, pageSize: 10, total: 0 })
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'success'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '禁用' || row.status === '1'
|
||||
return row.status === '1'
|
||||
}
|
||||
|
||||
async function load() {
|
||||
|
||||
@@ -15,10 +15,9 @@
|
||||
<el-input v-model="q.taxNo" placeholder="输入税号" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="合作状态">
|
||||
<el-select v-model="q.status" placeholder="请选择" clearable>
|
||||
<el-option label="0正常" value="0" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="1禁用" value="1" />
|
||||
<el-select v-model="q.status" placeholder="请选择" clearable style="width:140px">
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -34,7 +33,7 @@
|
||||
<el-table-column prop="taxNo" label="税号/统一社会信用代码" min-width="180" />
|
||||
<el-table-column label="合作状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" width="120" align="center">
|
||||
@@ -42,10 +41,13 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="contactName" label="联系人" width="100" align="center" />
|
||||
<el-table-column prop="contactPhone" label="联系电话" width="130" align="center" />
|
||||
<el-table-column label="操作" width="180" fixed="right">
|
||||
<el-table-column label="操作" width="240" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click="view(row)">查看</el-button>
|
||||
<el-button link type="primary" @click="goPeople(row)">人员管理</el-button>
|
||||
<el-button link :type="isDisabled(row) ? 'success' : 'danger'" @click="onToggleStatus(row)">
|
||||
{{ isDisabled(row) ? '恢复' : '禁用' }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -62,7 +64,7 @@
|
||||
<el-descriptions-item label="公司地址">{{ currentRow.address }}</el-descriptions-item>
|
||||
<el-descriptions-item label="税号/统一社会信用代码">{{ currentRow.taxNo }}</el-descriptions-item>
|
||||
<el-descriptions-item label="合作状态">
|
||||
<el-tag :type="statusTagType(currentRow.status)">{{ currentRow.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(currentRow.status)">{{ currentRow.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="创建日期">{{ currentRow.createTime ? String(currentRow.createTime).slice(0,10) : '' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人">{{ currentRow.contactName || '-' }}</el-descriptions-item>
|
||||
@@ -78,7 +80,8 @@
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { bizList } from '@/api/public'
|
||||
import { bizList, toggleOrgStatus } from '@/api/public'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
@@ -90,9 +93,11 @@ const currentRow = ref(null)
|
||||
const detailOpen = ref(false)
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '正常' || s === '0' || s === '合作中') return 'success'
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'info'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '1'
|
||||
}
|
||||
|
||||
async function load() {
|
||||
@@ -109,6 +114,28 @@ function goPeople(row) {
|
||||
router.push({ path: '/manager/executor-people', query: { orgId: row.orgId, orgName: row.orgName } })
|
||||
}
|
||||
|
||||
// 仅禁用主账号 (走 BizOrgServiceImpl.toggleStatus: 同步 biz_org.status + sys_user.status)
|
||||
// 子账号由 BizAuthController.smsLogin 4.5 节校验主账号状态拦截
|
||||
async function onToggleStatus(row) {
|
||||
const disabled = isDisabled(row)
|
||||
const newStatus = disabled ? '0' : '1' // 0=正常, 1=禁用
|
||||
const label = disabled ? '恢复' : '禁用'
|
||||
if (!disabled) {
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`确定要${label}「${row.orgName}」吗? ${label}后该企业主账号无法登录, 企业下子账号也将被拦截`,
|
||||
'确认',
|
||||
{ type: 'warning' }
|
||||
)
|
||||
} catch { return }
|
||||
}
|
||||
try {
|
||||
await toggleOrgStatus(row.orgId, newStatus)
|
||||
ElMessage.success('已' + label)
|
||||
load()
|
||||
} catch (e) { ElMessage.error(e?.msg || '操作失败') }
|
||||
}
|
||||
|
||||
onMounted(load)
|
||||
</script>
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<el-table-column prop="position" label="职务" min-width="100" />
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status || '正常' }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
@@ -106,11 +106,11 @@ const loading = ref(false)
|
||||
const page = reactive({ pageNum: 1, pageSize: 10, total: 0 })
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'success'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '禁用' || row.status === '1'
|
||||
return row.status === '1'
|
||||
}
|
||||
|
||||
async function load() {
|
||||
|
||||
@@ -23,9 +23,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="合作状态">
|
||||
<el-select v-model="q.status" placeholder="请选择" clearable>
|
||||
<el-option label="正常/合作中" value="0" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="禁用" value="禁用" />
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -49,7 +48,7 @@
|
||||
<el-table-column prop="taxNo" label="税号/统一社会信用代码" min-width="180" />
|
||||
<el-table-column label="合作状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" width="120" align="center">
|
||||
@@ -78,7 +77,7 @@
|
||||
<el-descriptions-item label="公司地址">{{ currentRow.address }}</el-descriptions-item>
|
||||
<el-descriptions-item label="税号/统一社会信用代码">{{ currentRow.taxNo }}</el-descriptions-item>
|
||||
<el-descriptions-item label="合作状态">
|
||||
<el-tag :type="statusTagType(currentRow.status)">{{ currentRow.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(currentRow.status)">{{ currentRow.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="创建日期">{{ currentRow.createTime ? String(currentRow.createTime).slice(0,10) : '' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人">{{ currentRow.contactName || '-' }}</el-descriptions-item>
|
||||
@@ -105,9 +104,8 @@ const currentRow = ref(null)
|
||||
const detailOpen = ref(false)
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '正常' || s === '0' || s === '合作中') return 'success'
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'info'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
|
||||
async function load() {
|
||||
|
||||
@@ -15,10 +15,9 @@
|
||||
<el-input v-model="q.taxNo" placeholder="输入税号" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="合作状态">
|
||||
<el-select v-model="q.status" placeholder="请选择" clearable>
|
||||
<el-option label="正常/合作中" value="0" />
|
||||
<el-option label="合作中" value="合作中" />
|
||||
<el-option label="禁用" value="禁用" />
|
||||
<el-select v-model="q.status" placeholder="请选择" clearable style="width:140px">
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -34,7 +33,7 @@
|
||||
<el-table-column prop="taxNo" label="税号/统一社会信用代码" min-width="180" />
|
||||
<el-table-column label="合作状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" width="120" align="center">
|
||||
@@ -42,10 +41,13 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="contactName" label="联系人" width="100" align="center" />
|
||||
<el-table-column prop="contactPhone" label="联系电话" width="130" align="center" />
|
||||
<el-table-column label="操作" width="180" fixed="right">
|
||||
<el-table-column label="操作" width="240" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click="view(row)">查看</el-button>
|
||||
<el-button link type="primary" @click="goPeople(row)">人员管理</el-button>
|
||||
<el-button link :type="isDisabled(row) ? 'success' : 'danger'" @click="onToggleStatus(row)">
|
||||
{{ isDisabled(row) ? '恢复' : '禁用' }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -62,7 +64,7 @@
|
||||
<el-descriptions-item label="公司地址">{{ currentRow.address }}</el-descriptions-item>
|
||||
<el-descriptions-item label="税号/统一社会信用代码">{{ currentRow.taxNo }}</el-descriptions-item>
|
||||
<el-descriptions-item label="合作状态">
|
||||
<el-tag :type="statusTagType(currentRow.status)">{{ currentRow.status }}</el-tag>
|
||||
<el-tag :type="statusTagType(currentRow.status)">{{ currentRow.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="创建日期">{{ currentRow.createTime ? String(currentRow.createTime).slice(0,10) : '' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人">{{ currentRow.contactName || '-' }}</el-descriptions-item>
|
||||
@@ -78,7 +80,8 @@
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { bizList } from '@/api/public'
|
||||
import { bizList, toggleOrgStatus } from '@/api/public'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
@@ -90,9 +93,11 @@ const currentRow = ref(null)
|
||||
const detailOpen = ref(false)
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '正常' || s === '0' || s === '合作中') return 'success'
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'info'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '1'
|
||||
}
|
||||
|
||||
async function load() {
|
||||
@@ -109,6 +114,28 @@ function goPeople(row) {
|
||||
router.push({ path: '/manager/sponsor-people', query: { orgId: row.orgId, orgName: row.orgName } })
|
||||
}
|
||||
|
||||
// 仅禁用主账号 (走 BizOrgServiceImpl.toggleStatus: 同步 biz_org.status + sys_user.status)
|
||||
// 子账号由 BizAuthController.smsLogin 4.5 节校验主账号状态拦截
|
||||
async function onToggleStatus(row) {
|
||||
const disabled = isDisabled(row)
|
||||
const newStatus = disabled ? '0' : '1' // 0=正常, 1=禁用
|
||||
const label = disabled ? '恢复' : '禁用'
|
||||
if (!disabled) {
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`确定要${label}「${row.orgName}」吗? ${label}后该企业主账号无法登录, 企业下子账号也将被拦截`,
|
||||
'确认',
|
||||
{ type: 'warning' }
|
||||
)
|
||||
} catch { return }
|
||||
}
|
||||
try {
|
||||
await toggleOrgStatus(row.orgId, newStatus)
|
||||
ElMessage.success('已' + label)
|
||||
load()
|
||||
} catch (e) { ElMessage.error(e?.msg || '操作失败') }
|
||||
}
|
||||
|
||||
onMounted(load)
|
||||
</script>
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<el-table-column prop="position" label="职务" min-width="100" />
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status || '正常' }}</el-tag>
|
||||
<el-tag :type="statusTagType(row.status)" disable-transitions>{{ row.status === '1' ? '禁用' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
@@ -106,11 +106,11 @@ const loading = ref(false)
|
||||
const page = reactive({ pageNum: 1, pageSize: 10, total: 0 })
|
||||
|
||||
function statusTagType(s) {
|
||||
if (s === '禁用' || s === '1') return 'danger'
|
||||
return 'success'
|
||||
// 统一: 0=正常(success), 1=禁用(danger)
|
||||
return s === '1' ? 'danger' : 'success'
|
||||
}
|
||||
function isDisabled(row) {
|
||||
return row.status === '禁用' || row.status === '1'
|
||||
return row.status === '1'
|
||||
}
|
||||
|
||||
async function load() {
|
||||
|
||||
Reference in New Issue
Block a user