Quellcode durchsuchen

SPD营销-任务、动作第一次代码提交

001295 vor 2 Jahren
Ursprung
Commit
dd238b3491

+ 44 - 0
src/api/business/spd/bo/behavior.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询动作列表
+export function listBehavior(query) {
+  return request({
+    url: '/mk/bo/behavior/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询动作详细
+export function getBehavior(behaviorId) {
+  return request({
+    url: '/mk/bo/behavior/' + behaviorId,
+    method: 'get'
+  })
+}
+
+// 新增动作
+export function addBehavior(data) {
+  return request({
+    url: '/mk/bo/behavior',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改动作
+export function updateBehavior(data) {
+  return request({
+    url: '/mk/bo/behavior',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除岗位
+export function delBehavior(behaviorId) {
+  return request({
+    url: '/mk/bo/behavior/' + behaviorId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/business/spd/bo/task.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询任务列表
+export function listTask(query) {
+  return request({
+    url: '/mk/bo/task/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询任务详细
+export function getTask(taskId) {
+  return request({
+    url: '/mk/bo/task/' + taskId,
+    method: 'get'
+  })
+}
+
+// 新增任务
+export function addTask(data) {
+  return request({
+    url: '/mk/bo/task',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改任务
+export function updateTask(data) {
+  return request({
+    url: '/mk/bo/task',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除岗位
+export function delTask(taskId) {
+  return request({
+    url: '/mk/bo/task/' + taskId,
+    method: 'delete'
+  })
+}

+ 458 - 0
src/views/business/spd/bo/behavior/index.vue

@@ -0,0 +1,458 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="任务" prop="taskCode">
+        <el-input
+          v-model="queryParams.taskCode"
+          placeholder="请输入任务编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="行动日期" prop="time">
+        <el-date-picker clearable
+          v-model="queryParams.time"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择行动日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="客户" prop="customer">
+        <el-input
+          v-model="queryParams.customer"
+          placeholder="请输入客户"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="客户名称" prop="customerName">
+        <el-input
+          v-model="queryParams.customerName"
+          placeholder="请输入客户名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系人" prop="linkman">
+        <el-input
+          v-model="queryParams.linkman"
+          placeholder="请输入联系人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系人名称" prop="linkmanName">
+        <el-input
+          v-model="queryParams.linkmanName"
+          placeholder="请输入联系人名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="拜访目的" prop="purpose">
+        <el-input
+          v-model="queryParams.purpose"
+          placeholder="请输入拜访目的"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="拜访效果" prop="result">
+        <el-input
+          v-model="queryParams.result"
+          placeholder="请输入拜访效果"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否上级协助" prop="assist">
+        <el-input
+          v-model="queryParams.assist"
+          placeholder="请输入是否上级协助"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="销售组织" prop="salesOrg">
+        <el-input
+          v-model="queryParams.salesOrg"
+          placeholder="请输入销售组织"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="销售组织名称" prop="salesOrgName">
+        <el-input
+          v-model="queryParams.salesOrgName"
+          placeholder="请输入销售组织名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="部门" prop="dept">
+        <el-input
+          v-model="queryParams.dept"
+          placeholder="请输入部门"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="部门名称" prop="deptName">
+        <el-input
+          v-model="queryParams.deptName"
+          placeholder="请输入部门名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="负责人" prop="staff">
+        <el-input
+          v-model="queryParams.staff"
+          placeholder="请输入负责人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="负责人名称" prop="staffName">
+        <el-input
+          v-model="queryParams.staffName"
+          placeholder="请输入负责人名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:behavior:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:behavior:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:behavior:remove']"
+        >删除</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="behaviorList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="任务编码" align="center" prop="taskCode" />
+      <el-table-column label="行动类型" align="center" prop="type" />
+      <el-table-column label="行动日期" align="center" prop="time" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.time, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="客户" align="center" prop="customerName" />
+      <el-table-column label="联系人" align="center" prop="linkmanName" />
+      <el-table-column label="拜访目的" align="center" prop="purpose" />
+      <el-table-column label="拜访效果" align="center" prop="result" />
+      <el-table-column label="是否上级协助" align="center" prop="assist" />
+      <el-table-column label="协助内容" align="center" prop="assistContent" />
+      <el-table-column label="销售组织" align="center" prop="salesOrgName" />
+      <el-table-column label="部门" align="center" prop="deptName" />
+      <el-table-column label="负责人" align="center" prop="staffName" />
+      <el-table-column label="洽谈内容" align="center" prop="content" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:behavior:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:behavior:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改行动对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="任务id" prop="taskId">
+          <el-input v-model="form.taskId" placeholder="请输入任务id" />
+        </el-form-item>
+        <el-form-item label="行动日期" prop="time">
+          <el-date-picker clearable
+            v-model="form.time"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择行动日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="客户" prop="customer">
+          <el-input v-model="form.customer" placeholder="请输入客户" />
+        </el-form-item>
+        <el-form-item label="客户名称" prop="customerName">
+          <el-input v-model="form.customerName" placeholder="请输入客户名称" />
+        </el-form-item>
+        <el-form-item label="联系人" prop="linkman">
+          <el-input v-model="form.linkman" placeholder="请输入联系人" />
+        </el-form-item>
+        <el-form-item label="联系人名称" prop="linkmanName">
+          <el-input v-model="form.linkmanName" placeholder="请输入联系人名称" />
+        </el-form-item>
+        <el-form-item label="拜访目的" prop="purpose">
+          <el-input v-model="form.purpose" placeholder="请输入拜访目的" />
+        </el-form-item>
+        <el-form-item label="拜访效果" prop="result">
+          <el-input v-model="form.result" placeholder="请输入拜访效果" />
+        </el-form-item>
+        <el-form-item label="是否上级协助" prop="assist">
+          <el-input v-model="form.assist" placeholder="请输入是否上级协助" />
+        </el-form-item>
+        <el-form-item label="协助内容">
+          <editor v-model="form.assistContent" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label="销售组织" prop="salesOrg">
+          <el-input v-model="form.salesOrg" placeholder="请输入销售组织" />
+        </el-form-item>
+        <el-form-item label="销售组织名称" prop="salesOrgName">
+          <el-input v-model="form.salesOrgName" placeholder="请输入销售组织名称" />
+        </el-form-item>
+        <el-form-item label="部门" prop="dept">
+          <el-input v-model="form.dept" placeholder="请输入部门" />
+        </el-form-item>
+        <el-form-item label="部门名称" prop="deptName">
+          <el-input v-model="form.deptName" placeholder="请输入部门名称" />
+        </el-form-item>
+        <el-form-item label="负责人" prop="staff">
+          <el-input v-model="form.staff" placeholder="请输入负责人" />
+        </el-form-item>
+        <el-form-item label="负责人名称" prop="staffName">
+          <el-input v-model="form.staffName" placeholder="请输入负责人名称" />
+        </el-form-item>
+        <el-form-item label="洽谈内容">
+          <editor v-model="form.content" :min-height="192"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listBehavior, getBehavior, delBehavior, addBehavior, updateBehavior } from "@/api/business/spd/bo/behavior";
+
+export default {
+  name: "behavior",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 行动表格数据
+      behaviorList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        taskId: null,
+        type: null,
+        time: null,
+        customer: null,
+        customerName: null,
+        linkman: null,
+        linkmanName: null,
+        purpose: null,
+        result: null,
+        assist: null,
+        assistContent: null,
+        salesOrg: null,
+        salesOrgName: null,
+        dept: null,
+        deptName: null,
+        staff: null,
+        staffName: null,
+        content: null,
+        tenantId: null,
+        revision: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询行动列表 */
+    getList() {
+      this.loading = true;
+      listBehavior(this.queryParams).then(response => {
+        this.behaviorList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        taskCode: null,
+        type: null,
+        time: null,
+        customer: null,
+        customerName: null,
+        linkman: null,
+        linkmanName: null,
+        purpose: null,
+        result: null,
+        assist: null,
+        assistContent: null,
+        salesOrg: null,
+        salesOrgName: null,
+        dept: null,
+        deptName: null,
+        staff: null,
+        staffName: null,
+        content: null,
+        tenantId: null,
+        revision: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        delFlag: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加行动";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getBehavior(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改行动";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateBehavior(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addBehavior(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除行动编号为"' + ids + '"的数据项?').then(function() {
+        return delBehavior(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/behavior/export', {
+        ...this.queryParams
+      }, `behavior_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 582 - 0
src/views/business/spd/bo/task/index.vue

@@ -0,0 +1,582 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="商机编码" prop="boCode">
+        <el-input
+          v-model="queryParams.boCode"
+          placeholder="请输入商机编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="任务编码" prop="code">
+        <el-input
+          v-model="queryParams.code"
+          placeholder="请输入任务编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="任务名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入任务名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商机阶段" prop="boStage">
+        <el-input
+          v-model="queryParams.boStage"
+          placeholder="请输入商机阶段"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="任务状态" prop="state">
+        <el-input
+          v-model="queryParams.state"
+          placeholder="请输入任务状态"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="客户名称" prop="customerName">
+        <el-input
+          v-model="queryParams.customerName"
+          placeholder="请输入客户名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系人名称" prop="linkmanName">
+        <el-input
+          v-model="queryParams.linkmanName"
+          placeholder="请输入联系人名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="销售组织名称" prop="salesOrgName">
+        <el-input
+          v-model="queryParams.salesOrgName"
+          placeholder="请输入销售组织名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="部门名称" prop="deptName">
+        <el-input
+          v-model="queryParams.deptName"
+          placeholder="请输入部门名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="负责人名称" prop="staffName">
+        <el-input
+          v-model="queryParams.staffName"
+          placeholder="请输入负责人名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="截止时间" prop="deadlineDate">
+        <el-date-picker clearable
+          v-model="queryParams.deadlineDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择截止时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['drp-business:task:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['drp-business:task:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['drp-business:task:remove']"
+        >删除</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="taskList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="商机编码" align="center" prop="boCode" />
+      <el-table-column label="商机阶段" align="center" prop="boStage" />
+      <el-table-column label="任务编码" align="center" prop="code" />
+      <el-table-column label="任务名称" align="center" prop="name" />
+      <el-table-column label="任务类型" align="center" prop="type" />
+      <el-table-column label="任务状态" align="center" prop="state" />
+      <el-table-column label="客户名称" align="center" prop="customerName" />
+      <el-table-column label="联系人名称" align="center" prop="linkmanName" />
+      <el-table-column label="销售组织名称" align="center" prop="salesOrgName" />
+      <el-table-column label="部门名称" align="center" prop="deptName" />
+      <el-table-column label="负责人名称" align="center" prop="staffName" />
+      <el-table-column label="截止时间" align="center" prop="deadlineDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.deadlineDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="任务内容" align="center" prop="content" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['drp-business:task:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['drp-business:task:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改任务对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="商机" prop="boCode">
+          <el-input v-model="form.boCode" placeholder="请输入商机编码" />
+        </el-form-item>
+        <el-form-item label="商机阶段" prop="boStage">
+          <el-input v-model="form.boStage" placeholder="请输入商机阶段" />
+        </el-form-item>
+        <el-form-item label="任务编码" prop="code">
+          <el-input v-model="form.code" placeholder="请输入任务编码" />
+        </el-form-item>
+        <el-form-item label="任务名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入任务名称" />
+        </el-form-item>
+        <el-form-item label="任务状态" prop="state">
+          <el-input v-model="form.state" placeholder="请输入任务状态" />
+        </el-form-item>
+        <el-form-item label="客户" prop="customer">
+          <el-input v-model="form.customer" placeholder="请输入客户" />
+        </el-form-item>
+        <el-form-item label="客户名称" prop="customerName">
+          <el-input v-model="form.customerName" placeholder="请输入客户名称" />
+        </el-form-item>
+        <el-form-item label="联系人" prop="linkman">
+          <el-input v-model="form.linkman" placeholder="请输入联系人" />
+        </el-form-item>
+        <el-form-item label="销售组织" prop="salesOrg">
+          <el-input v-model="form.salesOrg" placeholder="请输入销售组织" />
+        </el-form-item>
+        <el-form-item label="销售组织名称" prop="salesOrgName">
+          <el-input v-model="form.salesOrgName" placeholder="请输入销售组织名称" />
+        </el-form-item>
+        <el-form-item label="部门" prop="dept">
+          <el-input v-model="form.dept" placeholder="请输入部门" />
+        </el-form-item>
+        <el-form-item label="部门名称" prop="deptName">
+          <el-input v-model="form.deptName" placeholder="请输入部门名称" />
+        </el-form-item>
+        <el-form-item label="负责人" prop="staff">
+          <el-input v-model="form.staff" placeholder="请输入负责人" />
+        </el-form-item>
+        <el-form-item label="负责人名称" prop="staffName">
+          <el-input v-model="form.staffName" placeholder="请输入负责人名称" />
+        </el-form-item>
+        <el-form-item label="截止时间" prop="deadlineDate">
+          <el-date-picker clearable
+            v-model="form.deadlineDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择截止时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="任务内容">
+          <editor v-model="form.content" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label="租户号" prop="tenantId">
+          <el-input v-model="form.tenantId" placeholder="请输入租户号" />
+        </el-form-item>
+        <el-form-item label="乐观锁" prop="revision">
+          <el-input v-model="form.revision" placeholder="请输入乐观锁" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-divider content-position="center">行动信息</el-divider>
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddMkBoBehavior">添加</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteMkBoBehavior">删除</el-button>
+          </el-col>
+        </el-row>
+        <el-table :data="mkBoBehaviorList" :row-class-name="rowMkBoBehaviorIndex" @selection-change="handleMkBoBehaviorSelectionChange" ref="mkBoBehavior">
+          <el-table-column type="selection" width="50" align="center" />
+          <el-table-column label="序号" align="center" prop="index" width="50"/>
+          <el-table-column label="行动类型" prop="type" width="150">
+            <template slot-scope="scope">
+              <el-select v-model="scope.row.type" placeholder="请选择行动类型">
+                <el-option label="请选择字典生成" value="" />
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column label="行动日期" prop="time" width="240">
+            <template slot-scope="scope">
+              <el-date-picker clearable v-model="scope.row.time" type="date" value-format="yyyy-MM-dd" placeholder="请选择行动日期" />
+            </template>
+          </el-table-column>
+          <el-table-column label="客户" prop="customer" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.customer" placeholder="请输入客户" />
+            </template>
+          </el-table-column>
+          <el-table-column label="客户名称" prop="customerName" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.customerName" placeholder="请输入客户名称" />
+            </template>
+          </el-table-column>
+          <el-table-column label="联系人" prop="linkman" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.linkman" placeholder="请输入联系人" />
+            </template>
+          </el-table-column>
+          <el-table-column label="联系人名称" prop="linkmanName" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.linkmanName" placeholder="请输入联系人名称" />
+            </template>
+          </el-table-column>
+          <el-table-column label="拜访目的" prop="purpose" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.purpose" placeholder="请输入拜访目的" />
+            </template>
+          </el-table-column>
+          <el-table-column label="拜访效果" prop="result" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.result" placeholder="请输入拜访效果" />
+            </template>
+          </el-table-column>
+          <el-table-column label="是否上级协助" prop="assist" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.assist" placeholder="请输入是否上级协助" />
+            </template>
+          </el-table-column>
+          <el-table-column label="销售组织" prop="salesOrg" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.salesOrg" placeholder="请输入销售组织" />
+            </template>
+          </el-table-column>
+          <el-table-column label="销售组织名称" prop="salesOrgName" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.salesOrgName" placeholder="请输入销售组织名称" />
+            </template>
+          </el-table-column>
+          <el-table-column label="部门" prop="dept" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.dept" placeholder="请输入部门" />
+            </template>
+          </el-table-column>
+          <el-table-column label="部门名称" prop="deptName" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.deptName" placeholder="请输入部门名称" />
+            </template>
+          </el-table-column>
+          <el-table-column label="负责人" prop="staff" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.staff" placeholder="请输入负责人" />
+            </template>
+          </el-table-column>
+          <el-table-column label="负责人名称" prop="staffName" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.staffName" placeholder="请输入负责人名称" />
+            </template>
+          </el-table-column>
+          <el-table-column label="租户号" prop="tenantId" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.tenantId" placeholder="请输入租户号" />
+            </template>
+          </el-table-column>
+          <el-table-column label="乐观锁" prop="revision" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.revision" placeholder="请输入乐观锁" />
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+
+<script>
+import { listTask, getTask, delTask, addTask, updateTask } from "@/api/business/spd/bo/task";
+
+export default {
+  name: "task",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 子表选中数据
+      checkedMkBoBehavior: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 任务表格数据
+      taskList: [],
+      // 行动表格数据
+      mkBoBehaviorList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        boCode: null,
+        boStage: null,
+        code: null,
+        name: null,
+        type: null,
+        state: null,
+        customer: null,
+        customerName: null,
+        linkman: null,
+        salesOrg: null,
+        salesOrgName: null,
+        dept: null,
+        deptName: null,
+        staff: null,
+        staffName: null,
+        deadlineDate: null,
+        content: null,
+        tenantId: null,
+        revision: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询任务列表 */
+    getList() {
+      this.loading = true;
+      listTask(this.queryParams).then(response => {
+        this.taskList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        boCode: null,
+        boStage: null,
+        code: null,
+        name: null,
+        type: null,
+        state: null,
+        customer: null,
+        customerName: null,
+        linkman: null,
+        salesOrg: null,
+        salesOrgName: null,
+        dept: null,
+        deptName: null,
+        staff: null,
+        staffName: null,
+        deadlineDate: null,
+        content: null,
+        tenantId: null,
+        revision: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        delFlag: null
+      };
+      this.mkBoBehaviorList = [];
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加任务";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getTask(id).then(response => {
+        this.form = response.data;
+        this.mkBoBehaviorList = response.data.mkBoBehaviorList;
+        this.open = true;
+        this.title = "修改任务";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.mkBoBehaviorList = this.mkBoBehaviorList;
+          if (this.form.id != null) {
+            updateTask(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addTask(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除任务编号为"' + ids + '"的数据项?').then(function() {
+        return delTask(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+	/** 行动序号 */
+    rowMkBoBehaviorIndex({ row, rowIndex }) {
+      row.index = rowIndex + 1;
+    },
+    /** 行动添加按钮操作 */
+    handleAddMkBoBehavior() {
+      let obj = {};
+      obj.type = "";
+      obj.time = "";
+      obj.customer = "";
+      obj.customerName = "";
+      obj.linkman = "";
+      obj.linkmanName = "";
+      obj.purpose = "";
+      obj.result = "";
+      obj.assist = "";
+      obj.assistContent = "";
+      obj.salesOrg = "";
+      obj.salesOrgName = "";
+      obj.dept = "";
+      obj.deptName = "";
+      obj.staff = "";
+      obj.staffName = "";
+      obj.content = "";
+      obj.tenantId = "";
+      obj.revision = "";
+      this.mkBoBehaviorList.push(obj);
+    },
+    /** 行动删除按钮操作 */
+    handleDeleteMkBoBehavior() {
+      if (this.checkedMkBoBehavior.length == 0) {
+        this.$modal.msgError("请先选择要删除的行动数据");
+      } else {
+        const mkBoBehaviorList = this.mkBoBehaviorList;
+        const checkedMkBoBehavior = this.checkedMkBoBehavior;
+        this.mkBoBehaviorList = mkBoBehaviorList.filter(function(item) {
+          return checkedMkBoBehavior.indexOf(item.index) == -1
+        });
+      }
+    },
+    /** 复选框选中数据 */
+    handleMkBoBehaviorSelectionChange(selection) {
+      this.checkedMkBoBehavior = selection.map(item => item.index)
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('drp-business/task/export', {
+        ...this.queryParams
+      }, `task_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>