Ver Fonte

Merge branch 'master' of http://172.16.100.139/new-business/drp-web

002390 há 2 anos atrás
pai
commit
34bad3c03c

+ 51 - 0
src/api/business/spd/bo/basic.js

@@ -0,0 +1,51 @@
+import request from '@/utils/request'
+
+// 查询商机基础信息列表
+export function listBasic(query) {
+  return request({
+    url: '/mk/bo/basic/list',
+    method: 'get',
+    params: query
+  })
+}
+
+
+
+// 查询商机基础信息详细
+export function getBasic(id) {
+  return request({
+    url: '/mk/bo/basic/' + id,
+    method: 'get'
+  })
+}
+
+
+
+// 新增商机基础信息
+export function addBasic(data) {
+  return request({
+    url: '/mk/bo/basic',
+    method: 'post',
+    data: data
+  })
+}
+
+
+
+// 修改商机基础信息
+export function updateBasic(data) {
+  return request({
+    url: '/mk/bo/basic',
+    method: 'put',
+    data: data
+  })
+}
+
+
+// 删除商机基础信息
+export function delBasic(id) {
+  return request({
+    url: '/mk/bo/basic/' + id,
+    method: 'delete'
+  })
+}

+ 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'
+  })
+}

+ 41 - 0
src/api/classify/basic.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+// 获取物料分类树形结构数据
+export function getTree() {
+  return request({
+    url: `/system/classify/list`,
+    method: 'post',
+  })
+}
+// 获取物料基本分类详细信息
+export function getDetail(id) {
+  return request({
+    url: `/system/classify/details`,
+    method: 'get',
+    params: {id}
+  })
+}
+// 新增物料基本信息
+export function add(data) {
+  return request({
+    url: `/system/classify/add`,
+    method: 'post',
+    data: data
+  })
+}
+// 删除物料基本分类
+export function delClassify(data) {
+  return request({
+    url:`/system/classify/delete`,
+    method: 'post',
+    data: data
+  })
+}
+// 修改物料基本分类
+export function edit(data) {
+  return request({
+    url:`/system/classify/edit`,
+    method: 'post',
+    data: data
+  })
+}

+ 33 - 0
src/api/special/basic.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+// 新增分类特殊属性
+export function add(data) {
+  return request({
+    url: `/system/special/add`,
+    method: 'post',
+    data: data
+  })
+}
+// 通过分类编码查询特殊属性信息
+export function getDetail(code) {
+  return request({
+    url: `/system/special/detail/${code}`,
+    method: 'get',
+  })
+}
+// 删除分类特殊属性
+export function delSpecial(data) {
+  return request({
+    url: `/system/special/delete`,
+    method: 'post',
+    data: data
+  })
+}
+// 修改分类特殊属性
+export function editSpecial(data) {
+  return request({
+    url: `/system/special/edit`,
+    method: 'post',
+    data: data
+  })
+}

+ 10 - 0
src/api/sso/ssoLogin.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 单点登录接口
+export function sso(data) {
+  return request({
+    url: `/login/sso`,
+    method: 'post',
+    data: data
+  })
+}

+ 474 - 0
src/views/business/spd/bo/basic/index.vue

