123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <script lang="ts" setup>
- /**
- * @Name: DataTableSlot.vue
- * @Description: 审批查看(直接销售)数据表格插槽
- * @Author: xinyan
- */
- import { hasPermission } from '/@/utils/hasPermission';
- import { Delete, InfoFilled, Operation } from '@element-plus/icons-vue';
- import PermissionButton from '/@/components/PermissionButton/index.vue';
- import { useCountryInfoStore } from '/@/stores/countryInfo';
- const props = defineProps<{
- row: any;
- field: any;
- }>();
- const { row, field } = props;
- const emit = defineEmits(['edit-row', 'handle-delete', 'handle-manage', 'show-detail']);
- const countryInfoStore = useCountryInfoStore();
- const country = countryInfoStore.Countries.find((c) => c.code == row.country_code);
- const color = country ? country.color : '#626AEF';
- const currency = countryInfoStore.CurrencyCodes.find((c) => c.code == row.currency_code);
- const currencyColor = currency ? currency.color : '#626AEF';
- // 日常活动销售利润 = 日常活动售价(人民币)-出口报关价-头程运费-尾程费用-转发费-广告费-退货成本-VAT-仓储费-佣金
- const routine_activity_profit = computed(
- () =>
- row.price_daily_rmb -
- (row.export_tax +
- row.first_cost +
- row.final_cost +
- row.forwarding_fee +
- row.ad_budget +
- row.return_or_refurbishment +
- row.storage_charges +
- row.brokerage)
- );
- // 日常活动毛利率 = 日常活动销售利润/日常活动售价(人民币)
- const gross_margin_daily = computed(() => routine_activity_profit.value / row.price_daily_rmb);
- // 平均毛利 = 0.8*日常活动毛利率 + 0.2*毛利率
- const average_gross_profit = computed(() => 0.8 * gross_margin_daily.value + 0.2 * row.gross_profit_margin);
- function handleEdit() {
- emit('edit-row', row);
- }
- function onConfirm() {
- emit('handle-delete', row);
- }
- </script>
- <template>
- <div class="font-semibold">
- <div v-if="field === 'operate'">
- <div class="flex justify-center gap-2">
- <div v-if="hasPermission('PRICE_DIRECT_UPDATE')">
- <PermissionButton circle plain type="warning" @click="handleEdit">
- <el-icon>
- <Operation />
- </el-icon>
- </PermissionButton>
- </div>
- <div v-if="hasPermission('PRICE_DIRECT_DEL')">
- <el-popconfirm :icon="InfoFilled" icon-color="#626AEF" title="你确定要删除此项吗?" width="220" @confirm="onConfirm">
- <template #reference>
- <PermissionButton circle plain type="danger">
- <el-icon>
- <Delete />
- </el-icon>
- </PermissionButton>
- </template>
- <template #actions="{ confirm, cancel }">
- <el-button size="small" @click="cancel">No!</el-button>
- <el-button size="small" type="danger" @click="confirm"> Yes?</el-button>
- </template>
- </el-popconfirm>
- </div>
- </div>
- </div>
- <div v-else-if="field === 'average_gross_profit'">
- {{ average_gross_profit && average_gross_profit !== -Infinity ? average_gross_profit : '-' }}
- </div>
- <div v-else-if="field === 'routine_activity_profit'">
- {{ routine_activity_profit && routine_activity_profit !== -Infinity ? routine_activity_profit : '-' }}
- </div>
- <div v-else-if="field === 'gross_margin_daily'">
- {{ gross_margin_daily && gross_margin_daily !== -Infinity ? gross_margin_daily : '-' }}
- </div>
- <div v-else-if="field === 'country_code'">
- <el-tag :disable-transitions="true" :style="{ color: color, borderColor: color }" effect="plain" round>
- {{ country ? country.name : '-' }}
- </el-tag>
- </div>
- <div v-else-if="field === 'currency_code'">
- <el-tag :disable-transitions="true" :style="{ color: currencyColor, borderColor: currencyColor }" effect="plain" round>
- {{ currency ? currency.code : '-' }}
- </el-tag>
- </div>
- <div v-else>
- {{ row[field] || '-' }}
- </div>
- </div>
- </template>
- <style scoped></style>
|