index.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="商机名称" prop="boName">
  5. <el-input
  6. v-model="queryParams.boName"
  7. placeholder="请输入商机名称"
  8. clearable
  9. @keyup.enter.native="handleQuery"
  10. />
  11. </el-form-item>
  12. <el-form-item label="任务编码" prop="code">
  13. <el-input
  14. v-model="queryParams.code"
  15. placeholder="请输入任务编码"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="任务名称" prop="name">
  21. <el-input
  22. v-model="queryParams.name"
  23. placeholder="请输入任务名称"
  24. clearable
  25. @keyup.enter.native="handleQuery"
  26. />
  27. </el-form-item>
  28. <el-form-item label="商机阶段" prop="boStage">
  29. <el-input
  30. v-model="queryParams.boStage"
  31. placeholder="请输入商机阶段"
  32. clearable
  33. @keyup.enter.native="handleQuery"
  34. />
  35. </el-form-item>
  36. <el-form-item label="任务状态" prop="state">
  37. <el-input
  38. v-model="queryParams.state"
  39. placeholder="请输入任务状态"
  40. clearable
  41. @keyup.enter.native="handleQuery"
  42. />
  43. </el-form-item>
  44. <el-form-item label="客户名称" prop="customerName">
  45. <el-input
  46. v-model="queryParams.customerName"
  47. placeholder="请输入客户名称"
  48. clearable
  49. @keyup.enter.native="handleQuery"
  50. />
  51. </el-form-item>
  52. <el-form-item label="联系人名称" prop="linkmanName">
  53. <el-input
  54. v-model="queryParams.linkmanName"
  55. placeholder="请输入联系人名称"
  56. clearable
  57. @keyup.enter.native="handleQuery"
  58. />
  59. </el-form-item>
  60. <el-form-item label="销售组织名称" prop="salesOrgName">
  61. <el-input
  62. v-model="queryParams.salesOrgName"
  63. placeholder="请输入销售组织名称"
  64. clearable
  65. @keyup.enter.native="handleQuery"
  66. />
  67. </el-form-item>
  68. <el-form-item label="部门名称" prop="deptName">
  69. <el-input
  70. v-model="queryParams.deptName"
  71. placeholder="请输入部门名称"
  72. clearable
  73. @keyup.enter.native="handleQuery"
  74. />
  75. </el-form-item>
  76. <el-form-item label="负责人名称" prop="staffName">
  77. <el-input
  78. v-model="queryParams.staffName"
  79. placeholder="请输入负责人名称"
  80. clearable
  81. @keyup.enter.native="handleQuery"
  82. />
  83. </el-form-item>
  84. <el-form-item label="截止时间" prop="deadlineDate">
  85. <el-date-picker clearable
  86. v-model="queryParams.deadlineDate"
  87. type="date"
  88. value-format="yyyy-MM-dd"
  89. placeholder="请选择截止时间">
  90. </el-date-picker>
  91. </el-form-item>
  92. <el-form-item>
  93. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  94. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  95. </el-form-item>
  96. </el-form>
  97. <TaskList :key="timer" :source = "'Task'" :bo="queryParams" />
  98. </div>
  99. </template>
  100. <script>
  101. import { listTask, getTask, delTask, addTask, updateTask } from "@/api/business/spd/bo/task";
  102. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  103. import TaskList from '../task/taskList.vue'
  104. export default {
  105. name: "Task",
  106. dicts: ['mk_bo_taskstate','mk_bo_tasktype'],
  107. components: {TaskList},
  108. data() {
  109. return {
  110. // 遮罩层
  111. loading: true,
  112. // 选中数组
  113. ids: [],
  114. // 子表选中数据
  115. checkedMkBoBehavior: [],
  116. // 非单个禁用
  117. single: true,
  118. // 非多个禁用
  119. multiple: true,
  120. // 显示搜索条件
  121. showSearch: true,
  122. // 总条数
  123. total: 0,
  124. // 任务表格数据
  125. taskList: [],
  126. // 行动表格数据
  127. mkBoBehaviorList: [],
  128. // 弹出层标题
  129. title: "",
  130. // 是否显示弹出层
  131. open: false,
  132. // 查询参数
  133. queryParams: {
  134. pageNum: 1,
  135. pageSize: 10,
  136. boName: null,
  137. boStage: null,
  138. code: null,
  139. name: null,
  140. type: null,
  141. state: null,
  142. customer: null,
  143. customerName: null,
  144. linkman: null,
  145. salesOrg: null,
  146. salesOrgName: null,
  147. dept: null,
  148. deptName: null,
  149. staff: null,
  150. staffName: null,
  151. deadlineDate: null,
  152. content: null,
  153. tenantId: null,
  154. revision: null,
  155. },
  156. // 表单参数
  157. form: {},
  158. // 表单校验
  159. rules: {
  160. },
  161. //重新加载子组件参数
  162. timer: '',
  163. };
  164. },
  165. created() {
  166. this.getList();
  167. },
  168. methods: {
  169. /** 查询任务列表 */
  170. getList() {
  171. this.loading = true;
  172. listTask(this.queryParams).then(response => {
  173. this.taskList = response.rows;
  174. this.total = response.total;
  175. this.loading = false;
  176. });
  177. },
  178. // 取消按钮
  179. cancel() {
  180. this.open = false;
  181. this.reset();
  182. },
  183. // 表单重置
  184. reset() {
  185. this.form = {
  186. id: null,
  187. boName: null,
  188. boStage: null,
  189. code: null,
  190. name: null,
  191. type: null,
  192. state: null,
  193. customer: null,
  194. customerName: null,
  195. linkman: null,
  196. salesOrg: null,
  197. salesOrgName: null,
  198. dept: null,
  199. deptName: null,
  200. staff: null,
  201. staffName: null,
  202. deadlineDate: null,
  203. content: null,
  204. tenantId: null,
  205. revision: null,
  206. createBy: null,
  207. createTime: null,
  208. updateBy: null,
  209. updateTime: null,
  210. delFlag: null
  211. };
  212. this.mkBoBehaviorList = [];
  213. this.resetForm("form");
  214. },
  215. /** 搜索按钮操作 */
  216. handleQuery() {
  217. this.queryParams.pageNum = 1;
  218. this.timer = new Date().getTime();
  219. // this.getList();
  220. },
  221. /** 重置按钮操作 */
  222. resetQuery() {
  223. this.resetForm("queryForm");
  224. this.handleQuery();
  225. },
  226. // 多选框选中数据
  227. handleSelectionChange(selection) {
  228. this.ids = selection.map(item => item.id)
  229. this.single = selection.length!==1
  230. this.multiple = !selection.length
  231. },
  232. /** 新增按钮操作 */
  233. handleAdd() {
  234. this.reset();
  235. this.open = true;
  236. this.title = "添加任务";
  237. },
  238. /** 修改按钮操作 */
  239. handleUpdate(row) {
  240. this.reset();
  241. const id = row.id || this.ids
  242. getTask(id).then(response => {
  243. this.form = response.data;
  244. this.mkBoBehaviorList = response.data.mkBoBehaviorList;
  245. this.open = true;
  246. this.title = "修改任务";
  247. });
  248. },
  249. /** 提交按钮 */
  250. submitForm() {
  251. this.$refs["form"].validate(valid => {
  252. if (valid) {
  253. this.form.mkBoBehaviorList = this.mkBoBehaviorList;
  254. if (this.form.id != null) {
  255. updateTask(this.form).then(response => {
  256. this.$modal.msgSuccess("修改成功");
  257. this.open = false;
  258. this.getList();
  259. });
  260. } else {
  261. addTask(this.form).then(response => {
  262. this.$modal.msgSuccess("新增成功");
  263. this.open = false;
  264. this.getList();
  265. });
  266. }
  267. }
  268. });
  269. },
  270. /** 删除按钮操作 */
  271. handleDelete(row) {
  272. const ids = row.id || this.ids;
  273. this.$modal.confirm('是否确认删除任务编号为"' + ids + '"的数据项?').then(function() {
  274. return delTask(ids);
  275. }).then(() => {
  276. this.getList();
  277. this.$modal.msgSuccess("删除成功");
  278. }).catch(() => {});
  279. },
  280. /** 行动序号 */
  281. rowMkBoBehaviorIndex({ row, rowIndex }) {
  282. row.index = rowIndex + 1;
  283. },
  284. /** 行动添加按钮操作 */
  285. handleAddMkBoBehavior() {
  286. let obj = {};
  287. obj.type = "";
  288. obj.time = "";
  289. obj.customer = "";
  290. obj.customerName = "";
  291. obj.linkman = "";
  292. obj.linkmanName = "";
  293. obj.purpose = "";
  294. obj.result = "";
  295. obj.assist = "";
  296. obj.assistContent = "";
  297. obj.salesOrg = "";
  298. obj.salesOrgName = "";
  299. obj.dept = "";
  300. obj.deptName = "";
  301. obj.staff = "";
  302. obj.staffName = "";
  303. obj.content = "";
  304. obj.tenantId = "";
  305. obj.revision = "";
  306. this.mkBoBehaviorList.push(obj);
  307. },
  308. /** 行动删除按钮操作 */
  309. handleDeleteMkBoBehavior() {
  310. if (this.checkedMkBoBehavior.length == 0) {
  311. this.$modal.msgError("请先选择要删除的行动数据");
  312. } else {
  313. const mkBoBehaviorList = this.mkBoBehaviorList;
  314. const checkedMkBoBehavior = this.checkedMkBoBehavior;
  315. this.mkBoBehaviorList = mkBoBehaviorList.filter(function(item) {
  316. return checkedMkBoBehavior.indexOf(item.index) == -1
  317. });
  318. }
  319. },
  320. /** 复选框选中数据 */
  321. handleMkBoBehaviorSelectionChange(selection) {
  322. this.checkedMkBoBehavior = selection.map(item => item.index)
  323. },
  324. /** 导出按钮操作 */
  325. handleExport() {
  326. this.download('drp-business/task/export', {
  327. ...this.queryParams
  328. }, `task_${new Date().getTime()}.xlsx`)
  329. }
  330. }
  331. };
  332. </script>