소스 검색

目标管理-营销目标中年份从"yyyy-MM-dd"改为了“yyyy”;年销售填报中物料改为不是必填项

DongZ 1 년 전
부모
커밋
4725b23c86
2개의 변경된 파일203개의 추가작업 그리고 12개의 파일을 삭제
  1. 200 12
      src/views/business/spd/target/AnnualSaleGoal.vue
  2. 3 0
      src/views/business/spd/target/targetMk/index.vue

+ 200 - 12
src/views/business/spd/target/AnnualSaleGoal.vue

@@ -247,6 +247,7 @@
           </el-row>
           <el-tabs v-model="activeName">
             <el-tab-pane label="年销售目标填报明细" name="annualSaleGoalDetails">
+
               <el-table max-height="560" show-summary :summary-method="getSummaries" v-loading="loading"
                 :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange" v-horizontal-scroll>
                 <el-table-column label="序号" type="index" width="70" align="center" fixed />
@@ -287,22 +288,19 @@
                     </el-popover-select-v2>
                   </template>
                 </el-table-column>
-                <el-table-column label="一级分类" align="center" width="180"
-                  :render-header="(h, obj) => addRedStar(h, obj, '0')">
+                <el-table-column label="一级分类" align="center" width="180">
                   <template slot-scope="scope">
                     <el-input v-model="annualSaleGoalDetailsList[scope.$index].oneLevelClassify" placeholder="请输入一级分类"
                       disabled></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column label="二级分类" align="center" width="180"
-                  :render-header="(h, obj) => addRedStar(h, obj, '0')">
+                <el-table-column label="二级分类" align="center" width="180">
                   <template slot-scope="scope">
                     <el-input v-model="annualSaleGoalDetailsList[scope.$index].twoLevelClassify" placeholder="请输入二级分类"
                       disabled></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column label="物料" align="center" width="220"
-                  :render-header="(h, obj) => addRedStar(h, obj, '0')">
+                <el-table-column label="物料" align="center" width="220">
                   <template slot-scope="scope">
                     <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].material" title="物料"
                       valueKey="name" referName="MATERIAL_PARAM"
@@ -427,6 +425,186 @@
                   </template>
                 </el-table-column>
               </el-table>
+
+              <!-- <ux-grid max-height="560" show-summary :summary-method="getSummaries" v-loading="loading"
+                :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange" v-horizontal-scroll>
+                <ux-table-column title="序号" type="index" width="70" align="center" fixed />
+                <ux-table-column title="销售组织" align="center" width="180"
+                  :render-header="(h, obj) => addRedStar(h, obj, '0')">
+                  <template slot-scope="scope">
+                    <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].saleOrg" title="销售组织"
+                      valueKey="name" referName="ORG_PARAM" :dataMapping="{ saleOrgCode: 'code', saleOrg: 'name'}"
+                      :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入销售组织">
+                    </el-popover-select-v2>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="销售区域" align="center" width="180"
+                  :render-header="(h, obj) => addRedStar(h, obj, '0')">
+                  <template slot-scope="scope">
+                    <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].saleZone" title="销售区域"
+                      valueKey="name" referName="MK_SALESAREA_PARAM"
+                      :dataMapping="{ saleZoneCode: 'code', saleZone: 'name'}"
+                      :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入销售区域">
+                    </el-popover-select-v2>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="客户" align="center" width="180"
+                  :render-header="(h, obj) => addRedStar(h, obj, '0')">
+                  <template slot-scope="scope">
+                    <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].custom" title="客户"
+                      valueKey="name" referName="CUSTOMER_PARAM" :dataMapping="{ customCode: 'code', custom: 'name'}"
+                      :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入客户">
+                    </el-popover-select-v2>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="负责人" align="center" width="180"
+                  :render-header="(h, obj) => addRedStar(h, obj, '0')">
+                  <template slot-scope="scope">
+                    <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].creator" title="负责人"
+                      valueKey="name" referName="CONTACTS_PARAM" :dataMapping="{ creatorCode: 'code', creator: 'name'}"
+                      :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入负责人">
+                    </el-popover-select-v2>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="一级分类" align="center" width="180">
+                  <template slot-scope="scope">
+                    <el-input v-model="annualSaleGoalDetailsList[scope.$index].oneLevelClassify" placeholder="请输入一级分类"
+                      disabled></el-input>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="二级分类" align="center" width="180">
+                  <template slot-scope="scope">
+                    <el-input v-model="annualSaleGoalDetailsList[scope.$index].twoLevelClassify" placeholder="请输入二级分类"
+                      disabled></el-input>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="物料" align="center" width="220">
+                  <template slot-scope="scope">
+                    <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].material" title="物料"
+                      valueKey="name" referName="MATERIAL_PARAM"
+                      @change="setClassify(scope.row.oneLevelClassify, scope.row.twoLevelClassify, annualSaleGoalDetailsList[scope.$index])"
+                      @clear=""
+                      :dataMapping="{ materialCode: 'code', material: 'name', oneLevelClassify: 'oneClass', twoLevelClassify: 'twoClass'}"
+                      :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入物料">
+                    </el-popover-select-v2>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="合计(元)" align="center" field="totalGoal" width="180">
+                  <template slot-scope="scope">
+                    <el-input v-model="annualSaleGoalDetailsList[scope.$index].totalGoal" disabled></el-input>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="一月(元)" align="center" field="januaryGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].januaryGoal" :precision="2" :step="0.1" :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="二月(元)" align="center" field="februaryGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].februaryGoal" :precision="2" :step="0.1"
+                      :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="三月(元)" align="center" field="marchGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].marchGoal" :precision="2" :step="0.1" :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="四月(元)" align="center" field="aprilGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].aprilGoal" :precision="2" :step="0.1" :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="五月(元)" align="center" field="mayGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].mayGoal" :precision="2" :step="0.1" :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="六月(元)" align="center" field="juneGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].juneGoal" :precision="2" :step="0.1" :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="七月(元)" align="center" field="julyGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].julyGoal" :precision="2" :step="0.1" :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="八月(元)" align="center" field="augustGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].augustGoal" :precision="2" :step="0.1" :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="九月(元)" align="center" field="septemberGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].septemberGoal" :precision="2" :step="0.1"
+                      :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="十月(元)" align="center" field="octoberGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].octoberGoal" :precision="2" :step="0.1" :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="十一月(元)" align="center" field="novemberGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].novemberGoal" :precision="2" :step="0.1"
+                      :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="十二月(元)" align="center" field="decemberGoal" width="220">
+                  <template slot-scope="scope">
+                    <el-input-number
+                      @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])"
+                      v-model="annualSaleGoalDetailsList[scope.$index].decemberGoal" :precision="2" :step="0.1"
+                      :min="0">
+                    </el-input-number>
+                  </template>
+                </ux-table-column>
+                <ux-table-column title="操作" align="center" class-name="small-padding fixed-width" width="120px"
+                  fixed="right">
+                  <template slot-scope="scope">
+                    <el-button size="mini" type="text" icon="el-icon-delete"
+                      @click="handleDeleteDetails(scope.$index, scope.row)">删除</el-button>
+                    <el-button size="mini" type="text" icon="el-icon-delete" @click="handleCopyDetails(scope.row)">复制
+                    </el-button>
+                  </template>
+                </ux-table-column>
+              </ux-grid> -->
+
             </el-tab-pane>
           </el-tabs>
           <div slot="footer" class="dialog-footer" style="margin-left: 88%; margin-top: 1%">
