yxh
yxh
2023-03-06 aad1dc20370ca3d740964326ef7ba2d91cc40a2e
yxh
已添加40个文件
8695 ■■■■■ 文件已修改
ruoyi-ui/src/api/smartor/ivrexecuteconfig.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrflow.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrflownode.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrflownodebranch.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrglobalconfig.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrintent.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrlibintent.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrlibintentcategory.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrlibscript.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrlibscriptcategory.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrlibscriptmodel.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrrecall.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrscene.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrscenecategory.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrscript.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrscriptmodel.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/smsaccount.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/smsparam.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/smsrecords.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/smstemplet.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrexecuteconfig/index.vue 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrflow/index.vue 428 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrflownode/index.vue 459 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrflownodebranch/index.vue 411 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrglobalconfig/index.vue 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrintent/index.vue 476 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrlibintent/index.vue 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrlibintentcategory/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrlibscript/index.vue 380 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrlibscriptcategory/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrlibscriptmodel/index.vue 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrrecall/index.vue 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrscene/index.vue 470 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrscenecategory/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrscript/index.vue 411 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/ivrscriptmodel/index.vue 423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/smsaccount/index.vue 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/smsparam/index.vue 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/smsrecords/index.vue 544 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/smartor/smstemplet/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/smartor/ivrexecuteconfig.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼执行配置列表
export function listIvrexecuteconfig(query) {
  return request({
    url: '/smartor/ivrexecuteconfig/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼执行配置详细
export function getIvrexecuteconfig(scenecfgid) {
  return request({
    url: '/smartor/ivrexecuteconfig/' + scenecfgid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼执行配置
export function addIvrexecuteconfig(data) {
  return request({
    url: '/smartor/ivrexecuteconfig',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼执行配置
export function updateIvrexecuteconfig(data) {
  return request({
    url: '/smartor/ivrexecuteconfig',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼执行配置
export function delIvrexecuteconfig(scenecfgid) {
  return request({
    url: '/smartor/ivrexecuteconfig/' + scenecfgid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrflow.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼流程列表
export function listIvrflow(query) {
  return request({
    url: '/smartor/ivrflow/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼流程详细
export function getIvrflow(flowid) {
  return request({
    url: '/smartor/ivrflow/' + flowid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼流程
export function addIvrflow(data) {
  return request({
    url: '/smartor/ivrflow',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼流程
export function updateIvrflow(data) {
  return request({
    url: '/smartor/ivrflow',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼流程
export function delIvrflow(flowid) {
  return request({
    url: '/smartor/ivrflow/' + flowid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrflownode.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼流程节点列表
export function listIvrflownode(query) {
  return request({
    url: '/smartor/ivrflownode/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼流程节点详细
export function getIvrflownode(flownodeid) {
  return request({
    url: '/smartor/ivrflownode/' + flownodeid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼流程节点
export function addIvrflownode(data) {
  return request({
    url: '/smartor/ivrflownode',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼流程节点
export function updateIvrflownode(data) {
  return request({
    url: '/smartor/ivrflownode',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼流程节点
export function delIvrflownode(flownodeid) {
  return request({
    url: '/smartor/ivrflownode/' + flownodeid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrflownodebranch.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼流程节点分支列表
export function listIvrflownodebranch(query) {
  return request({
    url: '/smartor/ivrflownodebranch/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼流程节点分支详细
export function getIvrflownodebranch(branchid) {
  return request({
    url: '/smartor/ivrflownodebranch/' + branchid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼流程节点分支
export function addIvrflownodebranch(data) {
  return request({
    url: '/smartor/ivrflownodebranch',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼流程节点分支
export function updateIvrflownodebranch(data) {
  return request({
    url: '/smartor/ivrflownodebranch',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼流程节点分支
export function delIvrflownodebranch(branchid) {
  return request({
    url: '/smartor/ivrflownodebranch/' + branchid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrglobalconfig.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼全局配置列表
export function listIvrglobalconfig(query) {
  return request({
    url: '/smartor/ivrglobalconfig/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼全局配置详细
export function getIvrglobalconfig(gblconfigid) {
  return request({
    url: '/smartor/ivrglobalconfig/' + gblconfigid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼全局配置
export function addIvrglobalconfig(data) {
  return request({
    url: '/smartor/ivrglobalconfig',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼全局配置
export function updateIvrglobalconfig(data) {
  return request({
    url: '/smartor/ivrglobalconfig',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼全局配置
export function delIvrglobalconfig(gblconfigid) {
  return request({
    url: '/smartor/ivrglobalconfig/' + gblconfigid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrintent.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼意图列表
export function listIvrintent(query) {
  return request({
    url: '/smartor/ivrintent/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼意图详细
export function getIvrintent(sceneintentid) {
  return request({
    url: '/smartor/ivrintent/' + sceneintentid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼意图
export function addIvrintent(data) {
  return request({
    url: '/smartor/ivrintent',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼意图
export function updateIvrintent(data) {
  return request({
    url: '/smartor/ivrintent',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼意图
export function delIvrintent(sceneintentid) {
  return request({
    url: '/smartor/ivrintent/' + sceneintentid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrlibintent.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI意图库列表
export function listIvrlibintent(query) {
  return request({
    url: '/smartor/ivrlibintent/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI意图库详细
export function getIvrlibintent(intentid) {
  return request({
    url: '/smartor/ivrlibintent/' + intentid,
    method: 'get'
  })
}
// æ–°å¢žAI意图库
export function addIvrlibintent(data) {
  return request({
    url: '/smartor/ivrlibintent',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI意图库
export function updateIvrlibintent(data) {
  return request({
    url: '/smartor/ivrlibintent',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI意图库
export function delIvrlibintent(intentid) {
  return request({
    url: '/smartor/ivrlibintent/' + intentid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrlibintentcategory.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI意图库分类列表
export function listIvrlibintentcategory(query) {
  return request({
    url: '/smartor/ivrlibintentcategory/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI意图库分类详细
export function getIvrlibintentcategory(intertcatid) {
  return request({
    url: '/smartor/ivrlibintentcategory/' + intertcatid,
    method: 'get'
  })
}
// æ–°å¢žAI意图库分类
export function addIvrlibintentcategory(data) {
  return request({
    url: '/smartor/ivrlibintentcategory',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI意图库分类
export function updateIvrlibintentcategory(data) {
  return request({
    url: '/smartor/ivrlibintentcategory',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI意图库分类
export function delIvrlibintentcategory(intertcatid) {
  return request({
    url: '/smartor/ivrlibintentcategory/' + intertcatid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrlibscript.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI话术库列表
export function listIvrlibscript(query) {
  return request({
    url: '/smartor/ivrlibscript/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI话术库详细
export function getIvrlibscript(scriptid) {
  return request({
    url: '/smartor/ivrlibscript/' + scriptid,
    method: 'get'
  })
}
// æ–°å¢žAI话术库
export function addIvrlibscript(data) {
  return request({
    url: '/smartor/ivrlibscript',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI话术库
export function updateIvrlibscript(data) {
  return request({
    url: '/smartor/ivrlibscript',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI话术库
export function delIvrlibscript(scriptid) {
  return request({
    url: '/smartor/ivrlibscript/' + scriptid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrlibscriptcategory.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI话术库分类列表
export function listIvrlibscriptcategory(query) {
  return request({
    url: '/smartor/ivrlibscriptcategory/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI话术库分类详细
export function getIvrlibscriptcategory(categoryid) {
  return request({
    url: '/smartor/ivrlibscriptcategory/' + categoryid,
    method: 'get'
  })
}
// æ–°å¢žAI话术库分类
export function addIvrlibscriptcategory(data) {
  return request({
    url: '/smartor/ivrlibscriptcategory',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI话术库分类
export function updateIvrlibscriptcategory(data) {
  return request({
    url: '/smartor/ivrlibscriptcategory',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI话术库分类
export function delIvrlibscriptcategory(categoryid) {
  return request({
    url: '/smartor/ivrlibscriptcategory/' + categoryid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrlibscriptmodel.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI话术模块列表
export function listIvrlibscriptmodel(query) {
  return request({
    url: '/smartor/ivrlibscriptmodel/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI话术模块详细
export function getIvrlibscriptmodel(modelid) {
  return request({
    url: '/smartor/ivrlibscriptmodel/' + modelid,
    method: 'get'
  })
}
// æ–°å¢žAI话术模块
export function addIvrlibscriptmodel(data) {
  return request({
    url: '/smartor/ivrlibscriptmodel',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI话术模块
export function updateIvrlibscriptmodel(data) {
  return request({
    url: '/smartor/ivrlibscriptmodel',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI话术模块
export function delIvrlibscriptmodel(modelid) {
  return request({
    url: '/smartor/ivrlibscriptmodel/' + modelid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrrecall.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼重拨配置列表
export function listIvrrecall(query) {
  return request({
    url: '/smartor/ivrrecall/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼重拨配置详细
export function getIvrrecall(recallid) {
  return request({
    url: '/smartor/ivrrecall/' + recallid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼重拨配置
export function addIvrrecall(data) {
  return request({
    url: '/smartor/ivrrecall',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼重拨配置
export function updateIvrrecall(data) {
  return request({
    url: '/smartor/ivrrecall',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼重拨配置
export function delIvrrecall(recallid) {
  return request({
    url: '/smartor/ivrrecall/' + recallid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrscene.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼场景管理列表
export function listIvrscene(query) {
  return request({
    url: '/smartor/ivrscene/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼场景管理详细
export function getIvrscene(sceneid) {
  return request({
    url: '/smartor/ivrscene/' + sceneid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼场景管理
export function addIvrscene(data) {
  return request({
    url: '/smartor/ivrscene',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼场景管理
export function updateIvrscene(data) {
  return request({
    url: '/smartor/ivrscene',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼场景管理
export function delIvrscene(sceneid) {
  return request({
    url: '/smartor/ivrscene/' + sceneid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrscenecategory.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI服务场景管理分类列表
export function listIvrscenecategory(query) {
  return request({
    url: '/smartor/ivrscenecategory/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI服务场景管理分类详细
export function getIvrscenecategory(scenecatid) {
  return request({
    url: '/smartor/ivrscenecategory/' + scenecatid,
    method: 'get'
  })
}
// æ–°å¢žAI服务场景管理分类
export function addIvrscenecategory(data) {
  return request({
    url: '/smartor/ivrscenecategory',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI服务场景管理分类
export function updateIvrscenecategory(data) {
  return request({
    url: '/smartor/ivrscenecategory',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI服务场景管理分类
export function delIvrscenecategory(scenecatid) {
  return request({
    url: '/smartor/ivrscenecategory/' + scenecatid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrscript.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼话术列表
export function listIvrscript(query) {
  return request({
    url: '/smartor/ivrscript/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼话术详细
export function getIvrscript(scenescrid) {
  return request({
    url: '/smartor/ivrscript/' + scenescrid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼话术
export function addIvrscript(data) {
  return request({
    url: '/smartor/ivrscript',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼话术
export function updateIvrscript(data) {
  return request({
    url: '/smartor/ivrscript',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼话术
export function delIvrscript(scenescrid) {
  return request({
    url: '/smartor/ivrscript/' + scenescrid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/ivrscriptmodel.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢AI外呼话术模块列表
export function listIvrscriptmodel(query) {
  return request({
    url: '/smartor/ivrscriptmodel/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢AI外呼话术模块详细
export function getIvrscriptmodel(scenemodid) {
  return request({
    url: '/smartor/ivrscriptmodel/' + scenemodid,
    method: 'get'
  })
}
// æ–°å¢žAI外呼话术模块
export function addIvrscriptmodel(data) {
  return request({
    url: '/smartor/ivrscriptmodel',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹AI外呼话术模块
export function updateIvrscriptmodel(data) {
  return request({
    url: '/smartor/ivrscriptmodel',
    method: 'put',
    data: data
  })
}
// åˆ é™¤AI外呼话术模块
export function delIvrscriptmodel(scenemodid) {
  return request({
    url: '/smartor/ivrscriptmodel/' + scenemodid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/smsaccount.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢çŸ­ä¿¡è´¦å·åˆ—表
export function listSmsaccount(query) {
  return request({
    url: '/smartor/smsaccount/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢çŸ­ä¿¡è´¦å·è¯¦ç»†
export function getSmsaccount(smsacountid) {
  return request({
    url: '/smartor/smsaccount/' + smsacountid,
    method: 'get'
  })
}
// æ–°å¢žçŸ­ä¿¡è´¦å·
export function addSmsaccount(data) {
  return request({
    url: '/smartor/smsaccount',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹çŸ­ä¿¡è´¦å·
export function updateSmsaccount(data) {
  return request({
    url: '/smartor/smsaccount',
    method: 'put',
    data: data
  })
}
// åˆ é™¤çŸ­ä¿¡è´¦å·
export function delSmsaccount(smsacountid) {
  return request({
    url: '/smartor/smsaccount/' + smsacountid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/smsparam.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢çŸ­ä¿¡å‚数列表
export function listSmsparam(query) {
  return request({
    url: '/smartor/smsparam/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢çŸ­ä¿¡å‚数详细
export function getSmsparam(paramid) {
  return request({
    url: '/smartor/smsparam/' + paramid,
    method: 'get'
  })
}
// æ–°å¢žçŸ­ä¿¡å‚æ•°
export function addSmsparam(data) {
  return request({
    url: '/smartor/smsparam',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹çŸ­ä¿¡å‚æ•°
export function updateSmsparam(data) {
  return request({
    url: '/smartor/smsparam',
    method: 'put',
    data: data
  })
}
// åˆ é™¤çŸ­ä¿¡å‚æ•°
export function delSmsparam(paramid) {
  return request({
    url: '/smartor/smsparam/' + paramid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/smsrecords.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢çŸ­ä¿¡è®°å½•列表
export function listSmsrecords(query) {
  return request({
    url: '/smartor/smsrecords/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢çŸ­ä¿¡è®°å½•详细
export function getSmsrecords(recordid) {
  return request({
    url: '/smartor/smsrecords/' + recordid,
    method: 'get'
  })
}
// æ–°å¢žçŸ­ä¿¡è®°å½•
export function addSmsrecords(data) {
  return request({
    url: '/smartor/smsrecords',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹çŸ­ä¿¡è®°å½•
export function updateSmsrecords(data) {
  return request({
    url: '/smartor/smsrecords',
    method: 'put',
    data: data
  })
}
// åˆ é™¤çŸ­ä¿¡è®°å½•
export function delSmsrecords(recordid) {
  return request({
    url: '/smartor/smsrecords/' + recordid,
    method: 'delete'
  })
}
ruoyi-ui/src/api/smartor/smstemplet.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢çŸ­ä¿¡æ¨¡æ¿åˆ—表
export function listSmstemplet(query) {
  return request({
    url: '/smartor/smstemplet/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢çŸ­ä¿¡æ¨¡æ¿è¯¦ç»†
export function getSmstemplet(templetid) {
  return request({
    url: '/smartor/smstemplet/' + templetid,
    method: 'get'
  })
}
// æ–°å¢žçŸ­ä¿¡æ¨¡æ¿
export function addSmstemplet(data) {
  return request({
    url: '/smartor/smstemplet',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹çŸ­ä¿¡æ¨¡æ¿
export function updateSmstemplet(data) {
  return request({
    url: '/smartor/smstemplet',
    method: 'put',
    data: data
  })
}
// åˆ é™¤çŸ­ä¿¡æ¨¡æ¿
export function delSmstemplet(templetid) {
  return request({
    url: '/smartor/smstemplet/' + templetid,
    method: 'delete'
  })
}
ruoyi-ui/src/views/smartor/ivrexecuteconfig/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,398 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å…¨å±€é…ç½®ID;全局配置ID " prop="globalid">
        <el-input
          v-model="queryParams.globalid"
          placeholder="请输入 å…¨å±€é…ç½®ID;全局配置ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å¤–呼节点ID " prop="flownodebranchid">
        <el-input
          v-model="queryParams.flownodebranchid"
          placeholder="请输入 å¤–呼节点ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ‰§è¡Œæ¡ä»¶;为问卷时填问卷题目/为患者标签时不填 " prop="executeconditions">
        <el-input
          v-model="queryParams.executeconditions"
          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="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          placeholder="请输入 å¤–呼场景ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ‰§è¡Œæ¡ä»¶ä»£ç ;为问卷时填问卷题目Code " prop="executeconditionscode">
        <el-input
          v-model="queryParams.executeconditionscode"
          placeholder="请输入 æ‰§è¡Œæ¡ä»¶ä»£ç ;为问卷时填问卷题目Code "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹èŠ‚ç‚¹ID " prop="flownodeid">
        <el-input
          v-model="queryParams.flownodeid"
          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:ivrexecuteconfig: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:ivrexecuteconfig: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:ivrexecuteconfig: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:ivrexecuteconfig:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrexecuteconfigList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="scenecfgid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <el-table-column label=" æ¥æºç±»åž‹;0.全局 1.主线 " align="center" prop="sourcetype" />
      <el-table-column label=" å…¨å±€é…ç½®ID;全局配置ID " align="center" prop="globalid" />
      <el-table-column label=" å¤–呼节点ID " align="center" prop="flownodebranchid" />
      <el-table-column label=" æ‰§è¡Œç±»åž‹;0.问卷答案 1.患者标签 " align="center" prop="executetype" />
      <el-table-column label=" æ‰§è¡Œæ¡ä»¶;为问卷时填问卷题目/为患者标签时不填 " align="center" prop="executeconditions" />
      <el-table-column label=" æ‰§è¡Œç»“æžœ;单选题主键/多选题主键/填空题文本/标签主键可多选/多选逗号隔开 " align="center" prop="executeresult" />
      <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="sceneid" />
      <el-table-column label=" æ‰§è¡Œæ¡ä»¶ä»£ç ;为问卷时填问卷题目Code " align="center" prop="executeconditionscode" />
      <el-table-column label=" æ‰§è¡Œç»“果代码;单选题主键/多选题主键的选项Code " align="center" prop="executeresultcode" />
      <el-table-column label=" æµç¨‹èŠ‚ç‚¹ID " align="center" prop="flownodeid" />
      <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:ivrexecuteconfig:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrexecuteconfig: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼执行配置对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入 æœºæž„ID " />
        </el-form-item>
        <el-form-item label=" å…¨å±€é…ç½®ID;全局配置ID " prop="globalid">
          <el-input v-model="form.globalid" placeholder="请输入 å…¨å±€é…ç½®ID;全局配置ID " />
        </el-form-item>
        <el-form-item label=" å¤–呼节点ID " prop="flownodebranchid">
          <el-input v-model="form.flownodebranchid" placeholder="请输入 å¤–呼节点ID " />
        </el-form-item>
        <el-form-item label=" æ‰§è¡Œæ¡ä»¶;为问卷时填问卷题目/为患者标签时不填 " prop="executeconditions">
          <el-input v-model="form.executeconditions" placeholder="请输入 æ‰§è¡Œæ¡ä»¶;为问卷时填问卷题目/为患者标签时不填 " />
        </el-form-item>
        <el-form-item label=" æ‰§è¡Œç»“æžœ;单选题主键/多选题主键/填空题文本/标签主键可多选/多选逗号隔开 " prop="executeresult">
          <el-input v-model="form.executeresult" type="textarea" 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="sceneid">
          <el-input v-model="form.sceneid" placeholder="请输入 å¤–呼场景ID " />
        </el-form-item>
        <el-form-item label=" æ‰§è¡Œæ¡ä»¶ä»£ç ;为问卷时填问卷题目Code " prop="executeconditionscode">
          <el-input v-model="form.executeconditionscode" placeholder="请输入 æ‰§è¡Œæ¡ä»¶ä»£ç ;为问卷时填问卷题目Code " />
        </el-form-item>
        <el-form-item label=" æ‰§è¡Œç»“果代码;单选题主键/多选题主键的选项Code " prop="executeresultcode">
          <el-input v-model="form.executeresultcode" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label=" æµç¨‹èŠ‚ç‚¹ID " prop="flownodeid">
          <el-input v-model="form.flownodeid" 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 { listIvrexecuteconfig, getIvrexecuteconfig, delIvrexecuteconfig, addIvrexecuteconfig, updateIvrexecuteconfig } from "@/api/smartor/ivrexecuteconfig";
export default {
  name: "Ivrexecuteconfig",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼执行配置表格数据
      ivrexecuteconfigList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        sourcetype: null,
        globalid: null,
        flownodebranchid: null,
        executetype: null,
        executeconditions: null,
        executeresult: null,
        isupload: null,
        uploadTime: null,
        sceneid: null,
        executeconditionscode: null,
        executeresultcode: null,
        flownodeid: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼执行配置列表 */
    getList() {
      this.loading = true;
      listIvrexecuteconfig(this.queryParams).then(response => {
        this.ivrexecuteconfigList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        scenecfgid: null,
        orgid: null,
        sourcetype: null,
        globalid: null,
        flownodebranchid: null,
        executetype: null,
        executeconditions: null,
        executeresult: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: null,
        sceneid: null,
        executeconditionscode: null,
        executeresultcode: null,
        flownodeid: 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.scenecfgid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼执行配置";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const scenecfgid = row.scenecfgid || this.ids
      getIvrexecuteconfig(scenecfgid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼执行配置";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.scenecfgid != null) {
            updateIvrexecuteconfig(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrexecuteconfig(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const scenecfgids = row.scenecfgid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼执行配置编号为"' + scenecfgids + '"的数据项?').then(function() {
        return delIvrexecuteconfig(scenecfgids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrexecuteconfig/export', {
        ...this.queryParams
      }, `ivrexecuteconfig_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrflow/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,428 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          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=" AI外呼场景ID " prop="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          placeholder="请输入 AI外呼场景ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹åç§° " prop="flowname">
        <el-input
          v-model="queryParams.flowname"
          placeholder="请输入 æµç¨‹åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å…³è”问卷ID " prop="relevantqsid">
        <el-input
          v-model="queryParams.relevantqsid"
          placeholder="请输入 å…³è”问卷ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å…³è”题目ID" prop="relevanttopicid">
        <el-input
          v-model="queryParams.relevanttopicid"
          placeholder="请输入 å…³è”题目ID"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å…³è”题目Code" prop="relevanttopiccode">
        <el-input
          v-model="queryParams.relevanttopiccode"
          placeholder="请输入 å…³è”题目Code"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ˜¯å¦æ ¡éªŒ;0否 1是 " prop="ischeck">
        <el-input
          v-model="queryParams.ischeck"
          placeholder="请输入 æ˜¯å¦æ ¡éªŒ;0否 1是 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åºå· " prop="sort">
        <el-input
          v-model="queryParams.sort"
          placeholder="请输入 åºå· "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" èµ·å§‹èŠ‚ç‚¹ID " prop="startnode">
        <el-input
          v-model="queryParams.startnode"
          placeholder="请输入 èµ·å§‹èŠ‚ç‚¹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ‹·è´ID " prop="oldid">
        <el-input
          v-model="queryParams.oldid"
          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:ivrflow: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:ivrflow: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:ivrflow: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:ivrflow:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrflowList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="flowid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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=" AI外呼场景ID " align="center" prop="sceneid" />
      <el-table-column label=" æµç¨‹åç§° " align="center" prop="flowname" />
      <el-table-column label=" å…³è”问卷ID " align="center" prop="relevantqsid" />
      <el-table-column label=" å…³è”题目ID" align="center" prop="relevanttopicid" />
      <el-table-column label=" å…³è”题目Code" align="center" prop="relevanttopiccode" />
      <el-table-column label=" æ˜¯å¦æ ¡éªŒ;0否 1是 " align="center" prop="ischeck" />
      <el-table-column label=" æµç¨‹å›¾JSON数据 " align="center" prop="flowdata" />
      <el-table-column label=" åºå· " align="center" prop="sort" />
      <el-table-column label=" èµ·å§‹èŠ‚ç‚¹ID " align="center" prop="startnode" />
      <el-table-column label=" æ‹·è´ID " align="center" prop="oldid" />
      <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:ivrflow:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrflow: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼流程对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="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-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=" AI外呼场景ID " prop="sceneid">
          <el-input v-model="form.sceneid" placeholder="请输入 AI外呼场景ID " />
        </el-form-item>
        <el-form-item label=" æµç¨‹åç§° " prop="flowname">
          <el-input v-model="form.flowname" placeholder="请输入 æµç¨‹åç§° " />
        </el-form-item>
        <el-form-item label=" å…³è”问卷ID " prop="relevantqsid">
          <el-input v-model="form.relevantqsid" placeholder="请输入 å…³è”问卷ID " />
        </el-form-item>
        <el-form-item label=" å…³è”题目ID" prop="relevanttopicid">
          <el-input v-model="form.relevanttopicid" placeholder="请输入 å…³è”题目ID" />
        </el-form-item>
        <el-form-item label=" å…³è”题目Code" prop="relevanttopiccode">
          <el-input v-model="form.relevanttopiccode" placeholder="请输入 å…³è”题目Code" />
        </el-form-item>
        <el-form-item label=" æ˜¯å¦æ ¡éªŒ;0否 1是 " prop="ischeck">
          <el-input v-model="form.ischeck" placeholder="请输入 æ˜¯å¦æ ¡éªŒ;0否 1是 " />
        </el-form-item>
        <el-form-item label=" æµç¨‹å›¾JSON数据 " prop="flowdata">
          <el-input v-model="form.flowdata" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label=" åºå· " prop="sort">
          <el-input v-model="form.sort" placeholder="请输入 åºå· " />
        </el-form-item>
        <el-form-item label=" èµ·å§‹èŠ‚ç‚¹ID " prop="startnode">
          <el-input v-model="form.startnode" placeholder="请输入 èµ·å§‹èŠ‚ç‚¹ID " />
        </el-form-item>
        <el-form-item label=" æ‹·è´ID " prop="oldid">
          <el-input v-model="form.oldid" 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 { listIvrflow, getIvrflow, delIvrflow, addIvrflow, updateIvrflow } from "@/api/smartor/ivrflow";
export default {
  name: "Ivrflow",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼流程表格数据
      ivrflowList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        isupload: null,
        uploadTime: null,
        sceneid: null,
        flowname: null,
        relevantqsid: null,
        relevanttopicid: null,
        relevanttopiccode: null,
        ischeck: null,
        flowdata: null,
        sort: null,
        startnode: null,
        oldid: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼流程列表 */
    getList() {
      this.loading = true;
      listIvrflow(this.queryParams).then(response => {
        this.ivrflowList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        flowid: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: null,
        sceneid: null,
        flowname: null,
        relevantqsid: null,
        relevanttopicid: null,
        relevanttopiccode: null,
        ischeck: null,
        flowdata: null,
        sort: null,
        startnode: null,
        oldid: 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.flowid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼流程";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const flowid = row.flowid || this.ids
      getIvrflow(flowid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼流程";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.flowid != null) {
            updateIvrflow(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrflow(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const flowids = row.flowid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼流程编号为"' + flowids + '"的数据项?').then(function() {
        return delIvrflow(flowids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrflow/export', {
        ...this.queryParams
      }, `ivrflow_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrflownode/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,459 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          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=" AI外呼场景ID " prop="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          placeholder="请输入 AI外呼场景ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹ID " prop="flowid">
        <el-input
          v-model="queryParams.flowid"
          placeholder="请输入 æµç¨‹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" èŠ‚ç‚¹åç§° " prop="nodename">
        <el-input
          v-model="queryParams.nodename"
          placeholder="请输入 èŠ‚ç‚¹åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åœé¡¿æ—¶é•¿" prop="maxsentencesilence">
        <el-input
          v-model="queryParams.maxsentencesilence"
          placeholder="请输入 åœé¡¿æ—¶é•¿"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" ç­‰å¾…æ—¶é•¿" prop="waittime">
        <el-input
          v-model="queryParams.waittime"
          placeholder="请输入 ç­‰å¾…æ—¶é•¿"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ–°è¯æœ¯ç­‰å¾…æ—¶é•¿" prop="corpuswaittime">
        <el-input
          v-model="queryParams.corpuswaittime"
          placeholder="请输入 æ–°è¯æœ¯ç­‰å¾…æ—¶é•¿"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æœ€å¤§é‡å¤æ¬¡æ•°;循环节点用 " prop="maxrepetition">
        <el-input
          v-model="queryParams.maxrepetition"
          placeholder="请输入 æœ€å¤§é‡å¤æ¬¡æ•°;循环节点用 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è·³è½¬è‡³;跳转节点用 ç›®å‰æ”¾æµç¨‹ID " prop="jumpto">
        <el-input
          v-model="queryParams.jumpto"
          placeholder="请输入 è·³è½¬è‡³;跳转节点用 ç›®å‰æ”¾æµç¨‹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹å›¾ç”ŸæˆID " prop="flowcode">
        <el-input
          v-model="queryParams.flowcode"
          placeholder="请输入 æµç¨‹å›¾ç”ŸæˆID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID " prop="targetid">
        <el-input
          v-model="queryParams.targetid"
          placeholder="请输入 è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ‹·è´ID " prop="oldid">
        <el-input
          v-model="queryParams.oldid"
          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:ivrflownode: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:ivrflownode: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:ivrflownode: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:ivrflownode:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrflownodeList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="flownodeid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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=" AI外呼场景ID " align="center" prop="sceneid" />
      <el-table-column label=" æµç¨‹ID " align="center" prop="flowid" />
      <el-table-column label=" èŠ‚ç‚¹ç±»åž‹;0.普通节点 1.跳转节点 2.循环节点 " align="center" prop="nodetype" />
      <el-table-column label=" èŠ‚ç‚¹åç§° " align="center" prop="nodename" />
      <el-table-column label=" åœé¡¿æ—¶é•¿" align="center" prop="maxsentencesilence" />
      <el-table-column label=" ç­‰å¾…æ—¶é•¿" align="center" prop="waittime" />
      <el-table-column label=" è¯æœ¯ç±»åž‹;循环节点用 0.原节点话术 1.使用新话术 " align="center" prop="corpustype" />
      <el-table-column label=" æ–°è¯æœ¯ç­‰å¾…æ—¶é•¿" align="center" prop="corpuswaittime" />
      <el-table-column label=" æœ€å¤§é‡å¤æ¬¡æ•°;循环节点用 " align="center" prop="maxrepetition" />
      <el-table-column label=" è·³è½¬ç±»åž‹;跳转节点用 0.挂机 1.跳转流程 " align="center" prop="jumptype" />
      <el-table-column label=" è·³è½¬è‡³;跳转节点用 ç›®å‰æ”¾æµç¨‹ID " align="center" prop="jumpto" />
      <el-table-column label=" æµç¨‹å›¾ç”ŸæˆID " align="center" prop="flowcode" />
      <el-table-column label=" è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID " align="center" prop="targetid" />
      <el-table-column label=" æ‹·è´ID " align="center" prop="oldid" />
      <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:ivrflownode:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrflownode: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼流程节点对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="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-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=" AI外呼场景ID " prop="sceneid">
          <el-input v-model="form.sceneid" placeholder="请输入 AI外呼场景ID " />
        </el-form-item>
        <el-form-item label=" æµç¨‹ID " prop="flowid">
          <el-input v-model="form.flowid" placeholder="请输入 æµç¨‹ID " />
        </el-form-item>
        <el-form-item label=" èŠ‚ç‚¹åç§° " prop="nodename">
          <el-input v-model="form.nodename" placeholder="请输入 èŠ‚ç‚¹åç§° " />
        </el-form-item>
        <el-form-item label=" åœé¡¿æ—¶é•¿" prop="maxsentencesilence">
          <el-input v-model="form.maxsentencesilence" placeholder="请输入 åœé¡¿æ—¶é•¿" />
        </el-form-item>
        <el-form-item label=" ç­‰å¾…æ—¶é•¿" prop="waittime">
          <el-input v-model="form.waittime" placeholder="请输入 ç­‰å¾…æ—¶é•¿" />
        </el-form-item>
        <el-form-item label=" æ–°è¯æœ¯ç­‰å¾…æ—¶é•¿" prop="corpuswaittime">
          <el-input v-model="form.corpuswaittime" placeholder="请输入 æ–°è¯æœ¯ç­‰å¾…æ—¶é•¿" />
        </el-form-item>
        <el-form-item label=" æœ€å¤§é‡å¤æ¬¡æ•°;循环节点用 " prop="maxrepetition">
          <el-input v-model="form.maxrepetition" placeholder="请输入 æœ€å¤§é‡å¤æ¬¡æ•°;循环节点用 " />
        </el-form-item>
        <el-form-item label=" è·³è½¬è‡³;跳转节点用 ç›®å‰æ”¾æµç¨‹ID " prop="jumpto">
          <el-input v-model="form.jumpto" placeholder="请输入 è·³è½¬è‡³;跳转节点用 ç›®å‰æ”¾æµç¨‹ID " />
        </el-form-item>
        <el-form-item label=" æµç¨‹å›¾ç”ŸæˆID " prop="flowcode">
          <el-input v-model="form.flowcode" placeholder="请输入 æµç¨‹å›¾ç”ŸæˆID " />
        </el-form-item>
        <el-form-item label=" è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID " prop="targetid">
          <el-input v-model="form.targetid" placeholder="请输入 è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID " />
        </el-form-item>
        <el-form-item label=" æ‹·è´ID " prop="oldid">
          <el-input v-model="form.oldid" 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 { listIvrflownode, getIvrflownode, delIvrflownode, addIvrflownode, updateIvrflownode } from "@/api/smartor/ivrflownode";
export default {
  name: "Ivrflownode",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼流程节点表格数据
      ivrflownodeList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        isupload: null,
        uploadTime: null,
        sceneid: null,
        flowid: null,
        nodetype: null,
        nodename: null,
        maxsentencesilence: null,
        waittime: null,
        corpustype: null,
        corpuswaittime: null,
        maxrepetition: null,
        jumptype: null,
        jumpto: null,
        flowcode: null,
        targetid: null,
        oldid: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼流程节点列表 */
    getList() {
      this.loading = true;
      listIvrflownode(this.queryParams).then(response => {
        this.ivrflownodeList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        flownodeid: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: null,
        sceneid: null,
        flowid: null,
        nodetype: null,
        nodename: null,
        maxsentencesilence: null,
        waittime: null,
        corpustype: null,
        corpuswaittime: null,
        maxrepetition: null,
        jumptype: null,
        jumpto: null,
        flowcode: null,
        targetid: null,
        oldid: 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.flownodeid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼流程节点";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const flownodeid = row.flownodeid || this.ids
      getIvrflownode(flownodeid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼流程节点";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.flownodeid != null) {
            updateIvrflownode(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrflownode(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const flownodeids = row.flownodeid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼流程节点编号为"' + flownodeids + '"的数据项?').then(function() {
        return delIvrflownode(flownodeids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrflownode/export', {
        ...this.queryParams
      }, `ivrflownode_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrflownodebranch/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,411 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          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=" AI外呼场景ID " prop="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          placeholder="请输入 AI外呼场景ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹ID " prop="flowid">
        <el-input
          v-model="queryParams.flowid"
          placeholder="请输入 æµç¨‹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" èŠ‚ç‚¹ID " prop="flownodeid">
        <el-input
          v-model="queryParams.flownodeid"
          placeholder="请输入 èŠ‚ç‚¹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åˆ†æ”¯åç§° " prop="branchname">
        <el-input
          v-model="queryParams.branchname"
          placeholder="请输入 åˆ†æ”¯åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " prop="isenable">
        <el-input
          v-model="queryParams.isenable"
          placeholder="请输入 æ˜¯å¦å¯ç”¨;0.否 1.是 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æŽ’序 " prop="sort">
        <el-input
          v-model="queryParams.sort"
          placeholder="请输入 æŽ’序 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID " prop="targetid">
        <el-input
          v-model="queryParams.targetid"
          placeholder="请输入 è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ‹·è´ID " prop="oldid">
        <el-input
          v-model="queryParams.oldid"
          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:ivrflownodebranch: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:ivrflownodebranch: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:ivrflownodebranch: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:ivrflownodebranch:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrflownodebranchList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="branchid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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=" AI外呼场景ID " align="center" prop="sceneid" />
      <el-table-column label=" æµç¨‹ID " align="center" prop="flowid" />
      <el-table-column label=" èŠ‚ç‚¹ID " align="center" prop="flownodeid" />
      <el-table-column label=" åˆ†æ”¯åç§° " align="center" prop="branchname" />
      <el-table-column label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " align="center" prop="isenable" />
      <el-table-column label=" æŽ’序 " align="center" prop="sort" />
      <el-table-column label=" åˆ†æ”¯ç±»åž‹;1 ä»»ä½•回复,2无回复,3未识别 9.普通分支 " align="center" prop="nodetype" />
      <el-table-column label=" è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID " align="center" prop="targetid" />
      <el-table-column label=" æ‹·è´ID " align="center" prop="oldid" />
      <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:ivrflownodebranch:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrflownodebranch: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼流程节点分支对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="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-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=" AI外呼场景ID " prop="sceneid">
          <el-input v-model="form.sceneid" placeholder="请输入 AI外呼场景ID " />
        </el-form-item>
        <el-form-item label=" æµç¨‹ID " prop="flowid">
          <el-input v-model="form.flowid" placeholder="请输入 æµç¨‹ID " />
        </el-form-item>
        <el-form-item label=" èŠ‚ç‚¹ID " prop="flownodeid">
          <el-input v-model="form.flownodeid" placeholder="请输入 èŠ‚ç‚¹ID " />
        </el-form-item>
        <el-form-item label=" åˆ†æ”¯åç§° " prop="branchname">
          <el-input v-model="form.branchname" placeholder="请输入 åˆ†æ”¯åç§° " />
        </el-form-item>
        <el-form-item label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " prop="isenable">
          <el-input v-model="form.isenable" placeholder="请输入 æ˜¯å¦å¯ç”¨;0.否 1.是 " />
        </el-form-item>
        <el-form-item label=" æŽ’序 " prop="sort">
          <el-input v-model="form.sort" placeholder="请输入 æŽ’序 " />
        </el-form-item>
        <el-form-item label=" è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID " prop="targetid">
          <el-input v-model="form.targetid" placeholder="请输入 è·³è½¬ç›®æ ‡èŠ‚ç‚¹ID " />
        </el-form-item>
        <el-form-item label=" æ‹·è´ID " prop="oldid">
          <el-input v-model="form.oldid" 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 { listIvrflownodebranch, getIvrflownodebranch, delIvrflownodebranch, addIvrflownodebranch, updateIvrflownodebranch } from "@/api/smartor/ivrflownodebranch";
export default {
  name: "Ivrflownodebranch",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼流程节点分支表格数据
      ivrflownodebranchList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        isupload: null,
        uploadTime: null,
        sceneid: null,
        flowid: null,
        flownodeid: null,
        branchname: null,
        isenable: null,
        sort: null,
        nodetype: null,
        targetid: null,
        oldid: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼流程节点分支列表 */
    getList() {
      this.loading = true;
      listIvrflownodebranch(this.queryParams).then(response => {
        this.ivrflownodebranchList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        branchid: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: null,
        sceneid: null,
        flowid: null,
        flownodeid: null,
        branchname: null,
        isenable: null,
        sort: null,
        nodetype: null,
        targetid: null,
        oldid: 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.branchid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼流程节点分支";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const branchid = row.branchid || this.ids
      getIvrflownodebranch(branchid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼流程节点分支";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.branchid != null) {
            updateIvrflownodebranch(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrflownodebranch(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const branchids = row.branchid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼流程节点分支编号为"' + branchids + '"的数据项?').then(function() {
        return delIvrflownodebranch(branchids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrflownodebranch/export', {
        ...this.queryParams
      }, `ivrflownodebranch_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrglobalconfig/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,389 @@
<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=" AI外呼场景ID " prop="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          placeholder="请输入 AI外呼场景ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" é…ç½®åç§° " prop="configname">
        <el-input
          v-model="queryParams.configname"
          placeholder="请输入 é…ç½®åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" ä¼˜å…ˆçº§ " prop="sort">
        <el-input
          v-model="queryParams.sort"
          placeholder="请输入 ä¼˜å…ˆçº§ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " prop="isenable">
        <el-input
          v-model="queryParams.isenable"
          placeholder="请输入 æ˜¯å¦å¯ç”¨;0.否 1.是 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è·³è½¬ç±»åž‹;0.挂机 1.重复节点 " prop="jumpto">
        <el-input
          v-model="queryParams.jumpto"
          placeholder="请输入 è·³è½¬ç±»åž‹;0.挂机 1.重复节点 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" é‡å¤æ¬¡æ•° " prop="repeatcount">
        <el-input
          v-model="queryParams.repeatcount"
          placeholder="请输入 é‡å¤æ¬¡æ•° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </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 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>
        <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:ivrglobalconfig: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:ivrglobalconfig: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:ivrglobalconfig: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:ivrglobalconfig:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrglobalconfigList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="gblconfigid" />
      <el-table-column label=" AI外呼场景ID " align="center" prop="sceneid" />
      <el-table-column label=" é…ç½®åç§° " align="center" prop="configname" />
      <el-table-column label=" é…ç½®æè¿° " align="center" prop="description" />
      <el-table-column label=" ä¼˜å…ˆçº§ " align="center" prop="sort" />
      <el-table-column label=" ä¼˜å…ˆæ‰§è¡Œç±»åž‹;1.分支动作 2.配置动作 " align="center" prop="executetype" />
      <el-table-column label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " align="center" prop="isenable" />
      <el-table-column label=" è·³è½¬ç±»åž‹;0.挂机 1.重复节点 " align="center" prop="jumpto" />
      <el-table-column label=" é‡å¤æ¬¡æ•° " align="center" prop="repeatcount" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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="操作" 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:ivrglobalconfig:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrglobalconfig: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼全局配置对话框 -->
    <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=" AI外呼场景ID " prop="sceneid">
          <el-input v-model="form.sceneid" placeholder="请输入 AI外呼场景ID " />
        </el-form-item>
        <el-form-item label=" é…ç½®åç§° " prop="configname">
          <el-input v-model="form.configname" placeholder="请输入 é…ç½®åç§° " />
        </el-form-item>
        <el-form-item label=" é…ç½®æè¿° " prop="description">
          <el-input v-model="form.description" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label=" ä¼˜å…ˆçº§ " prop="sort">
          <el-input v-model="form.sort" placeholder="请输入 ä¼˜å…ˆçº§ " />
        </el-form-item>
        <el-form-item label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " prop="isenable">
          <el-input v-model="form.isenable" placeholder="请输入 æ˜¯å¦å¯ç”¨;0.否 1.是 " />
        </el-form-item>
        <el-form-item label=" è·³è½¬ç±»åž‹;0.挂机 1.重复节点 " prop="jumpto">
          <el-input v-model="form.jumpto" placeholder="请输入 è·³è½¬ç±»åž‹;0.挂机 1.重复节点 " />
        </el-form-item>
        <el-form-item label=" é‡å¤æ¬¡æ•° " prop="repeatcount">
          <el-input v-model="form.repeatcount" placeholder="请输入 é‡å¤æ¬¡æ•° " />
        </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-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>
      <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 { listIvrglobalconfig, getIvrglobalconfig, delIvrglobalconfig, addIvrglobalconfig, updateIvrglobalconfig } from "@/api/smartor/ivrglobalconfig";
export default {
  name: "Ivrglobalconfig",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼全局配置表格数据
      ivrglobalconfigList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        sceneid: null,
        configname: null,
        description: null,
        sort: null,
        executetype: null,
        isenable: null,
        jumpto: null,
        repeatcount: null,
        orgid: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼全局配置列表 */
    getList() {
      this.loading = true;
      listIvrglobalconfig(this.queryParams).then(response => {
        this.ivrglobalconfigList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        gblconfigid: null,
        sceneid: null,
        configname: null,
        description: null,
        sort: null,
        executetype: null,
        isenable: null,
        jumpto: null,
        repeatcount: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.gblconfigid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼全局配置";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const gblconfigid = row.gblconfigid || this.ids
      getIvrglobalconfig(gblconfigid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼全局配置";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.gblconfigid != null) {
            updateIvrglobalconfig(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrglobalconfig(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const gblconfigids = row.gblconfigid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼全局配置编号为"' + gblconfigids + '"的数据项?').then(function() {
        return delIvrglobalconfig(gblconfigids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrglobalconfig/export', {
        ...this.queryParams
      }, `ivrglobalconfig_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrintent/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,476 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å…¨å±€é…ç½®ID;全局配置ID " prop="gbiconfigid">
        <el-input
          v-model="queryParams.gbiconfigid"
          placeholder="请输入 å…¨å±€é…ç½®ID;全局配置ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åœºæ™¯ID " prop="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          placeholder="请输入 åœºæ™¯ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹ID " prop="flowid">
        <el-input
          v-model="queryParams.flowid"
          placeholder="请输入 æµç¨‹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹èŠ‚ç‚¹ID " prop="flownodeid">
        <el-input
          v-model="queryParams.flownodeid"
          placeholder="请输入 æµç¨‹èŠ‚ç‚¹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹èŠ‚ç‚¹åˆ†æ”¯ID " prop="flownodebranchid">
        <el-input
          v-model="queryParams.flownodebranchid"
          placeholder="请输入 æµç¨‹èŠ‚ç‚¹åˆ†æ”¯ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å¼•用意图模板ID " prop="templateid">
        <el-input
          v-model="queryParams.templateid"
          placeholder="请输入 å¼•用意图模板ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ„å›¾åç§° " prop="intentionname">
        <el-input
          v-model="queryParams.intentionname"
          placeholder="请输入 æ„å›¾åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" éªŒè¯è§„则;多选逗号隔开" prop="verifyrule">
        <el-input
          v-model="queryParams.verifyrule"
          placeholder="请输入 éªŒè¯è§„则;多选逗号隔开"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å­ä¸”或;0.或 1.且 " prop="orand">
        <el-input
          v-model="queryParams.orand"
          placeholder="请输入 å­ä¸”或;0.或 1.且 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" çˆ¶æ¡ä»¶ " prop="parentresultconditionsid">
        <el-input
          v-model="queryParams.parentresultconditionsid"
          placeholder="请输入 çˆ¶æ¡ä»¶ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" çˆ¶çº§åˆ†ç»„ " prop="groupnumber">
        <el-input
          v-model="queryParams.groupnumber"
          placeholder="请输入 çˆ¶çº§åˆ†ç»„ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" çˆ¶ä¸”或 " prop="grouporand">
        <el-input
          v-model="queryParams.grouporand"
          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>
        <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:ivrintent: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:ivrintent: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:ivrintent: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:ivrintent:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrintentList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="sceneintentid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <el-table-column label=" æ¥æºç±»åž‹;0.全局 1.主线 " align="center" prop="sourcetype" />
      <el-table-column label=" å…¨å±€é…ç½®ID;全局配置ID " align="center" prop="gbiconfigid" />
      <el-table-column label=" åœºæ™¯ID " align="center" prop="sceneid" />
      <el-table-column label=" æµç¨‹ID " align="center" prop="flowid" />
      <el-table-column label=" æµç¨‹èŠ‚ç‚¹ID " align="center" prop="flownodeid" />
      <el-table-column label=" æµç¨‹èŠ‚ç‚¹åˆ†æ”¯ID " align="center" prop="flownodebranchid" />
      <el-table-column label=" å¼•用意图模板ID " align="center" prop="templateid" />
      <el-table-column label=" æ„å›¾åç§° " align="center" prop="intentionname" />
      <el-table-column label=" æ„å›¾å…³é”®å­—" align="center" prop="intentionword" />
      <el-table-column label=" æ¡ä»¶ç±»åž‹;0.意图识别 1.患者标签 " align="center" prop="conditionstype" />
      <el-table-column label=" éªŒè¯è§„则;多选逗号隔开" align="center" prop="verifyrule" />
      <el-table-column label=" å­ä¸”或;0.或 1.且 " align="center" prop="orand" />
      <el-table-column label=" çˆ¶æ¡ä»¶ " align="center" prop="parentresultconditionsid" />
      <el-table-column label=" çˆ¶çº§åˆ†ç»„ " align="center" prop="groupnumber" />
      <el-table-column label=" çˆ¶ä¸”或 " align="center" prop="grouporand" />
      <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="操作" 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:ivrintent:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrintent: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼意图对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入 æœºæž„ID " />
        </el-form-item>
        <el-form-item label=" å…¨å±€é…ç½®ID;全局配置ID " prop="gbiconfigid">
          <el-input v-model="form.gbiconfigid" placeholder="请输入 å…¨å±€é…ç½®ID;全局配置ID " />
        </el-form-item>
        <el-form-item label=" åœºæ™¯ID " prop="sceneid">
          <el-input v-model="form.sceneid" placeholder="请输入 åœºæ™¯ID " />
        </el-form-item>
        <el-form-item label=" æµç¨‹ID " prop="flowid">
          <el-input v-model="form.flowid" placeholder="请输入 æµç¨‹ID " />
        </el-form-item>
        <el-form-item label=" æµç¨‹èŠ‚ç‚¹ID " prop="flownodeid">
          <el-input v-model="form.flownodeid" placeholder="请输入 æµç¨‹èŠ‚ç‚¹ID " />
        </el-form-item>
        <el-form-item label=" æµç¨‹èŠ‚ç‚¹åˆ†æ”¯ID " prop="flownodebranchid">
          <el-input v-model="form.flownodebranchid" placeholder="请输入 æµç¨‹èŠ‚ç‚¹åˆ†æ”¯ID " />
        </el-form-item>
        <el-form-item label=" å¼•用意图模板ID " prop="templateid">
          <el-input v-model="form.templateid" placeholder="请输入 å¼•用意图模板ID " />
        </el-form-item>
        <el-form-item label=" æ„å›¾åç§° " prop="intentionname">
          <el-input v-model="form.intentionname" placeholder="请输入 æ„å›¾åç§° " />
        </el-form-item>
        <el-form-item label=" æ„å›¾å…³é”®å­—" prop="intentionword">
          <el-input v-model="form.intentionword" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label=" éªŒè¯è§„则;多选逗号隔开" prop="verifyrule">
          <el-input v-model="form.verifyrule" placeholder="请输入 éªŒè¯è§„则;多选逗号隔开" />
        </el-form-item>
        <el-form-item label=" å­ä¸”或;0.或 1.且 " prop="orand">
          <el-input v-model="form.orand" placeholder="请输入 å­ä¸”或;0.或 1.且 " />
        </el-form-item>
        <el-form-item label=" çˆ¶æ¡ä»¶ " prop="parentresultconditionsid">
          <el-input v-model="form.parentresultconditionsid" placeholder="请输入 çˆ¶æ¡ä»¶ " />
        </el-form-item>
        <el-form-item label=" çˆ¶çº§åˆ†ç»„ " prop="groupnumber">
          <el-input v-model="form.groupnumber" placeholder="请输入 çˆ¶çº§åˆ†ç»„ " />
        </el-form-item>
        <el-form-item label=" çˆ¶ä¸”或 " prop="grouporand">
          <el-input v-model="form.grouporand" 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>
      <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 { listIvrintent, getIvrintent, delIvrintent, addIvrintent, updateIvrintent } from "@/api/smartor/ivrintent";
export default {
  name: "Ivrintent",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼意图表格数据
      ivrintentList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        sourcetype: null,
        gbiconfigid: null,
        sceneid: null,
        flowid: null,
        flownodeid: null,
        flownodebranchid: null,
        templateid: null,
        intentionname: null,
        intentionword: null,
        conditionstype: null,
        verifyrule: null,
        orand: null,
        parentresultconditionsid: null,
        groupnumber: null,
        grouporand: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼意图列表 */
    getList() {
      this.loading = true;
      listIvrintent(this.queryParams).then(response => {
        this.ivrintentList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        sceneintentid: null,
        orgid: null,
        sourcetype: null,
        gbiconfigid: null,
        sceneid: null,
        flowid: null,
        flownodeid: null,
        flownodebranchid: null,
        templateid: null,
        intentionname: null,
        intentionword: null,
        conditionstype: null,
        verifyrule: null,
        orand: null,
        parentresultconditionsid: null,
        groupnumber: null,
        grouporand: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.sceneintentid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼意图";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const sceneintentid = row.sceneintentid || this.ids
      getIvrintent(sceneintentid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼意图";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.sceneintentid != null) {
            updateIvrintent(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrintent(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const sceneintentids = row.sceneintentid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼意图编号为"' + sceneintentids + '"的数据项?').then(function() {
        return delIvrintent(sceneintentids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrintent/export', {
        ...this.queryParams
      }, `ivrintent_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrlibintent/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,344 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ„å›¾åç§° " prop="intentionname">
        <el-input
          v-model="queryParams.intentionname"
          placeholder="请输入 æ„å›¾åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åˆ†ç±»ID " prop="categoryid">
        <el-input
          v-model="queryParams.categoryid"
          placeholder="请输入 åˆ†ç±»ID "
          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="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>
        <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:ivrlibintent: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:ivrlibintent: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:ivrlibintent: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:ivrlibintent:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrlibintentList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="intentid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <el-table-column label=" æ„å›¾åç§° " align="center" prop="intentionname" />
      <el-table-column label=" åˆ†ç±»ID " align="center" prop="categoryid" />
      <el-table-column label=" æ„å›¾åˆ†ç±»åç§° " align="center" prop="categoryname" />
      <el-table-column label=" æ„å›¾å…³é”®å­—" align="center" prop="intentionword" />
      <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="操作" 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:ivrlibintent:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrlibintent: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI意图库对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入 æœºæž„ID " />
        </el-form-item>
        <el-form-item label=" æ„å›¾åç§° " prop="intentionname">
          <el-input v-model="form.intentionname" placeholder="请输入 æ„å›¾åç§° " />
        </el-form-item>
        <el-form-item label=" åˆ†ç±»ID " prop="categoryid">
          <el-input v-model="form.categoryid" placeholder="请输入 åˆ†ç±»ID " />
        </el-form-item>
        <el-form-item label=" æ„å›¾åˆ†ç±»åç§° " prop="categoryname">
          <el-input v-model="form.categoryname" placeholder="请输入 æ„å›¾åˆ†ç±»åç§° " />
        </el-form-item>
        <el-form-item label=" æ„å›¾å…³é”®å­—" prop="intentionword">
          <el-input v-model="form.intentionword" type="textarea" 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>
      <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 { listIvrlibintent, getIvrlibintent, delIvrlibintent, addIvrlibintent, updateIvrlibintent } from "@/api/smartor/ivrlibintent";
export default {
  name: "Ivrlibintent",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI意图库表格数据
      ivrlibintentList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        intentionname: null,
        categoryid: null,
        categoryname: null,
        intentionword: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI意图库列表 */
    getList() {
      this.loading = true;
      listIvrlibintent(this.queryParams).then(response => {
        this.ivrlibintentList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        intentid: null,
        orgid: null,
        intentionname: null,
        categoryid: null,
        categoryname: null,
        intentionword: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.intentid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI意图库";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const intentid = row.intentid || this.ids
      getIvrlibintent(intentid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI意图库";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.intentid != null) {
            updateIvrlibintent(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrlibintent(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const intentids = row.intentid || this.ids;
      this.$modal.confirm('是否确认删除AI意图库编号为"' + intentids + '"的数据项?').then(function() {
        return delIvrlibintent(intentids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrlibintent/export', {
        ...this.queryParams
      }, `ivrlibintent_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrlibintentcategory/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,310 @@
<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="categoryname">
        <el-input
          v-model="queryParams.categoryname"
          placeholder="请输入 åˆ†ç±»åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </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 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>
        <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:ivrlibintentcategory: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:ivrlibintentcategory: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:ivrlibintentcategory: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:ivrlibintentcategory:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrlibintentcategoryList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="intertcatid" />
      <el-table-column label=" åˆ†ç±»åç§° " align="center" prop="categoryname" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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="操作" 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:ivrlibintentcategory:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrlibintentcategory: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI意图库分类对话框 -->
    <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="categoryname">
          <el-input v-model="form.categoryname" placeholder="请输入 åˆ†ç±»åç§° " />
        </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-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>
      <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 { listIvrlibintentcategory, getIvrlibintentcategory, delIvrlibintentcategory, addIvrlibintentcategory, updateIvrlibintentcategory } from "@/api/smartor/ivrlibintentcategory";
export default {
  name: "Ivrlibintentcategory",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI意图库分类表格数据
      ivrlibintentcategoryList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        categoryname: null,
        orgid: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI意图库分类列表 */
    getList() {
      this.loading = true;
      listIvrlibintentcategory(this.queryParams).then(response => {
        this.ivrlibintentcategoryList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        intertcatid: null,
        categoryname: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.intertcatid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI意图库分类";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const intertcatid = row.intertcatid || this.ids
      getIvrlibintentcategory(intertcatid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI意图库分类";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.intertcatid != null) {
            updateIvrlibintentcategory(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrlibintentcategory(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const intertcatids = row.intertcatid || this.ids;
      this.$modal.confirm('是否确认删除AI意图库分类编号为"' + intertcatids + '"的数据项?').then(function() {
        return delIvrlibintentcategory(intertcatids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrlibintentcategory/export', {
        ...this.queryParams
      }, `ivrlibintentcategory_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrlibscript/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,380 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åˆ†ç±» " prop="categoryid">
        <el-input
          v-model="queryParams.categoryid"
          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="speakbody">
        <el-input
          v-model="queryParams.speakbody"
          placeholder="请输入 è¯æœ¯å†…容"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯æœ¯æ–‡ä»¶è·¯å¾„" prop="speakfilepath">
        <el-input
          v-model="queryParams.speakfilepath"
          placeholder="请输入 è¯æœ¯æ–‡ä»¶è·¯å¾„"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ˜¯å¦å…¨å±€ã€0否1是】 " prop="isall">
        <el-input
          v-model="queryParams.isall"
          placeholder="请输入 æ˜¯å¦å…¨å±€ã€0否1是】 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯æœ¯åç§° " prop="speakname">
        <el-input
          v-model="queryParams.speakname"
          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>
        <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:ivrlibscript: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:ivrlibscript: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:ivrlibscript: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:ivrlibscript:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrlibscriptList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="scriptid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <el-table-column label=" åˆ†ç±» " align="center" prop="categoryid" />
      <el-table-column label=" åˆ†ç±»åç§° " align="center" prop="categoryname" />
      <el-table-column label=" è¯æœ¯å†…容" align="center" prop="speakbody" />
      <el-table-column label=" è¯æœ¯æ–‡ä»¶è·¯å¾„" align="center" prop="speakfilepath" />
      <el-table-column label=" æ˜¯å¦å…¨å±€ã€0否1是】 " align="center" prop="isall" />
      <el-table-column label=" è¯æœ¯åç§° " align="center" prop="speakname" />
      <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="操作" 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:ivrlibscript:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrlibscript: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI话术库对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入 æœºæž„ID " />
        </el-form-item>
        <el-form-item label=" åˆ†ç±» " prop="categoryid">
          <el-input v-model="form.categoryid" 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="speakbody">
          <el-input v-model="form.speakbody" placeholder="请输入 è¯æœ¯å†…容" />
        </el-form-item>
        <el-form-item label=" è¯æœ¯æ–‡ä»¶è·¯å¾„" prop="speakfilepath">
          <el-input v-model="form.speakfilepath" placeholder="请输入 è¯æœ¯æ–‡ä»¶è·¯å¾„" />
        </el-form-item>
        <el-form-item label=" æ˜¯å¦å…¨å±€ã€0否1是】 " prop="isall">
          <el-input v-model="form.isall" placeholder="请输入 æ˜¯å¦å…¨å±€ã€0否1是】 " />
        </el-form-item>
        <el-form-item label=" è¯æœ¯åç§° " prop="speakname">
          <el-input v-model="form.speakname" 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>
      <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 { listIvrlibscript, getIvrlibscript, delIvrlibscript, addIvrlibscript, updateIvrlibscript } from "@/api/smartor/ivrlibscript";
export default {
  name: "Ivrlibscript",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI话术库表格数据
      ivrlibscriptList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        categoryid: null,
        categoryname: null,
        speakbody: null,
        speakfilepath: null,
        isall: null,
        speakname: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI话术库列表 */
    getList() {
      this.loading = true;
      listIvrlibscript(this.queryParams).then(response => {
        this.ivrlibscriptList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        scriptid: null,
        orgid: null,
        categoryid: null,
        categoryname: null,
        speakbody: null,
        speakfilepath: null,
        isall: null,
        speakname: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.scriptid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI话术库";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const scriptid = row.scriptid || this.ids
      getIvrlibscript(scriptid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI话术库";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.scriptid != null) {
            updateIvrlibscript(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrlibscript(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const scriptids = row.scriptid || this.ids;
      this.$modal.confirm('是否确认删除AI话术库编号为"' + scriptids + '"的数据项?').then(function() {
        return delIvrlibscript(scriptids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrlibscript/export', {
        ...this.queryParams
      }, `ivrlibscript_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrlibscriptcategory/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,310 @@
<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="categoryname">
        <el-input
          v-model="queryParams.categoryname"
          placeholder="请输入 åˆ†ç±»åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </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 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>
        <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:ivrlibscriptcategory: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:ivrlibscriptcategory: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:ivrlibscriptcategory: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:ivrlibscriptcategory:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrlibscriptcategoryList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="categoryid" />
      <el-table-column label=" åˆ†ç±»åç§° " align="center" prop="categoryname" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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="操作" 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:ivrlibscriptcategory:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrlibscriptcategory: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI话术库分类对话框 -->
    <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="categoryname">
          <el-input v-model="form.categoryname" placeholder="请输入 åˆ†ç±»åç§° " />
        </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-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>
      <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 { listIvrlibscriptcategory, getIvrlibscriptcategory, delIvrlibscriptcategory, addIvrlibscriptcategory, updateIvrlibscriptcategory } from "@/api/smartor/ivrlibscriptcategory";
export default {
  name: "Ivrlibscriptcategory",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI话术库分类表格数据
      ivrlibscriptcategoryList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        categoryname: null,
        orgid: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI话术库分类列表 */
    getList() {
      this.loading = true;
      listIvrlibscriptcategory(this.queryParams).then(response => {
        this.ivrlibscriptcategoryList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        categoryid: null,
        categoryname: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.categoryid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI话术库分类";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const categoryid = row.categoryid || this.ids
      getIvrlibscriptcategory(categoryid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI话术库分类";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.categoryid != null) {
            updateIvrlibscriptcategory(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrlibscriptcategory(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const categoryids = row.categoryid || this.ids;
      this.$modal.confirm('是否确认删除AI话术库分类编号为"' + categoryids + '"的数据项?').then(function() {
        return delIvrlibscriptcategory(categoryids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrlibscriptcategory/export', {
        ...this.queryParams
      }, `ivrlibscriptcategory_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrlibscriptmodel/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,409 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯æœ¯ID " prop="scriptid">
        <el-input
          v-model="queryParams.scriptid"
          placeholder="请输入 è¯æœ¯ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯­éŸ³æ–‡ä»¶ " prop="speakfilepath">
        <el-input
          v-model="queryParams.speakfilepath"
          placeholder="请输入 è¯­éŸ³æ–‡ä»¶ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åˆæˆåނ商 " prop="manufactor">
        <el-input
          v-model="queryParams.manufactor"
          placeholder="请输入 åˆæˆåނ商 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯­é€Ÿ " prop="speechnum">
        <el-input
          v-model="queryParams.speechnum"
          placeholder="请输入 è¯­é€Ÿ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" éŸ³é«˜ " prop="pitch">
        <el-input
          v-model="queryParams.pitch"
          placeholder="请输入 éŸ³é«˜ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" éŸ³é‡ " prop="volume">
        <el-input
          v-model="queryParams.volume"
          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=" å˜é‡è¯æœ¯å˜é‡ " prop="speakvariable">
        <el-input
          v-model="queryParams.speakvariable"
          placeholder="请输入 å˜é‡è¯æœ¯å˜é‡ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['smartor:ivrlibscriptmodel: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:ivrlibscriptmodel: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:ivrlibscriptmodel: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:ivrlibscriptmodel:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrlibscriptmodelList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="modelid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <el-table-column label=" è¯æœ¯ID " align="center" prop="scriptid" />
      <el-table-column label=" è¯æœ¯ç±»åž‹ã€0:普通话术 1:变量话术】 " align="center" prop="speaktype" />
      <el-table-column label=" è¯æœ¯å†…容 " align="center" prop="speakbody" />
      <el-table-column label=" è¯­éŸ³ç±»åž‹ã€0:真人录音 1:合成语音】 " align="center" prop="voicetype" />
      <el-table-column label=" è¯­éŸ³æ–‡ä»¶ " align="center" prop="speakfilepath" />
      <el-table-column label=" åˆæˆåނ商 " align="center" prop="manufactor" />
      <el-table-column label=" å£°éŸ³ç±»åž‹ " align="center" prop="soundtype" />
      <el-table-column label=" è¯­é€Ÿ " align="center" prop="speechnum" />
      <el-table-column label=" éŸ³é«˜ " align="center" prop="pitch" />
      <el-table-column label=" éŸ³é‡ " align="center" prop="volume" />
      <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=" å˜é‡è¯æœ¯å˜é‡ " align="center" prop="speakvariable" />
      <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:ivrlibscriptmodel:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrlibscriptmodel: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI话术模块对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入 æœºæž„ID " />
        </el-form-item>
        <el-form-item label=" è¯æœ¯ID " prop="scriptid">
          <el-input v-model="form.scriptid" placeholder="请输入 è¯æœ¯ID " />
        </el-form-item>
        <el-form-item label=" è¯æœ¯å†…容 " prop="speakbody">
          <el-input v-model="form.speakbody" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label=" è¯­éŸ³æ–‡ä»¶ " prop="speakfilepath">
          <el-input v-model="form.speakfilepath" placeholder="请输入 è¯­éŸ³æ–‡ä»¶ " />
        </el-form-item>
        <el-form-item label=" åˆæˆåނ商 " prop="manufactor">
          <el-input v-model="form.manufactor" placeholder="请输入 åˆæˆåނ商 " />
        </el-form-item>
        <el-form-item label=" è¯­é€Ÿ " prop="speechnum">
          <el-input v-model="form.speechnum" placeholder="请输入 è¯­é€Ÿ " />
        </el-form-item>
        <el-form-item label=" éŸ³é«˜ " prop="pitch">
          <el-input v-model="form.pitch" placeholder="请输入 éŸ³é«˜ " />
        </el-form-item>
        <el-form-item label=" éŸ³é‡ " prop="volume">
          <el-input v-model="form.volume" 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=" å˜é‡è¯æœ¯å˜é‡ " prop="speakvariable">
          <el-input v-model="form.speakvariable" 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 { listIvrlibscriptmodel, getIvrlibscriptmodel, delIvrlibscriptmodel, addIvrlibscriptmodel, updateIvrlibscriptmodel } from "@/api/smartor/ivrlibscriptmodel";
export default {
  name: "Ivrlibscriptmodel",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI话术模块表格数据
      ivrlibscriptmodelList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        scriptid: null,
        speaktype: null,
        speakbody: null,
        voicetype: null,
        speakfilepath: null,
        manufactor: null,
        soundtype: null,
        speechnum: null,
        pitch: null,
        volume: null,
        isupload: null,
        uploadTime: null,
        speakvariable: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI话术模块列表 */
    getList() {
      this.loading = true;
      listIvrlibscriptmodel(this.queryParams).then(response => {
        this.ivrlibscriptmodelList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        modelid: null,
        orgid: null,
        scriptid: null,
        speaktype: null,
        speakbody: null,
        voicetype: null,
        speakfilepath: null,
        manufactor: null,
        soundtype: null,
        speechnum: null,
        pitch: null,
        volume: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: null,
        speakvariable: 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.modelid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI话术模块";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const modelid = row.modelid || this.ids
      getIvrlibscriptmodel(modelid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI话术模块";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.modelid != null) {
            updateIvrlibscriptmodel(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrlibscriptmodel(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const modelids = row.modelid || this.ids;
      this.$modal.confirm('是否确认删除AI话术模块编号为"' + modelids + '"的数据项?').then(function() {
        return delIvrlibscriptmodel(modelids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrlibscriptmodel/export', {
        ...this.queryParams
      }, `ivrlibscriptmodel_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrrecall/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,355 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åœºæ™¯ID " prop="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          placeholder="请输入 åœºæ™¯ID "
          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="recallinterval">
        <el-input
          v-model="queryParams.recallinterval"
          placeholder="请输入 é‡æ‹¨é—´éš” "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" é‡æ‹¨æ—¶é—´å•位;0.分钟 1.秒 2.小时 " prop="recallunit">
        <el-input
          v-model="queryParams.recallunit"
          placeholder="请输入 é‡æ‹¨æ—¶é—´å•位;0.分钟 1.秒 2.小时 "
          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>
        <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:ivrrecall: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:ivrrecall: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:ivrrecall: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:ivrrecall:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrrecallList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="recallid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <el-table-column label=" åœºæ™¯ID " align="center" prop="sceneid" />
      <el-table-column label=" é‡æ‹¨æƒ…景类型;0.任务执行失败 1.未接通 2.无人接听 3.患者拒绝 4.接通无应答 å¤šé€‰ é€—号隔开 " align="center" prop="recalltype" />
      <el-table-column label=" æ¬¡æ•° " align="center" prop="recallcount" />
      <el-table-column label=" é‡æ‹¨é—´éš” " align="center" prop="recallinterval" />
      <el-table-column label=" é‡æ‹¨æ—¶é—´å•位;0.分钟 1.秒 2.小时 " align="center" prop="recallunit" />
      <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="操作" 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:ivrrecall:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrrecall: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼重拨配置对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入 æœºæž„ID " />
        </el-form-item>
        <el-form-item label=" åœºæ™¯ID " prop="sceneid">
          <el-input v-model="form.sceneid" placeholder="请输入 åœºæ™¯ID " />
        </el-form-item>
        <el-form-item label=" æ¬¡æ•° " prop="recallcount">
          <el-input v-model="form.recallcount" placeholder="请输入 æ¬¡æ•° " />
        </el-form-item>
        <el-form-item label=" é‡æ‹¨é—´éš” " prop="recallinterval">
          <el-input v-model="form.recallinterval" placeholder="请输入 é‡æ‹¨é—´éš” " />
        </el-form-item>
        <el-form-item label=" é‡æ‹¨æ—¶é—´å•位;0.分钟 1.秒 2.小时 " prop="recallunit">
          <el-input v-model="form.recallunit" placeholder="请输入 é‡æ‹¨æ—¶é—´å•位;0.分钟 1.秒 2.小时 " />
        </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>
      <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 { listIvrrecall, getIvrrecall, delIvrrecall, addIvrrecall, updateIvrrecall } from "@/api/smartor/ivrrecall";
export default {
  name: "Ivrrecall",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼重拨配置表格数据
      ivrrecallList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        sceneid: null,
        recalltype: null,
        recallcount: null,
        recallinterval: null,
        recallunit: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼重拨配置列表 */
    getList() {
      this.loading = true;
      listIvrrecall(this.queryParams).then(response => {
        this.ivrrecallList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        recallid: null,
        orgid: null,
        sceneid: null,
        recalltype: null,
        recallcount: null,
        recallinterval: null,
        recallunit: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.recallid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼重拨配置";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const recallid = row.recallid || this.ids
      getIvrrecall(recallid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼重拨配置";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.recallid != null) {
            updateIvrrecall(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrrecall(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const recallids = row.recallid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼重拨配置编号为"' + recallids + '"的数据项?').then(function() {
        return delIvrrecall(recallids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrrecall/export', {
        ...this.queryParams
      }, `ivrrecall_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrscene/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,470 @@
<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=" åˆ†ç±»ID " prop="categoryid">
        <el-input
          v-model="queryParams.categoryid"
          placeholder="请输入 åˆ†ç±»ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åœºæ™¯åç§° " prop="scenename">
        <el-input
          v-model="queryParams.scenename"
          placeholder="请输入 åœºæ™¯åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" ç‰ˆæœ¬å· " prop="version">
        <el-input
          v-model="queryParams.version"
          placeholder="请输入 ç‰ˆæœ¬å· "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å…³è”ID" prop="relationid">
        <el-input
          v-model="queryParams.relationid"
          placeholder="请输入 å…³è”ID"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åœºæ™¯ç¼–号;同一场景唯一,用于区分版本 " prop="scenecode">
        <el-input
          v-model="queryParams.scenecode"
          placeholder="请输入 åœºæ™¯ç¼–号;同一场景唯一,用于区分版本 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" ç‰ˆæœ¬æ˜¯å¦å¯ç”¨;0.否 1.是 " prop="versionenable">
        <el-input
          v-model="queryParams.versionenable"
          placeholder="请输入 ç‰ˆæœ¬æ˜¯å¦å¯ç”¨;0.否 1.是 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " prop="isenable">
        <el-input
          v-model="queryParams.isenable"
          placeholder="请输入 æ˜¯å¦å¯ç”¨;0.否 1.是 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ˜¯å¦å‘布 " prop="isrelease">
        <el-input
          v-model="queryParams.isrelease"
          placeholder="请输入 æ˜¯å¦å‘布 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æœ€é•¿æ‰§è¡Œå‘¨æœŸ;0-15正整数,默认为5 " prop="executecycle">
        <el-input
          v-model="queryParams.executecycle"
          placeholder="请输入 æœ€é•¿æ‰§è¡Œå‘¨æœŸ;0-15正整数,默认为5 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æ˜¯å¦å¤æ ¸;0.否 1.是 " prop="isreview">
        <el-input
          v-model="queryParams.isreview"
          placeholder="请输入 æ˜¯å¦å¤æ ¸;0.否 1.是 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </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 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=" å‘布说明 " prop="releasenotes">
        <el-input
          v-model="queryParams.releasenotes"
          placeholder="请输入 å‘布说明 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è‰ç¨¿ID " prop="draftid">
        <el-input
          v-model="queryParams.draftid"
          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:ivrscene: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:ivrscene: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:ivrscene: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:ivrscene:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrsceneList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="sceneid" />
      <el-table-column label=" åˆ†ç±»ID " align="center" prop="categoryid" />
      <el-table-column label=" åœºæ™¯åç§° " align="center" prop="scenename" />
      <el-table-column label=" ç‰ˆæœ¬å· " align="center" prop="version" />
      <el-table-column label=" å…³è”ID" align="center" prop="relationid" />
      <el-table-column label=" åå¸­ID;多个坐席逗号 " align="center" prop="seatsid" />
      <el-table-column label=" åœºæ™¯ç¼–号;同一场景唯一,用于区分版本 " align="center" prop="scenecode" />
      <el-table-column label=" ç‰ˆæœ¬æ˜¯å¦å¯ç”¨;0.否 1.是 " align="center" prop="versionenable" />
      <el-table-column label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " align="center" prop="isenable" />
      <el-table-column label=" æ˜¯å¦å‘布 " align="center" prop="isrelease" />
      <el-table-column label=" æœ€é•¿æ‰§è¡Œå‘¨æœŸ;0-15正整数,默认为5 " align="center" prop="executecycle" />
      <el-table-column label=" æ˜¯å¦å¤æ ¸;0.否 1.是 " align="center" prop="isreview" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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=" å‘布说明 " align="center" prop="releasenotes" />
      <el-table-column label=" è‰ç¨¿ID " align="center" prop="draftid" />
      <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:ivrscene:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrscene: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼场景管理对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" åˆ†ç±»ID " prop="categoryid">
          <el-input v-model="form.categoryid" placeholder="请输入 åˆ†ç±»ID " />
        </el-form-item>
        <el-form-item label=" åœºæ™¯åç§° " prop="scenename">
          <el-input v-model="form.scenename" placeholder="请输入 åœºæ™¯åç§° " />
        </el-form-item>
        <el-form-item label=" ç‰ˆæœ¬å· " prop="version">
          <el-input v-model="form.version" placeholder="请输入 ç‰ˆæœ¬å· " />
        </el-form-item>
        <el-form-item label=" å…³è”ID" prop="relationid">
          <el-input v-model="form.relationid" placeholder="请输入 å…³è”ID" />
        </el-form-item>
        <el-form-item label=" åå¸­ID;多个坐席逗号 " prop="seatsid">
          <el-input v-model="form.seatsid" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label=" åœºæ™¯ç¼–号;同一场景唯一,用于区分版本 " prop="scenecode">
          <el-input v-model="form.scenecode" placeholder="请输入 åœºæ™¯ç¼–号;同一场景唯一,用于区分版本 " />
        </el-form-item>
        <el-form-item label=" ç‰ˆæœ¬æ˜¯å¦å¯ç”¨;0.否 1.是 " prop="versionenable">
          <el-input v-model="form.versionenable" placeholder="请输入 ç‰ˆæœ¬æ˜¯å¦å¯ç”¨;0.否 1.是 " />
        </el-form-item>
        <el-form-item label=" æ˜¯å¦å¯ç”¨;0.否 1.是 " prop="isenable">
          <el-input v-model="form.isenable" placeholder="请输入 æ˜¯å¦å¯ç”¨;0.否 1.是 " />
        </el-form-item>
        <el-form-item label=" æ˜¯å¦å‘布 " prop="isrelease">
          <el-input v-model="form.isrelease" placeholder="请输入 æ˜¯å¦å‘布 " />
        </el-form-item>
        <el-form-item label=" æœ€é•¿æ‰§è¡Œå‘¨æœŸ;0-15正整数,默认为5 " prop="executecycle">
          <el-input v-model="form.executecycle" placeholder="请输入 æœ€é•¿æ‰§è¡Œå‘¨æœŸ;0-15正整数,默认为5 " />
        </el-form-item>
        <el-form-item label=" æ˜¯å¦å¤æ ¸;0.否 1.是 " prop="isreview">
          <el-input v-model="form.isreview" placeholder="请输入 æ˜¯å¦å¤æ ¸;0.否 1.是 " />
        </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-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=" å‘布说明 " prop="releasenotes">
          <el-input v-model="form.releasenotes" placeholder="请输入 å‘布说明 " />
        </el-form-item>
        <el-form-item label=" è‰ç¨¿ID " prop="draftid">
          <el-input v-model="form.draftid" 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 { listIvrscene, getIvrscene, delIvrscene, addIvrscene, updateIvrscene } from "@/api/smartor/ivrscene";
export default {
  name: "Ivrscene",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼场景管理表格数据
      ivrsceneList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        categoryid: null,
        scenename: null,
        version: null,
        relationid: null,
        seatsid: null,
        scenecode: null,
        versionenable: null,
        isenable: null,
        isrelease: null,
        executecycle: null,
        isreview: null,
        orgid: null,
        isupload: null,
        uploadTime: null,
        releasenotes: null,
        draftid: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼场景管理列表 */
    getList() {
      this.loading = true;
      listIvrscene(this.queryParams).then(response => {
        this.ivrsceneList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        sceneid: null,
        categoryid: null,
        scenename: null,
        version: null,
        relationid: null,
        seatsid: null,
        scenecode: null,
        versionenable: null,
        isenable: null,
        isrelease: null,
        executecycle: null,
        isreview: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: null,
        releasenotes: null,
        draftid: 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.sceneid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼场景管理";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const sceneid = row.sceneid || this.ids
      getIvrscene(sceneid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼场景管理";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.sceneid != null) {
            updateIvrscene(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrscene(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const sceneids = row.sceneid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼场景管理编号为"' + sceneids + '"的数据项?').then(function() {
        return delIvrscene(sceneids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrscene/export', {
        ...this.queryParams
      }, `ivrscene_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrscenecategory/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,310 @@
<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="categoryname">
        <el-input
          v-model="queryParams.categoryname"
          placeholder="请输入 åˆ†ç±»åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </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 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>
        <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:ivrscenecategory: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:ivrscenecategory: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:ivrscenecategory: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:ivrscenecategory:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrscenecategoryList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="scenecatid" />
      <el-table-column label=" åˆ†ç±»åç§° " align="center" prop="categoryname" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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="操作" 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:ivrscenecategory:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrscenecategory: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI服务场景管理分类对话框 -->
    <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="categoryname">
          <el-input v-model="form.categoryname" placeholder="请输入 åˆ†ç±»åç§° " />
        </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-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>
      <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 { listIvrscenecategory, getIvrscenecategory, delIvrscenecategory, addIvrscenecategory, updateIvrscenecategory } from "@/api/smartor/ivrscenecategory";
export default {
  name: "Ivrscenecategory",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI服务场景管理分类表格数据
      ivrscenecategoryList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        categoryname: null,
        orgid: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI服务场景管理分类列表 */
    getList() {
      this.loading = true;
      listIvrscenecategory(this.queryParams).then(response => {
        this.ivrscenecategoryList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        scenecatid: null,
        categoryname: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.scenecatid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI服务场景管理分类";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const scenecatid = row.scenecatid || this.ids
      getIvrscenecategory(scenecatid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI服务场景管理分类";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.scenecatid != null) {
            updateIvrscenecategory(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrscenecategory(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const scenecatids = row.scenecatid || this.ids;
      this.$modal.confirm('是否确认删除AI服务场景管理分类编号为"' + scenecatids + '"的数据项?').then(function() {
        return delIvrscenecategory(scenecatids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrscenecategory/export', {
        ...this.queryParams
      }, `ivrscenecategory_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrscript/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,411 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å…¨å±€é…ç½®ID;全局配置ID " prop="globalid">
        <el-input
          v-model="queryParams.globalid"
          placeholder="请输入 å…¨å±€é…ç½®ID;全局配置ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åœºæ™¯id " prop="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          placeholder="请输入 åœºæ™¯id "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹ID " prop="flowid">
        <el-input
          v-model="queryParams.flowid"
          placeholder="请输入 æµç¨‹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" æµç¨‹èŠ‚ç‚¹ID " prop="flownodeid">
        <el-input
          v-model="queryParams.flownodeid"
          placeholder="请输入 æµç¨‹èŠ‚ç‚¹ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å¼•用话术模板ID " prop="templateid">
        <el-input
          v-model="queryParams.templateid"
          placeholder="请输入 å¼•用话术模板ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯æœ¯å†…容" prop="speakbody">
        <el-input
          v-model="queryParams.speakbody"
          placeholder="请输入 è¯æœ¯å†…容"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯æœ¯æ–‡ä»¶è·¯å¾„" prop="speakfilepath">
        <el-input
          v-model="queryParams.speakfilepath"
          placeholder="请输入 è¯æœ¯æ–‡ä»¶è·¯å¾„"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯æœ¯åç§° " prop="speakname">
        <el-input
          v-model="queryParams.speakname"
          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>
        <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:ivrscript: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:ivrscript: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:ivrscript: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:ivrscript:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrscriptList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="scenescrid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <el-table-column label=" æ¥æºç±»åž‹;0.全局 1.主线 " align="center" prop="sourcetype" />
      <el-table-column label=" å…¨å±€é…ç½®ID;全局配置ID " align="center" prop="globalid" />
      <el-table-column label=" åœºæ™¯id " align="center" prop="sceneid" />
      <el-table-column label=" æµç¨‹ID " align="center" prop="flowid" />
      <el-table-column label=" æµç¨‹èŠ‚ç‚¹ID " align="center" prop="flownodeid" />
      <el-table-column label=" å¼•用话术模板ID " align="center" prop="templateid" />
      <el-table-column label=" è¯æœ¯å†…容" align="center" prop="speakbody" />
      <el-table-column label=" è¯æœ¯æ–‡ä»¶è·¯å¾„" align="center" prop="speakfilepath" />
      <el-table-column label=" è¯æœ¯åç§° " align="center" prop="speakname" />
      <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="操作" 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:ivrscript:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrscript: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼话术对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入 æœºæž„ID " />
        </el-form-item>
        <el-form-item label=" å…¨å±€é…ç½®ID;全局配置ID " prop="globalid">
          <el-input v-model="form.globalid" placeholder="请输入 å…¨å±€é…ç½®ID;全局配置ID " />
        </el-form-item>
        <el-form-item label=" åœºæ™¯id " prop="sceneid">
          <el-input v-model="form.sceneid" placeholder="请输入 åœºæ™¯id " />
        </el-form-item>
        <el-form-item label=" æµç¨‹ID " prop="flowid">
          <el-input v-model="form.flowid" placeholder="请输入 æµç¨‹ID " />
        </el-form-item>
        <el-form-item label=" æµç¨‹èŠ‚ç‚¹ID " prop="flownodeid">
          <el-input v-model="form.flownodeid" placeholder="请输入 æµç¨‹èŠ‚ç‚¹ID " />
        </el-form-item>
        <el-form-item label=" å¼•用话术模板ID " prop="templateid">
          <el-input v-model="form.templateid" placeholder="请输入 å¼•用话术模板ID " />
        </el-form-item>
        <el-form-item label=" è¯æœ¯å†…容" prop="speakbody">
          <el-input v-model="form.speakbody" placeholder="请输入 è¯æœ¯å†…容" />
        </el-form-item>
        <el-form-item label=" è¯æœ¯æ–‡ä»¶è·¯å¾„" prop="speakfilepath">
          <el-input v-model="form.speakfilepath" placeholder="请输入 è¯æœ¯æ–‡ä»¶è·¯å¾„" />
        </el-form-item>
        <el-form-item label=" è¯æœ¯åç§° " prop="speakname">
          <el-input v-model="form.speakname" 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>
      <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 { listIvrscript, getIvrscript, delIvrscript, addIvrscript, updateIvrscript } from "@/api/smartor/ivrscript";
export default {
  name: "Ivrscript",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼话术表格数据
      ivrscriptList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        sourcetype: null,
        globalid: null,
        sceneid: null,
        flowid: null,
        flownodeid: null,
        templateid: null,
        speakbody: null,
        speakfilepath: null,
        speakname: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼话术列表 */
    getList() {
      this.loading = true;
      listIvrscript(this.queryParams).then(response => {
        this.ivrscriptList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        scenescrid: null,
        orgid: null,
        sourcetype: null,
        globalid: null,
        sceneid: null,
        flowid: null,
        flownodeid: null,
        templateid: null,
        speakbody: null,
        speakfilepath: null,
        speakname: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.scenescrid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼话术";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const scenescrid = row.scenescrid || this.ids
      getIvrscript(scenescrid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼话术";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.scenescrid != null) {
            updateIvrscript(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrscript(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const scenescrids = row.scenescrid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼话术编号为"' + scenescrids + '"的数据项?').then(function() {
        return delIvrscript(scenescrids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrscript/export', {
        ...this.queryParams
      }, `ivrscript_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/ivrscriptmodel/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,423 @@
<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=" æœºæž„ID " prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入 æœºæž„ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯æœ¯ID " prop="scenescrid">
        <el-input
          v-model="queryParams.scenescrid"
          placeholder="请输入 è¯æœ¯ID "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯­éŸ³æ–‡ä»¶ " prop="speakfilepath">
        <el-input
          v-model="queryParams.speakfilepath"
          placeholder="请输入 è¯­éŸ³æ–‡ä»¶ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åˆæˆåނ商 " prop="manufactor">
        <el-input
          v-model="queryParams.manufactor"
          placeholder="请输入 åˆæˆåނ商 "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" è¯­é€Ÿ " prop="speechnum">
        <el-input
          v-model="queryParams.speechnum"
          placeholder="请输入 è¯­é€Ÿ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" éŸ³é«˜ " prop="pitch">
        <el-input
          v-model="queryParams.pitch"
          placeholder="请输入 éŸ³é«˜ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" éŸ³é‡ " prop="volume">
        <el-input
          v-model="queryParams.volume"
          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=" å˜é‡è¯æœ¯å˜é‡ " prop="speakvariable">
        <el-input
          v-model="queryParams.speakvariable"
          placeholder="请输入 å˜é‡è¯æœ¯å˜é‡ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" åœºæ™¯ID " prop="sceneid">
        <el-input
          v-model="queryParams.sceneid"
          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:ivrscriptmodel: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:ivrscriptmodel: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:ivrscriptmodel: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:ivrscriptmodel:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="ivrscriptmodelList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="scenemodid" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <el-table-column label=" è¯æœ¯ID " align="center" prop="scenescrid" />
      <el-table-column label=" è¯æœ¯ç±»åž‹ã€0:普通话术 1:变量话术】 " align="center" prop="speaktype" />
      <el-table-column label=" è¯æœ¯å†…容 " align="center" prop="speakbody" />
      <el-table-column label=" è¯­éŸ³ç±»åž‹ã€0:真人录音 1:合成语音】 " align="center" prop="voicetype" />
      <el-table-column label=" è¯­éŸ³æ–‡ä»¶ " align="center" prop="speakfilepath" />
      <el-table-column label=" åˆæˆåނ商 " align="center" prop="manufactor" />
      <el-table-column label=" å£°éŸ³ç±»åž‹ " align="center" prop="soundtype" />
      <el-table-column label=" è¯­é€Ÿ " align="center" prop="speechnum" />
      <el-table-column label=" éŸ³é«˜ " align="center" prop="pitch" />
      <el-table-column label=" éŸ³é‡ " align="center" prop="volume" />
      <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=" å˜é‡è¯æœ¯å˜é‡ " align="center" prop="speakvariable" />
      <el-table-column label=" åœºæ™¯ID " align="center" prop="sceneid" />
      <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:ivrscriptmodel:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:ivrscriptmodel: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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹AI外呼话术模块对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label=" æœºæž„ID " prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入 æœºæž„ID " />
        </el-form-item>
        <el-form-item label=" è¯æœ¯ID " prop="scenescrid">
          <el-input v-model="form.scenescrid" placeholder="请输入 è¯æœ¯ID " />
        </el-form-item>
        <el-form-item label=" è¯æœ¯å†…容 " prop="speakbody">
          <el-input v-model="form.speakbody" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label=" è¯­éŸ³æ–‡ä»¶ " prop="speakfilepath">
          <el-input v-model="form.speakfilepath" placeholder="请输入 è¯­éŸ³æ–‡ä»¶ " />
        </el-form-item>
        <el-form-item label=" åˆæˆåނ商 " prop="manufactor">
          <el-input v-model="form.manufactor" placeholder="请输入 åˆæˆåނ商 " />
        </el-form-item>
        <el-form-item label=" è¯­é€Ÿ " prop="speechnum">
          <el-input v-model="form.speechnum" placeholder="请输入 è¯­é€Ÿ " />
        </el-form-item>
        <el-form-item label=" éŸ³é«˜ " prop="pitch">
          <el-input v-model="form.pitch" placeholder="请输入 éŸ³é«˜ " />
        </el-form-item>
        <el-form-item label=" éŸ³é‡ " prop="volume">
          <el-input v-model="form.volume" 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=" å˜é‡è¯æœ¯å˜é‡ " prop="speakvariable">
          <el-input v-model="form.speakvariable" placeholder="请输入 å˜é‡è¯æœ¯å˜é‡ " />
        </el-form-item>
        <el-form-item label=" åœºæ™¯ID " prop="sceneid">
          <el-input v-model="form.sceneid" 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 { listIvrscriptmodel, getIvrscriptmodel, delIvrscriptmodel, addIvrscriptmodel, updateIvrscriptmodel } from "@/api/smartor/ivrscriptmodel";
export default {
  name: "Ivrscriptmodel",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // AI外呼话术模块表格数据
      ivrscriptmodelList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        orgid: null,
        scenescrid: null,
        speaktype: null,
        speakbody: null,
        voicetype: null,
        speakfilepath: null,
        manufactor: null,
        soundtype: null,
        speechnum: null,
        pitch: null,
        volume: null,
        isupload: null,
        uploadTime: null,
        speakvariable: null,
        sceneid: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢AI外呼话术模块列表 */
    getList() {
      this.loading = true;
      listIvrscriptmodel(this.queryParams).then(response => {
        this.ivrscriptmodelList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        scenemodid: null,
        orgid: null,
        scenescrid: null,
        speaktype: null,
        speakbody: null,
        voicetype: null,
        speakfilepath: null,
        manufactor: null,
        soundtype: null,
        speechnum: null,
        pitch: null,
        volume: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: null,
        speakvariable: null,
        sceneid: 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.scenemodid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加AI外呼话术模块";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const scenemodid = row.scenemodid || this.ids
      getIvrscriptmodel(scenemodid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改AI外呼话术模块";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.scenemodid != null) {
            updateIvrscriptmodel(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addIvrscriptmodel(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const scenemodids = row.scenemodid || this.ids;
      this.$modal.confirm('是否确认删除AI外呼话术模块编号为"' + scenemodids + '"的数据项?').then(function() {
        return delIvrscriptmodel(scenemodids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/ivrscriptmodel/export', {
        ...this.queryParams
      }, `ivrscriptmodel_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/smsaccount/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,357 @@
<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="smsname">
        <el-input
          v-model="queryParams.smsname"
          placeholder="请输入 æ ‡ç­¾åç§° "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å¹³å°è´¦å· " prop="account">
        <el-input
          v-model="queryParams.account"
          placeholder="请输入 å¹³å°è´¦å· "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label=" å¹³å°å¯†ç  " prop="password">
        <el-input
          v-model="queryParams.password"
          placeholder="请输入 å¹³å°å¯†ç  "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </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 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=" æ˜¯å¦å¼€å¯ " prop="isenable">
        <el-input
          v-model="queryParams.isenable"
          placeholder="请输入 æ˜¯å¦å¼€å¯ "
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['smartor:smsaccount: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:smsaccount: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:smsaccount: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:smsaccount:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="smsaccountList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label=" è‡ªå¢žID " align="center" prop="smsacountid" />
      <el-table-column label=" æ ‡ç­¾åç§° " align="center" prop="smsname" />
      <el-table-column label=" å¹³å°è´¦å· " align="center" prop="account" />
      <el-table-column label=" å¹³å°å¯†ç  " align="center" prop="password" />
      <el-table-column label=" å¤‡æ³¨ " align="center" prop="remark" />
      <el-table-column label=" æœºæž„ID " align="center" prop="orgid" />
      <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=" æ˜¯å¦å¼€å¯ " align="center" prop="isenable" />
      <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:smsaccount:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:smsaccount: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="smsname">
          <el-input v-model="form.smsname" placeholder="请输入 æ ‡ç­¾åç§° " />
        </el-form-item>
        <el-form-item label=" å¹³å°è´¦å· " prop="account">
          <el-input v-model="form.account" placeholder="请输入 å¹³å°è´¦å· " />
        </el-form-item>
        <el-form-item label=" å¹³å°å¯†ç  " prop="password">
          <el-input v-model="form.password" placeholder="请输入 å¹³å°å¯†ç  " />
        </el-form-item>
        <el-form-item label=" å¤‡æ³¨ " prop="remark">
          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
        </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-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=" æ˜¯å¦å¼€å¯ " prop="isenable">
          <el-input v-model="form.isenable" 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 { listSmsaccount, getSmsaccount, delSmsaccount, addSmsaccount, updateSmsaccount } from "@/api/smartor/smsaccount";
export default {
  name: "Smsaccount",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // çŸ­ä¿¡è´¦å·è¡¨æ ¼æ•°æ®
      smsaccountList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        smsname: null,
        account: null,
        password: null,
        orgid: null,
        isupload: null,
        uploadTime: null,
        isenable: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        delFlag: [
          { required: true, message: " åˆ é™¤æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
        isupload: [
          { required: true, message: " ä¸Šä¼ æ ‡è®° ä¸èƒ½ä¸ºç©º", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢çŸ­ä¿¡è´¦å·åˆ—表 */
    getList() {
      this.loading = true;
      listSmsaccount(this.queryParams).then(response => {
        this.smsaccountList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        smsacountid: null,
        smsname: null,
        account: null,
        password: null,
        remark: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: null,
        isenable: 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.smsacountid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加短信账号";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const smsacountid = row.smsacountid || this.ids
      getSmsaccount(smsacountid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改短信账号";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.smsacountid != null) {
            updateSmsaccount(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addSmsaccount(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const smsacountids = row.smsacountid || this.ids;
      this.$modal.confirm('是否确认删除短信账号编号为"' + smsacountids + '"的数据项?').then(function() {
        return delSmsaccount(smsacountids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/smsaccount/export', {
        ...this.queryParams
      }, `smsaccount_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/smsparam/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,321 @@
<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="${comment}" prop="paramname">
        <el-input
          v-model="queryParams.paramname"
          placeholder="请输入${comment}"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="paramval">
        <el-input
          v-model="queryParams.paramval"
          placeholder="请输入${comment}"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="descirbe">
        <el-input
          v-model="queryParams.descirbe"
          placeholder="请输入${comment}"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="isupload">
        <el-input
          v-model="queryParams.isupload"
          placeholder="请输入${comment}"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="uploadTime">
        <el-date-picker clearable
          v-model="queryParams.uploadTime"
          type="date"
          value-format="yyyy-MM-dd"
          placeholder="请选择${comment}">
        </el-date-picker>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['smartor:smsparam: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:smsparam: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:smsparam: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:smsparam:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="smsparamList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="${comment}" align="center" prop="paramid" />
      <el-table-column label="${comment}" align="center" prop="paramname" />
      <el-table-column label="${comment}" align="center" prop="paramval" />
      <el-table-column label="${comment}" align="center" prop="descirbe" />
      <el-table-column label="${comment}" align="center" prop="usestatus" />
      <el-table-column label="${comment}" align="center" prop="isupload" />
      <el-table-column label="${comment}" 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="操作" 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:smsparam:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:smsparam: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="${comment}" prop="paramname">
          <el-input v-model="form.paramname" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="paramval">
          <el-input v-model="form.paramval" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="descirbe">
          <el-input v-model="form.descirbe" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="delFlag">
          <el-input v-model="form.delFlag" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="isupload">
          <el-input v-model="form.isupload" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="uploadTime">
          <el-date-picker clearable
            v-model="form.uploadTime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择${comment}">
          </el-date-picker>
        </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 { listSmsparam, getSmsparam, delSmsparam, addSmsparam, updateSmsparam } from "@/api/smartor/smsparam";
export default {
  name: "Smsparam",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // çŸ­ä¿¡å‚数表格数据
      smsparamList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        paramname: null,
        paramval: null,
        descirbe: null,
        usestatus: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢çŸ­ä¿¡å‚数列表 */
    getList() {
      this.loading = true;
      listSmsparam(this.queryParams).then(response => {
        this.smsparamList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        paramid: null,
        paramname: null,
        paramval: null,
        descirbe: null,
        usestatus: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.paramid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加短信参数";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const paramid = row.paramid || this.ids
      getSmsparam(paramid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改短信参数";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.paramid != null) {
            updateSmsparam(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addSmsparam(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const paramids = row.paramid || this.ids;
      this.$modal.confirm('是否确认删除短信参数编号为"' + paramids + '"的数据项?').then(function() {
        return delSmsparam(paramids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/smsparam/export', {
        ...this.queryParams
      }, `smsparam_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/smsrecords/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,544 @@
<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="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="phone">
        <el-input
          v-model="queryParams.phone"
          placeholder="请输入"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="" prop="msgno">
        <el-input
          v-model="queryParams.msgno"
          placeholder="请输入"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="" prop="msg">
        <el-input
          v-model="queryParams.msg"
          placeholder="请输入"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="" prop="inserttime">
        <el-date-picker clearable
          v-model="queryParams.inserttime"
          type="date"
          value-format="yyyy-MM-dd"
          placeholder="请选择">
        </el-date-picker>
      </el-form-item>
      <el-form-item label="" prop="sendtime">
        <el-date-picker clearable
          v-model="queryParams.sendtime"
          type="date"
          value-format="yyyy-MM-dd"
          placeholder="请选择">
        </el-date-picker>
      </el-form-item>
      <el-form-item label="" prop="sendfailedcount">
        <el-input
          v-model="queryParams.sendfailedcount"
          placeholder="请输入"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="" prop="resulttime">
        <el-date-picker clearable
          v-model="queryParams.resulttime"
          type="date"
          value-format="yyyy-MM-dd"
          placeholder="请选择">
        </el-date-picker>
      </el-form-item>
      <el-form-item label="" prop="resultmsg">
        <el-input
          v-model="queryParams.resultmsg"
          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="" prop="insertsystem">
        <el-input
          v-model="queryParams.insertsystem"
          placeholder="请输入"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="" prop="insertmodule">
        <el-input
          v-model="queryParams.insertmodule"
          placeholder="请输入"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="" prop="moduleid">
        <el-input
          v-model="queryParams.moduleid"
          placeholder="请输入"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="" prop="msgidentify">
        <el-input
          v-model="queryParams.msgidentify"
          placeholder="请输入"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="accountid">
        <el-input
          v-model="queryParams.accountid"
          placeholder="请输入${comment}"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="orgid">
        <el-input
          v-model="queryParams.orgid"
          placeholder="请输入${comment}"
          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>
        <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:smsrecords: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:smsrecords: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:smsrecords: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:smsrecords:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="smsrecordsList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="${comment}" align="center" prop="recordid" />
      <el-table-column label="" align="center" prop="userid" />
      <el-table-column label="" align="center" prop="username" />
      <el-table-column label="" align="center" prop="phone" />
      <el-table-column label="" align="center" prop="msgno" />
      <el-table-column label="" align="center" prop="msg" />
      <el-table-column label="" align="center" prop="inserttime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.inserttime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="" align="center" prop="sendtime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.sendtime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="" align="center" prop="sendfailedcount" />
      <el-table-column label="" align="center" prop="resulttime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.resulttime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="" align="center" prop="resultmsg" />
      <el-table-column label="" align="center" prop="sendstate" />
      <el-table-column label="" align="center" prop="inserttype" />
      <el-table-column label="" align="center" prop="insertsystem" />
      <el-table-column label="" align="center" prop="insertmodule" />
      <el-table-column label="" align="center" prop="moduleid" />
      <el-table-column label="" align="center" prop="msgidentify" />
      <el-table-column label="${comment}" align="center" prop="accountid" />
      <el-table-column label="${comment}" align="center" prop="orgid" />
      <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="操作" 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:smsrecords:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:smsrecords: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="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="phone">
          <el-input v-model="form.phone" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="msgno">
          <el-input v-model="form.msgno" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="msg">
          <el-input v-model="form.msg" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="inserttime">
          <el-date-picker clearable
            v-model="form.inserttime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="" prop="sendtime">
          <el-date-picker clearable
            v-model="form.sendtime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="" prop="sendfailedcount">
          <el-input v-model="form.sendfailedcount" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="resulttime">
          <el-date-picker clearable
            v-model="form.resulttime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="" prop="resultmsg">
          <el-input v-model="form.resultmsg" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="sendstate">
          <el-input v-model="form.sendstate" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="insertsystem">
          <el-input v-model="form.insertsystem" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="insertmodule">
          <el-input v-model="form.insertmodule" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="moduleid">
          <el-input v-model="form.moduleid" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="" prop="msgidentify">
          <el-input v-model="form.msgidentify" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="${comment}" prop="accountid">
          <el-input v-model="form.accountid" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="orgid">
          <el-input v-model="form.orgid" placeholder="请输入${comment}" />
        </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>
      <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 { listSmsrecords, getSmsrecords, delSmsrecords, addSmsrecords, updateSmsrecords } from "@/api/smartor/smsrecords";
export default {
  name: "Smsrecords",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // çŸ­ä¿¡è®°å½•表格数据
      smsrecordsList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userid: null,
        username: null,
        phone: null,
        msgno: null,
        msg: null,
        inserttime: null,
        sendtime: null,
        sendfailedcount: null,
        resulttime: null,
        resultmsg: null,
        sendstate: null,
        inserttype: null,
        insertsystem: null,
        insertmodule: null,
        moduleid: null,
        msgidentify: null,
        accountid: null,
        orgid: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢çŸ­ä¿¡è®°å½•列表 */
    getList() {
      this.loading = true;
      listSmsrecords(this.queryParams).then(response => {
        this.smsrecordsList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        recordid: null,
        userid: null,
        username: null,
        phone: null,
        msgno: null,
        msg: null,
        inserttime: null,
        sendtime: null,
        sendfailedcount: null,
        resulttime: null,
        resultmsg: null,
        sendstate: null,
        inserttype: null,
        insertsystem: null,
        insertmodule: null,
        moduleid: null,
        msgidentify: null,
        accountid: null,
        orgid: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.recordid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加短信记录";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const recordid = row.recordid || this.ids
      getSmsrecords(recordid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改短信记录";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.recordid != null) {
            updateSmsrecords(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addSmsrecords(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const recordids = row.recordid || this.ids;
      this.$modal.confirm('是否确认删除短信记录编号为"' + recordids + '"的数据项?').then(function() {
        return delSmsrecords(recordids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/smsrecords/export', {
        ...this.queryParams
      }, `smsrecords_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
ruoyi-ui/src/views/smartor/smstemplet/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,310 @@
<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="${comment}" prop="templetno">
        <el-input
          v-model="queryParams.templetno"
          placeholder="请输入${comment}"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="templetname">
        <el-input
          v-model="queryParams.templetname"
          placeholder="请输入${comment}"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="isupload">
        <el-input
          v-model="queryParams.isupload"
          placeholder="请输入${comment}"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="${comment}" prop="uploadTime">
        <el-date-picker clearable
          v-model="queryParams.uploadTime"
          type="date"
          value-format="yyyy-MM-dd"
          placeholder="请选择${comment}">
        </el-date-picker>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['smartor:smstemplet: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:smstemplet: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:smstemplet: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:smstemplet:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="smstempletList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="${comment}" align="center" prop="templetid" />
      <el-table-column label="${comment}" align="center" prop="templetno" />
      <el-table-column label="${comment}" align="center" prop="templetname" />
      <el-table-column label="${comment}" align="center" prop="templetcontent" />
      <el-table-column label="${comment}" align="center" prop="isupload" />
      <el-table-column label="${comment}" 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="操作" 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:smstemplet:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['smartor:smstemplet: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="${comment}" prop="templetno">
          <el-input v-model="form.templetno" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="templetname">
          <el-input v-model="form.templetname" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}">
          <editor v-model="form.templetcontent" :min-height="192"/>
        </el-form-item>
        <el-form-item label="${comment}" prop="delFlag">
          <el-input v-model="form.delFlag" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="isupload">
          <el-input v-model="form.isupload" placeholder="请输入${comment}" />
        </el-form-item>
        <el-form-item label="${comment}" prop="uploadTime">
          <el-date-picker clearable
            v-model="form.uploadTime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择${comment}">
          </el-date-picker>
        </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 { listSmstemplet, getSmstemplet, delSmstemplet, addSmstemplet, updateSmstemplet } from "@/api/smartor/smstemplet";
export default {
  name: "Smstemplet",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // çŸ­ä¿¡æ¨¡æ¿è¡¨æ ¼æ•°æ®
      smstempletList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        templetno: null,
        templetname: null,
        templetcontent: null,
        isupload: null,
        uploadTime: null
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢çŸ­ä¿¡æ¨¡æ¿åˆ—表 */
    getList() {
      this.loading = true;
      listSmstemplet(this.queryParams).then(response => {
        this.smstempletList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        templetid: null,
        templetno: null,
        templetname: null,
        templetcontent: null,
        delFlag: null,
        updateBy: null,
        updateTime: null,
        createBy: null,
        createTime: null,
        isupload: null,
        uploadTime: 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.templetid)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加短信模板";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const templetid = row.templetid || this.ids
      getSmstemplet(templetid).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改短信模板";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.templetid != null) {
            updateSmstemplet(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addSmstemplet(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const templetids = row.templetid || this.ids;
      this.$modal.confirm('是否确认删除短信模板编号为"' + templetids + '"的数据项?').then(function() {
        return delSmstemplet(templetids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('smartor/smstemplet/export', {
        ...this.queryParams
      }, `smstemplet_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>