Răsfoiți Sursa

feat<数据录入>:创建、修改添加ROI校验

xinyan 6 luni în urmă
părinte
comite
2c97f8cc8c

+ 1 - 1
src/views/efTools/automation/components/adActivityDialog.vue

@@ -716,7 +716,7 @@ onMounted(() => {
                   :header-cell-style="headerCellStyle"
                   :tree-config="treeProps"
                   border="inner"
-                  height="484">
+                  height="600">
           <template #campaignName_default="{ row }">
             <template v-if="!row.adGroupId">
               <!-- 父节点(广告活动) -->

+ 48 - 10
src/views/reportManage/dataCenter/normalDisplay/components/TableDataEntry.vue

@@ -166,6 +166,7 @@ const isSubmitting = ref(false);
 const dayFormVisible = ref(false);
 const dialogVisible = ref(false);
 const dialogMessage = ref('');
+const isROI = ref(false);
 const taskDataFormRef = ref<FormInstance>();
 const taskDataForm = reactive({
   sales_original: null,
@@ -565,7 +566,7 @@ async function createMonthData() {
 //创建任务
 const submitForm = async (formEl: FormInstance | undefined) => {
   const fieldsToWarn = validateForm();
-  if (fieldsToWarn.length > 0) {
+  if (fieldsToWarn.length > 0 || validateForm2()) {
     dialogVisible.value = true;
     dialogMessage.value = `${ fieldsToWarn.join(', ') }`;
     return;
@@ -709,6 +710,17 @@ async function updateMonthData(row: RowVO) {
 }
 
 const editRowEvent = async (row: any) => {
+  currentRow.value = row;
+  if (validateForm3(row)) {
+    isROI.value = true;
+    dialogVisible.value = true;
+    return;
+  }
+  await updateRowEvent(row);
+};
+
+const updateRowEvent = async (row: RowVO) => {
+  dialogVisible.value = false;
   const $grid = xGrid.value;
   if ($grid) {
     if (dateType === 'day') {
@@ -727,7 +739,7 @@ const editRowEvent = async (row: any) => {
     activeEditRow.value = false;
     await $grid.clearEdit();
   }
-};
+}
 
 // 日数据提示
 async function salesTip(apiFunction, dateTypeKey) {
@@ -844,6 +856,26 @@ const validateForm = () => {
   return fieldsToWarn;
 };
 
+const validateForm2 = () => {
+  const adSalesValue = taskDataForm['ad_sales_original'];
+  const adCostValue = taskDataForm['ad_cost_original'];
+
+  if (adSalesValue != null && adCostValue != null && adCostValue !== 0) {
+    const ratio = (adSalesValue - adCostValue) / adCostValue;
+    return ratio < 0;
+  }
+};
+
+const validateForm3 = (row: RowVO) => {
+  const adSalesValue = row.ad_sales_original;
+  const adCostValue = row.ad_cost_original;
+
+  if (adSalesValue != null && adCostValue != null && adCostValue !== 0) {
+    const ratio = (adSalesValue - adCostValue) / adCostValue;
+    return ratio < 0;
+  }
+};
+
 onMounted(() => {
   setDefaultDate();
   //fetchCurrentTaskData();
@@ -925,7 +957,7 @@ onMounted(() => {
             <el-button link size="small" type="warning" @click="editRowEvent(row)">保存</el-button>
           </template>
           <template v-else>
-            <el-button :disabled="!row.id||activeEditRow" link size="small" type="success" @click="handelEditRow(row)">
+            <el-button :disabled="!row.id||activeEditRow"  link size="small" type="success" @click="handelEditRow(row)">
               修改
             </el-button>
           </template>
@@ -992,14 +1024,15 @@ onMounted(() => {
       </vxe-grid>
     </div>
   </el-card>
-  <el-dialog v-model="dayFormVisible" :before-close="handleClose" style="border-radius: 10px;" :title="`创建任务 : ${currentRow.platformNumber} / ${currentRow.platformName}`"
+  <el-dialog v-model="dayFormVisible" :before-close="handleClose" :title="`创建任务 : ${currentRow.platformNumber} / ${currentRow.platformName}`"
+             style="border-radius: 10px;"
              width="600">
     <template #title>
       <span class="text-xl">创建任务</span>
-      <div class="mt-2" style="display: flex; align-items: center;color: darkgray" >
+      <div class="mt-2" style="display: flex; align-items: center;color: darkgray">
         <div style="margin-right: 8px;">
           平台编号:
-          <span class="italic pl-1 pr-2" >{{ currentRow.platformNumber }}</span>
+          <span class="italic pl-1 pr-2">{{ currentRow.platformNumber }}</span>
         </div>
         <div>
           平台名称:
@@ -1060,13 +1093,18 @@ onMounted(() => {
         重要提示
       </el-button>
     </template>
-    <span>您输入的 </span>
-    <span style="color: #f1a055;">{{ dialogMessage }}</span>
-    <span> 相较于上次填入的数据偏离值超过 50% ,是否仍要提交?</span>
+    <div v-if="dialogMessage">
+      <span>您输入的 </span>
+      <span style="color: #f1a055;">{{ dialogMessage }}</span>
+      <span> 相较于上次填入的数据偏离值超过 50% ,是否仍要提交?</span>
+    </div>
+    <div v-if="validateForm2()||isROI" class="pt-2">
+      <span>ROI < 0,请确认数据填入是否正确!</span>
+    </div>
     <template #footer>
       <span class="dialog-footer">
         <el-button @click="dialogVisible = false">取消</el-button>
-        <el-button type="primary" @click="submit(formEl)">确认</el-button>
+        <el-button type="primary" @click="isROI? updateRowEvent(currentRow) : submit()">确认</el-button>
       </span>
     </template>
   </el-dialog>