@@ -889,11 +1067,23 @@
         }
         for (let i = 0; i < this.annualSaleGoalDetailsList.length; i++) {
           for (let j = i + 1; j < this.annualSaleGoalDetailsList.length; j++) {
-            if (this.annualSaleGoalDetailsList[i].materialCode == this.annualSaleGoalDetailsList[j].materialCode) {
+            if (this.annualSaleGoalDetailsList[i].materialCode == this.annualSaleGoalDetailsList[j].materialCode &&
+              this.annualSaleGoalDetailsList[i].materialCode != null && 
+              this.annualSaleGoalDetailsList[j].materialCode != null && 
+              this.annualSaleGoalDetailsList[i].materialCode != "" && 
+              this.annualSaleGoalDetailsList[j].materialCode != "") {
               return this.$message.error('子表存在重复物料');
             }
           }
         }
+        this.annualSaleGoalDetailsList.forEach(item => {
+          if (item.oneLevelClassify == null || item.oneLevelClassify == "") {
+            item.oneLevelClassifyCode = null;
+          }
+          if (item.twoLevelClassify == null || item.twoLevelClassify == "") {
+            item.twoLevelClassifyCode = null;
+          }
+        })
         this.$refs["form"].validate(valid => {
           if (valid) {
             if (this.form.id != null) {
@@ -1044,11 +1234,9 @@
         const arr = JSON.parse(JSON.stringify(this.annualSaleGoalDetailsList))
         for (const element of arr) {
           const flag1 = (element.saleZone !== null) && (element.saleOrg !== null) && (element.custom !== null) && (
-              element.creator !== null) && (element.materialCode !== null) && (element.material !== null) &&
-            (element.goalValue !== 0)
+            element.creator !== null) && (element.goalValue !== 0)
           const flag2 = (element.saleOrg !== undefined) && (element.saleZone !== undefined) && (element.custom !==
-            undefined) && (element.creator !== undefined) && (element.materialCode != undefined) && (element
-            .material !== undefined)
+            undefined) && (element.creator !== undefined)
           if (flag1 && flag2) {
             isFlag.push(true);
           } else {
@@ -1079,7 +1267,7 @@
         obj.oneLevelClassify = oneArray[0]
         obj.twoLevelClassifyCode = twoArray[1]
         obj.twoLevelClassify = twoArray[0]
-        console.log(obj);
+        console.log(obj, 'obj');
       },
       // 批量修改对话框的方法
       dialogUpdateMoreSave() {

+ 3 - 0
src/views/business/spd/target/targetMk/index.vue

@@ -325,6 +325,9 @@
         listTarget(this.addDateRange(params, this.dateRange)).then(res => {
           if (res.code === 200) {
             this.tableList = res.rows;
+            for (const item of this.tableList) {
+              item.templateData.year = item.templateData.year.substr(0, 4);
+            }
             this.total = res.total;
             this.loading = false;
           }