Răsfoiți Sursa

feature(销售签约指标): 编辑计划指标功能实现

likai 2 ani în urmă
părinte
comite
593bf7b9be

+ 4 - 0
src/api/contract/target.js

@@ -10,4 +10,8 @@ export default {
   importSaleTarget(query) {
     return micro_request.postRequest(basePath, 'SaleTarget', 'Import', query)
   },
+  // 销售签约指标导入
+  editSaleTarget(query) {
+    return micro_request.postRequest(basePath, 'SaleTarget', 'Edit', query)
+  },
 }

+ 210 - 0
src/views/contract/target/components/EditTarget.vue

@@ -0,0 +1,210 @@
+<!--
+ * @Author: wanglj 471442253@qq.com
+ * @Date: 2022-12-26 14:34:34
+ * @LastEditors: wanglj
+ * @LastEditTime: 2023-01-13 09:41:38
+ * @Description: file content
+ * @FilePath: \opms_frontend\src\views\customer\components\allocate.vue
+-->
+<template>
+  <el-dialog title="编辑指标" :visible.sync="visible" width="50%" @close="handleClose">
+    <el-form ref="form" label-width="150px" :model="form" :rules="rules">
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="销售" prop="saleName">
+            <el-input v-model="theTarget.saleName" disabled />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="年度" prop="year">
+            <el-input v-model="theTarget.year" disabled />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="1月计划" prop="plan1">
+            <el-input-number
+              v-model="theTarget.plan1"
+              clearable
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="2月计划" prop="plan2">
+            <el-input-number
+              v-model="theTarget.plan2"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="3月计划" prop="plan3">
+            <el-input-number
+              v-model="theTarget.plan3"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="4月计划" prop="plan4">
+            <el-input-number
+              v-model="theTarget.plan4"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="5月计划" prop="plan5">
+            <el-input-number
+              v-model="theTarget.plan5"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="6月计划" prop="plan6">
+            <el-input-number
+              v-model="theTarget.plan6"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="7月计划" prop="plan7">
+            <el-input-number
+              v-model="theTarget.plan7"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="8月计划" prop="plan8">
+            <el-input-number
+              v-model="theTarget.plan8"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="9月计划" prop="plan9">
+            <el-input-number
+              v-model="theTarget.plan9"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="10月计划" prop="plan10">
+            <el-input-number
+              v-model="theTarget.plan10"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="11月计划" prop="plan11">
+            <el-input-number
+              v-model="theTarget.plan11"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="12月计划" prop="plan12">
+            <el-input-number
+              v-model="theTarget.plan12"
+              controls-position="right"
+              :min="0"
+              placeholder="请输入指标(元)"
+              :precision="2"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <span slot="footer">
+      <el-button :loading="loading" size="mini" type="primary" @click="handleSubmit">确定</el-button>
+      <el-button size="mini" @click="visible = false">取消</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  import targetApi from '@/api/contract/target'
+
+  export default {
+    components: {},
+    data() {
+      return {
+        visible: false,
+        loading: false,
+        theTarget: {},
+      }
+    },
+    methods: {
+      // 打开弹窗
+      openDialog(row) {
+        this.theTarget = JSON.parse(JSON.stringify(row))
+        this.visible = true
+      },
+      //  保存数据
+      async handleSubmit() {
+        this.loading = true
+        targetApi
+          .editSaleTarget({ target: this.theTarget })
+          .then((res) => {
+            if (res.code == 200) {
+              this.$message.success('提交成功')
+              this.visible = false
+              this.$emit('refresh')
+            } else {
+              this.$message.success('系统异常')
+              console.error(res)
+            }
+            this.loading = false
+          })
+          .catch((err) => {
+            console.error(err)
+            this.loading = false
+          })
+      },
+    },
+  }
+</script>
+
+<style></style>

+ 31 - 5
src/views/contract/target/index.vue

@@ -36,20 +36,28 @@
           :show-file-list="false"
           style="margin: 0 10px 10px 0 !important">
           <el-button
-            v-permissions="['contract/target/import']"
+            v-permissions="['contract:target:import']"
             icon="el-icon-upload2"
             :loading="importLoading"
             type="primary">
             导入
           </el-button>
         </el-upload>
+        <el-button
+          v-permissions="['contract:target:edit']"
+          :disabled="!$refs.table || !$refs.table.selection || $refs.table.selection.length != 1"
+          icon="el-icon-plus"
+          type="primary"
+          @click="handleEdit()">
+          编辑
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <table-tool :columns="columns" :show-columns.sync="showColumns" table-type="saleTarget" />
       </vab-query-form-right-panel>
     </vab-query-form>
     <el-table ref="table" v-loading="listLoading" :data="list" :height="height">
-      <el-table-column align="center" show-overflow-tooltip type="selection" />
+      <el-table-column align="center" :selectable="selectable" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
         :key="index"
@@ -75,12 +83,15 @@
       :total="total"
       @current-change="handleCurrentChange"
       @size-change="handleSizeChange" />
+    <!-- 编辑指标 -->
+    <edit-target ref="editTarget" @refresh="queryData" />
   </div>
 </template>
 
 <script>
   import targetApi from '@/api/contract/target'
   import TableTool from '@/components/table/TableTool'
+  import EditTarget from './components/EditTarget'
   import to from 'await-to-js'
   import axios from 'axios'
   import asyncUploadFile from '@/utils/uploadajax'
@@ -89,6 +100,7 @@
     name: 'SaleTarget',
     components: {
       TableTool,
+      EditTarget,
     },
     data() {
       return {
@@ -347,9 +359,9 @@
         this.queryForm.pageNum = val
         this.queryData()
       },
-      // 客户编辑
-      async handleEdit(row = null) {
-        row ? this.$refs.edit.init(row.id) : this.$refs.edit.init()
+      // 编辑销售指标
+      async handleEdit() {
+        this.$refs.editTarget.openDialog(this.$refs.table.selection[0])
       },
       beforeUpload(file) {
         let flag1 = file.size < this.fileSettings.fileSize
@@ -409,6 +421,20 @@
             })
           })
       },
+      // 是否可选中
+      selectable(row, index) {
+        if (this.$refs.table && this.$refs.table.selection) {
+          for (let item of this.$refs.table.selection) {
+            if (item.id == row.id) {
+              return true
+            }
+          }
+        } else {
+          return true
+        }
+
+        return this.$refs.table.selection.length < 1
+      },
     },
   }
 </script>