From 877300e751d6b5073af41ca8dda502e0a7d70a51 Mon Sep 17 00:00:00 2001
From: qianxj <qianxj15@sina.com>
Date: 星期五, 03 三月 2023 11:16:31 +0800
Subject: [PATCH] update step1

---
 ruoyi-ui/src/api/smartor/svycategory.js             |   44 
 ruoyi-ui/src/api/system/snytopic.js                 |   44 
 ruoyi-ui/src/views/smartor/svyexception/index.vue   |  456 ++++++
 ruoyi-ui/src/views/smartor/patarchive/index.vue     |  430 ++++++
 ruoyi-ui/src/views/smartor/patinhosp/index.vue      |  468 ++++++
 ruoyi-ui/src/api/smartor/svytitle.js                |   44 
 ruoyi-ui/src/views/smartor/archive/maint.vue        |  207 +++
 ruoyi-ui/src/views/system/snytopic/index.vue        |  389 +++++
 ruoyi-ui/src/views/smartor/svytitle/index.vue       |  440 ++++++
 ruoyi-ui/src/views/smartor/archive/index.vue        |   30 
 ruoyi-ui/src/api/smartor/svytopicoption.js          |   44 
 ruoyi-ui/src/views/smartor/svytopicoption/index.vue |  574 ++++++++
 ruoyi-ui/src/api/smartor/patarchive.js              |   44 
 ruoyi-ui/src/views/smartor/svyresult/index.vue      |  358 +++++
 ruoyi-ui/src/api/smartor/svyresult.js               |   44 
 ruoyi-ui/src/views/smartor/svycategory/index.vue    |  286 ++++
 ruoyi-ui/src/api/smartor/svyexception.js            |   44 
 ruoyi-ui/src/router/index.js                        |   16 
 ruoyi-ui/src/api/smartor/patinhosp.js               |   44 
 19 files changed, 3,982 insertions(+), 24 deletions(-)

