| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <template>
- <AidopDemoShell title="来源映射维护" subtitle="库位角色和岗位由页面改动后记为 MANUAL,自动分类不会覆盖。">
- <el-tabs v-model="tab">
- <el-tab-pane label="来源归属" name="domain">
- <p class="hint">这张表回答「一个来源加源侧组织标识,物理上落在哪个租户的贴源区」。它不回答某条业务数据属于哪个租户。同一范围已被别的租户占用时,保存会被拒绝。</p>
- <el-form :inline="true">
- <el-form-item label="租户"><el-input v-model="tenantId" style="width: 200px" /></el-form-item>
- <el-form-item label="系统码"><el-input v-model="domainForm.systemCode" /></el-form-item>
- <el-form-item label="组织标识"><el-input v-model="domainForm.domain" placeholder="账套或 domain" /></el-form-item>
- <el-form-item><el-button type="primary" @click="saveDomain">保存</el-button></el-form-item>
- </el-form>
- <el-table :data="domains" border>
- <el-table-column prop="systemCode" label="系统码" />
- <el-table-column prop="domain" label="组织标识" />
- <el-table-column prop="tenantId" label="落地租户" />
- <el-table-column prop="remark" label="备注" />
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="库位角色" name="loc">
- <el-form :inline="true">
- <el-form-item label="租户"><el-input v-model="tenantId" style="width: 200px" /></el-form-item>
- <el-form-item><el-checkbox v-model="unknownOnly">只看 UNKNOWN</el-checkbox></el-form-item>
- <el-form-item><el-button type="primary" @click="loadLoc">查询</el-button></el-form-item>
- <el-form-item><el-button @click="saveLoc">保存为 MANUAL</el-button></el-form-item>
- </el-form>
- <el-table :data="locations" border>
- <el-table-column prop="domain" label="domain" width="120" />
- <el-table-column prop="location" label="库位" />
- <el-table-column label="角色">
- <template #default="{ row }">
- <el-select v-model="row.locationRole" filterable>
- <el-option v-for="r in roles" :key="r" :label="r" :value="r" />
- </el-select>
- </template>
- </el-table-column>
- <el-table-column prop="roleSource" label="来源" width="120" />
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="岗位映射" name="pos">
- <el-button type="primary" @click="loadPos">查询</el-button>
- <el-button @click="savePos">保存为 MANUAL</el-button>
- <el-table :data="positions" border class="mt">
- <el-table-column prop="sourceSystem" label="来源" width="160" />
- <el-table-column prop="srcPositionRaw" label="源岗位" />
- <el-table-column label="岗位码">
- <template #default="{ row }"><el-input v-model="row.positionCode" /></template>
- </el-table-column>
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="事务类型" name="tx">
- <el-form :inline="true">
- <el-form-item label="系统码"><el-input v-model="txQuery" /></el-form-item>
- <el-form-item><el-button type="primary" @click="loadTx">查询</el-button></el-form-item>
- </el-form>
- <el-form :inline="true">
- <el-form-item label="源码"><el-input v-model="txForm.srcTransCode" /></el-form-item>
- <el-form-item label="阶段码"><el-input v-model="txForm.stageCode" /></el-form-item>
- <el-form-item><el-button type="primary" @click="saveTx">新增全局行</el-button></el-form-item>
- </el-form>
- <el-table :data="txs" border>
- <el-table-column prop="systemCode" label="系统码" width="180" />
- <el-table-column prop="srcTransCode" label="源码" />
- <el-table-column prop="qtySign" label="方向" width="80" />
- <el-table-column prop="locationRole" label="库位角色" />
- <el-table-column prop="stageCode" label="阶段码" />
- </el-table>
- </el-tab-pane>
- </el-tabs>
- </AidopDemoShell>
- </template>
- <script setup lang="ts" name="aidopDataPlatformSourceMappings">
- import { reactive, ref } from 'vue';
- import { ElMessage } from 'element-plus';
- import AidopDemoShell from '../components/AidopDemoShell.vue';
- import service from '/@/utils/request';
- const tab = ref('domain');
- const roles = ['MAT_INSPECT', 'MATERIAL', 'MAT_LINE_LOC', 'SEMI', 'FG_INSPECT', 'FG', 'FG_LINE_LOC', 'REJECT_SCRAP', 'VMI', 'OTHER', 'UNKNOWN'];
- const tenantId = ref(localStorage.getItem('aidop-tenant-id') || '');
- const unknownOnly = ref(false);
- const domains = ref<any[]>([]);
- const locations = ref<any[]>([]);
- const positions = ref<any[]>([]);
- const txs = ref<any[]>([]);
- const txQuery = ref('');
- const domainForm = reactive({ systemCode: '', domain: '' });
- const txForm = reactive({ srcTransCode: '', stageCode: '' });
- function listOf(res: any) {
- const data = res?.data ?? res;
- return Array.isArray(data) ? data : data?.list ?? [];
- }
- async function saveDomain() {
- await service.put('/api/DataPlatform/source-domain-maps', {
- tenantId: Number(tenantId.value),
- systemCode: domainForm.systemCode,
- domain: domainForm.domain,
- });
- ElMessage.success('已保存');
- domains.value = listOf(await service.get('/api/DataPlatform/source-domain-maps', { params: { tenantId: tenantId.value } }));
- }
- async function loadLoc() {
- locations.value = listOf(
- await service.get('/api/DataPlatform/location-roles', {
- params: { tenantId: tenantId.value, unknownOnly: unknownOnly.value },
- })
- );
- }
- async function saveLoc() {
- await service.put('/api/DataPlatform/location-roles', {
- tenantId: Number(tenantId.value),
- rows: locations.value.map((r) => ({
- domain: r.domain,
- location: r.location,
- locationRole: r.locationRole,
- })),
- });
- ElMessage.success('已保存');
- await loadLoc();
- }
- async function loadPos() {
- positions.value = listOf(
- await service.get('/api/DataPlatform/position-maps', { params: { tenantId: tenantId.value, unknownOnly: unknownOnly.value } })
- );
- }
- async function savePos() {
- await service.put('/api/DataPlatform/position-maps', {
- tenantId: Number(tenantId.value),
- rows: positions.value.map((r) => ({
- sourceSystem: r.sourceSystem,
- domain: r.domain,
- srcPositionRaw: r.srcPositionRaw,
- srcPositionField: r.srcPositionField,
- positionCode: r.positionCode,
- })),
- });
- ElMessage.success('已保存');
- await loadPos();
- }
- async function loadTx() {
- txs.value = listOf(await service.get('/api/DataPlatform/trans-type-maps', { params: { systemCode: txQuery.value } }));
- }
- async function saveTx() {
- await service.put('/api/DataPlatform/trans-type-maps', {
- systemCode: txQuery.value,
- srcTransCode: txForm.srcTransCode,
- stageCode: txForm.stageCode,
- qtySign: 0,
- locationRole: '',
- isStage: 1,
- });
- ElMessage.success('已保存');
- await loadTx();
- }
- </script>
- <style scoped>
- .hint { color: var(--el-text-color-secondary); margin-bottom: 12px; }
- .mt { margin-top: 12px; }
- </style>
|