Browse Source

feature(招标): 审批流功能实现

lk 2 years ago
parent
commit
8ce833e4cc

+ 5 - 18
src/views/customer/detail.vue

@@ -440,6 +440,8 @@
     <InvoiceHeader ref="invoiceHeader" @save="invoiceHeaderSave" />
     <!-- 添加跟进记录 -->
     <follow-add ref="follow-add" @fetch-data="handleClick({ name: 'follow' })" />
+    <!-- 闭环 -->
+    <closeLoopDialog ref="closeLoopDialog" @doRefesh="handleClick({ name: 'bid' })" />
   </div>
 </template>
 
@@ -464,6 +466,7 @@
   import Bid from './components/Bid'
   import InvoiceHeader from './components/InvoiceHeader'
   import FollowAdd from '@/views/proj/business/components/FollowAdd'
+  import closeLoopDialog from './inviteTenders/components/closeLoop'
 
   export default {
     name: 'CustomerDetail',
@@ -479,6 +482,7 @@
       ToOpen,
       FollowDetail,
       Businessedit,
+      closeLoopDialog,
     },
     data() {
       return {
@@ -708,24 +712,7 @@
       },
       // 闭环
       closeLoop(row) {
-        this.$prompt('确定闭环该招标信息吗', '提示', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-        })
-          .then(async ({ value }) => {
-            // 当用户点击确定按钮时,执行的逻辑
-            console.log('输入的值为:', value)
-            const [err, res] = await to(bidApi.closeLoop({ id: row.id, closeLoopMsg: value }))
-            if (err) return
-            if (res.code == 200) {
-              this.$baseMessage(res.msg, 'success', 'vab-hey-message-success')
-              this.handleClick({ name: 'bid' })
-            }
-          })
-          .catch(() => {
-            // 当用户点击取消按钮时,执行的逻辑
-            // console.log('取消输入')
-          })
+        this.$refs.closeLoopDialog.init(row)
       },
       // 保存联系人
       contactSave() {

+ 119 - 0
src/views/customer/inviteTenders/components/closeLoop.vue

@@ -0,0 +1,119 @@
+<template>
+  <div>
+    <!-- 闭环弹窗 -->
+    <el-dialog append-to-body :title="title" :visible.sync="visible" width="900px" @close="close">
+      <el-form ref="form" :model="form" :rules="rules">
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="闭环方式" prop="closeMethod">
+              <el-select v-model="form.closeMethod" placeholder="请选择闭环方式">
+                <el-option label="已创建项目" value="已创建项目" />
+                <el-option label="已创建经销商" value="已创建经销商" />
+                <el-option label="无法跟进" value="无法跟进" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col v-if="form.closeMethod == '已创建项目'" :span="24">
+            <el-form-item label="项目名称" prop="businessName">
+              <el-select v-model="form.businessName" filterable placeholder="请选择项目" style="width: 100%">
+                <el-option v-for="item in businessOptions" :key="item.id" :label="item.nboName" :value="item.nboName" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col v-if="form.closeMethod == '已创建经销商'" :span="24">
+            <el-form-item label="经销商名称" prop="distributorName">
+              <el-select v-model="form.distributorName" filterable placeholder="请选择经销商" style="width: 100%">
+                <el-option
+                  v-for="item in distributorOptions"
+                  :key="item.id"
+                  :label="item.distName"
+                  :value="item.distName" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="申请原因" prop="closeReason">
+          <el-input
+            v-model="form.closeReason"
+            maxlength="500"
+            placeholder="请输入备注"
+            resize="none"
+            :rows="5"
+            show-word-limit
+            type="textarea" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer">
+        <el-button type="primary" @click="closeLoop">闭环</el-button>
+        <el-button @click="visible = false">取消</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import to from 'await-to-js'
+  import bidApi from '@/api/customer/bid'
+  import distributorApi from '@/api/base/distr'
+  import businessApi from '@/api/proj/business'
+
+  export default {
+    data() {
+      return {
+        title: '申请闭环',
+        visible: false,
+        businessOptions: [],
+        distributorOptions: [],
+        form: {
+          closeMethod: '',
+          businessName: '',
+          distributorName: '',
+          closeReason: '',
+        },
+        rules: {
+          closeMethod: [{ required: true, trigger: ['blur', 'change'], message: '请选择闭环方式' }],
+          businessName: [{ required: true, trigger: ['blur', 'change'], message: '请选择项目' }],
+          distributorName: [{ required: true, trigger: ['blur', 'change'], message: '请选择经销商' }],
+          closeReason: [{ required: true, trigger: ['blur', 'change'], message: '请输入闭环原因' }],
+        },
+        theBid: {},
+      }
+    },
+    methods: {
+      async init(row) {
+        this.theBid = row
+        this.visible = true
+        businessApi.getList({ pageNum: 1, pageSize: 99999 }).then((response) => {
+          this.businessOptions = response.data.list || []
+        })
+        distributorApi.getList({ pageNum: 1, pageSize: 99999 }).then((response) => {
+          this.distributorOptions = response.data.list || []
+        })
+      },
+      async closeLoop() {
+        this.$refs.form.validate(async (valid) => {
+          if (valid) {
+            let params = { ...this.form }
+            params.id = this.theBid.id
+            const [err, res] = await to(bidApi.closeLoop(params))
+            if (err) return
+            this.$message.success(res.msg)
+            this.visible = false
+            this.$emit('doRefesh')
+          }
+        })
+      },
+      close() {
+        this.form = {
+          closeMethod: '',
+          businessName: '',
+          distributorName: '',
+          closeReason: '',
+        }
+        this.$refs['form'].resetFields()
+      },
+    },
+  }
+</script>
+
+<style></style>

+ 5 - 19
src/views/customer/inviteTenders/index.vue

@@ -149,6 +149,8 @@
     <addBusiness ref="addBusiness" />
     <!-- 经销商 -->
     <addDistributor ref="addDistributor" />
+    <!-- 闭环 -->
+    <closeLoopDialog ref="closeLoopDialog" @doRefesh="fetchData" />
   </div>
 </template>
 
@@ -161,10 +163,11 @@
   import Bid from '../components/Bid'
   import addBusiness from '@/views/proj/business/components/BusinessAdd'
   import addDistributor from '@/views/base/distributor/components/DistrEdit'
+  import closeLoopDialog from './components/closeLoop'
 
   export default {
     name: 'Distributor',
-    components: { TableTool, Bid, addBusiness, addDistributor },
+    components: { TableTool, Bid, addBusiness, addDistributor, closeLoopDialog },
     data() {
       return {
         tableKey: 0,
@@ -288,24 +291,7 @@
     methods: {
       // 闭环
       closeLoop(row) {
-        this.$prompt('确定闭环该招标信息吗', '提示', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-        })
-          .then(async ({ value }) => {
-            // 当用户点击确定按钮时,执行的逻辑
-            console.log('输入的值为:', value)
-            const [err, res] = await to(bidApi.closeLoop({ id: row.id, closeLoopMsg: value }))
-            if (err) return
-            if (res.code == 200) {
-              this.$baseMessage(res.msg, 'success', 'vab-hey-message-success')
-              this.fetchData()
-            }
-          })
-          .catch(() => {
-            // 当用户点击取消按钮时,执行的逻辑
-            // console.log('取消输入')
-          })
+        this.$refs.closeLoopDialog.init(row)
       },
       // 新建经销商
       addDistributor() {