diff --git a/ruoyi-ui/src/api/smartor/patarchive.js b/ruoyi-ui/src/api/smartor/patarchive.js
new file mode 100644
index 0000000..bebe5e8
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/patarchive.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鎮h�呮。妗堝垪琛�
+export function listPatarchive(query) {
+  return request({
+    url: '/smartor/patarchive/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ鎮h�呮。妗堣缁�
+export function getPatarchive(patid) {
+  return request({
+    url: '/smartor/patarchive/' + patid,
+    method: 'get'
+  })
+}
+
+// 鏂板鎮h�呮。妗�
+export function addPatarchive(data) {
+  return request({
+    url: '/smartor/patarchive',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼鎮h�呮。妗�
+export function updatePatarchive(data) {
+  return request({
+    url: '/smartor/patarchive',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎鎮h�呮。妗�
+export function delPatarchive(patid) {
+  return request({
+    url: '/smartor/patarchive/' + patid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/patinhosp.js b/ruoyi-ui/src/api/smartor/patinhosp.js
new file mode 100644
index 0000000..e3d84bf
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/patinhosp.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鎮h�呬綇闄㈣褰曞垪琛�
+export function listPatinhosp(query) {
+  return request({
+    url: '/smartor/patinhosp/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ鎮h�呬綇闄㈣褰曡缁�
+export function getPatinhosp(inhospid) {
+  return request({
+    url: '/smartor/patinhosp/' + inhospid,
+    method: 'get'
+  })
+}
+
+// 鏂板鎮h�呬綇闄㈣褰�
+export function addPatinhosp(data) {
+  return request({
+    url: '/smartor/patinhosp',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼鎮h�呬綇闄㈣褰�
+export function updatePatinhosp(data) {
+  return request({
+    url: '/smartor/patinhosp',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎鎮h�呬綇闄㈣褰�
+export function delPatinhosp(inhospid) {
+  return request({
+    url: '/smartor/patinhosp/' + inhospid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/svycategory.js b/ruoyi-ui/src/api/smartor/svycategory.js
new file mode 100644
index 0000000..a8b1d4a
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/svycategory.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ闂嵎鍒嗙被鍒楄〃
+export function listSvycategory(query) {
+  return request({
+    url: '/smartor/svycategory/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ闂嵎鍒嗙被璇︾粏
+export function getSvycategory(id) {
+  return request({
+    url: '/smartor/svycategory/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板闂嵎鍒嗙被
+export function addSvycategory(data) {
+  return request({
+    url: '/smartor/svycategory',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼闂嵎鍒嗙被
+export function updateSvycategory(data) {
+  return request({
+    url: '/smartor/svycategory',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎闂嵎鍒嗙被
+export function delSvycategory(id) {
+  return request({
+    url: '/smartor/svycategory/' + id,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/svyexception.js b/ruoyi-ui/src/api/smartor/svyexception.js
new file mode 100644
index 0000000..68f54dc
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/svyexception.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ闂嵎寮傚父鍒楄〃
+export function listSvyexception(query) {
+  return request({
+    url: '/smartor/svyexception/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ闂嵎寮傚父璇︾粏
+export function getSvyexception(ecid) {
+  return request({
+    url: '/smartor/svyexception/' + ecid,
+    method: 'get'
+  })
+}
+
+// 鏂板闂嵎寮傚父
+export function addSvyexception(data) {
+  return request({
+    url: '/smartor/svyexception',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼闂嵎寮傚父
+export function updateSvyexception(data) {
+  return request({
+    url: '/smartor/svyexception',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎闂嵎寮傚父
+export function delSvyexception(ecid) {
+  return request({
+    url: '/smartor/svyexception/' + ecid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/svyresult.js b/ruoyi-ui/src/api/smartor/svyresult.js
new file mode 100644
index 0000000..5858c9f
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/svyresult.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ闂嵎缁撴灉鍒楄〃
+export function listSvyresult(query) {
+  return request({
+    url: '/smartor/svyresult/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ闂嵎缁撴灉璇︾粏
+export function getSvyresult(resultid) {
+  return request({
+    url: '/smartor/svyresult/' + resultid,
+    method: 'get'
+  })
+}
+
+// 鏂板闂嵎缁撴灉
+export function addSvyresult(data) {
+  return request({
+    url: '/smartor/svyresult',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼闂嵎缁撴灉
+export function updateSvyresult(data) {
+  return request({
+    url: '/smartor/svyresult',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎闂嵎缁撴灉
+export function delSvyresult(resultid) {
+  return request({
+    url: '/smartor/svyresult/' + resultid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/svytitle.js b/ruoyi-ui/src/api/smartor/svytitle.js
new file mode 100644
index 0000000..b86e658
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/svytitle.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ闂嵎鍒楄〃
+export function listSvytitle(query) {
+  return request({
+    url: '/smartor/svytitle/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ闂嵎璇︾粏
+export function getSvytitle(svyid) {
+  return request({
+    url: '/smartor/svytitle/' + svyid,
+    method: 'get'
+  })
+}
+
+// 鏂板闂嵎
+export function addSvytitle(data) {
+  return request({
+    url: '/smartor/svytitle',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼闂嵎
+export function updateSvytitle(data) {
+  return request({
+    url: '/smartor/svytitle',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎闂嵎
+export function delSvytitle(svyid) {
+  return request({
+    url: '/smartor/svytitle/' + svyid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/smartor/svytopicoption.js b/ruoyi-ui/src/api/smartor/svytopicoption.js
new file mode 100644
index 0000000..a9ba66d
--- /dev/null
+++ b/ruoyi-ui/src/api/smartor/svytopicoption.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ闂嵎闂閫夐」鍒楄〃
+export function listSvytopicoption(query) {
+  return request({
+    url: '/smartor/svytopicoption/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ闂嵎闂閫夐」璇︾粏
+export function getSvytopicoption(optionid) {
+  return request({
+    url: '/smartor/svytopicoption/' + optionid,
+    method: 'get'
+  })
+}
+
+// 鏂板闂嵎闂閫夐」
+export function addSvytopicoption(data) {
+  return request({
+    url: '/smartor/svytopicoption',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼闂嵎闂閫夐」
+export function updateSvytopicoption(data) {
+  return request({
+    url: '/smartor/svytopicoption',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎闂嵎闂閫夐」
+export function delSvytopicoption(optionid) {
+  return request({
+    url: '/smartor/svytopicoption/' + optionid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/api/system/snytopic.js b/ruoyi-ui/src/api/system/snytopic.js
new file mode 100644
index 0000000..387542c
--- /dev/null
+++ b/ruoyi-ui/src/api/system/snytopic.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ闂嵎棰樼洰鍒楄〃
+export function listSnytopic(query) {
+  return request({
+    url: '/system/snytopic/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ闂嵎棰樼洰璇︾粏
+export function getSnytopic(topicid) {
+  return request({
+    url: '/system/snytopic/' + topicid,
+    method: 'get'
+  })
+}
+
+// 鏂板闂嵎棰樼洰
+export function addSnytopic(data) {
+  return request({
+    url: '/system/snytopic',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼闂嵎棰樼洰
+export function updateSnytopic(data) {
+  return request({
+    url: '/system/snytopic',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎闂嵎棰樼洰
+export function delSnytopic(topicid) {
+  return request({
+    url: '/system/snytopic/' + topicid,
+    method: 'delete'
+  })
+}
diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js
index b370bdd..4e05b6d 100644
--- a/ruoyi-ui/src/router/index.js
+++ b/ruoyi-ui/src/router/index.js
@@ -161,7 +161,21 @@
         meta: { title: '淇敼鐢熸垚閰嶇疆', activeMenu: '/tool/gen' }
       }
     ]
-  }
+  }/*,
+  {
+    path: '/smartor/archive',
+    component: Layout,
+    hidden: true,
+    permissions: ['archive:role:edit'],
+    children: [
+      {
+        path: 'maint',
+        component: () => import('@/views/smartor/archive/maint'),
+        name: 'ArchiveMaint',
+        meta: { title: '鎮h�呯淮鎶�', activeMenu: '/archive/add' }
+      }
+    ]
+  }*/
 ]
 
 // 闃叉杩炵画鐐瑰嚮澶氭璺敱鎶ラ敊
diff --git a/ruoyi-ui/src/views/smartor/archive/index.vue b/ruoyi-ui/src/views/smartor/archive/index.vue
index a5c598e..33c0b8f 100644
--- a/ruoyi-ui/src/views/smartor/archive/index.vue
+++ b/ruoyi-ui/src/views/smartor/archive/index.vue
@@ -1,30 +1,12 @@
 <template>
     <div class="app-container">
-    <el-collapse v-model="activeNames" @change="handleChange">
-  <el-collapse-item title="涓�鑷存�� Consistency" name="1">
-    <div>涓庣幇瀹炵敓娲讳竴鑷达細涓庣幇瀹炵敓娲荤殑娴佺▼銆侀�昏緫淇濇寔涓�鑷达紝閬靛惊鐢ㄦ埛涔犳儻鐨勮瑷�鍜屾蹇碉紱</div>
-    <div>鍦ㄧ晫闈腑涓�鑷达細鎵�鏈夌殑鍏冪礌鍜岀粨鏋勯渶淇濇寔涓�鑷达紝姣斿锛氳璁℃牱寮忋�佸浘鏍囧拰鏂囨湰銆佸厓绱犵殑浣嶇疆绛夈��</div>
-  </el-collapse-item>
-  <el-collapse-item title="鍙嶉 Feedback" name="2">
-    <div>鎺у埗鍙嶉锛氶�氳繃鐣岄潰鏍峰紡鍜屼氦浜掑姩鏁堣鐢ㄦ埛鍙互娓呮櫚鐨勬劅鐭ヨ嚜宸辩殑鎿嶄綔锛�</div>
-    <div>椤甸潰鍙嶉锛氭搷浣滃悗锛岄�氳繃椤甸潰鍏冪礌鐨勫彉鍖栨竻鏅板湴灞曠幇褰撳墠鐘舵�併��</div>
-  </el-collapse-item>
-  <el-collapse-item title="鏁堢巼 Efficiency" name="3">
-    <div>绠�鍖栨祦绋嬶細璁捐绠�娲佺洿瑙傜殑鎿嶄綔娴佺▼锛�</div>
-    <div>娓呮櫚鏄庣‘锛氳瑷�琛ㄨ揪娓呮櫚涓旇〃鎰忔槑纭紝璁╃敤鎴峰揩閫熺悊瑙h繘鑰屼綔鍑哄喅绛栵紱</div>
-    <div>甯姪鐢ㄦ埛璇嗗埆锛氱晫闈㈢畝鍗曠洿鐧斤紝璁╃敤鎴峰揩閫熻瘑鍒�岄潪鍥炲繂锛屽噺灏戠敤鎴疯蹇嗚礋鎷呫��</div>
-  </el-collapse-item>
-  <el-collapse-item title="鍙帶 Controllability" name="4">
-    <div>鐢ㄦ埛鍐崇瓥锛氭牴鎹満鏅彲缁欎簣鐢ㄦ埛鎿嶄綔寤鸿鎴栧畨鍏ㄦ彁绀猴紝浣嗕笉鑳戒唬鏇跨敤鎴疯繘琛屽喅绛栵紱</div>
-    <div>缁撴灉鍙帶锛氱敤鎴峰彲浠ヨ嚜鐢辩殑杩涜鎿嶄綔锛屽寘鎷挙閿�銆佸洖閫�鍜岀粓姝㈠綋鍓嶆搷浣滅瓑銆�</div>
-  </el-collapse-item>
-</el-collapse>
+<!--
     <el-tabs v-model="activeName" @tab-click="handleClick" style="height=128px">
       <el-tab-pane label="鐢ㄦ埛绠$悊" name="first">鐢ㄦ埛绠$悊</el-tab-pane>
       <el-tab-pane label="閰嶇疆绠$悊" name="second">閰嶇疆绠$悊</el-tab-pane>
       <el-tab-pane label="瑙掕壊绠$悊" name="third">瑙掕壊绠$悊</el-tab-pane>
       <el-tab-pane label="瀹氭椂浠诲姟琛ュ伩" name="fourth">瀹氭椂浠诲姟琛ュ伩</el-tab-pane>
-    </el-tabs>
+    </el-tabs>-->
     <el-form :model="queryParams" ref="queryForm"  :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label=" 濮撳悕 " prop="Name">
         <el-input
@@ -517,9 +499,11 @@
     },
     /** 鏂板鎸夐挳鎿嶄綔 */
     handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "娣诲姞鎮h�呮。妗�";
+      //this.reset();
+      //this.open = true;
+      //this.title = "娣诲姞鎮h�呮。妗�1";
+      const params = {};
+      this.$tab.openPage("淇敼", '/smartor/archive/maint', params);
     },
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
diff --git a/ruoyi-ui/src/views/smartor/archive/maint.vue b/ruoyi-ui/src/views/smartor/archive/maint.vue
new file mode 100644
index 0000000..7cad46e
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/archive/maint.vue
@@ -0,0 +1,207 @@
+<template>
+  <div>
+    <el-form :model="form" ref="myForm" :inline="true" label-width="80px">
+      <el-form-item label=" 濮撳悕 " prop="Name">
+        <el-input v-model="form.Name" placeholder="璇疯緭鍏� 濮撳悕 " />
+      </el-form-item>
+      <el-form-item label=" 鎬у埆 " prop="Gender">
+        <el-select v-model="form.Gender" placeholder="璇烽�夋嫨 鎬у埆 ">
+          <el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label"
+            :value="parseInt(dict.value)"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label=" 璇佷欢鍙风爜 " prop="PapersNumber">
+        <el-input v-model="form.PapersNumber" placeholder="璇疯緭鍏� 璇佷欢鍙风爜 " />
+      </el-form-item>
+      <el-form-item label=" 鐢熸棩 " prop="BirthDate">
+        <el-date-picker clearable v-model="form.BirthDate" type="date" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨 鐢熸棩 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 璇佷欢绫诲瀷 " prop="PapersType">
+        <el-select v-model="form.PapersType" placeholder="璇烽�夋嫨 璇佷欢绫诲瀷 ">
+          <el-option v-for="dict in dict.type.sys_idtype" :key="dict.value" :label="dict.label"
+            :value="dict.value"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label=" 鍒犻櫎鏍囪 " prop="delFlag">
+        <el-select v-model="form.delFlag" placeholder="璇烽�夋嫨 鍒犻櫎鏍囪 ">
+          <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
+            :value="dict.value"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label=" 涓婁紶鏍囪 " prop="IsUpload">
+        <el-select v-model="form.IsUpload" placeholder="璇烽�夋嫨 涓婁紶鏍囪 ">
+          <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
+            :value="parseInt(dict.value)"></el-option>
+        </el-select>
+      </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="Age">
+        <el-input v-model="form.Age" placeholder="璇疯緭鍏� 骞撮緞 " />
+      </el-form-item>
+      <el-form-item label=" 寰俊openid " prop="OpenId">
+        <el-input v-model="form.OpenId" placeholder="寰俊openid " />
+      </el-form-item>
+      <!--el-divider content-position="center">鎮h�呴棬璇婅褰曚俊鎭�</el-divider-->
+      <el-collapse v-model="activeNames" @change="handleChange">
+        <el-collapse-item title="鎮h�呴棬璇婅褰曚俊鎭�" name="1">
+          <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+              <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddPatMedOuthosp">娣诲姞</el-button>
+            </el-col>
+            <el-col :span="1.5">
+              <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeletePatMedOuthosp">鍒犻櫎</el-button>
+            </el-col>
+          </el-row>
+          <el-table :data="patMedOuthospList" :row-class-name="rowPatMedOuthospIndex"
+            @selection-change="handlePatMedOuthospSelectionChange" ref="patMedOuthosp">
+            <el-table-column type="selection" width="50" align="center" />
+            <el-table-column label="搴忓彿" align="center" prop="index" width="50" />
+            <el-table-column label=" 娴佹按鍙� " prop="SerialNum" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.SerialNum" placeholder="璇疯緭鍏� 娴佹按鍙� " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 妗fID " prop="PatID" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.PatID" placeholder="璇疯緭鍏� 妗fID " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鍖婚櫌鍚嶇О " prop="HospitalName" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.HospitalName" placeholder="璇疯緭鍏� 鍖婚櫌鍚嶇О " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鍖婚櫌缂栧彿 " prop="HospitalCode" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.HospitalCode" placeholder="璇疯緭鍏� 鍖婚櫌缂栧彿 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 璇婃柇ICD鍊� " prop="Icd10Code" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.Icd10Code" placeholder="璇疯緭鍏� 璇婃柇ICD鍊� " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 璇婃柇鍚嶇О " prop="DiagName" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.DiagName" placeholder="璇疯緭鍏� 璇婃柇鍚嶇О " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 绉戝浠g爜 " prop="DeptCode" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.DeptCode" placeholder="璇疯緭鍏� 绉戝浠g爜 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 绉戝鍚嶇О " prop="DeptName" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.DeptName" placeholder="璇疯緭鍏� 绉戝鍚嶇О " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鍖荤敓宸ュ彿 " prop="DrCode" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.DrCode" placeholder="璇疯緭鍏� 鍖荤敓宸ュ彿 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鍖荤敓鍚嶇О " prop="DrName" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.DrName" placeholder="璇疯緭鍏� 鍖荤敓鍚嶇О " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 灏辫瘖鏃ユ湡 " prop="AdmitDate" width="240">
+              <template slot-scope="scope">
+                <el-date-picker clearable v-model="scope.row.AdmitDate" type="date" value-format="yyyy-MM-dd"
+                  placeholder="璇烽�夋嫨 灏辫瘖鏃ユ湡 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鏈烘瀯ID " prop="OrgID" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.OrgID" placeholder="璇疯緭鍏� 鏈烘瀯ID " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鍒犻櫎鏍囪 " prop="delFlag" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.delFlag" placeholder="璇疯緭鍏� 鍒犻櫎鏍囪 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鏇存柊浜� " prop="updateBy" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.updateBy" placeholder="璇疯緭鍏� 鏇存柊浜� " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鏇存柊鏃堕棿 " prop="updateTime" width="240">
+              <template slot-scope="scope">
+                <el-date-picker clearable v-model="scope.row.updateTime" type="date" value-format="yyyy-MM-dd"
+                  placeholder="璇烽�夋嫨 鏇存柊鏃堕棿 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鍒涘缓浜� " prop="createBy" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.createBy" placeholder="璇疯緭鍏� 鍒涘缓浜� " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 鍒涘缓鏃堕棿 " prop="createTime" width="240">
+              <template slot-scope="scope">
+                <el-date-picker clearable v-model="scope.row.createTime" type="date" value-format="yyyy-MM-dd"
+                  placeholder="璇烽�夋嫨 鍒涘缓鏃堕棿 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 涓婁紶鏍囪 " prop="IsUpload" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.IsUpload" placeholder="璇疯緭鍏� 涓婁紶鏍囪 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 涓婁紶鏃堕棿 " prop="uploadTime" width="240">
+              <template slot-scope="scope">
+                <el-date-picker clearable v-model="scope.row.uploadTime" type="date" value-format="yyyy-MM-dd"
+                  placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 绉戝ID " prop="DeptID" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.DeptID" placeholder="璇疯緭鍏� 绉戝ID " />
+              </template>
+            </el-table-column>
+            <el-table-column label=" 涓昏堪 " prop="MainSuit" width="150">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.MainSuit" placeholder="璇疯緭鍏� 涓昏堪 " />
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-collapse-item>
+        <el-collapse-item title="鎮h�呬綋妫�璁板綍" name="2" />
+        <el-collapse-item title="鎮h�呮寕鍙疯褰�" name="3">
+        </el-collapse-item>
+        <el-collapse-item title="鎮h�呰仈绯绘柟寮�" name="4">
+        </el-collapse-item>
+      </el-collapse>
+
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+      <el-button @click="cancel">鍙� 娑�</el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import { listArchive, getArchive, delArchive, addArchive, updateArchive } from "@/api/smartor/archive";
+
+export default {
+  name: "Archive",
+  dicts: ['sys_idtype', 'sys_yes_no', 'sys_user_sex', 'sys_job_group', 'sys_patientfrom'],
+  data() {
+    return {
+      // 琛ㄥ崟鍙傛暟
+      form: {}
+    };
+  },
+  created() {
+  },
+  methods: {
+    // 琛ㄥ崟閲嶇疆
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/patarchive/index.vue b/ruoyi-ui/src/views/smartor/patarchive/index.vue
new file mode 100644
index 0000000..2358b34
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/patarchive/index.vue
@@ -0,0 +1,430 @@
+<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="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="璇疯緭鍏� 濮撳悕 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 璇佷欢鍙风爜 " prop="iccardno">
+        <el-input
+          v-model="queryParams.iccardno"
+          placeholder="璇疯緭鍏� 璇佷欢鍙风爜 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏉ユ簮 " prop="source">
+        <el-select v-model="queryParams.source" placeholder="璇烽�夋嫨 鏉ユ簮 " clearable>
+          <el-option
+            v-for="dict in dict.type.sys_patientfrom"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label=" 鎵嬫満鍙风爜 " prop="telcode">
+        <el-input
+          v-model="queryParams.telcode"
+          placeholder="璇疯緭鍏� 鎵嬫満鍙风爜 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+        <el-select v-model="queryParams.orgid" placeholder="璇烽�夋嫨 鏈烘瀯ID " clearable>
+          <el-option
+            v-for="dict in dict.type.sys_patientfrom"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </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:patarchive: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:patarchive: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:patarchive: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:patarchive:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="patarchiveList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label=" 鑷ID " align="center" prop="patid" />
+      <el-table-column label=" 濮撳悕 " align="center" prop="name" />
+      <el-table-column label=" 鎬у埆 " align="center" prop="sex">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex"/>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 璇佷欢鍙风爜 " align="center" prop="iccardno" />
+      <el-table-column label=" 鐢熸棩 " align="center" prop="birthdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.birthdate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 骞撮緞 " align="center" prop="age" />
+      <el-table-column label=" 鏉ユ簮 " align="center" prop="source">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_patientfrom" :value="scope.row.source"/>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 鎵嬫満鍙风爜 " align="center" prop="telcode" />
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_patientfrom" :value="scope.row.orgid"/>
+        </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:patarchive:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:patarchive: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="name">
+          <el-input v-model="form.name" placeholder="璇疯緭鍏� 濮撳悕 " />
+        </el-form-item>
+        <el-form-item label=" 鎬у埆 " prop="sex">
+          <el-select v-model="form.sex" placeholder="璇烽�夋嫨 鎬у埆 ">
+            <el-option
+              v-for="dict in dict.type.sys_user_sex"
+              :key="dict.value"
+              :label="dict.label"
+              :value="parseInt(dict.value)"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label=" 璇佷欢鍙风爜 " prop="iccardno">
+          <el-input v-model="form.iccardno" placeholder="璇疯緭鍏� 璇佷欢鍙风爜 " />
+        </el-form-item>
+        <el-form-item label=" 鐢熸棩 " prop="birthdate">
+          <el-date-picker clearable
+            v-model="form.birthdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 鐢熸棩 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 骞撮緞 " prop="age">
+          <el-input v-model="form.age" placeholder="璇疯緭鍏� 骞撮緞 " />
+        </el-form-item>
+        <el-form-item label=" 鏉ユ簮 " prop="source">
+          <el-select v-model="form.source" placeholder="璇烽�夋嫨 鏉ユ簮 ">
+            <el-option
+              v-for="dict in dict.type.sys_patientfrom"
+              :key="dict.value"
+              :label="dict.label"
+              :value="parseInt(dict.value)"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label=" 寤烘。鏃堕棿 " prop="archivetime">
+          <el-date-picker clearable
+            v-model="form.archivetime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 寤烘。鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 寤烘。浜� " prop="archiveby">
+          <el-input v-model="form.archiveby" placeholder="璇疯緭鍏� 寤烘。浜� " />
+        </el-form-item>
+        <el-form-item label=" 鎵嬫満鍙风爜 " prop="telcode">
+          <el-input v-model="form.telcode" placeholder="璇疯緭鍏� 鎵嬫満鍙风爜 " />
+        </el-form-item>
+        <el-form-item label=" 浜插睘鍙风爜 " prop="relativetelcode">
+          <el-input v-model="form.relativetelcode" placeholder="璇疯緭鍏� 浜插睘鍙风爜 " />
+        </el-form-item>
+        <el-form-item label=" 鏈烘瀯ID " prop="orgid">
+          <el-select v-model="form.orgid" placeholder="璇烽�夋嫨 鏈烘瀯ID ">
+            <el-option
+              v-for="dict in dict.type.sys_patientfrom"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label=" 寰俊openid " prop="openid">
+          <el-input v-model="form.openid" placeholder="璇疯緭鍏� 寰俊openid " />
+        </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 { listPatarchive, getPatarchive, delPatarchive, addPatarchive, updatePatarchive } from "@/api/smartor/patarchive";
+
+export default {
+  name: "Patarchive",
+  dicts: ['sys_user_sex', 'sys_patientfrom'],
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鎮h�呮。妗堣〃鏍兼暟鎹�
+      patarchiveList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: null,
+        iccardno: null,
+        source: null,
+        telcode: 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: {
+    /** 鏌ヨ鎮h�呮。妗堝垪琛� */
+    getList() {
+      this.loading = true;
+      listPatarchive(this.queryParams).then(response => {
+        this.patarchiveList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        patid: null,
+        name: null,
+        sex: null,
+        iccardno: null,
+        birthdate: null,
+        age: null,
+        source: null,
+        archivetime: null,
+        archiveby: null,
+        telcode: null,
+        relativetelcode: null,
+        iccardtype: null,
+        orgid: null,
+        openid: 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.patid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞鎮h�呮。妗�";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const patid = row.patid || this.ids
+      getPatarchive(patid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼鎮h�呮。妗�";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.patid != null) {
+            updatePatarchive(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addPatarchive(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const patids = row.patid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎鎮h�呮。妗堢紪鍙蜂负"' + patids + '"鐨勬暟鎹」锛�').then(function() {
+        return delPatarchive(patids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/patarchive/export', {
+        ...this.queryParams
+      }, `patarchive_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/patinhosp/index.vue b/ruoyi-ui/src/views/smartor/patinhosp/index.vue
new file mode 100644
index 0000000..e007cd6
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/patinhosp/index.vue
@@ -0,0 +1,468 @@
+<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="hospitalname">
+        <el-input
+          v-model="queryParams.hospitalname"
+          placeholder="璇疯緭鍏� 鍖婚櫌鍚嶇О "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 闄㈠尯鍚嶇О " prop="hospitaldistrictname">
+        <el-input
+          v-model="queryParams.hospitaldistrictname"
+          placeholder="璇疯緭鍏� 闄㈠尯鍚嶇О "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍑洪櫌鏃堕棿 " prop="endtime">
+        <el-date-picker clearable
+          v-model="queryParams.endtime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="璇烽�夋嫨 鍑洪櫌鏃堕棿 ">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label=" 鍑洪櫌璇婃柇 " prop="leavediagname">
+        <el-input
+          v-model="queryParams.leavediagname"
+          placeholder="璇疯緭鍏� 鍑洪櫌璇婃柇 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍖荤敓鍚嶇О " prop="drname">
+        <el-input
+          v-model="queryParams.drname"
+          placeholder="璇疯緭鍏� 鍖荤敓鍚嶇О "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍑洪櫌绉戝鍚嶇О " prop="leaveldeptname">
+        <el-input
+          v-model="queryParams.leaveldeptname"
+          placeholder="璇疯緭鍏� 鍑洪櫌绉戝鍚嶇О "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍑洪櫌鐥呭尯鍚嶇О " prop="leavehospitaldistrictname">
+        <el-input
+          v-model="queryParams.leavehospitaldistrictname"
+          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:patinhosp: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:patinhosp: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:patinhosp: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:patinhosp:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="patinhospList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label=" 鑷ID " align="center" prop="inhospid" />
+      <el-table-column label=" 鍖婚櫌鍚嶇О " align="center" prop="hospitalname" />
+      <el-table-column label=" 闄㈠尯鍚嶇О " align="center" prop="hospitaldistrictname" />
+      <el-table-column label=" 鍏ラ櫌鏃堕棿 " align="center" prop="starttime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.starttime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 鍑洪櫌鏃堕棿 " align="center" prop="endtime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endtime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label=" 搴婁綅鍙� " align="center" prop="bedno" />
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <el-table-column label=" 鍑洪櫌璇婃柇 " align="center" prop="leavediagname" />
+      <el-table-column label=" 鍖荤敓鍚嶇О " align="center" prop="drname" />
+      <el-table-column label=" 鍑洪櫌绉戝鍚嶇О " align="center" prop="leaveldeptname" />
+      <el-table-column label=" 鍑洪櫌鐥呭尯鍚嶇О " align="center" prop="leavehospitaldistrictname" />
+      <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:patinhosp:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:patinhosp: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="serialnum">
+          <el-input v-model="form.serialnum" placeholder="璇疯緭鍏� 娴佹按鍙� " />
+        </el-form-item>
+        <el-form-item label=" 鍖婚櫌鍚嶇О " prop="hospitalname">
+          <el-input v-model="form.hospitalname" placeholder="璇疯緭鍏� 鍖婚櫌鍚嶇О " />
+        </el-form-item>
+        <el-form-item label=" 鍖婚櫌缂栧彿 " prop="hospitalcode">
+          <el-input v-model="form.hospitalcode" placeholder="璇疯緭鍏� 鍖婚櫌缂栧彿 " />
+        </el-form-item>
+        <el-form-item label=" 闄㈠尯缂栧彿 " prop="hospitaldistrictcode">
+          <el-input v-model="form.hospitaldistrictcode" placeholder="璇疯緭鍏� 闄㈠尯缂栧彿 " />
+        </el-form-item>
+        <el-form-item label=" 闄㈠尯鍚嶇О " prop="hospitaldistrictname">
+          <el-input v-model="form.hospitaldistrictname" placeholder="璇疯緭鍏� 闄㈠尯鍚嶇О " />
+        </el-form-item>
+        <el-form-item label=" 鍏ラ櫌璇婃柇ICD鍊� " prop="icd10code">
+          <el-input v-model="form.icd10code" placeholder="璇疯緭鍏� 鍏ラ櫌璇婃柇ICD鍊� " />
+        </el-form-item>
+        <el-form-item label=" 鍏ラ櫌璇婃柇鍚嶇О " prop="diagname">
+          <el-input v-model="form.diagname" placeholder="璇疯緭鍏� 鍏ラ櫌璇婃柇鍚嶇О " />
+        </el-form-item>
+        <el-form-item label=" 鍏ラ櫌鏃堕棿 " prop="starttime">
+          <el-date-picker clearable
+            v-model="form.starttime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 鍏ラ櫌鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌鏃堕棿 " prop="endtime">
+          <el-date-picker clearable
+            v-model="form.endtime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨 鍑洪櫌鏃堕棿 ">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label=" 鍏ラ櫌绉戝浠g爜 " prop="deptcode">
+          <el-input v-model="form.deptcode" placeholder="璇疯緭鍏� 鍏ラ櫌绉戝浠g爜 " />
+        </el-form-item>
+        <el-form-item label=" 鍏ラ櫌绉戝鍚嶇О " prop="deptname">
+          <el-input v-model="form.deptname" placeholder="璇疯緭鍏� 鍏ラ櫌绉戝鍚嶇О " />
+        </el-form-item>
+        <el-form-item label=" 鎴块棿鍙� " prop="roomno">
+          <el-input v-model="form.roomno" placeholder="璇疯緭鍏� 鎴块棿鍙� " />
+        </el-form-item>
+        <el-form-item label=" 搴婁綅鍙� " prop="bedno">
+          <el-input v-model="form.bedno" 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=" 妗fID " prop="patid">
+          <el-input v-model="form.patid" placeholder="璇疯緭鍏� 妗fID " />
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌璇婃柇 " prop="leavediagname">
+          <el-input v-model="form.leavediagname" placeholder="璇疯緭鍏� 鍑洪櫌璇婃柇 " />
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌璇婃柇ICD鍊� " prop="leaveicd10code">
+          <el-input v-model="form.leaveicd10code" placeholder="璇疯緭鍏� 鍑洪櫌璇婃柇ICD鍊� " />
+        </el-form-item>
+        <el-form-item label=" 鍖荤敓宸ュ彿 " prop="drcode">
+          <el-input v-model="form.drcode" placeholder="璇疯緭鍏� 鍖荤敓宸ュ彿 " />
+        </el-form-item>
+        <el-form-item label=" 鍖荤敓鍚嶇О " prop="drname">
+          <el-input v-model="form.drname" placeholder="璇疯緭鍏� 鍖荤敓鍚嶇О " />
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌绉戝浠g爜 " prop="leaveldeptcode">
+          <el-input v-model="form.leaveldeptcode" placeholder="璇疯緭鍏� 鍑洪櫌绉戝浠g爜 " />
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌绉戝鍚嶇О " prop="leaveldeptname">
+          <el-input v-model="form.leaveldeptname" placeholder="璇疯緭鍏� 鍑洪櫌绉戝鍚嶇О " />
+        </el-form-item>
+        <el-form-item label=" 鐥呭尯ID " prop="hospitaldistrictid">
+          <el-input v-model="form.hospitaldistrictid" placeholder="璇疯緭鍏� 鐥呭尯ID " />
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌鐥呭尯缂栧彿 " prop="leavehospitaldistrictcode">
+          <el-input v-model="form.leavehospitaldistrictcode" placeholder="璇疯緭鍏� 鍑洪櫌鐥呭尯缂栧彿 " />
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌鐥呭尯鍚嶇О " prop="leavehospitaldistrictname">
+          <el-input v-model="form.leavehospitaldistrictname" placeholder="璇疯緭鍏� 鍑洪櫌鐥呭尯鍚嶇О " />
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌鐥呭尯ID " prop="leavehospitaldistrictid">
+          <el-input v-model="form.leavehospitaldistrictid" placeholder="璇疯緭鍏� 鍑洪櫌鐥呭尯ID " />
+        </el-form-item>
+        <el-form-item label=" 鍏ラ櫌绉戝ID " prop="deptid">
+          <el-input v-model="form.deptid" placeholder="璇疯緭鍏� 鍏ラ櫌绉戝ID " />
+        </el-form-item>
+        <el-form-item label=" 鍑洪櫌绉戝ID " prop="leaveldeptid">
+          <el-input v-model="form.leaveldeptid" placeholder="璇疯緭鍏� 鍑洪櫌绉戝ID " />
+        </el-form-item>
+        <el-form-item label=" 鏂规鐘舵�佹搷浣滄椂闂� " prop="schemetime">
+          <el-date-picker clearable
+            v-model="form.schemetime"
+            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 { listPatinhosp, getPatinhosp, delPatinhosp, addPatinhosp, updatePatinhosp } from "@/api/smartor/patinhosp";
+
+export default {
+  name: "Patinhosp",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鎮h�呬綇闄㈣褰曡〃鏍兼暟鎹�
+      patinhospList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        hospitalname: null,
+        hospitaldistrictname: null,
+        endtime: null,
+        leavediagname: null,
+        drname: null,
+        leaveldeptname: null,
+        leavehospitaldistrictname: null,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ鎮h�呬綇闄㈣褰曞垪琛� */
+    getList() {
+      this.loading = true;
+      listPatinhosp(this.queryParams).then(response => {
+        this.patinhospList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        inhospid: null,
+        serialnum: null,
+        hospitalname: null,
+        hospitalcode: null,
+        hospitaldistrictcode: null,
+        hospitaldistrictname: null,
+        icd10code: null,
+        diagname: null,
+        starttime: null,
+        endtime: null,
+        deptcode: null,
+        deptname: null,
+        roomno: null,
+        bedno: null,
+        orgid: null,
+        delFlag: null,
+        updateBy: null,
+        updateTime: null,
+        createBy: null,
+        createTime: null,
+        isupload: null,
+        uploadTime: null,
+        patid: null,
+        leavediagname: null,
+        leaveicd10code: null,
+        drcode: null,
+        drname: null,
+        schemestatus: null,
+        generalschemestatus: null,
+        leaveldeptcode: null,
+        leaveldeptname: null,
+        hospitaldistrictid: null,
+        leavehospitaldistrictcode: null,
+        leavehospitaldistrictname: null,
+        leavehospitaldistrictid: null,
+        deptid: null,
+        leaveldeptid: null,
+        schemetime: 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.inhospid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞鎮h�呬綇闄㈣褰�";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const inhospid = row.inhospid || this.ids
+      getPatinhosp(inhospid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼鎮h�呬綇闄㈣褰�";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.inhospid != null) {
+            updatePatinhosp(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addPatinhosp(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const inhospids = row.inhospid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎鎮h�呬綇闄㈣褰曠紪鍙蜂负"' + inhospids + '"鐨勬暟鎹」锛�').then(function() {
+        return delPatinhosp(inhospids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/patinhosp/export', {
+        ...this.queryParams
+      }, `patinhosp_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/svycategory/index.vue b/ruoyi-ui/src/views/smartor/svycategory/index.vue
new file mode 100644
index 0000000..1a58f81
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/svycategory/index.vue
@@ -0,0 +1,286 @@
+<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>
+        <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:svycategory: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:svycategory: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:svycategory: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:svycategory:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="svycategoryList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label=" 鑷ID " align="center" prop="id" />
+      <el-table-column label=" 鍒嗙被鍚嶇О " align="center" prop="categoryname" />
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['smartor:svycategory:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:svycategory: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="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 { listSvycategory, getSvycategory, delSvycategory, addSvycategory, updateSvycategory } from "@/api/smartor/svycategory";
+
+export default {
+  name: "Svycategory",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 闂嵎鍒嗙被琛ㄦ牸鏁版嵁
+      svycategoryList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        categoryname: null,
+        orgid: null,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ闂嵎鍒嗙被鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listSvycategory(this.queryParams).then(response => {
+        this.svycategoryList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: 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.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞闂嵎鍒嗙被";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getSvycategory(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼闂嵎鍒嗙被";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateSvycategory(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSvycategory(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎闂嵎鍒嗙被缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+        return delSvycategory(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/svycategory/export', {
+        ...this.queryParams
+      }, `svycategory_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/svyexception/index.vue b/ruoyi-ui/src/views/smartor/svyexception/index.vue
new file mode 100644
index 0000000..d14a66d
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/svyexception/index.vue
@@ -0,0 +1,456 @@
+<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="oldid">
+        <el-input
+          v-model="queryParams.oldid"
+          placeholder="璇疯緭鍏� 涓婁釜鐗堟湰ID "
+          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=" 闂閫夐」ID " prop="questionoptionid">
+        <el-input
+          v-model="queryParams.questionoptionid"
+          placeholder="璇疯緭鍏� 闂閫夐」ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 棰樼洰ID " prop="topicid">
+        <el-input
+          v-model="queryParams.topicid"
+          placeholder="璇疯緭鍏� 棰樼洰ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 闂嵎ID " prop="psqid">
+        <el-input
+          v-model="queryParams.psqid"
+          placeholder="璇疯緭鍏� 闂嵎ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓旀垨 " prop="orand">
+        <el-input
+          v-model="queryParams.orand"
+          placeholder="璇疯緭鍏� 涓旀垨 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 瑙勫垯楠岃瘉 " prop="ruleverify">
+        <el-input
+          v-model="queryParams.ruleverify"
+          placeholder="璇疯緭鍏� 瑙勫垯楠岃瘉 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 瑙勫垯鏉′欢 " prop="ruleconditions">
+        <el-input
+          v-model="queryParams.ruleconditions"
+          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=" 鐖舵潯浠禝D " prop="grouporand">
+        <el-input
+          v-model="queryParams.grouporand"
+          placeholder="璇疯緭鍏� 鐖舵潯浠禝D "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 瀛愭潯浠剁紪鍙� " prop="number">
+        <el-input
+          v-model="queryParams.number"
+          placeholder="璇疯緭鍏� 瀛愭潯浠剁紪鍙� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁璺熻釜 " prop="istrack">
+        <el-input
+          v-model="queryParams.istrack"
+          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:svyexception: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:svyexception: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:svyexception: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:svyexception:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="svyexceptionList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label=" 鑷ID " align="center" prop="ecid" />
+      <el-table-column label=" 涓婁釜鐗堟湰ID " align="center" prop="oldid" />
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <el-table-column label=" 闂閫夐」ID " align="center" prop="questionoptionid" />
+      <el-table-column label=" 棰樼洰ID " align="center" prop="topicid" />
+      <el-table-column label=" 闂嵎ID " align="center" prop="psqid" />
+      <el-table-column label=" 涓旀垨 " align="center" prop="orand" />
+      <el-table-column label=" 瑙勫垯楠岃瘉 " align="center" prop="ruleverify" />
+      <el-table-column label=" 瑙勫垯鏉′欢 " align="center" prop="ruleconditions" />
+      <el-table-column label=" 瑙勫垯鍐呭 " align="center" prop="rulecontent" />
+      <el-table-column label=" 缁勭紪鍙� " align="center" prop="groupnumber" />
+      <el-table-column label=" 鐖舵潯浠禝D " align="center" prop="grouporand" />
+      <el-table-column label=" 瀛愭潯浠剁紪鍙� " align="center" prop="number" />
+      <el-table-column label=" 鏄惁璺熻釜 " align="center" prop="istrack" />
+      <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:svyexception:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:svyexception:remove']"
+          >鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀归棶鍗峰紓甯稿璇濇 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label=" 涓婁釜鐗堟湰ID " prop="oldid">
+          <el-input v-model="form.oldid" placeholder="璇疯緭鍏� 涓婁釜鐗堟湰ID " />
+        </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=" 闂閫夐」ID " prop="questionoptionid">
+          <el-input v-model="form.questionoptionid" placeholder="璇疯緭鍏� 闂閫夐」ID " />
+        </el-form-item>
+        <el-form-item label=" 棰樼洰ID " prop="topicid">
+          <el-input v-model="form.topicid" placeholder="璇疯緭鍏� 棰樼洰ID " />
+        </el-form-item>
+        <el-form-item label=" 闂嵎ID " prop="psqid">
+          <el-input v-model="form.psqid" placeholder="璇疯緭鍏� 闂嵎ID " />
+        </el-form-item>
+        <el-form-item label=" 涓旀垨 " prop="orand">
+          <el-input v-model="form.orand" placeholder="璇疯緭鍏� 涓旀垨 " />
+        </el-form-item>
+        <el-form-item label=" 瑙勫垯楠岃瘉 " prop="ruleverify">
+          <el-input v-model="form.ruleverify" placeholder="璇疯緭鍏� 瑙勫垯楠岃瘉 " />
+        </el-form-item>
+        <el-form-item label=" 瑙勫垯鏉′欢 " prop="ruleconditions">
+          <el-input v-model="form.ruleconditions" placeholder="璇疯緭鍏� 瑙勫垯鏉′欢 " />
+        </el-form-item>
+        <el-form-item label=" 瑙勫垯鍐呭 ">
+          <editor v-model="form.rulecontent" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label=" 缁勭紪鍙� " prop="groupnumber">
+          <el-input v-model="form.groupnumber" placeholder="璇疯緭鍏� 缁勭紪鍙� " />
+        </el-form-item>
+        <el-form-item label=" 鐖舵潯浠禝D " prop="grouporand">
+          <el-input v-model="form.grouporand" placeholder="璇疯緭鍏� 鐖舵潯浠禝D " />
+        </el-form-item>
+        <el-form-item label=" 瀛愭潯浠剁紪鍙� " prop="number">
+          <el-input v-model="form.number" placeholder="璇疯緭鍏� 瀛愭潯浠剁紪鍙� " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁璺熻釜 " prop="istrack">
+          <el-input v-model="form.istrack" 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 { listSvyexception, getSvyexception, delSvyexception, addSvyexception, updateSvyexception } from "@/api/smartor/svyexception";
+
+export default {
+  name: "Svyexception",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 闂嵎寮傚父琛ㄦ牸鏁版嵁
+      svyexceptionList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        oldid: null,
+        orgid: null,
+        questionoptionid: null,
+        topicid: null,
+        psqid: null,
+        orand: null,
+        ruleverify: null,
+        ruleconditions: null,
+        rulecontent: null,
+        groupnumber: null,
+        grouporand: null,
+        number: null,
+        istrack: null,
+        isupload: null,
+        uploadTime: null
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ闂嵎寮傚父鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listSvyexception(this.queryParams).then(response => {
+        this.svyexceptionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        ecid: null,
+        oldid: null,
+        orgid: null,
+        questionoptionid: null,
+        topicid: null,
+        psqid: null,
+        orand: null,
+        ruleverify: null,
+        ruleconditions: null,
+        rulecontent: null,
+        groupnumber: null,
+        grouporand: null,
+        number: null,
+        istrack: 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.ecid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞闂嵎寮傚父";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const ecid = row.ecid || this.ids
+      getSvyexception(ecid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼闂嵎寮傚父";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.ecid != null) {
+            updateSvyexception(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSvyexception(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ecids = row.ecid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎闂嵎寮傚父缂栧彿涓�"' + ecids + '"鐨勬暟鎹」锛�').then(function() {
+        return delSvyexception(ecids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/svyexception/export', {
+        ...this.queryParams
+      }, `svyexception_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/svyresult/index.vue b/ruoyi-ui/src/views/smartor/svyresult/index.vue
new file mode 100644
index 0000000..e02b12b
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/svyresult/index.vue
@@ -0,0 +1,358 @@
+<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="svyid">
+        <el-input
+          v-model="queryParams.svyid"
+          placeholder="璇疯緭鍏� 闂嵎ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鎴栦笖 " prop="orand">
+        <el-input
+          v-model="queryParams.orand"
+          placeholder="璇疯緭鍏� 鎴栦笖 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁鏄剧ず寰楀垎 " prop="isshowscore">
+        <el-input
+          v-model="queryParams.isshowscore"
+          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=" 鏈烘瀯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:svyresult: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:svyresult: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:svyresult: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:svyresult:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="svyresultList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label=" 鑷ID " align="center" prop="resultid" />
+      <el-table-column label=" 闂嵎ID " align="center" prop="svyid" />
+      <el-table-column label=" 缁撴灉鍐呭 " align="center" prop="resultcontent" />
+      <el-table-column label=" 鎴栦笖 " align="center" prop="orand" />
+      <el-table-column label=" 鏄惁鏄剧ず寰楀垎 " align="center" prop="isshowscore" />
+      <el-table-column label=" 鎺掑簭 " align="center" prop="sort" />
+      <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:svyresult:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:svyresult:remove']"
+          >鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀归棶鍗风粨鏋滃璇濇 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label=" 闂嵎ID " prop="svyid">
+          <el-input v-model="form.svyid" placeholder="璇疯緭鍏� 闂嵎ID " />
+        </el-form-item>
+        <el-form-item label=" 缁撴灉鍐呭 ">
+          <editor v-model="form.resultcontent" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label=" 鎴栦笖 " prop="orand">
+          <el-input v-model="form.orand" placeholder="璇疯緭鍏� 鎴栦笖 " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁鏄剧ず寰楀垎 " prop="isshowscore">
+          <el-input v-model="form.isshowscore" 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="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 { listSvyresult, getSvyresult, delSvyresult, addSvyresult, updateSvyresult } from "@/api/smartor/svyresult";
+
+export default {
+  name: "Svyresult",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 闂嵎缁撴灉琛ㄦ牸鏁版嵁
+      svyresultList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        svyid: null,
+        resultcontent: null,
+        orand: null,
+        isshowscore: null,
+        sort: 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: {
+    /** 鏌ヨ闂嵎缁撴灉鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listSvyresult(this.queryParams).then(response => {
+        this.svyresultList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        resultid: null,
+        svyid: null,
+        resultcontent: null,
+        orand: null,
+        isshowscore: null,
+        sort: null,
+        orgid: null,
+        delFlag: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: 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.resultid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞闂嵎缁撴灉";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const resultid = row.resultid || this.ids
+      getSvyresult(resultid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼闂嵎缁撴灉";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.resultid != null) {
+            updateSvyresult(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSvyresult(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const resultids = row.resultid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎闂嵎缁撴灉缂栧彿涓�"' + resultids + '"鐨勬暟鎹」锛�').then(function() {
+        return delSvyresult(resultids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/svyresult/export', {
+        ...this.queryParams
+      }, `svyresult_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/svytitle/index.vue b/ruoyi-ui/src/views/smartor/svytitle/index.vue
new file mode 100644
index 0000000..b4a7b12
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/svytitle/index.vue
@@ -0,0 +1,440 @@
+<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=" 闂嵎浠g爜 " prop="svycode">
+        <el-input
+          v-model="queryParams.svycode"
+          placeholder="璇疯緭鍏� 闂嵎浠g爜 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 闂嵎鍚嶇О " prop="svyname">
+        <el-input
+          v-model="queryParams.svyname"
+          placeholder="璇疯緭鍏� 闂嵎鍚嶇О "
+          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="version">
+        <el-input
+          v-model="queryParams.version"
+          placeholder="璇疯緭鍏� 鐗堟湰 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓績搴撲唬鐮� " prop="centerlibrarycode">
+        <el-input
+          v-model="queryParams.centerlibrarycode"
+          placeholder="璇疯緭鍏� 涓績搴撲唬鐮� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 涓績搴揑D " prop="centerlibraryid">
+        <el-input
+          v-model="queryParams.centerlibraryid"
+          placeholder="璇疯緭鍏� 涓績搴揑D "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁鏈湴 " prop="islocal">
+        <el-input
+          v-model="queryParams.islocal"
+          placeholder="璇疯緭鍏� 鏄惁鏈湴 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </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 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:svytitle: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:svytitle: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:svytitle: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:svytitle:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="svytitleList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label=" 鑷ID " align="center" prop="svyid" />
+      <el-table-column label=" 闂嵎鍒嗙被ID " align="center" prop="categoryid" />
+      <el-table-column label=" 闂嵎浠g爜 " align="center" prop="svycode" />
+      <el-table-column label=" 闂嵎鍚嶇О " align="center" prop="svyname" />
+      <el-table-column label=" 鎻忚堪 " align="center" prop="description" />
+      <el-table-column label=" 闂嵎浠嬬粛 " align="center" prop="introduce" />
+      <el-table-column label=" 闂嵎鎻愮ず " align="center" prop="submitprompt" />
+      <el-table-column label=" 妯℃澘ID " align="center" prop="templateid" />
+      <el-table-column label=" 鐗堟湰 " align="center" prop="version" />
+      <el-table-column label=" 涓績搴撲唬鐮� " align="center" prop="centerlibrarycode" />
+      <el-table-column label=" 涓績搴揑D " align="center" prop="centerlibraryid" />
+      <el-table-column label=" 鏄惁鏈湴 " align="center" prop="islocal" />
+      <el-table-column label=" 鏄惁鍚敤 " align="center" prop="isenable" />
+      <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:svytitle:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:svytitle:remove']"
+          >鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀归棶鍗峰璇濇 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label=" 闂嵎鍒嗙被ID " prop="categoryid">
+          <el-input v-model="form.categoryid" placeholder="璇疯緭鍏� 闂嵎鍒嗙被ID " />
+        </el-form-item>
+        <el-form-item label=" 闂嵎浠g爜 " prop="svycode">
+          <el-input v-model="form.svycode" placeholder="璇疯緭鍏� 闂嵎浠g爜 " />
+        </el-form-item>
+        <el-form-item label=" 闂嵎鍚嶇О " prop="svyname">
+          <el-input v-model="form.svyname" 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="introduce">
+          <el-input v-model="form.introduce" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
+        </el-form-item>
+        <el-form-item label=" 闂嵎鎻愮ず " prop="submitprompt">
+          <el-input v-model="form.submitprompt" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
+        </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="version">
+          <el-input v-model="form.version" placeholder="璇疯緭鍏� 鐗堟湰 " />
+        </el-form-item>
+        <el-form-item label=" 涓績搴撲唬鐮� " prop="centerlibrarycode">
+          <el-input v-model="form.centerlibrarycode" placeholder="璇疯緭鍏� 涓績搴撲唬鐮� " />
+        </el-form-item>
+        <el-form-item label=" 涓績搴揑D " prop="centerlibraryid">
+          <el-input v-model="form.centerlibraryid" placeholder="璇疯緭鍏� 涓績搴揑D " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁鏈湴 " prop="islocal">
+          <el-input v-model="form.islocal" placeholder="璇疯緭鍏� 鏄惁鏈湴 " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁鍚敤 " prop="isenable">
+          <el-input v-model="form.isenable" 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 { listSvytitle, getSvytitle, delSvytitle, addSvytitle, updateSvytitle } from "@/api/smartor/svytitle";
+
+export default {
+  name: "Svytitle",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 闂嵎琛ㄦ牸鏁版嵁
+      svytitleList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        categoryid: null,
+        svycode: null,
+        svyname: null,
+        description: null,
+        introduce: null,
+        submitprompt: null,
+        templateid: null,
+        version: null,
+        centerlibrarycode: null,
+        centerlibraryid: null,
+        islocal: null,
+        isenable: 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: {
+    /** 鏌ヨ闂嵎鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listSvytitle(this.queryParams).then(response => {
+        this.svytitleList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        svyid: null,
+        categoryid: null,
+        svycode: null,
+        svyname: null,
+        description: null,
+        introduce: null,
+        submitprompt: null,
+        templateid: null,
+        version: null,
+        centerlibrarycode: null,
+        centerlibraryid: null,
+        islocal: null,
+        isenable: null,
+        orgid: null,
+        delFlag: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: 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.svyid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞闂嵎";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const svyid = row.svyid || this.ids
+      getSvytitle(svyid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼闂嵎";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.svyid != null) {
+            updateSvytitle(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSvytitle(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const svyids = row.svyid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎闂嵎缂栧彿涓�"' + svyids + '"鐨勬暟鎹」锛�').then(function() {
+        return delSvytitle(svyids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/svytitle/export', {
+        ...this.queryParams
+      }, `svytitle_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/smartor/svytopicoption/index.vue b/ruoyi-ui/src/views/smartor/svytopicoption/index.vue
new file mode 100644
index 0000000..278718a
--- /dev/null
+++ b/ruoyi-ui/src/views/smartor/svytopicoption/index.vue
@@ -0,0 +1,574 @@
+<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="topicid">
+        <el-input
+          v-model="queryParams.topicid"
+          placeholder="璇疯緭鍏� 棰樼洰ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 闂嵎ID " prop="svyid">
+        <el-input
+          v-model="queryParams.svyid"
+          placeholder="璇疯緭鍏� 闂嵎ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 閫夐」Code " prop="optioncode">
+        <el-input
+          v-model="queryParams.optioncode"
+          placeholder="璇疯緭鍏� 閫夐」Code "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁瀛樺湪鏄庣粏 " prop="isexistdetail">
+        <el-input
+          v-model="queryParams.isexistdetail"
+          placeholder="璇疯緭鍏� 鏄惁瀛樺湪鏄庣粏 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄庣粏鏄惁蹇呭~ " prop="detailismandatory">
+        <el-input
+          v-model="queryParams.detailismandatory"
+          placeholder="璇疯緭鍏� 鏄庣粏鏄惁蹇呭~ "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁寮傚父椤圭洰 " prop="isexceptionitem">
+        <el-input
+          v-model="queryParams.isexceptionitem"
+          placeholder="璇疯緭鍏� 鏄惁寮傚父椤圭洰 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁璺熻繘 " prop="istrack">
+        <el-input
+          v-model="queryParams.istrack"
+          placeholder="璇疯緭鍏� 鏄惁璺熻繘 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鍒嗘暟 " prop="score">
+        <el-input
+          v-model="queryParams.score"
+          placeholder="璇疯緭鍏� 鍒嗘暟 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鎻愮ず " prop="prompt">
+        <el-input
+          v-model="queryParams.prompt"
+          placeholder="璇疯緭鍏� 鎻愮ず "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 璺宠浆 " prop="jump">
+        <el-input
+          v-model="queryParams.jump"
+          placeholder="璇疯緭鍏� 璺宠浆 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鐖堕�夐」ID " prop="parentoptionid">
+        <el-input
+          v-model="queryParams.parentoptionid"
+          placeholder="璇疯緭鍏� 鐖堕�夐」ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁浜掓枼 " prop="ismutex">
+        <el-input
+          v-model="queryParams.ismutex"
+          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=" 鎺掑簭 " prop="sort">
+        <el-input
+          v-model="queryParams.sort"
+          placeholder="璇疯緭鍏� 鎺掑簭 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁闄愬埗鑼冨洿 " prop="isrange">
+        <el-input
+          v-model="queryParams.isrange"
+          placeholder="璇疯緭鍏� 鏄惁闄愬埗鑼冨洿 "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏈�灏忚寖鍥� " prop="minrange">
+        <el-input
+          v-model="queryParams.minrange"
+          placeholder="璇疯緭鍏� 鏈�灏忚寖鍥� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏈�澶ц寖鍥� " prop="maxrange">
+        <el-input
+          v-model="queryParams.maxrange"
+          placeholder="璇疯緭鍏� 鏈�澶ц寖鍥� "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鑼冨洿闀垮害;鐢ㄤ簬灏忔暟淇濈暀浣嶆暟 " prop="rangelength">
+        <el-input
+          v-model="queryParams.rangelength"
+          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=" 涓婁竴鐗堟湰ID " prop="oldid">
+        <el-input
+          v-model="queryParams.oldid"
+          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:svytopicoption: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:svytopicoption: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:svytopicoption: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:svytopicoption:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="svytopicoptionList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label=" 鑷ID " align="center" prop="optionid" />
+      <el-table-column label=" 棰樼洰ID " align="center" prop="topicid" />
+      <el-table-column label=" 闂嵎ID " align="center" prop="svyid" />
+      <el-table-column label=" 棰樼洰绫诲瀷 " align="center" prop="topictype" />
+      <el-table-column label=" 閫夐」Code " align="center" prop="optioncode" />
+      <el-table-column label=" 閫夐」鍐呭 " align="center" prop="optioncontent" />
+      <el-table-column label=" 鏄惁瀛樺湪鏄庣粏 " align="center" prop="isexistdetail" />
+      <el-table-column label=" 鏄庣粏鏄惁蹇呭~ " align="center" prop="detailismandatory" />
+      <el-table-column label=" 鏄惁寮傚父椤圭洰 " align="center" prop="isexceptionitem" />
+      <el-table-column label=" 鏄惁璺熻繘 " align="center" prop="istrack" />
+      <el-table-column label=" 鍒嗘暟 " align="center" prop="score" />
+      <el-table-column label=" 鎻愮ず " align="center" prop="prompt" />
+      <el-table-column label=" 璺宠浆 " align="center" prop="jump" />
+      <el-table-column label=" 鐖堕�夐」ID " align="center" prop="parentoptionid" />
+      <el-table-column label=" 鏄惁浜掓枼 " align="center" prop="ismutex" />
+      <el-table-column label=" 楠岃瘉瑙勫垯 " align="center" prop="verifyrule" />
+      <el-table-column label=" 鎺掑簭 " align="center" prop="sort" />
+      <el-table-column label=" 楠岃瘉绫诲瀷;0.涓嶉獙璇� 1.鏁存暟 2.灏忔暟 3.鎵嬫満鍙� 4.韬唤璇� 5.鏃ユ湡 " align="center" prop="verificationtype" />
+      <el-table-column label=" 鏄惁闄愬埗鑼冨洿 " align="center" prop="isrange" />
+      <el-table-column label=" 鏈�灏忚寖鍥� " align="center" prop="minrange" />
+      <el-table-column label=" 鏈�澶ц寖鍥� " align="center" prop="maxrange" />
+      <el-table-column label=" 鑼冨洿闀垮害;鐢ㄤ簬灏忔暟淇濈暀浣嶆暟 " align="center" prop="rangelength" />
+      <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" />
+      <el-table-column label=" 涓婁竴鐗堟湰ID " align="center" prop="oldid" />
+      <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:svytopicoption:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['smartor:svytopicoption:remove']"
+          >鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀归棶鍗烽棶棰橀�夐」瀵硅瘽妗� -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label=" 棰樼洰ID " prop="topicid">
+          <el-input v-model="form.topicid" placeholder="璇疯緭鍏� 棰樼洰ID " />
+        </el-form-item>
+        <el-form-item label=" 闂嵎ID " prop="svyid">
+          <el-input v-model="form.svyid" placeholder="璇疯緭鍏� 闂嵎ID " />
+        </el-form-item>
+        <el-form-item label=" 閫夐」Code " prop="optioncode">
+          <el-input v-model="form.optioncode" placeholder="璇疯緭鍏� 閫夐」Code " />
+        </el-form-item>
+        <el-form-item label=" 閫夐」鍐呭 ">
+          <editor v-model="form.optioncontent" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label=" 鏄惁瀛樺湪鏄庣粏 " prop="isexistdetail">
+          <el-input v-model="form.isexistdetail" placeholder="璇疯緭鍏� 鏄惁瀛樺湪鏄庣粏 " />
+        </el-form-item>
+        <el-form-item label=" 鏄庣粏鏄惁蹇呭~ " prop="detailismandatory">
+          <el-input v-model="form.detailismandatory" placeholder="璇疯緭鍏� 鏄庣粏鏄惁蹇呭~ " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁寮傚父椤圭洰 " prop="isexceptionitem">
+          <el-input v-model="form.isexceptionitem" placeholder="璇疯緭鍏� 鏄惁寮傚父椤圭洰 " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁璺熻繘 " prop="istrack">
+          <el-input v-model="form.istrack" placeholder="璇疯緭鍏� 鏄惁璺熻繘 " />
+        </el-form-item>
+        <el-form-item label=" 鍒嗘暟 " prop="score">
+          <el-input v-model="form.score" placeholder="璇疯緭鍏� 鍒嗘暟 " />
+        </el-form-item>
+        <el-form-item label=" 鎻愮ず " prop="prompt">
+          <el-input v-model="form.prompt" placeholder="璇疯緭鍏� 鎻愮ず " />
+        </el-form-item>
+        <el-form-item label=" 璺宠浆 " prop="jump">
+          <el-input v-model="form.jump" placeholder="璇疯緭鍏� 璺宠浆 " />
+        </el-form-item>
+        <el-form-item label=" 鐖堕�夐」ID " prop="parentoptionid">
+          <el-input v-model="form.parentoptionid" placeholder="璇疯緭鍏� 鐖堕�夐」ID " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁浜掓枼 " prop="ismutex">
+          <el-input v-model="form.ismutex" placeholder="璇疯緭鍏� 鏄惁浜掓枼 " />
+        </el-form-item>
+        <el-form-item label=" 楠岃瘉瑙勫垯 " prop="verifyrule">
+          <el-input v-model="form.verifyrule" placeholder="璇疯緭鍏� 楠岃瘉瑙勫垯 " />
+        </el-form-item>
+        <el-form-item label=" 鎺掑簭 " prop="sort">
+          <el-input v-model="form.sort" placeholder="璇疯緭鍏� 鎺掑簭 " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁闄愬埗鑼冨洿 " prop="isrange">
+          <el-input v-model="form.isrange" placeholder="璇疯緭鍏� 鏄惁闄愬埗鑼冨洿 " />
+        </el-form-item>
+        <el-form-item label=" 鏈�灏忚寖鍥� " prop="minrange">
+          <el-input v-model="form.minrange" placeholder="璇疯緭鍏� 鏈�灏忚寖鍥� " />
+        </el-form-item>
+        <el-form-item label=" 鏈�澶ц寖鍥� " prop="maxrange">
+          <el-input v-model="form.maxrange" placeholder="璇疯緭鍏� 鏈�澶ц寖鍥� " />
+        </el-form-item>
+        <el-form-item label=" 鑼冨洿闀垮害;鐢ㄤ簬灏忔暟淇濈暀浣嶆暟 " prop="rangelength">
+          <el-input v-model="form.rangelength" 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=" 涓婁竴鐗堟湰ID " prop="oldid">
+          <el-input v-model="form.oldid" 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 { listSvytopicoption, getSvytopicoption, delSvytopicoption, addSvytopicoption, updateSvytopicoption } from "@/api/smartor/svytopicoption";
+
+export default {
+  name: "Svytopicoption",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 闂嵎闂閫夐」琛ㄦ牸鏁版嵁
+      svytopicoptionList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        topicid: null,
+        svyid: null,
+        topictype: null,
+        optioncode: null,
+        optioncontent: null,
+        isexistdetail: null,
+        detailismandatory: null,
+        isexceptionitem: null,
+        istrack: null,
+        score: null,
+        prompt: null,
+        jump: null,
+        parentoptionid: null,
+        ismutex: null,
+        verifyrule: null,
+        sort: null,
+        verificationtype: null,
+        isrange: null,
+        minrange: null,
+        maxrange: null,
+        rangelength: null,
+        orgid: null,
+        oldid: null,
+        isupload: null,
+        uploadTime: null
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        delFlag: [
+          { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isupload: [
+          { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ闂嵎闂閫夐」鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listSvytopicoption(this.queryParams).then(response => {
+        this.svytopicoptionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        optionid: null,
+        topicid: null,
+        svyid: null,
+        topictype: null,
+        optioncode: null,
+        optioncontent: null,
+        isexistdetail: null,
+        detailismandatory: null,
+        isexceptionitem: null,
+        istrack: null,
+        score: null,
+        prompt: null,
+        jump: null,
+        parentoptionid: null,
+        ismutex: null,
+        verifyrule: null,
+        sort: null,
+        verificationtype: null,
+        isrange: null,
+        minrange: null,
+        maxrange: null,
+        rangelength: null,
+        orgid: null,
+        oldid: null,
+        delFlag: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: 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.optionid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞闂嵎闂閫夐」";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const optionid = row.optionid || this.ids
+      getSvytopicoption(optionid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼闂嵎闂閫夐」";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.optionid != null) {
+            updateSvytopicoption(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSvytopicoption(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const optionids = row.optionid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎闂嵎闂閫夐」缂栧彿涓�"' + optionids + '"鐨勬暟鎹」锛�').then(function() {
+        return delSvytopicoption(optionids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('smartor/svytopicoption/export', {
+        ...this.queryParams
+      }, `svytopicoption_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/system/snytopic/index.vue b/ruoyi-ui/src/views/system/snytopic/index.vue
new file mode 100644
index 0000000..17661aa
--- /dev/null
+++ b/ruoyi-ui/src/views/system/snytopic/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=" 鑰佺増鏈琁D " prop="oldid">
+        <el-input
+          v-model="queryParams.oldid"
+          placeholder="璇疯緭鍏� 鑰佺増鏈琁D "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 闂嵎ID " prop="svyid">
+        <el-input
+          v-model="queryParams.svyid"
+          placeholder="璇疯緭鍏� 闂嵎ID "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 棰樼洰Code " prop="topiccode">
+        <el-input
+          v-model="queryParams.topiccode"
+          placeholder="璇疯緭鍏� 棰樼洰Code "
+          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=" 鏄惁蹇呭~ " prop="ismandatory">
+        <el-input
+          v-model="queryParams.ismandatory"
+          placeholder="璇疯緭鍏� 鏄惁蹇呭~ "
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label=" 鏄惁闅愯棌 " prop="ishide">
+        <el-input
+          v-model="queryParams.ishide"
+          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="['system:snytopic:add']"
+        >鏂板</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:snytopic:edit']"
+        >淇敼</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:snytopic:remove']"
+        >鍒犻櫎</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:snytopic:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="snytopicList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label=" 鑷ID " align="center" prop="topicid" />
+      <el-table-column label=" 鑰佺増鏈琁D " align="center" prop="oldid" />
+      <el-table-column label=" 闂嵎ID " align="center" prop="svyid" />
+      <el-table-column label=" 棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖ " align="center" prop="topictype" />
+      <el-table-column label=" 棰樼洰Code " align="center" prop="topiccode" />
+      <el-table-column label=" 棰樼洰 " align="center" prop="topic" />
+      <el-table-column label=" 鎺掑簭 " align="center" prop="sort" />
+      <el-table-column label=" 鏄惁蹇呭~ " align="center" prop="ismandatory" />
+      <el-table-column label=" 鏄惁闅愯棌 " align="center" prop="ishide" />
+      <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="['system:snytopic:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:snytopic: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=" 鑰佺増鏈琁D " prop="oldid">
+          <el-input v-model="form.oldid" placeholder="璇疯緭鍏� 鑰佺増鏈琁D " />
+        </el-form-item>
+        <el-form-item label=" 闂嵎ID " prop="svyid">
+          <el-input v-model="form.svyid" placeholder="璇疯緭鍏� 闂嵎ID " />
+        </el-form-item>
+        <el-form-item label=" 棰樼洰Code " prop="topiccode">
+          <el-input v-model="form.topiccode" placeholder="璇疯緭鍏� 棰樼洰Code " />
+        </el-form-item>
+        <el-form-item label=" 棰樼洰 " prop="topic">
+          <el-input v-model="form.topic" 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=" 鏄惁蹇呭~ " prop="ismandatory">
+          <el-input v-model="form.ismandatory" placeholder="璇疯緭鍏� 鏄惁蹇呭~ " />
+        </el-form-item>
+        <el-form-item label=" 鏄惁闅愯棌 " prop="ishide">
+          <el-input v-model="form.ishide" placeholder="璇疯緭鍏� 鏄惁闅愯棌 " />
+        </el-form-item>
+        <el-form-item label=" 鍒犻櫎鏍囪 " prop="delFlag">
+          <el-input v-model="form.delFlag" 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="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 { listSnytopic, getSnytopic, delSnytopic, addSnytopic, updateSnytopic } from "@/api/system/snytopic";
+
+export default {
+  name: "Snytopic",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 闂嵎棰樼洰琛ㄦ牸鏁版嵁
+      snytopicList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        oldid: null,
+        svyid: null,
+        topictype: null,
+        topiccode: null,
+        topic: null,
+        sort: null,
+        ismandatory: null,
+        ishide: 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: {
+    /** 鏌ヨ闂嵎棰樼洰鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listSnytopic(this.queryParams).then(response => {
+        this.snytopicList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        topicid: null,
+        oldid: null,
+        svyid: null,
+        topictype: null,
+        topiccode: null,
+        topic: null,
+        sort: null,
+        ismandatory: null,
+        ishide: null,
+        delFlag: null,
+        orgid: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: 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.topicid)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞闂嵎棰樼洰";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const topicid = row.topicid || this.ids
+      getSnytopic(topicid).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼闂嵎棰樼洰";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.topicid != null) {
+            updateSnytopic(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSnytopic(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const topicids = row.topicid || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎闂嵎棰樼洰缂栧彿涓�"' + topicids + '"鐨勬暟鎹」锛�').then(function() {
+        return delSnytopic(topicids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('system/snytopic/export', {
+        ...this.queryParams
+      }, `snytopic_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

--
Gitblit v1.9.3