@@ -0,0 +1,474 @@
+<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="boSource">
+        <el-input
+          v-model="queryParams.boSource"
+          placeholder="请输入商机来源"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商机状态" prop="boState">
+        <el-input
+          v-model="queryParams.boState"
+          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="boName">
+        <el-input
+          v-model="queryParams.boName"
+          placeholder="请输入商机名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="推荐人" prop="referrer">
+        <el-input
+          v-model="queryParams.referrer"
+          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="totalHosRevenue">
+        <el-input
+          v-model="queryParams.totalHosRevenue"
+          placeholder="请输入医院营收总额"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="医院耗材预估值" prop="hosDiscreetValue">
+        <el-input
+          v-model="queryParams.hosDiscreetValue"
+          placeholder="请输入医院耗材预估值"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="销售组织" prop="marketingOrganizing">
+        <el-input
+          v-model="queryParams.marketingOrganizing"
+          placeholder="请输入销售组织"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="销售区域" prop="marketingArea">
+        <el-input
+          v-model="queryParams.marketingArea"
+          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="principal">
+        <el-input
+          v-model="queryParams.principal"
+          placeholder="请输入负责人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+<!--      <el-form-item label="租户号" prop="tenantId">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.tenantId"-->
+<!--          placeholder="请输入租户号"-->
+<!--          clearable-->
+<!--          @keyup.enter.native="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="乐观锁" prop="revision">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.revision"-->
+<!--          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:basic: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:basic: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:basic:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:basic:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="basicList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="商机编码" align="center" prop="id" />
+      <el-table-column label="商机名称" align="center" prop="boName" />
+      <el-table-column label="商机类型" align="center" prop="boType" />
+      <el-table-column label="商机状态" align="center" prop="boState" />
+      <el-table-column label="商机来源" align="center" prop="boSource" />
+      <el-table-column label="商机阶段" align="center" prop="boStage" />
+      <el-table-column label="客户名称" align="center" prop="customerName" />
+      <el-table-column label="推荐人" align="center" prop="referrer" />
+      <el-table-column label="医院营收总额" align="center" prop="totalHosRevenue" />
+      <el-table-column label="医院耗材预估值" align="center" prop="hosDiscreetValue" />
+      <el-table-column label="商机内容" align="center" prop="boContent" />
+      <el-table-column label="销售组织" align="center" prop="marketingOrganizing" />
+      <el-table-column label="销售区域" align="center" prop="marketingArea" />
+      <el-table-column label="部门" align="center" prop="deptName" />
+      <el-table-column label="负责人" align="center" prop="principal" />
+<!--      <el-table-column label="租户号" align="center" prop="tenantId" />-->
+<!--      <el-table-column label="乐观锁" align="center" prop="revision" />-->
+      <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:basic:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:basic: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="boSource">
+          <el-input v-model="form.boSource" placeholder="请输入商机来源" />
+        </el-form-item>
+        <el-form-item label="商机状态" prop="boState">
+          <el-input v-model="form.boState" 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="boName">
+          <el-input v-model="form.boName" placeholder="请输入商机名称" />
+        </el-form-item>
+        <el-form-item label="推荐人" prop="referrer">
+          <el-input v-model="form.referrer" 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="totalHosRevenue">
+          <el-input v-model="form.totalHosRevenue" placeholder="请输入医院营收总额" />
+        </el-form-item>
+        <el-form-item label="医院耗材预估值" prop="hosDiscreetValue">
+          <el-input v-model="form.hosDiscreetValue" placeholder="请输入医院耗材预估值" />
+        </el-form-item>
+        <el-form-item label="商机内容">
+          <editor v-model="form.boContent" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label="销售组织" prop="marketingOrganizing">
+          <el-input v-model="form.marketingOrganizing" placeholder="请输入销售组织" />
+        </el-form-item>
+        <el-form-item label="销售区域" prop="marketingArea">
+          <el-input v-model="form.marketingArea" 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="principal">
+          <el-input v-model="form.principal" placeholder="请输入负责人" />
+        </el-form-item>
+        <el-form-item label="删除标记" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标记" />
+        </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>
+      <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 { listBasic, getBasic, addBasic, updateBasic, delBasic } from "@/api/business/spd/bo/basic";
+
+export default {
+  name: "Basic",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 商机基础信息表格数据
+      basicList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        id: null,
+        boName: null,
+        boType: null,
+        boState: null,
+        boSource: null,
+        boStage: null,
+        totalHosRevenue: null,
+        projectApproval: null,
+        startWinningRate: null,
+        endWinningRate: null,
+        biddingDocumentsPass: null,
+        startConSignTime: null,
+        endConSignTime: null,
+        marketingOrganizing: null,
+        marketingArea: null,
+        deptName: null,
+        createBy: null,
+        startCreateTime: null,
+        endCreateTime: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      // rules: {
+      //   boSource: [
+      //     { required: true, message: "商机来源不能为空", trigger: "blur" }
+      //   ],
+      //   boName: [
+      //     { required: true, message: "商机名称不能为空", trigger: "blur" }
+      //   ],
+      //   customerName: [
+      //     { required: true, message: "客户名称不能为空", trigger: "blur" }
+      //   ],
+      //   totalHosRevenue: [
+      //     { required: true, message: "医院营收总额不能为空", trigger: "blur" }
+      //   ],
+      //   hosDiscreetValue: [
+      //     { required: true, message: "医院耗材预估值不能为空", trigger: "blur" }
+      //   ],
+      //   boContent: [
+      //     { required: true, message: "商机内容不能为空", trigger: "blur" }
+      //   ],
+      //   marketingOrganizing: [
+      //     { required: true, message: "销售组织不能为空", trigger: "blur" }
+      //   ],
+      //   marketingArea: [
+      //     { required: true, message: "销售区域不能为空", trigger: "blur" }
+      //   ],
+      //   deptName: [
+      //     { required: true, message: "部门不能为空", trigger: "blur" }
+      //   ],
+      // }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询商机基础信息列表 */
+    getList() {
+      this.loading = true;
+      listBasic(this.queryParams).then(response => {
+        this.basicList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        boSource: null,
+        boState: null,
+        boStage: null,
+        boName: null,
+        referrer: null,
+        boType: null,
+        customerName: null,
+        totalHosRevenue: null,
+        hosDiscreetValue: null,
+        boContent: null,
+        marketingOrganizing: null,
+        marketingArea: null,
+        deptName: null,
+        principal: null,
+        delFlag: null,
+        tenantId: null,
+        revision: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: 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
+      getBasic(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) {
+            updateBasic(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addBasic(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 delBasic(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/basic/export', {
+        ...this.queryParams
+      }, `basic_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 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>

+ 316 - 0
src/views/material/classify/index.vue

@@ -0,0 +1,316 @@
+<template>
+  <div class="classify">
+    <el-row :gutter="10" class="mb10">
+      <el-col :span="1.5">
+        <el-button type="primary" size="small" plain @click="addClassify">新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" size="small" plain @click="editClassify">修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" size="small" plain @click="deleteClassify">删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" size="small" plain>启用</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" size="small" plain>停用</el-button>
+      </el-col>
+    </el-row>
+
+    <el-card>
+      <el-row :gutter="10" class="content">
+        <el-col :span="6">
+          <el-input
+            placeholder="输入关键字进行过滤"
+            size="small"
+            v-model="filterText">
+          </el-input>
+
+          <el-tree
+            class="filter-tree"
+            :data="data"
+            :props="defaultProps"
+            node-key="id"
+            @node-click="clickTree"
+            highlight-current
+            :default-expanded-keys="[1]"
+            :default-checked-keys="[2]"
+            :filter-node-method="filterNode"
+            ref="tree">
+          </el-tree>
+        </el-col>
+
+        <el-col :span="18">
+          <span class="title">基本信息</span>
+          <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="140px" class="demo-ruleForm">
+            <el-row :gutter="20">
+              <el-col :span="12">
+                <el-form-item label="物料基本分类编码" prop="code">
+                  <el-input :disabled="disable" v-model="ruleForm.code"></el-input>
+                  <span>编码规则x-xxx-xxx-xxx</span>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="物料基本分类名称" prop="materialType">
+                  <el-input :disabled="disable" v-model="ruleForm.materialType"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row :gutter="20">
+              <el-col :span="12">
+                <el-form-item label="启用状态" prop="isEnable">
+                  <el-select
+                    v-model="ruleForm.isEnable"
+                    placeholder="启用状态"
+                    clearable
+                    :disabled="disable"
+                    style="width: 230px"
+                  >
+                    <el-option
+                      v-for="dict in dict.type.material_enable"
+                      :key="dict.value"
+                      :label="dict.label"
+                      :value="dict.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <span class="title">辅助属性</span>
+            <el-row :gutter="20">
+              <el-col :span="12">
+                <el-form-item label="辅助属性结构" prop="marasstframe">
+                  <el-select
+                    v-model="ruleForm.marasstframe"
+                    placeholder="属性结构"
+                    clearable
+                    :disabled="disable"
+                    style="width: 230px"
+                  >
+                    <el-option
+                      v-for="dict in dict.type.sys_assist_condtion"
+                      :key="dict.value"
+                      :label="dict.label"
+                      :value="dict.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row :gutter="20">
+              <el-col :span="24">
+                <el-form-item label="" prop="name">
+                  <el-checkbox-group :disabled="disable" v-model="checkList">
+                  <el-checkbox label="库存状态"></el-checkbox>
+                  <!-- <el-checkbox label="项目"></el-checkbox>
+                  <el-checkbox label="供应商"></el-checkbox>
+                  <el-checkbox label="生产厂商"></el-checkbox>
+                  <el-checkbox label="客户"></el-checkbox>
+                  <el-checkbox label="特征码"></el-checkbox> -->
+                  <el-checkbox label="产品批号"></el-checkbox>
+                </el-checkbox-group>
+                </el-form-item>
+              </el-col>
+            </el-row>
+
+            <el-row :gutter="20">
+              <el-col :span="24">
+                <el-form-item v-if="!disable">
+                  <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
+                  <el-button @click="resetForm('ruleForm')">取消</el-button>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            </el-form>
+        </el-col>
+      </el-row>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import { getTree, getDetail, add, delClassify, edit} from '@/api/classify/basic';
+export default {
+  name:'classify',
+  dicts: ['material_enable', 'sys_assist_condtion'],
+  data() {
+    return {
+      filterText: '',
+      data: [],
+      defaultProps: {
+          children: 'childrens',
+          label: 'materialType'
+      },
+      ruleForm: {
+        code: '',
+        materialType: '',
+        isEnable: '0',
+        delFlag: '',
+        marasstframe: '',
+      },
+      rules: {
+        code:[{ required: true, message: '请输入物料基本分类编码', trigger: 'blur' }],
+        materialType:[{ required: true, message: '请输入物料基本分类名称', trigger: 'blur' }],
+      },
+      checkList: [],
+      disable: true,
+      biao: {parentId: 0},
+      // 删除节点id
+      delId: '',
+      // 判断是新增还是修改
+      isAdd: true
+    }
+  },
+  created() {
+    this.getTreeData()
+    // 
+  },
+  mounted() {
+  },
+  methods: {
+    // 获取树形结构
+    getTreeData(data) {
+      getTree(data).then(res => {
+        let {code, rows} = res
+        if(code === 200) {
+          this.data = rows
+        }
+      })
+    },
+    // 获取物料基本分类详情
+    getDetailData(id) {
+      getDetail(id).then(res => {
+        let {code, data} = res
+        if (code === 200) {
+          console.log('data', data)
+          this.ruleForm = data
+        }
+      })
+    },
+    filterNode(value, data) {
+        if (!value) return true;
+        return data.label.indexOf(value) !== -1;
+    },
+    clickTree(data){
+      console.log('data', data)
+      // 如果点击新增时选择了树形节点,则不回显数据,且需要清空ruleForm内的数据
+      if (this.disable) {
+        this.getDetailData(data.id)
+      } else {
+        this.$refs['ruleForm'].resetFields();
+      }
+      // 标记是否为树形结构最外层
+      this.biao.parentId = data.id
+      // 将节点id用作删除id
+      this.delId = data.id
+    },
+    submitForm(formName) {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            if(this.isAdd) { //判断是走新增还是修改
+              console.log('add!');
+              console.log(this.biao.parentId)
+              console.log(this.ruleForm)
+              let params = {...this.ruleForm, ...this.biao}
+              console.log('params',params)
+              add(params).then(res => {
+                if(res.code === 200) {
+                  this.$message({
+                    message: res.msg,
+                    type: 'success'
+                  });
+                  this.getTreeData()
+                  // this.$refs['ruleForm'].resetFields();
+                  this.disable = true
+                }
+              })
+            } else { //修改
+              console.log('edit')
+              let ids = {id: this.biao.parentId}
+              console.log('ids', ids)
+              let params = {...this.ruleForm, ...ids}
+              console.log('params', params)
+              edit(params).then(res => {
+                if(res.code === 200) {
+                  this.$message({
+                    message: res.msg,
+                    type: 'success'
+                  });
+                  this.disable = true
+                }
+              })
+            }
+          } else {
+            console.log('error submit!!');
+            return false;
+          }
+        });
+      },
+    resetForm(formName) {
+      console.log(formName)
+      if(this.isAdd) {
+        this.$refs[formName].resetFields();
+        this.disable = true
+      } else {
+        this.disable = true
+      }
+    },
+    // 点击新增按钮
+    addClassify() {
+      // console.log('值呢:', this.ruleForm)
+      // 如果点击了树形节点后再点击新增,则清空数据再填写
+      if(this.biao.parentId !== 0) {
+        this.$refs['ruleForm'].resetFields();
+      }
+      this.disable = false
+      this.isAdd = true
+    },
+    // 删除按钮
+    deleteClassify() {
+      
+      if(this.biao.parentId == 0) {
+        this.$message({
+          message: '请选择删除节点',
+          type: 'warning'
+        });
+      } else {
+        console.log('删除', this.delId)
+        delClassify({id: this.delId}).then(res => {
+          if (res.code === 200) {
+            this.$message({
+              message: '删除成功',
+              type: 'success'
+            });
+            this.getTreeData()
+          }
+        })
+      }
+    },
+    // 修改按钮
+    editClassify() {
+      if(this.biao.parentId == 0) {
+        this.$message({
+          message: '请选择修改节点',
+          type: 'warning'
+        });
+      } else {
+        console.log('修改')
+        this.disable = false
+        this.isAdd = false
+      }
+    }
+  },
+}
+</script>
+
+<style scoped lang="scss">
+.classify {
+  height: calc(100vh - 84px);
+  padding: 12px;
+  box-sizing: border-box;
+}
+.title {
+  font-weight: bold;
+}
+</style>

+ 268 - 50
src/views/material/specialAttr/index.vue

@@ -44,7 +44,7 @@
     </el-row>
 
     <el-card>
-      <el-row :gutter="10" class="contrnt">
+      <el-row :gutter="10" class="content">
         <el-col :span="6">
           <el-input
             placeholder="输入关键字进行过滤"
@@ -56,7 +56,7 @@
             class="filter-tree"
             :data="data"
             :props="defaultProps"
-            default-expand-all
+            @node-click="clickTree"
             :filter-node-method="filterNode"
             ref="tree">
           </el-tree>
@@ -65,8 +65,8 @@
         <el-col :span="18">
 
           <el-row>
-            <el-button type="primary" size="small" plain>新增</el-button>
-            <el-button type="primary" size="small" plain>删除</el-button>
+            <el-button type="primary" size="small" plain @click="addSpc">新增</el-button>
+            <el-button type="primary" size="small" plain @click="deleteSpc">删除</el-button>
           </el-row>
 
           <el-row>
@@ -76,13 +76,21 @@
               @selection-change="handleSelectionChange"
             >
               <el-table-column type="selection" width="55" />
-              <el-table-column type="index" label="序号" width="55" align="center" />
-              <el-table-column label="属性名称" align="center" prop="name" />
-              <el-table-column label="属性编码" align="center" prop="code" />
-              <el-table-column label="字段类型" align="center" prop="type" />
-              <el-table-column label="字段ID值" align="center" prop="id" />
-              <el-table-column label="排序" align="center" prop="id" />
-              <el-table-column label="字段说明" align="center" prop="remark" />
+              <el-table-column label="排序" align="center" prop="sort" />
+              <el-table-column label="属性名称" align="center" prop="attributeName" />
+              <el-table-column label="属性编码" align="center" prop="classCode" />
+              <el-table-column label="字段类型" align="center" prop="fieldType" />
+              <el-table-column label="字段ID值" align="center" prop="dictId" />
+              <el-table-column label="字段说明" align="center" prop="fieldDesc" />
+              <el-table-column
+                fixed="right"
+                label="操作"
+                align="center"
+                width="100">
+                <template slot-scope="scope">
+                  <el-button @click="edit(scope.row)" type="text" size="small">修改</el-button>
+                </template>
+              </el-table-column>
             </el-table>
           </el-row>
 
@@ -90,12 +98,87 @@
       </el-row>
     </el-card>
 
+    <!-- 新增弹窗 -->
+    <el-dialog :title="titles" :visible.sync="dialogFormVisible" center>
+      <el-form :model="form" :rules="rules" ref="bindForm">
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="属性名称" prop="attributeName" label-width="120px">
+              <el-input v-model="form.attributeName"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="属性编码" prop="attributeCode" label-width="120px">
+              <el-input v-model="form.attributeCode"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="字段类型" prop="fieldType" label-width="120px">
+                  <el-select
+                    v-model="form.fieldType"
+                    placeholder="字段类型"
+                    clearable
+                    style="width: 285px"
+                  >
+                    <el-option
+                      v-for="dict in dict.type.template_field_type"
+                      :key="dict.value"
+                      :label="dict.label"
+                      :value="dict.value"
+                    />
+                  </el-select>
+                </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="字典ID值" prop="dictId" label-width="120px">
+              <el-autocomplete
+                class="inline-input"
+                v-model="form.dictId"
+                :fetch-suggestions="querySearch"
+                placeholder="请输入内容"
+                prefix-icon="el-icon-search"
+                style="width: 285px"
+              ></el-autocomplete>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="排序" prop="sort" label-width="120px">
+              <el-input v-model="form.sort"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="字段说明" prop="fieldDesc" label-width="120px">
+              <el-input v-model="form.fieldDesc"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submit('bindForm')">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
   </div>
 </template>
 
 <script>
+import { getTree } from '@/api/classify/basic';
+import { add, getDetail, delSpecial, editSpecial } from '@/api/special/basic';
 export default {
   name: 'specialAttr',
+  dicts: ['template_field_type'],
   watch: {
     filterText(val) {
       this.$refs.tree.filter(val);
@@ -109,54 +192,189 @@ export default {
       rule:[{label: '包含', value: 1}, {label: '不包含', value: 2}, {label: '等于', value: 3}, {label: '不等于', value: 4}],
       input: '',
       filterText: '',
-      data: [{
-          id: 1,
-          label: '一级 1',
-          children: [{
-            id: 4,
-            label: '二级 1-1',
-            children: [{
-              id: 9,
-              label: '三级 1-1-1'
-            }, {
-              id: 10,
-              label: '三级 1-1-2'
-            }]
-          }]
-        }, {
-          id: 2,
-          label: '一级 2',
-          children: [{
-            id: 5,
-            label: '二级 2-1'
-          }, {
-            id: 6,
-            label: '二级 2-2'
-          }]
-        }, {
-          id: 3,
-          label: '一级 3',
-          children: [{
-            id: 7,
-            label: '二级 3-1'
-          }, {
-            id: 8,
-            label: '二级 3-2'
-          }]
-      }],
+      data: [],
       defaultProps: {
-          children: 'children',
-          label: 'label'
+          children: 'childrens',
+          label: 'materialType'
+      },
+      taskList:[],
+      // 判断是否为最末级节点
+      isLast: false,
+      // 弹框默认隐藏
+      dialogFormVisible: false,
+      titles: '新增',
+      // 表单
+      form: {
+        attributeName: '',
+        attributeCode: '',
+        fieldType: '',
+        dictId: '',
+        sort: '',
+        fieldDesc: ''
+      },
+      rules: {
+        // attributeName:[{ required: true, message: '请输入属性名称', trigger: 'blur' }],
+        // attributeCode:[{ required: true, message: '请输入属性编码', trigger: 'blur' }],
+        // fieldType:[{ required: true, message: '请选择字段类型', trigger: 'change' }],
+        // sort:[{ required: true, message: '请输入属性编码', trigger: 'blur' }],
+      },
+      // 搜索框内容
+      restaurants: [],
+      // 获取节点的code
+      treeData: {
+        classCode: ''
       },
-      taskList:[]
+      // 表格内选中条目
+      arr: [],
     }
   },
+  created() {
+    this.getTreeData()
+  },
   methods: {
+    // 获取树形结构
+    getTreeData(data) {
+      getTree(data).then(res => {
+        let {code, rows} = res
+        if(code === 200) {
+          this.data = rows
+        }
+      })
+    },
+    // 获取详情方法
+    getDetailData(code) {
+      getDetail(code).then(res => {
+        if(res.code === 200) {
+          this.taskList = res.data
+        }
+      })
+    },
+    // 点击树形节点,调用详情接口
+    clickTree(data) {
+      console.log('树形节点信息:',data)
+      // 判断是否为最末级节点
+      if (data.childrens.length == 0) {
+        this.isLast = true
+      } else {
+        this.isLast = false
+      }
+      this.treeData.classCode = data.code
+      this.getDetailData(data.code)
+    },
+    // 新增最末级物料分类的特殊属性
+    addSpc() {
+      // 如果不是最末级节点则给出提示
+      if(this.isLast) {
+        this.dialogFormVisible = true
+        this.titles = '新增'
+        this.$nextTick(() => {
+          this.form = {
+            attributeName: '',
+            attributeCode: '',
+            fieldType: '',
+            dictId: '',
+            sort: '',
+            fieldDesc: ''
+          }
+        })
+      } else {
+        this.$message({
+          message: '请先选中最末级节点',
+          type: 'warning'
+        });
+      }
+    },
+    // 表单填写提交
+    submit(formName) {
+      console.log('表单', formName)
+      this.$refs[formName].validate((valid) => {
+        if(valid) {
+          if(this.titles == '新增') { //判断是走新增接口还是修改接口
+            let params = {...this.form, ...this.treeData}
+            console.log('params', params)
+            add(params).then(res => {
+              if(res.code === 200) {
+                // 关闭弹窗,调用查询接口,清空输入内容
+                this.$message({
+                  message: res.msg,
+                  type: 'success'
+                });
+                this.getDetailData(this.treeData.classCode)
+                this.dialogFormVisible = false
+                this.$refs['bindForm'].resetFields();
+              }
+            })
+          } else {
+            editSpecial(this.form).then(res => {
+              if(res.code === 200) {
+                // 关闭弹窗,调用查询接口,清空输入内容
+                this.$message({
+                  message: res.msg,
+                  type: 'success'
+                });
+                this.getDetailData(this.form.classCode)
+                this.dialogFormVisible = false
+                this.$refs['bindForm'].resetFields();
+              }
+            })
+          }
+        }
+      })
+    },
+    // 点击取消
+    cancel() {
+      this.dialogFormVisible = false
+      this.$refs['bindForm'].resetFields();
+    },
+    // 搜索框
+    querySearch(queryString, cb) {
+        var restaurants = this.restaurants;
+        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
+        // 调用 callback 返回建议列表的数据
+        cb(results);
+      },
+    createFilter(queryString) {
+      return (restaurant) => {
+        return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
+      };
+    },
     filterNode(value, data) {
         if (!value) return true;
         return data.label.indexOf(value) !== -1;
     },
-    handleSelectionChange() { }
+    // 获取选中条目
+    handleSelectionChange(val) { 
+      console.log('选中z', val)
+      this.arr = val.map(item => {return item.id})
+      console.log('数组id',this.arr)
+    },
+    // 点击删除按钮
+    deleteSpc() {
+      if(this.arr.length == 0) {
+        this.$message({
+          message: '请选择删除数据',
+          type: 'warning'
+        });
+      } else {
+        delSpecial(this.arr).then(res => {
+          if (res.code === 200) {
+            this.$message({
+              message: res.msg,
+              type: 'success'
+            });
+            this.getDetailData(this.treeData.classCode)
+          }
+        })
+      }
+    },
+    // 点击修改按钮
+    edit(e) {
+      console.log('修改e',e)
+      this.dialogFormVisible = true
+      this.titles = '修改'
+      // 修改时候弹框数据回显
+      this.form = e
+    }
   },
 }
 </script>

+ 8 - 3
src/views/test01.vue

@@ -1,12 +1,14 @@
 <template>
   <div id="test01">
     <!-- test01 -->
+    <!-- <el-button @click="getInfo">点击获取</el-button> -->
   </div>
 </template>
 
 <script>
 import axios from 'axios'
 import { getToken, setToken, removeToken } from '@/utils/auth'
+import { sso } from '@/api/sso/ssoLogin';
 export default {
   data () {
     return {}
@@ -18,9 +20,12 @@ export default {
   },
   methods: {
     jump() {
-      axios.post('https://test-sy.derom.com/drp-admin/login/sso').then(res => {
-        if (res.data.code === 200) {
-          let token = res.data.token
+      let userInfo = JSON.parse(localStorage.getItem('userInfo'))
+      // console.log('拿到userInfo了不:', userInfo)
+      // axios.post('https://test-sy.derom.com/drp-admin/login/sso', userInfo).then(res => {
+      sso(userInfo).then(res => {
+        if (res.code === 200) {
+          let token = res.token
           setToken(token)
           this.$store.commit('SET_TOKEN', token)
           this.$store.dispatch("GetInfo").then(() => {})