|
|
@@ -4,12 +4,25 @@
|
|
|
<template #header>
|
|
|
<div class="card-header">
|
|
|
<div class="header-left">
|
|
|
- <el-icon :size="20" color="#409EFF"><List /></el-icon>
|
|
|
+ <el-icon :size="20" color="#409EFF">
|
|
|
+ <List/>
|
|
|
+ </el-icon>
|
|
|
<span class="page-title">标段管理</span>
|
|
|
</div>
|
|
|
<div class="search-right">
|
|
|
- <el-button type="primary" plain @click="handleAdd" v-hasPermi="['business:objtend:add']"><el-icon><Plus /></el-icon> 新增</el-button>
|
|
|
- <el-button type="danger" plain :disabled="multiple" @click="handleDelete" v-hasPermi="['business:objtend:remove']"><el-icon><Delete /></el-icon> 删除</el-button>
|
|
|
+ <el-button type="primary" plain @click="handleAdd" v-hasPermi="['business:objtend:add']">
|
|
|
+ <el-icon>
|
|
|
+ <Plus/>
|
|
|
+ </el-icon>
|
|
|
+ 新增
|
|
|
+ </el-button>
|
|
|
+ <el-button type="danger" plain :disabled="multiple" @click="handleDelete"
|
|
|
+ v-hasPermi="['business:objtend:remove']">
|
|
|
+ <el-icon>
|
|
|
+ <Delete/>
|
|
|
+ </el-icon>
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -17,23 +30,37 @@
|
|
|
<div class="search-bar" v-show="showSearch">
|
|
|
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="80px">
|
|
|
<el-form-item label="标段名称" prop="tendName">
|
|
|
- <el-input v-model="queryParams.tendName" placeholder="请输入标段名称" clearable @keyup.enter="handleQuery" />
|
|
|
+ <el-input v-model="queryParams.tendName" placeholder="请输入标段名称" clearable @keyup.enter="handleQuery"/>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" @click="handleQuery"><el-icon><Search /></el-icon> 搜索</el-button>
|
|
|
- <el-button @click="resetQuery"><el-icon><Refresh /></el-icon> 重置</el-button>
|
|
|
+ <el-button type="primary" @click="handleQuery">
|
|
|
+ <el-icon>
|
|
|
+ <Search/>
|
|
|
+ </el-icon>
|
|
|
+ 搜索
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="resetQuery">
|
|
|
+ <el-icon>
|
|
|
+ <Refresh/>
|
|
|
+ </el-icon>
|
|
|
+ 重置
|
|
|
+ </el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
|
|
|
- <el-table :height="tableHeight" v-loading="loading" :data="objTendList" @selection-change="handleSelectionChange">
|
|
|
- <el-table-column type="selection" width="50" align="center" />
|
|
|
- <el-table-column label="标段名称" align="center" prop="tendName" :show-overflow-tooltip="true" />
|
|
|
- <el-table-column label="所属工程" align="center" prop="engName" :show-overflow-tooltip="true" min-width="140" />
|
|
|
- <el-table-column label="所属单位" align="center" prop="orgName" :show-overflow-tooltip="true" min-width="140" />
|
|
|
- <el-table-column label="负责人" align="center" prop="legPers" :show-overflow-tooltip="true" min-width="100" />
|
|
|
- <el-table-column label="联系电话" align="center" prop="legTel" :show-overflow-tooltip="true" min-width="120" />
|
|
|
- <el-table-column label="合同金额" align="center" prop="conAmout" :show-overflow-tooltip="true" min-width="120" />
|
|
|
+ <el-table height="calc(100% - 100px)" v-loading="loading" :data="objTendList"
|
|
|
+ @selection-change="handleSelectionChange">
|
|
|
+ <el-table-column type="selection" width="50" align="center"/>
|
|
|
+ <el-table-column label="标段名称" align="left" header-align="center" prop="tendName" width="200"
|
|
|
+ :show-overflow-tooltip="true"/>
|
|
|
+ <el-table-column label="所属工程" align="left" header-align="center" prop="engName" width="200"
|
|
|
+ :show-overflow-tooltip="true" min-width="140"/>
|
|
|
+ <el-table-column label="所属单位" align="left" header-align="center" prop="orgName" width="200"
|
|
|
+ :show-overflow-tooltip="true" min-width="140"/>
|
|
|
+ <el-table-column label="负责人" align="center" prop="legPers" :show-overflow-tooltip="true" min-width="100"/>
|
|
|
+ <el-table-column label="联系电话" align="center" prop="legTel" :show-overflow-tooltip="true" min-width="120"/>
|
|
|
+ <el-table-column label="合同金额" align="center" prop="conAmout" :show-overflow-tooltip="true" min-width="120"/>
|
|
|
<el-table-column label="完工状态" align="center" prop="stat" min-width="90">
|
|
|
<template #default="scope">
|
|
|
<el-tag v-if="scope.row.stat === '1'" type="warning">在建</el-tag>
|
|
|
@@ -41,30 +68,31 @@
|
|
|
<span v-else>{{ scope.row.stat }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="备注" align="center" prop="note" :show-overflow-tooltip="true" min-width="120" />
|
|
|
-
|
|
|
- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="260">
|
|
|
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="260" fixed="right">
|
|
|
<template #default="scope">
|
|
|
<el-button link type="primary" @click="handleUpdate(scope.row)"
|
|
|
- v-hasPermi="['business:objtend:edit']">修改</el-button>
|
|
|
+ v-hasPermi="['business:objtend:edit']">修改
|
|
|
+ </el-button>
|
|
|
<el-button link type="success" @click="handleViewOrg(scope.row)"
|
|
|
- v-hasPermi="['business:reltendorg:list']">参建单位</el-button>
|
|
|
+ v-hasPermi="['business:reltendorg:list']">参建单位/成员
|
|
|
+ </el-button>
|
|
|
<el-button link type="danger" @click="handleDelete(scope.row)"
|
|
|
- v-hasPermi="['business:objtend:remove']">删除</el-button>
|
|
|
+ v-hasPermi="['business:objtend:remove']">删除
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
<div class="pagination">
|
|
|
<el-pagination
|
|
|
- v-show="total > 0"
|
|
|
- v-model:current-page="queryParams.pageNum"
|
|
|
- v-model:page-size="queryParams.pageSize"
|
|
|
- :total="total"
|
|
|
- :page-sizes="[10, 20, 50, 100]"
|
|
|
- layout="total, sizes, prev, pager, next, jumper"
|
|
|
- @size-change="getList"
|
|
|
- @current-change="getList"
|
|
|
+ v-show="total > 0"
|
|
|
+ v-model:current-page="queryParams.pageNum"
|
|
|
+ v-model:page-size="queryParams.pageSize"
|
|
|
+ :total="total"
|
|
|
+ :page-sizes="[10, 20, 50, 100]"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ @size-change="getList"
|
|
|
+ @current-change="getList"
|
|
|
/>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
@@ -73,57 +101,65 @@
|
|
|
<el-dialog :title="title" v-model="open" width="760px" append-to-body @closed="cancel">
|
|
|
<el-form ref="objTendRef" :model="form" :rules="rules" label-width="120px" class="tend-form">
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="标段名称" prop="tendName">
|
|
|
- <el-input v-model="form.tendName" placeholder="请输入标段名称" />
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="关联工程" prop="engGuid">
|
|
|
+ <div style="display:flex; width:100%; gap:8px;">
|
|
|
+ <el-input :model-value="engName" placeholder="点击右侧按钮选择工程" readonly clearable
|
|
|
+ @clear="handleClearEng"/>
|
|
|
+ <el-button type="primary" plain @click="handleOpenEngDialog">
|
|
|
+ <el-icon>
|
|
|
+ <Search/>
|
|
|
+ </el-icon>
|
|
|
+ 选择工程
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <EngSelect v-model="form.engGuid" label="关联工程" prop="engGuid" placeholder="请输入工程名称搜索" required />
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <ProjSelect v-model="form.orgProjDeptGuid" label="关联项目" prop="orgProjDeptGuid" placeholder="请输入项目名称搜索"
|
|
|
- required />
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="标段名称" prop="tendName">
|
|
|
+ <el-input v-model="form.tendName" placeholder="请输入标段名称"/>
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <OrgSelect v-model="form.orgGuid" label="关联单位" placeholder="请输入单位名称搜索" />
|
|
|
+ <el-col :span="24">
|
|
|
+ <OrgSelect v-model="form.orgGuid" label="关联单位" placeholder="请输入单位名称搜索" required
|
|
|
+ :disabled="!isSuperAdmin"/>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="负责人" prop="legPers">
|
|
|
- <el-input v-model="form.legPers" placeholder="请输入负责人" />
|
|
|
+ <el-input v-model="form.legPers" placeholder="请输入负责人"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="联系电话" prop="legTel">
|
|
|
- <el-input v-model="form.legTel" placeholder="请输入联系电话" />
|
|
|
+ <el-input v-model="form.legTel" placeholder="请输入联系电话"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="合同金额" prop="conAmout">
|
|
|
- <el-input v-model="form.conAmout" placeholder="请输入合同金额" type="number" />
|
|
|
+ <el-input v-model="form.conAmout" placeholder="请输入合同金额" type="number"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="安全生产费用" prop="totalSpc">
|
|
|
- <el-input v-model="form.totalSpc" placeholder="请输入安全生产费用总和" type="number" />
|
|
|
+ <el-input v-model="form.totalSpc" placeholder="请输入安全生产费用总和" type="number"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="完工状态" prop="stat">
|
|
|
<el-select v-model="form.stat" placeholder="请选择完工状态" style="width:100%">
|
|
|
- <el-option label="在建" value="1" />
|
|
|
- <el-option label="已完工" value="2" />
|
|
|
+ <el-option label="在建" value="1"/>
|
|
|
+ <el-option label="已完工" value="2"/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="建设内容" prop="consCont">
|
|
|
- <el-input v-model="form.consCont" type="textarea" :rows="3" placeholder="请输入建设内容" />
|
|
|
+ <el-input v-model="form.consCont" type="textarea" :rows="3" placeholder="请输入建设内容"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="备注" prop="note">
|
|
|
- <el-input v-model="form.note" type="textarea" :rows="2" placeholder="请输入备注" />
|
|
|
+ <el-input v-model="form.note" type="textarea" :rows="2" placeholder="请输入备注"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -134,65 +170,290 @@
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <!-- ====== 标段参建单位关系 Dialog ====== -->
|
|
|
- <el-dialog title="标段参建单位" v-model="relOpen" width="900px" append-to-body>
|
|
|
- <el-alert v-if="relTendRow.tendName" :title="'当前标段:' + relTendRow.tendName" type="info" :closable="false"
|
|
|
- style="margin-bottom:12px" />
|
|
|
- <el-row class="mb8">
|
|
|
- <el-col :span="24">
|
|
|
- <el-form :inline="true" @submit.prevent>
|
|
|
- <el-form-item label="参建单位">
|
|
|
- <el-select v-model="relForm.orgUwatGuid" filterable remote clearable reserve-keyword
|
|
|
- :remote-method="remoteSearchRelOrg" :loading="relOrgLoading" placeholder="请输入参建单位名称搜索"
|
|
|
- style="width:240px">
|
|
|
- <el-option v-for="item in relOrgOptions" :key="item.guid" :label="item.orgCode + ' - ' + item.orgName"
|
|
|
- :value="item.guid" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="submitRelForm"><el-icon>
|
|
|
- <Plus />
|
|
|
- </el-icon> 添加参建单位</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-table v-loading="relLoading" :data="relOrgList" border>
|
|
|
- <el-table-column label="参建单位代码" align="center" prop="orgCode" :show-overflow-tooltip="true" min-width="120" />
|
|
|
- <el-table-column label="参建单位名称" align="center" prop="orgName" :show-overflow-tooltip="true" min-width="150" />
|
|
|
- <el-table-column label="参建单位类型" align="center" prop="orgType" :show-overflow-tooltip="true" min-width="100">
|
|
|
+ <!-- ====== 选择工程 Dialog(OBJ_ENG) ====== -->
|
|
|
+ <el-dialog title="选择工程" v-model="engOpen" width="760px" append-to-body :close-on-click-modal="false">
|
|
|
+ <div class="search-bar">
|
|
|
+ <el-form :model="engQuery" :inline="true" @submit.prevent>
|
|
|
+ <el-form-item label="工程编码" prop="engCode">
|
|
|
+ <el-input v-model="engQuery.engCode" placeholder="请输入工程编码" clearable style="width:140px"
|
|
|
+ @keyup.enter="handleEngQuery"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="工程名称" prop="engName">
|
|
|
+ <el-input v-model="engQuery.engName" placeholder="请输入工程名称" clearable style="width:160px"
|
|
|
+ @keyup.enter="handleEngQuery"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="工程类型" prop="engType">
|
|
|
+ <el-select v-model="engQuery.engType" placeholder="请选择工程类型" clearable style="width:120px">
|
|
|
+ <el-option v-for="d in slaj_eng_type" :key="d.value" :label="d.label" :value="d.value"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="handleEngQuery">
|
|
|
+ <el-icon>
|
|
|
+ <Search/>
|
|
|
+ </el-icon>
|
|
|
+ 搜索
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="resetEngQuery">
|
|
|
+ <el-icon>
|
|
|
+ <Refresh/>
|
|
|
+ </el-icon>
|
|
|
+ 重置
|
|
|
+ </el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <el-table v-loading="engLoading" :data="engList" height="360" highlight-current-row
|
|
|
+ @row-click="handleEngSelect">
|
|
|
+ <el-table-column label="工程编码" align="center" prop="engCode" width="160" :show-overflow-tooltip="true"/>
|
|
|
+ <el-table-column label="工程名称" align="left" prop="engName" :show-overflow-tooltip="true" min-width="180"/>
|
|
|
+ <el-table-column label="工程类型" align="center" prop="engType" width="110">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :options="slaj_uwat_org_type" :value="scope.row.orgType" />
|
|
|
+ <dict-tag :options="slaj_eng_type" :value="scope.row.engType"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作" align="center" width="100">
|
|
|
+ <el-table-column label="操作" align="center" width="80">
|
|
|
<template #default="scope">
|
|
|
- <el-button link type="danger" @click="handleRelDelete(scope.row)">解除</el-button>
|
|
|
+ <el-button link type="primary" @click.stop="handleEngSelect(scope.row)">选择</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
+ <div class="pagination">
|
|
|
+ <el-pagination
|
|
|
+ v-show="engTotal > 0"
|
|
|
+ v-model:current-page="engQuery.pageNum"
|
|
|
+ v-model:page-size="engQuery.pageSize"
|
|
|
+ :total="engTotal"
|
|
|
+ :page-sizes="[10, 20, 50, 100]"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ @size-change="loadEngList"
|
|
|
+ @current-change="loadEngList"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="engOpen = false">取消</el-button>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!-- ====== 标段配置 Dialog(参建单位 + 项目组成员) ====== -->
|
|
|
+ <el-dialog title="标段配置" v-model="relOpen" width="920px" append-to-body>
|
|
|
+ <el-alert v-if="relTendRow.tendName" :title="'当前标段:' + relTendRow.tendName" type="info" :closable="false"
|
|
|
+ style="margin-bottom:12px"/>
|
|
|
+ <el-tabs v-model="relTab">
|
|
|
+ <!-- ====== 参建单位(REL_TEND_ORG) ====== -->
|
|
|
+ <el-tab-pane label="参建单位" name="org">
|
|
|
+ <div class="search-bar">
|
|
|
+ <el-form :model="relCandParams" :inline="true" @submit.prevent>
|
|
|
+ <el-form-item label="单位代码" prop="orgCode">
|
|
|
+ <el-input v-model="relCandParams.orgCode" placeholder="请输入单位代码" clearable style="width:140px"
|
|
|
+ @keyup.enter="handleRelCandQuery"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="单位名称" prop="orgName">
|
|
|
+ <el-input v-model="relCandParams.orgName" placeholder="请输入单位名称" clearable style="width:160px"
|
|
|
+ @keyup.enter="handleRelCandQuery"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="单位类型" prop="orgType">
|
|
|
+ <el-select v-model="relCandParams.orgType" placeholder="请选择单位类型" clearable style="width:120px">
|
|
|
+ <el-option v-for="d in slaj_uwat_org_type" :key="d.value" :label="d.label" :value="d.value"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="handleRelCandQuery">
|
|
|
+ <el-icon>
|
|
|
+ <Search/>
|
|
|
+ </el-icon>
|
|
|
+ 搜索
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="resetRelCandQuery">
|
|
|
+ <el-icon>
|
|
|
+ <Refresh/>
|
|
|
+ </el-icon>
|
|
|
+ 重置
|
|
|
+ </el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="rel-block-title">可选参建单位(勾选后可批量添加)</div>
|
|
|
+ <el-table v-loading="relCandLoading" :data="relCandList" height="210" border
|
|
|
+ @selection-change="handleRelCandSelection" ref="relCandTableRef">
|
|
|
+ <el-table-column type="selection" width="45" align="center"/>
|
|
|
+ <el-table-column label="单位代码" align="center" prop="orgCode" :show-overflow-tooltip="true"
|
|
|
+ min-width="130"/>
|
|
|
+ <el-table-column label="单位名称" align="center" prop="orgName" :show-overflow-tooltip="true"
|
|
|
+ min-width="180"/>
|
|
|
+ <el-table-column label="单位类型" align="center" prop="orgType" min-width="110">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :options="slaj_uwat_org_type" :value="scope.row.orgType"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div class="pagination">
|
|
|
+ <el-pagination
|
|
|
+ v-show="relCandTotal > 0"
|
|
|
+ v-model:current-page="relCandParams.pageNum"
|
|
|
+ v-model:page-size="relCandParams.pageSize"
|
|
|
+ :total="relCandTotal"
|
|
|
+ :page-sizes="[10, 20, 50, 100]"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ @size-change="loadRelCandList"
|
|
|
+ @current-change="loadRelCandList"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="rel-block-toolbar">
|
|
|
+ <el-button type="primary" :disabled="relCandSelected.length === 0" @click="submitRelBatch">
|
|
|
+ <el-icon>
|
|
|
+ <Plus/>
|
|
|
+ </el-icon>
|
|
|
+ 添加选中参建单位({{ relCandSelected.length }})
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-divider content-position="left">已关联参建单位</el-divider>
|
|
|
+ <el-table v-loading="relLoading" :data="relOrgList" height="200" border
|
|
|
+ @selection-change="handleRelSelection">
|
|
|
+ <el-table-column type="selection" width="45" align="center"/>
|
|
|
+ <el-table-column label="参建单位代码" align="center" prop="orgCode" :show-overflow-tooltip="true"
|
|
|
+ min-width="130"/>
|
|
|
+ <el-table-column label="参建单位名称" align="center" prop="orgName" :show-overflow-tooltip="true"
|
|
|
+ min-width="180"/>
|
|
|
+ <el-table-column label="参建单位类型" align="center" prop="orgType" min-width="110">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :options="slaj_uwat_org_type" :value="scope.row.orgType"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" align="center" width="90" fixed="right">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button link type="danger" @click="handleRelDelete(scope.row)">解除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div class="rel-block-toolbar">
|
|
|
+ <el-button type="danger" plain :disabled="relSelected.length === 0" @click="handleRelBatchDelete">
|
|
|
+ <el-icon>
|
|
|
+ <Delete/>
|
|
|
+ </el-icon>
|
|
|
+ 解除选中
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <!-- ====== 项目组成员(ATT_PERS_EXT) ====== -->
|
|
|
+ <el-tab-pane label="项目组成员" name="pers">
|
|
|
+ <div class="rel-block-toolbar">
|
|
|
+ <el-button type="primary" plain @click="handlePersAdd" v-hasPermi="['business:persext:add']">
|
|
|
+ <el-icon>
|
|
|
+ <Plus/>
|
|
|
+ </el-icon>
|
|
|
+ 新增成员
|
|
|
+ </el-button>
|
|
|
+ <el-button type="danger" plain :disabled="persMultiple" @click="handlePersBatchDelete"
|
|
|
+ v-hasPermi="['business:persext:remove']">
|
|
|
+ <el-icon>
|
|
|
+ <Delete/>
|
|
|
+ </el-icon>
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <el-table v-loading="persLoading" :data="persList" height="360" border
|
|
|
+ @selection-change="handlePersSelection">
|
|
|
+ <el-table-column type="selection" width="45" align="center"/>
|
|
|
+ <el-table-column label="姓名" align="center" prop="persName" :show-overflow-tooltip="true"
|
|
|
+ min-width="110"/>
|
|
|
+ <el-table-column label="职务级别" align="center" prop="admDuty" :show-overflow-tooltip="true"
|
|
|
+ min-width="100"/>
|
|
|
+ <el-table-column label="性别" align="center" prop="sex" min-width="70"/>
|
|
|
+ <el-table-column label="出生日期" align="center" prop="bornDate" min-width="110"/>
|
|
|
+ <el-table-column label="累计从事监理工作时间" align="center" prop="workDate" :show-overflow-tooltip="true"
|
|
|
+ min-width="150"/>
|
|
|
+ <el-table-column label="备注" align="center" prop="note" :show-overflow-tooltip="true"
|
|
|
+ min-width="120"/>
|
|
|
+ <el-table-column label="操作" align="center" width="120" fixed="right">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button link type="primary" @click="handlePersUpdate(scope.row)"
|
|
|
+ v-hasPermi="['business:persext:edit']">修改
|
|
|
+ </el-button>
|
|
|
+ <el-button link type="danger" @click="handlePersDelete(scope.row)"
|
|
|
+ v-hasPermi="['business:persext:remove']">删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!-- ====== 项目组成员 新增/编辑 Dialog ====== -->
|
|
|
+ <el-dialog :title="persTitle" v-model="persOpen" width="560px" append-to-body>
|
|
|
+ <el-form ref="persFormRef" :model="persForm" :rules="persRules" label-width="150px">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="人员姓名" prop="persName">
|
|
|
+ <el-input v-model="persForm.persName" placeholder="请输入人员姓名"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="职务级别" prop="admDuty">
|
|
|
+ <el-input v-model="persForm.admDuty" placeholder="请输入职务级别"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="性别" prop="sex">
|
|
|
+ <el-select v-model="persForm.sex" placeholder="请选择性别" style="width:100%">
|
|
|
+ <el-option label="男" value="男"/>
|
|
|
+ <el-option label="女" value="女"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="出生日期" prop="bornDate">
|
|
|
+ <el-date-picker v-model="persForm.bornDate" type="date" value-format="YYYY-MM-DD"
|
|
|
+ placeholder="请选择出生日期" style="width:100%"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="累计从事监理工作时间" prop="workDate">
|
|
|
+ <el-input v-model="persForm.workDate" placeholder="请输入累计从事监理工作时间"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="备注" prop="note">
|
|
|
+ <el-input v-model="persForm.note" type="textarea" :rows="2" placeholder="请输入备注"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="persOpen = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="submitPersForm">确定</el-button>
|
|
|
+ </template>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup name="ProjBaseTend">
|
|
|
-import { useRoute } from 'vue-router'
|
|
|
-import { listObjTend, getObjTend, delObjTend, addObjTend, updateObjTend } from "@/api/system/objTend"
|
|
|
-import { listAttOrgUwatBase } from "@/api/system/attOrgUwatBase"
|
|
|
-import { listRelTendOrg, addRelTendOrg, delRelTendOrg } from "@/api/system/relTendOrg"
|
|
|
+import {useRoute} from 'vue-router'
|
|
|
+import {addObjTend, delObjTend, getObjTend, listObjTend, updateObjTend} from "@/api/system/objTend"
|
|
|
+import {addAttPersExt, delAttPersExt, getAttPersExt, listAttPersExt, updateAttPersExt} from "@/api/system/attPersExt"
|
|
|
+import {listAttOrgUwatBase} from "@/api/system/attOrgUwatBase"
|
|
|
+import {addRelTendOrg, delRelTendOrg, listRelTendOrg} from "@/api/system/relTendOrg"
|
|
|
+import {getObjEng, listObjEng} from "@/api/slaj/eng"
|
|
|
import OrgSelect from "@/components/OrgSelect"
|
|
|
-import EngSelect from "@/components/EngSelect"
|
|
|
-import ProjSelect from "@/components/ProjSelect"
|
|
|
-import { useTableHeight } from '@/hooks/useTableHeight'
|
|
|
-import { Plus, Delete, Search, Refresh, Back, List } from '@element-plus/icons-vue'
|
|
|
-
|
|
|
-const { tableHeight, containerRef } = useTableHeight()
|
|
|
-const { proxy } = getCurrentInstance()
|
|
|
-const { slaj_uwat_org_type } = proxy.useDict("slaj_uwat_org_type")
|
|
|
+import useUserStore from '@/store/modules/user'
|
|
|
+import {useTableHeight} from '@/hooks/useTableHeight'
|
|
|
+import {Delete, List, Plus, Refresh, Search} from '@element-plus/icons-vue'
|
|
|
+
|
|
|
+const {tableHeight, containerRef} = useTableHeight()
|
|
|
+const {proxy} = getCurrentInstance()
|
|
|
+const {slaj_uwat_org_type} = proxy.useDict("slaj_uwat_org_type")
|
|
|
const route = useRoute()
|
|
|
+const userStore = useUserStore()
|
|
|
|
|
|
const projGuid = ref(route.params.projGuid || undefined)
|
|
|
|
|
|
+// 超级管理员(userId=1)可修改关联单位,其他角色锁定为本单位
|
|
|
+const isSuperAdmin = computed(() => Number(userStore.id) === 1)
|
|
|
+
|
|
|
const objTendList = ref([])
|
|
|
const open = ref(false)
|
|
|
const loading = ref(true)
|
|
|
@@ -203,6 +464,14 @@ const multiple = ref(true)
|
|
|
const total = ref(0)
|
|
|
const title = ref("")
|
|
|
|
|
|
+// 工程类型(与工程管理页保持一致,无字典,硬编码)
|
|
|
+const slaj_eng_type = [
|
|
|
+ {label: '水库', value: '01'}, {label: '水闸', value: '02'}, {label: '泵站', value: '03'},
|
|
|
+ {label: '水电站', value: '04'}, {label: '堤防', value: '05'}, {label: '灌区', value: '06'},
|
|
|
+ {label: '引调水', value: '07'}, {label: '淤地坝', value: '08'}, {label: '农村供水', value: '09'},
|
|
|
+ {label: '其他', value: '10'}, {label: '农村水电站', value: '11'}
|
|
|
+]
|
|
|
+
|
|
|
const data = reactive({
|
|
|
form: {
|
|
|
tendName: undefined,
|
|
|
@@ -223,15 +492,85 @@ const data = reactive({
|
|
|
pageSize: 10
|
|
|
},
|
|
|
rules: {
|
|
|
- tendName: [{ required: true, message: "标段名称不能为空", trigger: "blur" }]
|
|
|
+ tendName: [{required: true, message: "标段名称不能为空", trigger: "blur"}],
|
|
|
+ engGuid: [{required: true, message: "请选择关联工程", trigger: "change"}]
|
|
|
}
|
|
|
})
|
|
|
|
|
|
-const { queryParams, form, rules } = toRefs(data)
|
|
|
+const {queryParams, form, rules} = toRefs(data)
|
|
|
+
|
|
|
+// =====================================================
|
|
|
+// 关联工程选择弹窗(OBJ_ENG)
|
|
|
+// =====================================================
|
|
|
+const engOpen = ref(false)
|
|
|
+const engLoading = ref(false)
|
|
|
+const engList = ref([])
|
|
|
+const engTotal = ref(0)
|
|
|
+const engName = ref("")
|
|
|
+const engQuery = reactive({
|
|
|
+ engCode: undefined,
|
|
|
+ engName: undefined,
|
|
|
+ engType: undefined,
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10
|
|
|
+})
|
|
|
+
|
|
|
+function handleOpenEngDialog() {
|
|
|
+ resetEngQuery()
|
|
|
+ engOpen.value = true
|
|
|
+}
|
|
|
+
|
|
|
+function loadEngList() {
|
|
|
+ engLoading.value = true
|
|
|
+ listObjEng({...engQuery}).then(res => {
|
|
|
+ engList.value = res.rows || []
|
|
|
+ engTotal.value = res.total || 0
|
|
|
+ }).finally(() => {
|
|
|
+ engLoading.value = false
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function handleEngQuery() {
|
|
|
+ engQuery.pageNum = 1
|
|
|
+ loadEngList()
|
|
|
+}
|
|
|
+
|
|
|
+function resetEngQuery() {
|
|
|
+ engQuery.engCode = undefined
|
|
|
+ engQuery.engName = undefined
|
|
|
+ engQuery.engType = undefined
|
|
|
+ engQuery.pageNum = 1
|
|
|
+ loadEngList()
|
|
|
+}
|
|
|
+
|
|
|
+function handleEngSelect(row) {
|
|
|
+ form.value.engGuid = row.guid
|
|
|
+ engName.value = row.engName
|
|
|
+ engOpen.value = false
|
|
|
+}
|
|
|
+
|
|
|
+function handleClearEng() {
|
|
|
+ form.value.engGuid = undefined
|
|
|
+ engName.value = ""
|
|
|
+}
|
|
|
+
|
|
|
+function loadEngName(guid) {
|
|
|
+ if (!guid) {
|
|
|
+ engName.value = ""
|
|
|
+ return
|
|
|
+ }
|
|
|
+ getObjEng(guid).then(res => {
|
|
|
+ const d = res.data
|
|
|
+ if (d && d.guid) {
|
|
|
+ engName.value = d.engName || ""
|
|
|
+ }
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
function getList() {
|
|
|
loading.value = true
|
|
|
- listObjTend({ ...queryParams.value, projGuid: projGuid.value }).then(response => {
|
|
|
+ listObjTend({...queryParams.value, projGuid: projGuid.value}).then(response => {
|
|
|
objTendList.value = response.rows
|
|
|
total.value = response.total
|
|
|
loading.value = false
|
|
|
@@ -257,6 +596,7 @@ function reset() {
|
|
|
note: undefined,
|
|
|
stat: undefined
|
|
|
}
|
|
|
+ engName.value = ""
|
|
|
proxy.resetForm("objTendRef")
|
|
|
}
|
|
|
|
|
|
@@ -278,6 +618,7 @@ function handleSelectionChange(selection) {
|
|
|
|
|
|
function handleAdd() {
|
|
|
reset()
|
|
|
+ form.value.orgGuid = userStore.orgGuid || undefined
|
|
|
open.value = true
|
|
|
title.value = "添加标段"
|
|
|
}
|
|
|
@@ -287,6 +628,7 @@ function handleUpdate(row) {
|
|
|
const guid = row.guid || ids.value
|
|
|
getObjTend(guid).then(response => {
|
|
|
form.value = response.data
|
|
|
+ loadEngName(form.value.engGuid)
|
|
|
open.value = true
|
|
|
title.value = "修改标段"
|
|
|
})
|
|
|
@@ -328,67 +670,236 @@ function goBack() {
|
|
|
}
|
|
|
|
|
|
// =====================================================
|
|
|
-// 标段参建单位关系(REL_TEND_ORG)
|
|
|
+// 标段配置 Dialog(参建单位 REL_TEND_ORG + 项目组成员 ATT_PERS_EXT)
|
|
|
// =====================================================
|
|
|
const relOpen = ref(false)
|
|
|
+const relTab = ref("org")
|
|
|
const relTendRow = ref({})
|
|
|
const relOrgList = ref([])
|
|
|
const relLoading = ref(false)
|
|
|
-const relOrgOptions = ref([])
|
|
|
-const relOrgLoading = ref(false)
|
|
|
-const relForm = ref({ orgUwatGuid: undefined, fromDate: undefined })
|
|
|
+const relSelected = ref([])
|
|
|
+
|
|
|
+// 可选参建单位(候选列表,支持多选批量添加)
|
|
|
+const relCandList = ref([])
|
|
|
+const relCandTotal = ref(0)
|
|
|
+const relCandLoading = ref(false)
|
|
|
+const relCandSelected = ref([])
|
|
|
+const relCandTableRef = ref(null)
|
|
|
+const relCandParams = reactive({
|
|
|
+ orgCode: undefined,
|
|
|
+ orgName: undefined,
|
|
|
+ orgType: undefined,
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10
|
|
|
+})
|
|
|
|
|
|
-/** 打开某标段的参建单位关系弹窗 */
|
|
|
+/** 打开某标段的配置弹窗(参建单位 + 项目组成员) */
|
|
|
function handleViewOrg(row) {
|
|
|
relTendRow.value = row
|
|
|
- relForm.value = { orgUwatGuid: undefined, fromDate: undefined }
|
|
|
- relOrgOptions.value = []
|
|
|
+ relTab.value = "org"
|
|
|
+ relSelected.value = []
|
|
|
+ relCandSelected.value = []
|
|
|
relOpen.value = true
|
|
|
loadRelOrgList()
|
|
|
+ resetRelCandQuery()
|
|
|
+ loadPersList()
|
|
|
}
|
|
|
|
|
|
function loadRelOrgList() {
|
|
|
relLoading.value = true
|
|
|
- listRelTendOrg({ tendGuid: relTendRow.value.guid, pageNum: 1, pageSize: 999 }).then(res => {
|
|
|
+ listRelTendOrg({tendGuid: relTendRow.value.guid, pageNum: 1, pageSize: 999}).then(res => {
|
|
|
relOrgList.value = res.rows || []
|
|
|
- }).finally(() => { relLoading.value = false })
|
|
|
+ }).finally(() => {
|
|
|
+ relLoading.value = false
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+/** 加载可选参建单位候选列表 */
|
|
|
+function loadRelCandList() {
|
|
|
+ relCandLoading.value = true
|
|
|
+ listAttOrgUwatBase({...relCandParams}).then(res => {
|
|
|
+ relCandList.value = res.rows || []
|
|
|
+ relCandTotal.value = res.total || 0
|
|
|
+ }).finally(() => {
|
|
|
+ relCandLoading.value = false
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
-/** 远程搜索参建单位 */
|
|
|
-function remoteSearchRelOrg(query) {
|
|
|
- if (!query) { relOrgOptions.value = []; return }
|
|
|
- relOrgLoading.value = true
|
|
|
- listAttOrgUwatBase({ orgName: query, pageNum: 1, pageSize: 20 }).then(res => {
|
|
|
- relOrgOptions.value = (res.rows || []).map(r => ({ guid: r.guid, orgName: r.orgName }))
|
|
|
- }).finally(() => { relOrgLoading.value = false })
|
|
|
+function handleRelCandQuery() {
|
|
|
+ relCandParams.pageNum = 1
|
|
|
+ loadRelCandList()
|
|
|
}
|
|
|
|
|
|
-/** 添加标段↔参建单位关系 */
|
|
|
-function submitRelForm() {
|
|
|
- if (!relForm.value.orgUwatGuid) {
|
|
|
- proxy.$modal.msgWarning("请选择参建单位")
|
|
|
+function resetRelCandQuery() {
|
|
|
+ relCandParams.orgCode = undefined
|
|
|
+ relCandParams.orgName = undefined
|
|
|
+ relCandParams.orgType = undefined
|
|
|
+ relCandParams.pageNum = 1
|
|
|
+ loadRelCandList()
|
|
|
+}
|
|
|
+
|
|
|
+function handleRelCandSelection(sel) {
|
|
|
+ relCandSelected.value = sel
|
|
|
+}
|
|
|
+
|
|
|
+function handleRelSelection(sel) {
|
|
|
+ relSelected.value = sel
|
|
|
+}
|
|
|
+
|
|
|
+/** 批量添加选中的参建单位 */
|
|
|
+function submitRelBatch() {
|
|
|
+ if (!relCandSelected.value.length) {
|
|
|
+ proxy.$modal.msgWarning("请先勾选参建单位")
|
|
|
return
|
|
|
}
|
|
|
- addRelTendOrg({
|
|
|
- tendGuid: relTendRow.value.guid,
|
|
|
- orgUwatGuid: relForm.value.orgUwatGuid,
|
|
|
- fromDate: relForm.value.fromDate
|
|
|
- }).then(() => {
|
|
|
- proxy.$modal.msgSuccess("添加成功")
|
|
|
- relForm.value = { orgUwatGuid: undefined, fromDate: undefined }
|
|
|
- relOrgOptions.value = []
|
|
|
+ const exist = new Set((relOrgList.value || []).map(r => r.orgUwatGuid))
|
|
|
+ const targets = relCandSelected.value.filter(r => !exist.has(r.guid))
|
|
|
+ if (!targets.length) {
|
|
|
+ proxy.$modal.msgWarning("所选参建单位均已关联")
|
|
|
+ relCandSelected.value = []
|
|
|
+ relCandTableRef.value && relCandTableRef.value.clearSelection()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const tasks = targets.map(r => addRelTendOrg({tendGuid: relTendRow.value.guid, orgUwatGuid: r.guid}))
|
|
|
+ Promise.all(tasks).then(() => {
|
|
|
+ proxy.$modal.msgSuccess(`成功关联 ${targets.length} 个参建单位`)
|
|
|
+ relCandSelected.value = []
|
|
|
+ relCandTableRef.value && relCandTableRef.value.clearSelection()
|
|
|
loadRelOrgList()
|
|
|
+ loadRelCandList()
|
|
|
}).catch(() => {
|
|
|
- proxy.$modal.msgError("添加失败,请重试")
|
|
|
+ proxy.$modal.msgError("关联失败,请重试")
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-/** 解除标段↔参建单位关系 */
|
|
|
+/** 解除单个标段↔参建单位关系 */
|
|
|
function handleRelDelete(row) {
|
|
|
proxy.$modal.confirm('确认解除该参建单位关系?').then(() => delRelTendOrg(row.guid)).then(() => {
|
|
|
loadRelOrgList()
|
|
|
proxy.$modal.msgSuccess("已解除")
|
|
|
- }).catch(() => { })
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+/** 批量解除选中的参建单位关系 */
|
|
|
+function handleRelBatchDelete() {
|
|
|
+ if (!relSelected.value.length) {
|
|
|
+ proxy.$modal.msgWarning("请先勾选需要解除的参建单位")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const guids = relSelected.value.map(r => r.guid)
|
|
|
+ proxy.$modal.confirm(`确认解除选中的 ${guids.length} 个参建单位?`).then(() => delRelTendOrg(guids)).then(() => {
|
|
|
+ proxy.$modal.msgSuccess("已解除")
|
|
|
+ relSelected.value = []
|
|
|
+ loadRelOrgList()
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// =====================================================
|
|
|
+// 项目组成员(ATT_PERS_EXT)
|
|
|
+// =====================================================
|
|
|
+const persList = ref([])
|
|
|
+const persLoading = ref(false)
|
|
|
+const persIds = ref([])
|
|
|
+const persMultiple = ref(true)
|
|
|
+const persOpen = ref(false)
|
|
|
+const persTitle = ref("")
|
|
|
+const persForm = ref({
|
|
|
+ guid: undefined,
|
|
|
+ persName: undefined,
|
|
|
+ tendGuid: undefined,
|
|
|
+ admDuty: undefined,
|
|
|
+ sex: undefined,
|
|
|
+ bornDate: undefined,
|
|
|
+ workDate: undefined,
|
|
|
+ note: undefined
|
|
|
+})
|
|
|
+const persRules = {
|
|
|
+ persName: [{required: true, message: "人员姓名不能为空", trigger: "blur"}]
|
|
|
+}
|
|
|
+
|
|
|
+function loadPersList() {
|
|
|
+ persLoading.value = true
|
|
|
+ listAttPersExt({tendGuid: relTendRow.value.guid, pageNum: 1, pageSize: 999}).then(res => {
|
|
|
+ persList.value = res.rows || []
|
|
|
+ }).finally(() => {
|
|
|
+ persLoading.value = false
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function resetPersForm() {
|
|
|
+ persForm.value = {
|
|
|
+ guid: undefined,
|
|
|
+ persName: undefined,
|
|
|
+ tendGuid: relTendRow.value.guid,
|
|
|
+ admDuty: undefined,
|
|
|
+ sex: undefined,
|
|
|
+ bornDate: undefined,
|
|
|
+ workDate: undefined,
|
|
|
+ note: undefined
|
|
|
+ }
|
|
|
+ proxy.resetForm("persFormRef")
|
|
|
+}
|
|
|
+
|
|
|
+function handlePersAdd() {
|
|
|
+ resetPersForm()
|
|
|
+ persOpen.value = true
|
|
|
+ persTitle.value = "新增成员"
|
|
|
+}
|
|
|
+
|
|
|
+function handlePersUpdate(row) {
|
|
|
+ resetPersForm()
|
|
|
+ getAttPersExt(row.guid).then(response => {
|
|
|
+ persForm.value = response.data
|
|
|
+ persOpen.value = true
|
|
|
+ persTitle.value = "修改成员"
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function submitPersForm() {
|
|
|
+ proxy.$refs["persFormRef"].validate(valid => {
|
|
|
+ if (!valid) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (persForm.value.guid != undefined) {
|
|
|
+ updateAttPersExt(persForm.value).then(() => {
|
|
|
+ proxy.$modal.msgSuccess("修改成功")
|
|
|
+ persOpen.value = false
|
|
|
+ loadPersList()
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ addAttPersExt(persForm.value).then(() => {
|
|
|
+ proxy.$modal.msgSuccess("新增成功")
|
|
|
+ persOpen.value = false
|
|
|
+ loadPersList()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function handlePersDelete(row) {
|
|
|
+ proxy.$modal.confirm('确认删除该成员信息?').then(() => delAttPersExt(row.guid)).then(() => {
|
|
|
+ loadPersList()
|
|
|
+ proxy.$modal.msgSuccess("删除成功")
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function handlePersBatchDelete() {
|
|
|
+ if (!persIds.value.length) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ proxy.$modal.confirm(`确认删除选中的 ${persIds.value.length} 条成员信息?`).then(() => delAttPersExt(persIds.value)).then(() => {
|
|
|
+ loadPersList()
|
|
|
+ proxy.$modal.msgSuccess("删除成功")
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function handlePersSelection(sel) {
|
|
|
+ persIds.value = sel.map(r => r.guid)
|
|
|
+ persMultiple.value = !sel.length
|
|
|
}
|
|
|
|
|
|
getList()
|
|
|
@@ -398,4 +909,16 @@ getList()
|
|
|
.tend-form .el-textarea__inner {
|
|
|
resize: none;
|
|
|
}
|
|
|
+
|
|
|
+.rel-block-title {
|
|
|
+ font-weight: 600;
|
|
|
+ color: #303133;
|
|
|
+ margin: 4px 0 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.rel-block-toolbar {
|
|
|
+ margin: 8px 0;
|
|
|
+ display: flex;
|
|
|
+ gap: 8px;
|
|
|
+}
|
|
|
</style>
|