From 58c7cea677690dcdf5fc65057e836f6a775aec01 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期五, 24 三月 2023 14:38:56 +0800
Subject: [PATCH] yxh

---
 ruoyi-ui/src/api/smartor/ivrtasksms.js                 |   44 
 ruoyi-ui/src/views/smartor/ivrtaskcallrecord/index.vue |  646 +++++++++++
 ruoyi-ui/src/views/smartor/ivrtask/index.vue           |  597 ++++++++++
 ruoyi-ui/src/api/smartor/ivrtask.js                    |   44 
 ruoyi-ui/src/api/smartor/ivrtaskcalldetail.js          |   44 
 ruoyi-ui/src/views/smartor/ivrtasksms/index.vue        |  403 +++++++
 ruoyi-ui/src/api/smartor/ivrtaskcall.js                |   44 
 ruoyi-ui/src/api/smartor/ivrtaskcallrecord.js          |   44 
 ruoyi-ui/src/views/smartor/ivrtaskcalldetail/index.vue |  739 ++++++++++++
 ruoyi-ui/src/views/smartor/ivrtaskcall/index.vue       |  790 +++++++++++++
 10 files changed, 3,395 insertions(+), 0 deletions(-)

diff --git a/ruoyi-ui/src/api/smartor/ivrtask.js b/ruoyi-ui/src/api/smartor/ivrtask.js
new file mode 100644
index 0000000..e82cdb6
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/ivrtask.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ璇煶浠诲姟鍒楄〃
+export function listIvrtask(query) {
+  return request({
+    url: '/smartor/ivrtask/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ璇煶浠诲姟璇︾粏
+export function getIvrtask(taskid) {
+  return request({
+    url: '/smartor/ivrtask/' + taskid,
+    method: 'get'
+  })
+}
+
+// 鏂板璇煶浠诲姟
+export function addIvrtask(data) {
+  return request({
+    url: '/smartor/ivrtask',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼璇煶浠诲姟
+export function updateIvrtask(data) {
+  return request({
+    url: '/smartor/ivrtask',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎璇煶浠诲姟
+export function delIvrtask(taskid) {
+  return request({
+    url: '/smartor/ivrtask/' + taskid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/ivrtaskcall.js b/ruoyi-ui/src/api/smartor/ivrtaskcall.js
new file mode 100644
index 0000000..ed979a6
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/ivrtaskcall.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ璇煶浠诲姟鍛煎彨鍒楄〃
+export function listIvrtaskcall(query) {
+  return request({
+    url: '/smartor/ivrtaskcall/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ璇煶浠诲姟鍛煎彨璇︾粏
+export function getIvrtaskcall(callid) {
+  return request({
+    url: '/smartor/ivrtaskcall/' + callid,
+    method: 'get'
+  })
+}
+
+// 鏂板璇煶浠诲姟鍛煎彨
+export function addIvrtaskcall(data) {
+  return request({
+    url: '/smartor/ivrtaskcall',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼璇煶浠诲姟鍛煎彨
+export function updateIvrtaskcall(data) {
+  return request({
+    url: '/smartor/ivrtaskcall',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎璇煶浠诲姟鍛煎彨
+export function delIvrtaskcall(callid) {
+  return request({
+    url: '/smartor/ivrtaskcall/' + callid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/ivrtaskcalldetail.js b/ruoyi-ui/src/api/smartor/ivrtaskcalldetail.js
new file mode 100644
index 0000000..c588f53
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/ivrtaskcalldetail.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏鍒楄〃
+export function listIvrtaskcalldetail(query) {
+  return request({
+    url: '/smartor/ivrtaskcalldetail/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏璇︾粏
+export function getIvrtaskcalldetail(calldetailid) {
+  return request({
+    url: '/smartor/ivrtaskcalldetail/' + calldetailid,
+    method: 'get'
+  })
+}
+
+// 鏂板璇煶浠诲姟鍛煎彨鏄庣粏
+export function addIvrtaskcalldetail(data) {
+  return request({
+    url: '/smartor/ivrtaskcalldetail',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼璇煶浠诲姟鍛煎彨鏄庣粏
+export function updateIvrtaskcalldetail(data) {
+  return request({
+    url: '/smartor/ivrtaskcalldetail',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏
+export function delIvrtaskcalldetail(calldetailid) {
+  return request({
+    url: '/smartor/ivrtaskcalldetail/' + calldetailid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/ivrtaskcallrecord.js b/ruoyi-ui/src/api/smartor/ivrtaskcallrecord.js
new file mode 100644
index 0000000..e331bcc
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/ivrtaskcallrecord.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍鍒楄〃
+export function listIvrtaskcallrecord(query) {
+  return request({
+    url: '/smartor/ivrtaskcallrecord/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍璇︾粏
+export function getIvrtaskcallrecord(uuid) {
+  return request({
+    url: '/smartor/ivrtaskcallrecord/' + uuid,
+    method: 'get'
+  })
+}
+
+// 鏂板璇煶浠诲姟鍛煎彨璁板綍
+export function addIvrtaskcallrecord(data) {
+  return request({
+    url: '/smartor/ivrtaskcallrecord',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼璇煶浠诲姟鍛煎彨璁板綍
+export function updateIvrtaskcallrecord(data) {
+  return request({
+    url: '/smartor/ivrtaskcallrecord',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍
+export function delIvrtaskcallrecord(uuid) {
+  return request({
+    url: '/smartor/ivrtaskcallrecord/' + uuid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/ivrtasksms.js b/ruoyi-ui/src/api/smartor/ivrtasksms.js
new file mode 100644
index 0000000..b1a7596
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/ivrtasksms.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ璇煶浠诲姟鐭俊鍒楄〃
+export function listIvrtasksms(query) {
+  return request({
+    url: '/smartor/ivrtasksms/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ璇煶浠诲姟鐭俊璇︾粏
+export function getIvrtasksms(id) {
+  return request({
+    url: '/smartor/ivrtasksms/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板璇煶浠诲姟鐭俊
+export function addIvrtasksms(data) {
+  return request({
+    url: '/smartor/ivrtasksms',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼璇煶浠诲姟鐭俊
+export function updateIvrtasksms(data) {
+  return request({
+    url: '/smartor/ivrtasksms',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎璇煶浠诲姟鐭俊
+export function delIvrtasksms(id) {
+  return request({
+    url: '/smartor/ivrtasksms/' + id,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/views/smartor/ivrtask/index.vue b/ruoyi-ui/src/views/smartor/ivrtask/index.vue
new file mode 100644
index 0000000..19e74e4
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/ivrtask/index.vue
@@ -0,0 +1,597 @@
+<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="taskname">
+        <el-input
+          v-model="queryParams.taskname"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="templateid">
+        <el-input
+          v-model="queryParams.templateid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="templatename">
+        <el-input
+          v-model="queryParams.templatename"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="labelinfo">
+        <el-input
+          v-model="queryParams.labelinfo"
+          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="count">
+        <el-input
+          v-model="queryParams.count"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="executed">
+        <el-input
+          v-model="queryParams.executed"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="unexecuted">
+        <el-input
+          v-model="queryParams.unexecuted"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="fail">
+        <el-input
+          v-model="queryParams.fail"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="userid">
+        <el-input
+          v-model="queryParams.userid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="username">
+        <el-input
+          v-model="queryParams.username"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="addtime">
+        <el-date-picker clearable
+          v-model="queryParams.addtime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨  ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="  " prop="checkuserid">
+        <el-input
+          v-model="queryParams.checkuserid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="checkusername">
+        <el-input
+          v-model="queryParams.checkusername"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="checktime">
+        <el-date-picker clearable
+          v-model="queryParams.checktime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨  ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="  " prop="typename">
+        <el-input
+          v-model="queryParams.typename"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 " prop="usebqsms">
+        <el-input
+          v-model="queryParams.usebqsms"
+          placeholder="璇疯緭鍏� 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 " prop="usebhsms">
+        <el-input
+          v-model="queryParams.usebhsms"
+          placeholder="璇疯緭鍏� 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="usesendsms">
+        <el-input
+          v-model="queryParams.usesendsms"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="deptcode">
+        <el-input
+          v-model="queryParams.deptcode"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏍囪 " prop="isupload">
+        <el-input
+          v-model="queryParams.isupload"
+          placeholder="璇疯緭鍏� 涓婁紶鏍囪 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+        <el-date-picker clearable
+          v-model="queryParams.uploadTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+        <el-input
+          v-model="queryParams.orgid"
+          placeholder="璇疯緭鍏� 鏈烘瀯ID "
+          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="['smartor:ivrtask: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="['smartor:ivrtask: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="['smartor:ivrtask: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="['smartor:ivrtask:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="ivrtaskList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="  " align="center" prop="taskid" />
+      <el-table-column label="  " align="center" prop="taskname" />
+      <el-table-column label="  " align="center" prop="templateid" />
+      <el-table-column label="  " align="center" prop="templatename" />
+      <el-table-column label="  " align="center" prop="labelinfo" />
+      <el-table-column label="  " align="center" prop="state" />
+      <el-table-column label="  " align="center" prop="count" />
+      <el-table-column label="  " align="center" prop="executed" />
+      <el-table-column label="  " align="center" prop="unexecuted" />
+      <el-table-column label="  " align="center" prop="fail" />
+      <el-table-column label="  " align="center" prop="userid" />
+      <el-table-column label="  " align="center" prop="username" />
+      <el-table-column label="  " align="center" prop="addtime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.addtime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="  " align="center" prop="checkuserid" />
+      <el-table-column label="  " align="center" prop="checkusername" />
+      <el-table-column label="  " align="center" prop="checktime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.checktime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 1锛屽嚭闄㈤殢璁匡紱2锛屼綋妫�閫氱煡锛�3锛屾弧鎰忓害璋冩煡锛�4锛屽鏁欙紱 " align="center" prop="type" />
+      <el-table-column label="  " align="center" prop="typename" />
+      <el-table-column label=" 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 " align="center" prop="usebqsms" />
+      <el-table-column label=" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 " align="center" prop="usebhsms" />
+      <el-table-column label="  " align="center" prop="usesendsms" />
+      <el-table-column label="  " align="center" prop="deptcode" />
+      <el-table-column label=" 涓婁紶鏍囪 " align="center" prop="isupload" />
+      <el-table-column label=" 涓婁紶鏃堕棿 " align="center" prop="uploadTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.uploadTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <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="['smartor:ivrtask:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:ivrtask: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="taskname">
+          <el-input v-model="form.taskname" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="templateid">
+          <el-input v-model="form.templateid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="templatename">
+          <el-input v-model="form.templatename" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="labelinfo">
+          <el-input v-model="form.labelinfo" 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="count">
+          <el-input v-model="form.count" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="executed">
+          <el-input v-model="form.executed" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="unexecuted">
+          <el-input v-model="form.unexecuted" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="fail">
+          <el-input v-model="form.fail" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="userid">
+          <el-input v-model="form.userid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="username">
+          <el-input v-model="form.username" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="addtime">
+          <el-date-picker clearable
+            v-model="form.addtime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨  ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="  " prop="checkuserid">
+          <el-input v-model="form.checkuserid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="checkusername">
+          <el-input v-model="form.checkusername" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="checktime">
+          <el-date-picker clearable
+            v-model="form.checktime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨  ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="  " prop="typename">
+          <el-input v-model="form.typename" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label=" 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 " prop="usebqsms">
+          <el-input v-model="form.usebqsms" placeholder="璇疯緭鍏� 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 " />
+        </el-form-item>
+        <el-form-item label=" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 " prop="usebhsms">
+          <el-input v-model="form.usebhsms" placeholder="璇疯緭鍏� 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 " />
+        </el-form-item>
+        <el-form-item label="  " prop="usesendsms">
+          <el-input v-model="form.usesendsms" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="deptcode">
+          <el-input v-model="form.deptcode" 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="isupload">
+          <el-input v-model="form.isupload" placeholder="璇疯緭鍏� 涓婁紶鏍囪 " />
+        </el-form-item>
+        <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+          <el-date-picker clearable
+            v-model="form.uploadTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+          <el-input v-model="form.orgid" placeholder="璇疯緭鍏� 鏈烘瀯ID " />
+        </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 { listIvrtask, getIvrtask, delIvrtask, addIvrtask, updateIvrtask } from "@/api/smartor/ivrtask";
+
+export default {
+  name: "Ivrtask",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 璇煶浠诲姟琛ㄦ牸鏁版嵁
+      ivrtaskList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        taskname: null,
+        templateid: null,
+        templatename: null,
+        labelinfo: null,
+        state: null,
+        count: null,
+        executed: null,
+        unexecuted: null,
+        fail: null,
+        userid: null,
+        username: null,
+        addtime: null,
+        checkuserid: null,
+        checkusername: null,
+        checktime: null,
+        type: null,
+        typename: null,
+        usebqsms: null,
+        usebhsms: null,
+        usesendsms: null,
+        deptcode: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: null
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ璇煶浠诲姟鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listIvrtask(this.queryParams).then(response => {
+        this.ivrtaskList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        taskid: null,
+        taskname: null,
+        templateid: null,
+        templatename: null,
+        labelinfo: null,
+        state: null,
+        count: null,
+        executed: null,
+        unexecuted: null,
+        fail: null,
+        userid: null,
+        username: null,
+        addtime: null,
+        checkuserid: null,
+        checkusername: null,
+        checktime: null,
+        type: null,
+        typename: null,
+        usebqsms: null,
+        usebhsms: null,
+        usesendsms: null,
+        deptcode: null,
+        delFlag: null,
+        updateBy: null,
+        updateTime: null,
+        createBy: null,
+        createTime: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: 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.taskid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞璇煶浠诲姟";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const taskid = row.taskid || this.ids
+      getIvrtask(taskid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼璇煶浠诲姟";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.taskid != null) {
+            updateIvrtask(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addIvrtask(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const taskids = row.taskid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎璇煶浠诲姟缂栧彿涓�"' + taskids + '"鐨勬暟鎹」锛�').then(function() {
+        return delIvrtask(taskids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/ivrtask/export', {
+        ...this.queryParams
+      }, `ivrtask_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/ivrtaskcall/index.vue b/ruoyi-ui/src/views/smartor/ivrtaskcall/index.vue
new file mode 100644
index 0000000..55ceaa2
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/ivrtaskcall/index.vue
@@ -0,0 +1,790 @@
+<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="sendname">
+        <el-input
+          v-model="queryParams.sendname"
+          placeholder="璇疯緭鍏� 鍙戦�佷汉 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鎵嬫満鍙� " prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="璇疯緭鍏� 鎵嬫満鍙� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 骞撮緞 " prop="age">
+        <el-input
+          v-model="queryParams.age"
+          placeholder="璇疯緭鍏� 骞撮緞 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 韬唤璇佸彿 " prop="sfzh">
+        <el-input
+          v-model="queryParams.sfzh"
+          placeholder="璇疯緭鍏� 韬唤璇佸彿 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍦板潃 " prop="addr">
+        <el-input
+          v-model="queryParams.addr"
+          placeholder="璇疯緭鍏� 鍦板潃 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="senderdetail">
+        <el-input
+          v-model="queryParams.senderdetail"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 浠诲姟ID " prop="taskid">
+        <el-input
+          v-model="queryParams.taskid"
+          placeholder="璇疯緭鍏� 浠诲姟ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="templateid">
+        <el-input
+          v-model="queryParams.templateid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 妯℃澘鍚� " prop="templatename">
+        <el-input
+          v-model="queryParams.templatename"
+          placeholder="璇疯緭鍏� 妯℃澘鍚� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍙戦�佹棩鏈� " prop="senddate">
+        <el-date-picker clearable
+          v-model="queryParams.senddate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 鍙戦�佹棩鏈� ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� " prop="sendlimitabegin">
+        <el-input
+          v-model="queryParams.sendlimitabegin"
+          placeholder="璇疯緭鍏� 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� " prop="sendlimitaend">
+        <el-input
+          v-model="queryParams.sendlimitaend"
+          placeholder="璇疯緭鍏� 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� " prop="sendlimitpbegin">
+        <el-input
+          v-model="queryParams.sendlimitpbegin"
+          placeholder="璇疯緭鍏� 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� " prop="sendlimitpend">
+        <el-input
+          v-model="queryParams.sendlimitpend"
+          placeholder="璇疯緭鍏� 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� " prop="sendlimitnbegin">
+        <el-input
+          v-model="queryParams.sendlimitnbegin"
+          placeholder="璇疯緭鍏� 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� " prop="sendlimitnend">
+        <el-input
+          v-model="queryParams.sendlimitnend"
+          placeholder="璇疯緭鍏� 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍙戦�佺姸鎬� " prop="sendstate">
+        <el-input
+          v-model="queryParams.sendstate"
+          placeholder="璇疯緭鍏� 鍙戦�佺姸鎬� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍙戦�乁UID " prop="senduuid">
+        <el-input
+          v-model="queryParams.senduuid"
+          placeholder="璇疯緭鍏� 鍙戦�乁UID "
+          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="finishtime">
+        <el-date-picker clearable
+          v-model="queryParams.finishtime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 瀹屾垚鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 鐢ㄦ埛ID " prop="userid">
+        <el-input
+          v-model="queryParams.userid"
+          placeholder="璇疯緭鍏� 鐢ㄦ埛ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鐢ㄦ埛鍚� " prop="username">
+        <el-input
+          v-model="queryParams.username"
+          placeholder="璇疯緭鍏� 鐢ㄦ埛鍚� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 娣诲姞鏃堕棿 " prop="addtime">
+        <el-date-picker clearable
+          v-model="queryParams.addtime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 娣诲姞鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="  " prop="updatetime">
+        <el-date-picker clearable
+          v-model="queryParams.updatetime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨  ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="  " prop="outbounduuid">
+        <el-input
+          v-model="queryParams.outbounduuid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 灏辫瘖璁板綍缂栧彿 " prop="recordid">
+        <el-input
+          v-model="queryParams.recordid"
+          placeholder="璇疯緭鍏� 灏辫瘖璁板綍缂栧彿 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 閲嶆嫧鎬绘暟 " prop="recallcount">
+        <el-input
+          v-model="queryParams.recallcount"
+          placeholder="璇疯緭鍏� 閲嶆嫧鎬绘暟 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 褰撳墠閲嶆嫧娆℃暟 " prop="exrecallcount">
+        <el-input
+          v-model="queryParams.exrecallcount"
+          placeholder="璇疯緭鍏� 褰撳墠閲嶆嫧娆℃暟 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鎷夊彇鏃堕棿 " prop="pulltime">
+        <el-date-picker clearable
+          v-model="queryParams.pulltime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 鎷夊彇鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="  " prop="bqsms">
+        <el-input
+          v-model="queryParams.bqsms"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="bhsms">
+        <el-input
+          v-model="queryParams.bhsms"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="deptcode">
+        <el-input
+          v-model="queryParams.deptcode"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏍囪 " prop="isupload">
+        <el-input
+          v-model="queryParams.isupload"
+          placeholder="璇疯緭鍏� 涓婁紶鏍囪 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+        <el-date-picker clearable
+          v-model="queryParams.uploadTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+        <el-input
+          v-model="queryParams.orgid"
+          placeholder="璇疯緭鍏� 鏈烘瀯ID "
+          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="['smartor:ivrtaskcall: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="['smartor:ivrtaskcall: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="['smartor:ivrtaskcall: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="['smartor:ivrtaskcall:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="ivrtaskcallList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="  " align="center" prop="callid" />
+      <el-table-column label=" 鍙戦�佷汉 " align="center" prop="sendname" />
+      <el-table-column label=" 鎵嬫満鍙� " align="center" prop="phone" />
+      <el-table-column label="  " align="center" prop="sex" />
+      <el-table-column label=" 骞撮緞 " align="center" prop="age" />
+      <el-table-column label=" 韬唤璇佸彿 " align="center" prop="sfzh" />
+      <el-table-column label=" 鍦板潃 " align="center" prop="addr" />
+      <el-table-column label="  " align="center" prop="senderdetail" />
+      <el-table-column label="  " align="center" prop="inserttype" />
+      <el-table-column label=" 浠诲姟ID " align="center" prop="taskid" />
+      <el-table-column label="  " align="center" prop="templateid" />
+      <el-table-column label=" 妯℃澘鍚� " align="center" prop="templatename" />
+      <el-table-column label=" 鍙戦�佹棩鏈� " align="center" prop="senddate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.senddate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� " align="center" prop="sendlimitabegin" />
+      <el-table-column label=" 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� " align="center" prop="sendlimitaend" />
+      <el-table-column label=" 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� " align="center" prop="sendlimitpbegin" />
+      <el-table-column label=" 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� " align="center" prop="sendlimitpend" />
+      <el-table-column label=" 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� " align="center" prop="sendlimitnbegin" />
+      <el-table-column label=" 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� " align="center" prop="sendlimitnend" />
+      <el-table-column label=" 鍙戦�佺姸鎬� " align="center" prop="sendstate" />
+      <el-table-column label=" 鍙戦�乁UID " align="center" prop="senduuid" />
+      <el-table-column label=" 缁撴灉 " align="center" prop="result" />
+      <el-table-column label=" 瀹屾垚鏃堕棿 " align="center" prop="finishtime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.finishtime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 鐢ㄦ埛ID " align="center" prop="userid" />
+      <el-table-column label=" 鐢ㄦ埛鍚� " align="center" prop="username" />
+      <el-table-column label=" 娣诲姞鏃堕棿 " align="center" prop="addtime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.addtime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="  " align="center" prop="updatetime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.updatetime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="  " align="center" prop="outbounduuid" />
+      <el-table-column label=" 灏辫瘖璁板綍缂栧彿 " align="center" prop="recordid" />
+      <el-table-column label=" 閲嶆嫧鎬绘暟 " align="center" prop="recallcount" />
+      <el-table-column label=" 褰撳墠閲嶆嫧娆℃暟 " align="center" prop="exrecallcount" />
+      <el-table-column label=" 鎷夊彇鏃堕棿 " align="center" prop="pulltime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.pulltime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="  " align="center" prop="bqsms" />
+      <el-table-column label="  " align="center" prop="bhsms" />
+      <el-table-column label="  " align="center" prop="deptcode" />
+      <el-table-column label="  " align="center" prop="labelstatus" />
+      <el-table-column label=" 涓婁紶鏍囪 " align="center" prop="isupload" />
+      <el-table-column label=" 涓婁紶鏃堕棿 " align="center" prop="uploadTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.uploadTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <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="['smartor:ivrtaskcall:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:ivrtaskcall: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="sendname">
+          <el-input v-model="form.sendname" placeholder="璇疯緭鍏� 鍙戦�佷汉 " />
+        </el-form-item>
+        <el-form-item label=" 鎵嬫満鍙� " prop="phone">
+          <el-input v-model="form.phone" placeholder="璇疯緭鍏� 鎵嬫満鍙� " />
+        </el-form-item>
+        <el-form-item label=" 骞撮緞 " prop="age">
+          <el-input v-model="form.age" placeholder="璇疯緭鍏� 骞撮緞 " />
+        </el-form-item>
+        <el-form-item label=" 韬唤璇佸彿 " prop="sfzh">
+          <el-input v-model="form.sfzh" placeholder="璇疯緭鍏� 韬唤璇佸彿 " />
+        </el-form-item>
+        <el-form-item label=" 鍦板潃 " prop="addr">
+          <el-input v-model="form.addr" placeholder="璇疯緭鍏� 鍦板潃 " />
+        </el-form-item>
+        <el-form-item label="  " prop="senderdetail">
+          <el-input v-model="form.senderdetail" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label=" 浠诲姟ID " prop="taskid">
+          <el-input v-model="form.taskid" placeholder="璇疯緭鍏� 浠诲姟ID " />
+        </el-form-item>
+        <el-form-item label="  " prop="templateid">
+          <el-input v-model="form.templateid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label=" 妯℃澘鍚� " prop="templatename">
+          <el-input v-model="form.templatename" placeholder="璇疯緭鍏� 妯℃澘鍚� " />
+        </el-form-item>
+        <el-form-item label=" 鍙戦�佹棩鏈� " prop="senddate">
+          <el-date-picker clearable
+            v-model="form.senddate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 鍙戦�佹棩鏈� ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� " prop="sendlimitabegin">
+          <el-input v-model="form.sendlimitabegin" placeholder="璇疯緭鍏� 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� " />
+        </el-form-item>
+        <el-form-item label=" 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� " prop="sendlimitaend">
+          <el-input v-model="form.sendlimitaend" placeholder="璇疯緭鍏� 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� " />
+        </el-form-item>
+        <el-form-item label=" 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� " prop="sendlimitpbegin">
+          <el-input v-model="form.sendlimitpbegin" placeholder="璇疯緭鍏� 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� " />
+        </el-form-item>
+        <el-form-item label=" 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� " prop="sendlimitpend">
+          <el-input v-model="form.sendlimitpend" placeholder="璇疯緭鍏� 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� " />
+        </el-form-item>
+        <el-form-item label=" 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� " prop="sendlimitnbegin">
+          <el-input v-model="form.sendlimitnbegin" placeholder="璇疯緭鍏� 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� " />
+        </el-form-item>
+        <el-form-item label=" 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� " prop="sendlimitnend">
+          <el-input v-model="form.sendlimitnend" placeholder="璇疯緭鍏� 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� " />
+        </el-form-item>
+        <el-form-item label=" 鍙戦�佺姸鎬� " prop="sendstate">
+          <el-input v-model="form.sendstate" placeholder="璇疯緭鍏� 鍙戦�佺姸鎬� " />
+        </el-form-item>
+        <el-form-item label=" 鍙戦�乁UID " prop="senduuid">
+          <el-input v-model="form.senduuid" placeholder="璇疯緭鍏� 鍙戦�乁UID " />
+        </el-form-item>
+        <el-form-item label=" 缁撴灉 " prop="result">
+          <el-input v-model="form.result" placeholder="璇疯緭鍏� 缁撴灉 " />
+        </el-form-item>
+        <el-form-item label=" 瀹屾垚鏃堕棿 " prop="finishtime">
+          <el-date-picker clearable
+            v-model="form.finishtime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 瀹屾垚鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 鐢ㄦ埛ID " prop="userid">
+          <el-input v-model="form.userid" placeholder="璇疯緭鍏� 鐢ㄦ埛ID " />
+        </el-form-item>
+        <el-form-item label=" 鐢ㄦ埛鍚� " prop="username">
+          <el-input v-model="form.username" placeholder="璇疯緭鍏� 鐢ㄦ埛鍚� " />
+        </el-form-item>
+        <el-form-item label=" 娣诲姞鏃堕棿 " prop="addtime">
+          <el-date-picker clearable
+            v-model="form.addtime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 娣诲姞鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="  " prop="outbounduuid">
+          <el-input v-model="form.outbounduuid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label=" 灏辫瘖璁板綍缂栧彿 " prop="recordid">
+          <el-input v-model="form.recordid" placeholder="璇疯緭鍏� 灏辫瘖璁板綍缂栧彿 " />
+        </el-form-item>
+        <el-form-item label=" 閲嶆嫧鎬绘暟 " prop="recallcount">
+          <el-input v-model="form.recallcount" placeholder="璇疯緭鍏� 閲嶆嫧鎬绘暟 " />
+        </el-form-item>
+        <el-form-item label=" 褰撳墠閲嶆嫧娆℃暟 " prop="exrecallcount">
+          <el-input v-model="form.exrecallcount" placeholder="璇疯緭鍏� 褰撳墠閲嶆嫧娆℃暟 " />
+        </el-form-item>
+        <el-form-item label=" 鎷夊彇鏃堕棿 " prop="pulltime">
+          <el-date-picker clearable
+            v-model="form.pulltime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 鎷夊彇鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="  " prop="bqsms">
+          <el-input v-model="form.bqsms" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="bhsms">
+          <el-input v-model="form.bhsms" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="deptcode">
+          <el-input v-model="form.deptcode" 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="isupload">
+          <el-input v-model="form.isupload" placeholder="璇疯緭鍏� 涓婁紶鏍囪 " />
+        </el-form-item>
+        <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+          <el-date-picker clearable
+            v-model="form.uploadTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+          <el-input v-model="form.orgid" placeholder="璇疯緭鍏� 鏈烘瀯ID " />
+        </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 { listIvrtaskcall, getIvrtaskcall, delIvrtaskcall, addIvrtaskcall, updateIvrtaskcall } from "@/api/smartor/ivrtaskcall";
+
+export default {
+  name: "Ivrtaskcall",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 璇煶浠诲姟鍛煎彨琛ㄦ牸鏁版嵁
+      ivrtaskcallList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sendname: null,
+        phone: null,
+        sex: null,
+        age: null,
+        sfzh: null,
+        addr: null,
+        senderdetail: null,
+        inserttype: null,
+        taskid: null,
+        templateid: null,
+        templatename: null,
+        senddate: null,
+        sendlimitabegin: null,
+        sendlimitaend: null,
+        sendlimitpbegin: null,
+        sendlimitpend: null,
+        sendlimitnbegin: null,
+        sendlimitnend: null,
+        sendstate: null,
+        senduuid: null,
+        result: null,
+        finishtime: null,
+        userid: null,
+        username: null,
+        addtime: null,
+        updatetime: null,
+        outbounduuid: null,
+        recordid: null,
+        recallcount: null,
+        exrecallcount: null,
+        pulltime: null,
+        bqsms: null,
+        bhsms: null,
+        deptcode: null,
+        labelstatus: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: null
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ璇煶浠诲姟鍛煎彨鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listIvrtaskcall(this.queryParams).then(response => {
+        this.ivrtaskcallList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        callid: null,
+        sendname: null,
+        phone: null,
+        sex: null,
+        age: null,
+        sfzh: null,
+        addr: null,
+        senderdetail: null,
+        inserttype: null,
+        taskid: null,
+        templateid: null,
+        templatename: null,
+        senddate: null,
+        sendlimitabegin: null,
+        sendlimitaend: null,
+        sendlimitpbegin: null,
+        sendlimitpend: null,
+        sendlimitnbegin: null,
+        sendlimitnend: null,
+        sendstate: null,
+        senduuid: null,
+        result: null,
+        finishtime: null,
+        userid: null,
+        username: null,
+        addtime: null,
+        updatetime: null,
+        outbounduuid: null,
+        recordid: null,
+        recallcount: null,
+        exrecallcount: null,
+        pulltime: null,
+        bqsms: null,
+        bhsms: null,
+        deptcode: null,
+        labelstatus: null,
+        delFlag: null,
+        updateBy: null,
+        updateTime: null,
+        createBy: null,
+        createTime: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: 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.callid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞璇煶浠诲姟鍛煎彨";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const callid = row.callid || this.ids
+      getIvrtaskcall(callid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼璇煶浠诲姟鍛煎彨";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.callid != null) {
+            updateIvrtaskcall(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addIvrtaskcall(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const callids = row.callid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎璇煶浠诲姟鍛煎彨缂栧彿涓�"' + callids + '"鐨勬暟鎹」锛�').then(function() {
+        return delIvrtaskcall(callids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/ivrtaskcall/export', {
+        ...this.queryParams
+      }, `ivrtaskcall_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/ivrtaskcalldetail/index.vue b/ruoyi-ui/src/views/smartor/ivrtaskcalldetail/index.vue
new file mode 100644
index 0000000..924e9a1
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/ivrtaskcalldetail/index.vue
@@ -0,0 +1,739 @@
+<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="callid">
+        <el-input
+          v-model="queryParams.callid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="uuid">
+        <el-input
+          v-model="queryParams.uuid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="operate">
+        <el-input
+          v-model="queryParams.operate"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="displayno">
+        <el-input
+          v-model="queryParams.displayno"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="inbound">
+        <el-input
+          v-model="queryParams.inbound"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="incoming">
+        <el-input
+          v-model="queryParams.incoming"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="assigntime">
+        <el-input
+          v-model="queryParams.assigntime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="starttime">
+        <el-input
+          v-model="queryParams.starttime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="answertime">
+        <el-input
+          v-model="queryParams.answertime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="silent">
+        <el-input
+          v-model="queryParams.silent"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="dtmfKey">
+        <el-input
+          v-model="queryParams.dtmfKey"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="musicpath">
+        <el-input
+          v-model="queryParams.musicpath"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="sentIndex">
+        <el-input
+          v-model="queryParams.sentIndex"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="sentBegin">
+        <el-input
+          v-model="queryParams.sentBegin"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="asrtext">
+        <el-input
+          v-model="queryParams.asrtext"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="beginTime">
+        <el-input
+          v-model="queryParams.beginTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="endTime">
+        <el-input
+          v-model="queryParams.endTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="sentEnd">
+        <el-input
+          v-model="queryParams.sentEnd"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="recordpath">
+        <el-input
+          v-model="queryParams.recordpath"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="recordurl">
+        <el-input
+          v-model="queryParams.recordurl"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="templateid">
+        <el-input
+          v-model="queryParams.templateid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="templatequestionnum">
+        <el-input
+          v-model="queryParams.templatequestionnum"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="switchid">
+        <el-input
+          v-model="queryParams.switchid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="questiontext">
+        <el-input
+          v-model="queryParams.questiontext"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="questionvoice">
+        <el-input
+          v-model="queryParams.questionvoice"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="categoryname">
+        <el-input
+          v-model="queryParams.categoryname"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="targetoptions">
+        <el-input
+          v-model="queryParams.targetoptions"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="targetvalue">
+        <el-input
+          v-model="queryParams.targetvalue"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="matchedtext">
+        <el-input
+          v-model="queryParams.matchedtext"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="addtime">
+        <el-date-picker clearable
+          v-model="queryParams.addtime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨  ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏍囪 " prop="isupload">
+        <el-input
+          v-model="queryParams.isupload"
+          placeholder="璇疯緭鍏� 涓婁紶鏍囪 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+        <el-date-picker clearable
+          v-model="queryParams.uploadTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+        <el-input
+          v-model="queryParams.orgid"
+          placeholder="璇疯緭鍏� 鏈烘瀯ID "
+          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="['smartor:ivrtaskcalldetail: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="['smartor:ivrtaskcalldetail: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="['smartor:ivrtaskcalldetail: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="['smartor:ivrtaskcalldetail:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="ivrtaskcalldetailList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="  " align="center" prop="calldetailid" />
+      <el-table-column label="  " align="center" prop="callid" />
+      <el-table-column label="  " align="center" prop="uuid" />
+      <el-table-column label="  " align="center" prop="phone" />
+      <el-table-column label="  " align="center" prop="operate" />
+      <el-table-column label="  " align="center" prop="displayno" />
+      <el-table-column label="  " align="center" prop="inbound" />
+      <el-table-column label="  " align="center" prop="incoming" />
+      <el-table-column label="  " align="center" prop="assigntime" />
+      <el-table-column label="  " align="center" prop="starttime" />
+      <el-table-column label="  " align="center" prop="answertime" />
+      <el-table-column label="  " align="center" prop="silent" />
+      <el-table-column label="  " align="center" prop="dtmfKey" />
+      <el-table-column label="  " align="center" prop="musicpath" />
+      <el-table-column label="  " align="center" prop="sentIndex" />
+      <el-table-column label="  " align="center" prop="sentBegin" />
+      <el-table-column label="  " align="center" prop="asrtext" />
+      <el-table-column label="  " align="center" prop="beginTime" />
+      <el-table-column label="  " align="center" prop="endTime" />
+      <el-table-column label="  " align="center" prop="sentEnd" />
+      <el-table-column label="  " align="center" prop="recordpath" />
+      <el-table-column label="  " align="center" prop="recordurl" />
+      <el-table-column label="  " align="center" prop="templateid" />
+      <el-table-column label="  " align="center" prop="templatequestionnum" />
+      <el-table-column label="  " align="center" prop="switchid" />
+      <el-table-column label="  " align="center" prop="questiontext" />
+      <el-table-column label="  " align="center" prop="questionvoice" />
+      <el-table-column label="  " align="center" prop="categoryname" />
+      <el-table-column label="  " align="center" prop="targetoptions" />
+      <el-table-column label="  " align="center" prop="targetvalue" />
+      <el-table-column label="  " align="center" prop="matchedtext" />
+      <el-table-column label="  " align="center" prop="addtime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.addtime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 涓婁紶鏍囪 " align="center" prop="isupload" />
+      <el-table-column label=" 涓婁紶鏃堕棿 " align="center" prop="uploadTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.uploadTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <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="['smartor:ivrtaskcalldetail:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:ivrtaskcalldetail: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="callid">
+          <el-input v-model="form.callid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="uuid">
+          <el-input v-model="form.uuid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="phone">
+          <el-input v-model="form.phone" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="operate">
+          <el-input v-model="form.operate" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="displayno">
+          <el-input v-model="form.displayno" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="inbound">
+          <el-input v-model="form.inbound" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="incoming">
+          <el-input v-model="form.incoming" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="assigntime">
+          <el-input v-model="form.assigntime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="starttime">
+          <el-input v-model="form.starttime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="answertime">
+          <el-input v-model="form.answertime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="silent">
+          <el-input v-model="form.silent" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="dtmfKey">
+          <el-input v-model="form.dtmfKey" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="musicpath">
+          <el-input v-model="form.musicpath" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="sentIndex">
+          <el-input v-model="form.sentIndex" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="sentBegin">
+          <el-input v-model="form.sentBegin" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="asrtext">
+          <el-input v-model="form.asrtext" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="beginTime">
+          <el-input v-model="form.beginTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="endTime">
+          <el-input v-model="form.endTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="sentEnd">
+          <el-input v-model="form.sentEnd" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="recordpath">
+          <el-input v-model="form.recordpath" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="recordurl">
+          <el-input v-model="form.recordurl" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="templateid">
+          <el-input v-model="form.templateid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="templatequestionnum">
+          <el-input v-model="form.templatequestionnum" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="switchid">
+          <el-input v-model="form.switchid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="questiontext">
+          <el-input v-model="form.questiontext" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="questionvoice">
+          <el-input v-model="form.questionvoice" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="categoryname">
+          <el-input v-model="form.categoryname" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="targetoptions">
+          <el-input v-model="form.targetoptions" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="targetvalue">
+          <el-input v-model="form.targetvalue" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="matchedtext">
+          <el-input v-model="form.matchedtext" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="addtime">
+          <el-date-picker clearable
+            v-model="form.addtime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨  ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 涓婁紶鏍囪 " prop="isupload">
+          <el-input v-model="form.isupload" placeholder="璇疯緭鍏� 涓婁紶鏍囪 " />
+        </el-form-item>
+        <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+          <el-date-picker clearable
+            v-model="form.uploadTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+          <el-input v-model="form.orgid" placeholder="璇疯緭鍏� 鏈烘瀯ID " />
+        </el-form-item>
+        <el-form-item label=" 鍒犻櫎鏍囪 " prop="delFlag">
+          <el-input v-model="form.delFlag" 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 { listIvrtaskcalldetail, getIvrtaskcalldetail, delIvrtaskcalldetail, addIvrtaskcalldetail, updateIvrtaskcalldetail } from "@/api/smartor/ivrtaskcalldetail";
+
+export default {
+  name: "Ivrtaskcalldetail",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 璇煶浠诲姟鍛煎彨鏄庣粏琛ㄦ牸鏁版嵁
+      ivrtaskcalldetailList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        callid: null,
+        uuid: null,
+        phone: null,
+        operate: null,
+        displayno: null,
+        inbound: null,
+        incoming: null,
+        assigntime: null,
+        starttime: null,
+        answertime: null,
+        silent: null,
+        dtmfKey: null,
+        musicpath: null,
+        sentIndex: null,
+        sentBegin: null,
+        asrtext: null,
+        beginTime: null,
+        endTime: null,
+        sentEnd: null,
+        recordpath: null,
+        recordurl: null,
+        templateid: null,
+        templatequestionnum: null,
+        switchid: null,
+        questiontext: null,
+        questionvoice: null,
+        categoryname: null,
+        targetoptions: null,
+        targetvalue: null,
+        matchedtext: null,
+        addtime: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: null,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listIvrtaskcalldetail(this.queryParams).then(response => {
+        this.ivrtaskcalldetailList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        calldetailid: null,
+        callid: null,
+        uuid: null,
+        phone: null,
+        operate: null,
+        displayno: null,
+        inbound: null,
+        incoming: null,
+        assigntime: null,
+        starttime: null,
+        answertime: null,
+        silent: null,
+        dtmfKey: null,
+        musicpath: null,
+        sentIndex: null,
+        sentBegin: null,
+        asrtext: null,
+        beginTime: null,
+        endTime: null,
+        sentEnd: null,
+        recordpath: null,
+        recordurl: null,
+        templateid: null,
+        templatequestionnum: null,
+        switchid: null,
+        questiontext: null,
+        questionvoice: null,
+        categoryname: null,
+        targetoptions: null,
+        targetvalue: null,
+        matchedtext: null,
+        addtime: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: null,
+        createTime: null,
+        delFlag: null,
+        updateBy: null,
+        updateTime: null,
+        createBy: 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.calldetailid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞璇煶浠诲姟鍛煎彨鏄庣粏";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const calldetailid = row.calldetailid || this.ids
+      getIvrtaskcalldetail(calldetailid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼璇煶浠诲姟鍛煎彨鏄庣粏";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.calldetailid != null) {
+            updateIvrtaskcalldetail(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addIvrtaskcalldetail(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const calldetailids = row.calldetailid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏缂栧彿涓�"' + calldetailids + '"鐨勬暟鎹」锛�').then(function() {
+        return delIvrtaskcalldetail(calldetailids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/ivrtaskcalldetail/export', {
+        ...this.queryParams
+      }, `ivrtaskcalldetail_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/ivrtaskcallrecord/index.vue b/ruoyi-ui/src/views/smartor/ivrtaskcallrecord/index.vue
new file mode 100644
index 0000000..691aa96
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/ivrtaskcallrecord/index.vue
@@ -0,0 +1,646 @@
+<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="displayno">
+        <el-input
+          v-model="queryParams.displayno"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="taskid">
+        <el-input
+          v-model="queryParams.taskid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="extension">
+        <el-input
+          v-model="queryParams.extension"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="inbound">
+        <el-input
+          v-model="queryParams.inbound"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="direct">
+        <el-input
+          v-model="queryParams.direct"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="answered">
+        <el-input
+          v-model="queryParams.answered"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="assignTime">
+        <el-input
+          v-model="queryParams.assignTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="startTime">
+        <el-input
+          v-model="queryParams.startTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="answerTime">
+        <el-input
+          v-model="queryParams.answerTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="hangupTime">
+        <el-input
+          v-model="queryParams.hangupTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="endTime">
+        <el-input
+          v-model="queryParams.endTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="recordPath">
+        <el-input
+          v-model="queryParams.recordPath"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="recordUrl">
+        <el-input
+          v-model="queryParams.recordUrl"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="hangupSipcode">
+        <el-input
+          v-model="queryParams.hangupSipcode"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="hangupCause">
+        <el-input
+          v-model="queryParams.hangupCause"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="transfered">
+        <el-input
+          v-model="queryParams.transfered"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="transUuid">
+        <el-input
+          v-model="queryParams.transUuid"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="transPhone">
+        <el-input
+          v-model="queryParams.transPhone"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="transAnswered">
+        <el-input
+          v-model="queryParams.transAnswered"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="transStartTime">
+        <el-input
+          v-model="queryParams.transStartTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="transAnswerTime">
+        <el-input
+          v-model="queryParams.transAnswerTime"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="earlyAsrtext">
+        <el-input
+          v-model="queryParams.earlyAsrtext"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="earlyPath">
+        <el-input
+          v-model="queryParams.earlyPath"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="earlyUrl">
+        <el-input
+          v-model="queryParams.earlyUrl"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏍囪 " prop="isupload">
+        <el-input
+          v-model="queryParams.isupload"
+          placeholder="璇疯緭鍏� 涓婁紶鏍囪 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+        <el-date-picker clearable
+          v-model="queryParams.uploadTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+        <el-input
+          v-model="queryParams.orgid"
+          placeholder="璇疯緭鍏� 鏈烘瀯ID "
+          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="['smartor:ivrtaskcallrecord: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="['smartor:ivrtaskcallrecord: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="['smartor:ivrtaskcallrecord: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="['smartor:ivrtaskcallrecord:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="ivrtaskcallrecordList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="  " align="center" prop="uuid" />
+      <el-table-column label="  " align="center" prop="displayno" />
+      <el-table-column label="  " align="center" prop="phone" />
+      <el-table-column label="  " align="center" prop="taskid" />
+      <el-table-column label="  " align="center" prop="extension" />
+      <el-table-column label="  " align="center" prop="inbound" />
+      <el-table-column label="  " align="center" prop="direct" />
+      <el-table-column label="  " align="center" prop="answered" />
+      <el-table-column label="  " align="center" prop="assignTime" />
+      <el-table-column label="  " align="center" prop="startTime" />
+      <el-table-column label="  " align="center" prop="answerTime" />
+      <el-table-column label="  " align="center" prop="hangupTime" />
+      <el-table-column label="  " align="center" prop="endTime" />
+      <el-table-column label="  " align="center" prop="recordPath" />
+      <el-table-column label="  " align="center" prop="recordUrl" />
+      <el-table-column label="  " align="center" prop="hangupSipcode" />
+      <el-table-column label="  " align="center" prop="hangupCause" />
+      <el-table-column label="  " align="center" prop="transfered" />
+      <el-table-column label="  " align="center" prop="transUuid" />
+      <el-table-column label="  " align="center" prop="transPhone" />
+      <el-table-column label="  " align="center" prop="transAnswered" />
+      <el-table-column label="  " align="center" prop="transStartTime" />
+      <el-table-column label="  " align="center" prop="transAnswerTime" />
+      <el-table-column label="  " align="center" prop="earlyAsrtext" />
+      <el-table-column label="  " align="center" prop="earlyPath" />
+      <el-table-column label="  " align="center" prop="earlyUrl" />
+      <el-table-column label=" 涓婁紶鏍囪 " align="center" prop="isupload" />
+      <el-table-column label=" 涓婁紶鏃堕棿 " align="center" prop="uploadTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.uploadTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <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="['smartor:ivrtaskcallrecord:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:ivrtaskcallrecord: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="displayno">
+          <el-input v-model="form.displayno" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="phone">
+          <el-input v-model="form.phone" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="taskid">
+          <el-input v-model="form.taskid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="extension">
+          <el-input v-model="form.extension" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="inbound">
+          <el-input v-model="form.inbound" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="direct">
+          <el-input v-model="form.direct" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="answered">
+          <el-input v-model="form.answered" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="assignTime">
+          <el-input v-model="form.assignTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="startTime">
+          <el-input v-model="form.startTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="answerTime">
+          <el-input v-model="form.answerTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="hangupTime">
+          <el-input v-model="form.hangupTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="endTime">
+          <el-input v-model="form.endTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="recordPath">
+          <el-input v-model="form.recordPath" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="recordUrl">
+          <el-input v-model="form.recordUrl" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="hangupSipcode">
+          <el-input v-model="form.hangupSipcode" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="hangupCause">
+          <el-input v-model="form.hangupCause" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="transfered">
+          <el-input v-model="form.transfered" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="transUuid">
+          <el-input v-model="form.transUuid" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="transPhone">
+          <el-input v-model="form.transPhone" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="transAnswered">
+          <el-input v-model="form.transAnswered" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="transStartTime">
+          <el-input v-model="form.transStartTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="transAnswerTime">
+          <el-input v-model="form.transAnswerTime" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="earlyAsrtext">
+          <el-input v-model="form.earlyAsrtext" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="earlyPath">
+          <el-input v-model="form.earlyPath" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  " prop="earlyUrl">
+          <el-input v-model="form.earlyUrl" 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="isupload">
+          <el-input v-model="form.isupload" placeholder="璇疯緭鍏� 涓婁紶鏍囪 " />
+        </el-form-item>
+        <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+          <el-date-picker clearable
+            v-model="form.uploadTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+          <el-input v-model="form.orgid" placeholder="璇疯緭鍏� 鏈烘瀯ID " />
+        </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 { listIvrtaskcallrecord, getIvrtaskcallrecord, delIvrtaskcallrecord, addIvrtaskcallrecord, updateIvrtaskcallrecord } from "@/api/smartor/ivrtaskcallrecord";
+
+export default {
+  name: "Ivrtaskcallrecord",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 璇煶浠诲姟鍛煎彨璁板綍琛ㄦ牸鏁版嵁
+      ivrtaskcallrecordList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        displayno: null,
+        phone: null,
+        taskid: null,
+        extension: null,
+        inbound: null,
+        direct: null,
+        answered: null,
+        assignTime: null,
+        startTime: null,
+        answerTime: null,
+        hangupTime: null,
+        endTime: null,
+        recordPath: null,
+        recordUrl: null,
+        hangupSipcode: null,
+        hangupCause: null,
+        transfered: null,
+        transUuid: null,
+        transPhone: null,
+        transAnswered: null,
+        transStartTime: null,
+        transAnswerTime: null,
+        earlyAsrtext: null,
+        earlyPath: null,
+        earlyUrl: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: null
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listIvrtaskcallrecord(this.queryParams).then(response => {
+        this.ivrtaskcallrecordList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        uuid: null,
+        displayno: null,
+        phone: null,
+        taskid: null,
+        extension: null,
+        inbound: null,
+        direct: null,
+        answered: null,
+        assignTime: null,
+        startTime: null,
+        answerTime: null,
+        hangupTime: null,
+        endTime: null,
+        recordPath: null,
+        recordUrl: null,
+        hangupSipcode: null,
+        hangupCause: null,
+        transfered: null,
+        transUuid: null,
+        transPhone: null,
+        transAnswered: null,
+        transStartTime: null,
+        transAnswerTime: null,
+        earlyAsrtext: null,
+        earlyPath: null,
+        earlyUrl: null,
+        delFlag: null,
+        updateBy: null,
+        updateTime: null,
+        createBy: null,
+        createTime: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: 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.uuid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞璇煶浠诲姟鍛煎彨璁板綍";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const uuid = row.uuid || this.ids
+      getIvrtaskcallrecord(uuid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼璇煶浠诲姟鍛煎彨璁板綍";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.uuid != null) {
+            updateIvrtaskcallrecord(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addIvrtaskcallrecord(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const uuids = row.uuid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍缂栧彿涓�"' + uuids + '"鐨勬暟鎹」锛�').then(function() {
+        return delIvrtaskcallrecord(uuids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/ivrtaskcallrecord/export', {
+        ...this.queryParams
+      }, `ivrtaskcallrecord_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/ivrtasksms/index.vue b/ruoyi-ui/src/views/smartor/ivrtasksms/index.vue
new file mode 100644
index 0000000..01c34d2
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/ivrtasksms/index.vue
@@ -0,0 +1,403 @@
+<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="taskid">
+        <el-input
+          v-model="queryParams.taskid"
+          placeholder="璇疯緭鍏� 浠诲姟缂栧彿 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鐭俊妯℃澘涓婚敭 " prop="smstemplateid">
+        <el-input
+          v-model="queryParams.smstemplateid"
+          placeholder="璇疯緭鍏� 鐭俊妯℃澘涓婚敭 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鐢佃瘽鐘舵�佷富閿� " prop="phonestatusid">
+        <el-input
+          v-model="queryParams.phonestatusid"
+          placeholder="璇疯緭鍏� 鐢佃瘽鐘舵�佷富閿� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鐭俊妯℃澘鍚嶇О " prop="smstemplatename">
+        <el-input
+          v-model="queryParams.smstemplatename"
+          placeholder="璇疯緭鍏� 鐭俊妯℃澘鍚嶇О "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鐢佃瘽鐘舵�佸悕绉� " prop="phonestatusname">
+        <el-input
+          v-model="queryParams.phonestatusname"
+          placeholder="璇疯緭鍏� 鐢佃瘽鐘舵�佸悕绉� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="  " prop="isdel">
+        <el-input
+          v-model="queryParams.isdel"
+          placeholder="璇疯緭鍏�  "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏍囩缂栧彿 " prop="tagid">
+        <el-input
+          v-model="queryParams.tagid"
+          placeholder="璇疯緭鍏� 鏍囩缂栧彿 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏍囪 " prop="isupload">
+        <el-input
+          v-model="queryParams.isupload"
+          placeholder="璇疯緭鍏� 涓婁紶鏍囪 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+        <el-date-picker clearable
+          v-model="queryParams.uploadTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+        <el-input
+          v-model="queryParams.orgid"
+          placeholder="璇疯緭鍏� 鏈烘瀯ID "
+          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="['smartor:ivrtasksms: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="['smartor:ivrtasksms: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="['smartor:ivrtasksms: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="['smartor:ivrtasksms:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="ivrtasksmsList" @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="taskid" />
+      <el-table-column label=" 绫诲瀷0.涓嶄娇鐢� 1.浠诲姟鍓� 2.浠诲姟鍚� " align="center" prop="type" />
+      <el-table-column label=" 鐭俊妯℃澘涓婚敭 " align="center" prop="smstemplateid" />
+      <el-table-column label=" 鐢佃瘽鐘舵�佷富閿� " align="center" prop="phonestatusid" />
+      <el-table-column label=" 鐭俊妯℃澘鍚嶇О " align="center" prop="smstemplatename" />
+      <el-table-column label=" 鐢佃瘽鐘舵�佸悕绉� " align="center" prop="phonestatusname" />
+      <el-table-column label="  " align="center" prop="isdel" />
+      <el-table-column label="  " align="center" prop="content" />
+      <el-table-column label=" 鏍囩缂栧彿 " align="center" prop="tagid" />
+      <el-table-column label=" 涓婁紶鏍囪 " align="center" prop="isupload" />
+      <el-table-column label=" 涓婁紶鏃堕棿 " align="center" prop="uploadTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.uploadTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <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="['smartor:ivrtasksms:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:ivrtasksms: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="taskid">
+          <el-input v-model="form.taskid" placeholder="璇疯緭鍏� 浠诲姟缂栧彿 " />
+        </el-form-item>
+        <el-form-item label=" 鐭俊妯℃澘涓婚敭 " prop="smstemplateid">
+          <el-input v-model="form.smstemplateid" placeholder="璇疯緭鍏� 鐭俊妯℃澘涓婚敭 " />
+        </el-form-item>
+        <el-form-item label=" 鐢佃瘽鐘舵�佷富閿� " prop="phonestatusid">
+          <el-input v-model="form.phonestatusid" placeholder="璇疯緭鍏� 鐢佃瘽鐘舵�佷富閿� " />
+        </el-form-item>
+        <el-form-item label=" 鐭俊妯℃澘鍚嶇О " prop="smstemplatename">
+          <el-input v-model="form.smstemplatename" placeholder="璇疯緭鍏� 鐭俊妯℃澘鍚嶇О " />
+        </el-form-item>
+        <el-form-item label=" 鐢佃瘽鐘舵�佸悕绉� " prop="phonestatusname">
+          <el-input v-model="form.phonestatusname" placeholder="璇疯緭鍏� 鐢佃瘽鐘舵�佸悕绉� " />
+        </el-form-item>
+        <el-form-item label="  " prop="isdel">
+          <el-input v-model="form.isdel" placeholder="璇疯緭鍏�  " />
+        </el-form-item>
+        <el-form-item label="  ">
+          <editor v-model="form.content" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label=" 鏍囩缂栧彿 " prop="tagid">
+          <el-input v-model="form.tagid" 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="isupload">
+          <el-input v-model="form.isupload" placeholder="璇疯緭鍏� 涓婁紶鏍囪 " />
+        </el-form-item>
+        <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime">
+          <el-date-picker clearable
+            v-model="form.uploadTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+          <el-input v-model="form.orgid" placeholder="璇疯緭鍏� 鏈烘瀯ID " />
+        </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 { listIvrtasksms, getIvrtasksms, delIvrtasksms, addIvrtasksms, updateIvrtasksms } from "@/api/smartor/ivrtasksms";
+
+export default {
+  name: "Ivrtasksms",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 璇煶浠诲姟鐭俊琛ㄦ牸鏁版嵁
+      ivrtasksmsList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        taskid: null,
+        type: null,
+        smstemplateid: null,
+        phonestatusid: null,
+        smstemplatename: null,
+        phonestatusname: null,
+        isdel: null,
+        content: null,
+        tagid: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: null
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ璇煶浠诲姟鐭俊鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listIvrtasksms(this.queryParams).then(response => {
+        this.ivrtasksmsList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        taskid: null,
+        type: null,
+        smstemplateid: null,
+        phonestatusid: null,
+        smstemplatename: null,
+        phonestatusname: null,
+        isdel: null,
+        content: null,
+        tagid: null,
+        delFlag: null,
+        updateBy: null,
+        updateTime: null,
+        createBy: null,
+        createTime: null,
+        isupload: null,
+        uploadTime: null,
+        orgid: 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
+      getIvrtasksms(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) {
+            updateIvrtasksms(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addIvrtasksms(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 delIvrtasksms(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/ivrtasksms/export', {
+        ...this.queryParams
+      }, `ivrtasksms_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

--
Gitblit v1.9.3