qzyReal 2 gadi atpakaļ
vecāks
revīzija
0be4538f22

+ 0 - 12
.idea/face-ui.iml

@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
-      <excludeFolder url="file://$MODULE_DIR$/temp" />
-      <excludeFolder url="file://$MODULE_DIR$/tmp" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>

+ 0 - 6
.idea/misc.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="JavaScriptSettings">
-    <option name="languageLevel" value="ES6" />
-  </component>
-</project>

+ 0 - 8
.idea/modules.xml

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/.idea/face-ui.iml" filepath="$PROJECT_DIR$/.idea/face-ui.iml" />
-    </modules>
-  </component>
-</project>

+ 0 - 182
.idea/workspace.xml

@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ChangeListManager">
-    <list default="true" id="5a92affb-0c7f-4924-9551-c65b96d91036" name="Default Changelist" comment="" />
-    <ignored path="$PROJECT_DIR$/.tmp/" />
-    <ignored path="$PROJECT_DIR$/temp/" />
-    <ignored path="$PROJECT_DIR$/tmp/" />
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
-    <option name="SHOW_DIALOG" value="false" />
-    <option name="HIGHLIGHT_CONFLICTS" value="true" />
-    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
-    <option name="LAST_RESOLUTION" value="IGNORE" />
-  </component>
-  <component name="FileEditorManager">
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/login.html">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="2604">
-              <caret line="84" column="4" selection-start-line="84" selection-start-column="4" selection-end-line="84" selection-end-column="4" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/sa-frame/menu-list-sp.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="217">
-              <caret line="42" selection-start-line="42" selection-end-line="42" />
-              <folding>
-                <element signature="n#!!doc" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/sa-frame/menu-list.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1054">
-              <caret line="48" selection-start-line="48" selection-end-line="48" />
-              <folding>
-                <element signature="n#!!doc" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-    </leaf>
-  </component>
-  <component name="IdeDocumentHistory">
-    <option name="CHANGED_PATHS">
-      <list>
-        <option value="$PROJECT_DIR$/login.html" />
-        <option value="$PROJECT_DIR$/sa-frame/menu-list.js" />
-        <option value="$PROJECT_DIR$/sa-frame/menu-list-sp.js" />
-      </list>
-    </option>
-  </component>
-  <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="153" />
-    <option name="y" value="135" />
-    <option name="width" value="3150" />
-    <option name="height" value="1980" />
-  </component>
-  <component name="ProjectView">
-    <navigator proportions="" version="1">
-      <foldersAlwaysOnTop value="true" />
-    </navigator>
-    <panes>
-      <pane id="ProjectPane">
-        <subPane>
-          <expand>
-            <path>
-              <item name="face-ui" type="b2602c69:ProjectViewProjectNode" />
-              <item name="face-ui" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="face-ui" type="b2602c69:ProjectViewProjectNode" />
-              <item name="face-ui" type="462c0819:PsiDirectoryNode" />
-              <item name="sa-frame" type="462c0819:PsiDirectoryNode" />
-            </path>
-          </expand>
-          <select />
-        </subPane>
-      </pane>
-      <pane id="Scope" />
-    </panes>
-  </component>
-  <component name="PropertiesComponent">
-    <property name="WebServerToolWindowFactoryState" value="false" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../douyin/website" />
-    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
-    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
-    <property name="settings.editor.selected.configurable" value="liveEdit" />
-  </component>
-  <component name="RunDashboard">
-    <option name="ruleStates">
-      <list>
-        <RuleState>
-          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
-        </RuleState>
-        <RuleState>
-          <option name="name" value="StatusDashboardGroupingRule" />
-        </RuleState>
-      </list>
-    </option>
-  </component>
-  <component name="SvnConfiguration">
-    <configuration />
-  </component>
-  <component name="TaskManager">
-    <task active="true" id="Default" summary="Default task">
-      <changelist id="5a92affb-0c7f-4924-9551-c65b96d91036" name="Default Changelist" comment="" />
-      <created>1656645596059</created>
-      <option name="number" value="Default" />
-      <option name="presentableId" value="Default" />
-      <updated>1656645596059</updated>
-      <workItem from="1656645597166" duration="2399000" />
-      <workItem from="1656896967927" duration="1121000" />
-      <workItem from="1656936653114" duration="10000" />
-    </task>
-    <servers />
-  </component>
-  <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="3530000" />
-  </component>
-  <component name="ToolWindowManager">
-    <frame x="-6" y="34" width="1548" height="932" extended-state="6" />
-    <layout>
-      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.19418758" />
-      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
-      <window_info id="Favorites" order="2" side_tool="true" />
-      <window_info anchor="bottom" id="Message" order="0" />
-      <window_info anchor="bottom" id="Find" order="1" />
-      <window_info anchor="bottom" id="Run" order="2" />
-      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
-      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
-      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
-      <window_info anchor="bottom" id="TODO" order="6" />
-      <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
-      <window_info anchor="bottom" id="Version Control" order="8" />
-      <window_info anchor="bottom" id="Terminal" order="9" />
-      <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
-      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
-      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
-      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
-    </layout>
-  </component>
-  <component name="TypeScriptGeneratedFilesManager">
-    <option name="version" value="1" />
-  </component>
-  <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/login.html">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2604">
-          <caret line="84" column="4" selection-start-line="84" selection-start-column="4" selection-end-line="84" selection-end-column="4" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/sa-frame/menu-list.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1054">
-          <caret line="48" selection-start-line="48" selection-end-line="48" />
-          <folding>
-            <element signature="n#!!doc" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/sa-frame/menu-list-sp.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="217">
-          <caret line="42" selection-start-line="42" selection-end-line="42" />
-          <folding>
-            <element signature="n#!!doc" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-  </component>
-</project>

+ 54 - 10
sa-frame/menu-list-sp.js

@@ -525,20 +525,64 @@ window.menuList.unshift({
 
 		]
 
-	}, {
-		id: 'tb-manager',
-		name: '防疫人员',
+	},
+	{
+		id: 'ep-monitor-system',
+		name: '防疫监控子系统',
 		icon: 'el-icon-folder-opened',
-		info: '防疫人员表数据的维护',
-		childList: [{
+		parent: true,
+		childList: [
+			{
 				id: 'tb-manager-list',
-				name: '防疫人员-列表',
-				url: 'sa-view/tb-manager/tb-manager-list.html'
+				name: '防疫人员',
+				url: 'sa-view/tb-manager/tb-manager-list.html',
+				childList: [
+					{
+						id: 'tb-manager-add',
+						name: '新增',
+						isShow: false,
+
+					},
+					{
+						id: 'tb-manager-edit',
+						name: '修改',
+						isShow: false,
+
+					},
+					{
+						id: 'tb-manager-del',
+						name: '删除',
+						isShow: false,
+
+					},
+				]
 			},
 			{
-				id: 'tb-manager-add',
-				name: '防疫人员-添加',
-				url: 'sa-view/tb-manager/tb-manager-add.html'
+				id: 'health-code-record-list',
+				name: '健康码管理',
+				url: 'sa-view/tb-person-visit-record/health-code-record-list.html',
+				childList: [
+					{
+						id: 'health-code-record-edit',
+						name: '修改',
+						isShow: false,
+					},
+					{
+						id: 'health-code-record-del',
+						name: '删除',
+						isShow: false
+					},
+					{
+						id: 'health-code-record-add',
+						name: '新增',
+						isShow: false
+					},
+					{
+						id: 'health-code-record-solve',
+						name: '处置',
+						isShow: false,
+					},
+				]
 			},
 		]
 	},

+ 10 - 18
sa-frame/menu-list.js

@@ -1,29 +1,21 @@
-// 一个菜单可以包括的所有属性 
+// 一个菜单可以包括的所有属性
 // {
 // 	id: '12345',		// 菜单id, 必须唯一
 // 	name: '用户中心',		// 菜单名称, 同时也是tab选项卡上显示的名称
 // 	icon: 'el-icon-user',	// 菜单图标, 参考地址:  https://element.eleme.cn/#/zh-CN/component/icon
-//	info: '管理所有用户',	// 菜单介绍, 在菜单预览和分配权限时会有显示 
+//	info: '管理所有用户',	// 菜单介绍, 在菜单预览和分配权限时会有显示
 // 	url: 'sa-html/user/user-list.html',	// 菜单指向地址
-// 	parentId: 1,			// 所属父菜单id, 如果指定了一个值, sa-admin在初始化时会将此菜单转移到指定菜单上 
+// 	parentId: 1,			// 所属父菜单id, 如果指定了一个值, sa-admin在初始化时会将此菜单转移到指定菜单上
 // 	isShow: true,			// 是否显示, 默认true
-// 	isBlank: false,		// 是否属于外部链接, 如果为true, 则点击菜单时从新窗口打开 
+// 	isBlank: false,		// 是否属于外部链接, 如果为true, 则点击菜单时从新窗口打开
 // 	childList: [			// 指定这个菜单所有的子菜单, 子菜单可以继续指定子菜单, 至多支持三级菜单
-// 		// .... 
+// 		// ....
 // 	],
-//	click: function(){}		// 点击菜单执行一个函数 
+//	click: function(){}		// 点击菜单执行一个函数
 // }
 
-// 定义菜单列表 
+// 定义菜单列表
 var menuList =	[
-	{
-		id: 'tb-gate-command-log',
-		name: '车辆道闸命令日志',
-		icon: 'el-icon-folder-opened',
-		info: '车辆道闸命令日志表数据的维护',
-		childList: [
-			{id: 'tb-gate-command-log-list', name: '车辆道闸命令日志-列表', url: 'sa-view/tb-gate-command-log/tb-gate-command-log-list.html'},
-			{id: 'tb-gate-command-log-add', name: '车辆道闸命令日志-添加', url: 'sa-view/tb-gate-command-log/tb-gate-command-log-add.html'},
-		]
-	},
-]
+
+
+]

+ 6 - 5
sa-view/tb-car-black/tb-car-black-add.html

@@ -35,7 +35,8 @@
 					<el-form v-if="m">
 						<div class="c-item">
 							<label class="c-label"><span style="color: red;">*</span>部门:</label>
-							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">
+<!--							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">-->
+							<el-select v-model="m.deptId" >
 								<el-option label="请选择" v-for="(item,index) in deptList" :key="item.id"
 									:label="item.name" :value="item.id"></el-option>
 
@@ -77,10 +78,10 @@
 							pageSize: 100
 						}, function(resp) {
 							let list = resp.data;
-							let deptId = this.currentUser.deptId;
-							if (deptId != '9999999') {
-								this.m.deptId = deptId;
-							}
+							// let deptId = this.currentUser.deptId;
+							// if (deptId != '9999999') {
+							// 	this.m.deptId = deptId;
+							// }
 							this.deptList = list;
 						}.bind(this))
 					},

+ 10 - 4
sa-view/tb-car-filing/tb-car-filing-add.html

@@ -34,8 +34,14 @@
 					<div class="c-title" v-else>数据修改</div>
 					<el-form v-if="m">
 						<div class="c-item">
+<<<<<<< HEAD
 							<label class="c-label"><span style="color: red;">*</span>所属组织:</label>
 							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">
+=======
+							<label class="c-label"><span style="color: red;">*</span>部门:</label>
+<!--							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">-->
+							<el-select v-model="m.deptId" >
+>>>>>>> 51f36421ae8b879e7e627a50ee37601903b857de
 								<el-option label="请选择" v-for="(item,index) in deptList" :key="item.id"
 									:label="item.name" :value="item.id"></el-option>
 
@@ -132,10 +138,10 @@
 							pageSize: 100
 						}, function(resp) {
 							let list = resp.data;
-							let deptId = this.currentUser.deptId;
-							if (deptId != '9999999') {
-								this.m.deptId = deptId;
-							}
+							// let deptId = this.currentUser.deptId;
+							// if (deptId != '9999999') {
+							// 	this.m.deptId = deptId;
+							// }
 							this.deptList = list;
 						}.bind(this))
 					},

+ 76 - 29
sa-view/tb-manager/tb-manager-add.html

@@ -16,6 +16,7 @@
 		<style type="text/css">
 			.c-panel .el-form .c-label{width: 7em !important;}
 			.c-panel .el-form .el-input, .c-panel .el-form .el-textarea__inner{width: 250px;}
+			.c1-label{width: 8em; color: #333; padding-right: 4px; display: inline-block; text-align: right; vertical-align: top;}
 		</style>
 	</head>
 	<body>
@@ -26,19 +27,38 @@
                     <div class="c-title" v-if="id == 0">数据添加</div>
 					<div class="c-title" v-else>数据修改</div>
 					<el-form v-if="m">
-						<sa-item type="text" name="姓名" v-model="m.name" br></sa-item>
-						<sa-item type="text" name="联系号码" v-model="m.phone" br></sa-item>
-						<sa-item type="text" name="部门ID" v-model="m.deptId" br></sa-item>
-						<sa-item type="text" name="职能" v-model="m.position" br></sa-item>
-						<sa-item type="text" name="场所ID" v-model="m.venuesId" br></sa-item>
-						<sa-item type="text" name="值班地点" v-model="m.venuesName" br></sa-item>
-						<sa-item type="text" name="值班开始时间" v-model="m.workStartTime" br></sa-item>
-						<sa-item type="text" name="值班结束时间" v-model="m.workEndTime" br></sa-item>
+						<sa-item type="text" name="姓名" v-model="m.name" br need></sa-item>
+						<sa-item type="text" name="联系号码" v-model="m.phone" br need></sa-item>
+						<div class="c-item">
+							<label class="c-label"><span style="color: red;">*</span>部门:</label>
+							<el-select v-model="m.deptId" @change="deptChange">
+								<el-option label="请选择" v-for="(item,index) in deptList" :key="item.id"
+										   :label="item.name" :value="item.id"></el-option>
+
+							</el-select>
+						</div>
+						<sa-item type="text" name="职能" v-model="m.position" br need></sa-item>
+<!--						<sa-item type="text" name="场所ID" v-model="m.venuesId" br></sa-item>-->
+						<div class="c-item">
+							<label class="c-label"><span style="color: red;">*</span>场所:</label>
+							<el-select v-model="m.venuesId" @change="venuesChange">
+								<el-option label="请选择" v-for="(item,index) in venuesList" :key="item.id"
+										   :label="item.name" :value="item.id"></el-option>
+
+							</el-select>
+						</div>
+						<sa-item type="text" name="值班地点" v-model="m.venuesName" br need></sa-item>
+<!--						<sa-item type="text" name="值班开始时间" v-model="m.workStartTime" br></sa-item>-->
+						<div class="c-item">
+							<label class="c-label"><span style="color: red;">*</span>值班开始时间:</label>
+							<el-time-picker value-format="HH:mm:ss" v-model="m.workStartTime"></el-time-picker>
+						</div>
+<!--						<sa-item type="text" name="值班结束时间" v-model="m.workEndTime" br></sa-item>-->
+						<div class="c-item">
+							<label class="c-label"><span style="color: red;">*</span>值班结束时间:</label>
+							<el-time-picker value-format="HH:mm:ss" v-model="m.workEndTime"></el-time-picker>
+						</div>
 						<sa-item type="text" name="备注" v-model="m.remark" br></sa-item>
-						<sa-item type="text" name="创建时间" v-model="m.createTime" br></sa-item>
-						<sa-item type="text" name="创建人" v-model="m.createBy" br></sa-item>
-						<sa-item type="text" name="更新时间" v-model="m.updateTime" br></sa-item>
-						<sa-item type="text" name="更新人" v-model="m.updateBy" br></sa-item>
 						<sa-item name="" class="s-ok" br>
 							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
 						</sa-item>
@@ -60,26 +80,27 @@
 				el: '.vue-box',
 				data: {
 					id: sa.p('id', 0),		// 获取超链接中的id参数(0=添加,非0=修改) 
-					m: null,		// 实体对象 
+					m: null,		// 实体对象
+					deptList: [],
+					venuesList: [],
+
 				},
 				methods: {
+
 					// 创建一个 默认Model 
 					createModel: function() {
 						return {
 							id: '',		// 主键 
 							name: '',		// 姓名 
 							phone: '',		// 联系号码 
-							deptId: '',		// 部门ID 
+							deptId: '',		// 部门ID
+							deptName: '',
 							position: '',		// 职能 
 							venuesId: '',		// 场所ID 
 							venuesName: '',		// 值班地点 
 							workStartTime: '',		// 值班开始时间 
 							workEndTime: '',		// 值班结束时间 
-							remark: '',		// 备注 
-							createTime: '',		// 创建时间 
-							createBy: '',		// 创建人 
-							updateTime: '',		// 更新时间 
-							updateBy: '',		// 更新人 
+							remark: '',		// 备注
 						}
 					},
 					// 提交数据 
@@ -88,19 +109,18 @@
 						let m = this.m;
 						// sa.checkNull(m.id, '请输入 [主键]');
 						sa.checkNull(m.name, '请输入 [姓名]');
-						sa.checkNull(m.phone, '请输入 [联系号码]');
-						sa.checkNull(m.deptId, '请输入 [部门ID]');
+						sa.checkNull(m.deptId, '请选择 [部门]');
 						sa.checkNull(m.position, '请输入 [职能]');
-						sa.checkNull(m.venuesId, '请输入 [场所ID]');
+						sa.checkNull(m.venuesId, '请输入 [场所]');
 						sa.checkNull(m.venuesName, '请输入 [值班地点]');
 						sa.checkNull(m.workStartTime, '请输入 [值班开始时间]');
 						sa.checkNull(m.workEndTime, '请输入 [值班结束时间]');
-						sa.checkNull(m.remark, '请输入 [备注]');
-						sa.checkNull(m.createTime, '请输入 [创建时间]');
-						sa.checkNull(m.createBy, '请输入 [创建人]');
-						sa.checkNull(m.updateTime, '请输入 [更新时间]');
-						sa.checkNull(m.updateBy, '请输入 [更新人]');
-				
+						let phone = m.phone;
+						if (!sa.isPhone(phone)) {
+							sa.error('请输入正确的联系号码');
+							return false;
+						}
+
 						// 开始增加或修改
 						if(this.id <= 0) {	// 添加
 							sa.ajax('/TbManager/add', m, function(res){
@@ -112,6 +132,30 @@
 							}.bind(this));
 						}
 					},
+					deptChange(val) {
+						let dept = this.deptList.filter(obj => obj.id === val).pop();
+						this.m.deptName = dept.name;
+					},
+					venuesChange(val) {
+						let venue = this.venuesList.filter(obj => obj.id === val).pop();
+						this.m.venuesName = venue.name;
+					},
+					getDeptList() {
+						console.log(1);
+						sa.ajax('/TbVenues/getList', {
+							pId: -1
+						}, function(resp) {
+							this.venuesList = resp.data;
+
+						}.bind(this))
+					},
+					getVenuesList() {
+						console.log(2);
+						sa.ajax('/TbDept/getList', function(resp) {
+							this.deptList = resp.data;
+
+						}.bind(this))
+					},
 					// 添加/修改 完成后的动作
 					clean: function() {
 						if(this.id == 0) {
@@ -123,7 +167,9 @@
 					}
 				},
 				mounted: function(){
-					// 初始化数据 
+					// 初始化数据
+					this.getDeptList();
+					this.getVenuesList();
 					if(this.id <= 0) {	
 						this.m = this.createModel();
 					} else {	
@@ -134,6 +180,7 @@
 							}
 						}.bind(this))
 					}
+
 				}
 			})
 			

+ 20 - 14
sa-view/tb-manager/tb-manager-info.html

@@ -23,20 +23,26 @@
 			<div class="s-body">
 				<div class="c-panel">
 					<el-form v-if="m">
-						<sa-info type="num" name="主键" :value="m.id" br></sa-info>
-						<sa-info name="姓名" br>{{m.name}}</sa-info>
-						<sa-info name="联系号码" br>{{m.phone}}</sa-info>
-						<sa-info name="部门ID" br>{{m.deptId}}</sa-info>
-						<sa-info name="职能" br>{{m.position}}</sa-info>
-						<sa-info name="场所ID" br>{{m.venuesId}}</sa-info>
-						<sa-info name="值班地点" br>{{m.venuesName}}</sa-info>
-						<sa-info name="值班开始时间" br>{{m.workStartTime}}</sa-info>
-						<sa-info name="值班结束时间" br>{{m.workEndTime}}</sa-info>
-						<sa-info name="备注" br>{{m.remark}}</sa-info>
-						<sa-info name="创建时间" br>{{m.createTime}}</sa-info>
-						<sa-info name="创建人" br>{{m.createBy}}</sa-info>
-						<sa-info name="更新时间" br>{{m.updateTime}}</sa-info>
-						<sa-info name="更新人" br>{{m.updateBy}}</sa-info>
+						<el-row>
+							<el-col :span="12">
+								<sa-info name="姓名" br>{{m.name}}</sa-info>
+								<sa-info name="联系号码" br>{{m.phone}}</sa-info>
+								<sa-info name="部门" br>{{m.deptName}}</sa-info>
+								<sa-info name="职能" br>{{m.position}}</sa-info>
+								<sa-info name="值班地点" br>{{m.venuesName}}</sa-info>
+								<sa-info name="值班开始时间" br>{{m.workStartTime}}</sa-info>
+								<sa-info name="值班结束时间" br>{{m.workEndTime}}</sa-info>
+								<sa-info name="备注" br>{{m.remark}}</sa-info>
+							</el-col>
+							<el-col :span="12">
+								<sa-info name="创建时间" br>{{m.createTime}}</sa-info>
+								<sa-info name="创建人" br>{{m.createBy}}</sa-info>
+								<sa-info name="更新时间" br>{{m.updateTime}}</sa-info>
+								<sa-info name="更新人" br>{{m.updateBy}}</sa-info>
+							</el-col>
+						</el-row>
+
+
 					</el-form>
 				</div>
 			</div>

+ 26 - 42
sa-view/tb-manager/tb-manager-list.html

@@ -20,60 +20,37 @@
 				<!-- ------------- 检索参数 ------------- -->
 				<div class="c-title">检索参数</div>
 				<el-form ref="form" :model='p' @submit.native.prevent>
-					<sa-item type="num" name="主键" v-model="p.id"></sa-item>
 					<sa-item type="text" name="姓名" v-model="p.name"></sa-item>
 					<sa-item type="text" name="联系号码" v-model="p.phone"></sa-item>
-					<sa-item type="text" name="职能" v-model="p.position"></sa-item>
-					<sa-item type="text" name="场所ID" v-model="p.venuesId"></sa-item>
-					<sa-item type="text" name="值班地点" v-model="p.venuesName"></sa-item>
-					<sa-item type="text" name="值班开始时间" v-model="p.workStartTime"></sa-item>
-					<sa-item type="text" name="值班结束时间" v-model="p.workEndTime"></sa-item>
-					<sa-item type="text" name="备注" v-model="p.remark"></sa-item>
-					<sa-item type="text" name="创建时间" v-model="p.createTime"></sa-item>
-					<sa-item type="text" name="创建人" v-model="p.createBy"></sa-item>
-					<sa-item type="text" name="更新时间" v-model="p.updateTime"></sa-item>
-					<sa-item type="text" name="更新人" v-model="p.updateBy"></sa-item>
+					<div class="c-item">
+						<label class="c-label">部门:</label>
+						<el-select v-model="p.deptId">
+							<el-option label="请选择" v-for="(item,index) in deptList" :key="item.id"
+									   :label="item.name" :value="item.id"></el-option>
+
+						</el-select>
+					</div>
 					<el-button type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询</el-button>
 					<br />
-					<sa-item name="综合排序">
-						<el-radio-group v-model="p.sortType" class="s-radio-text">
-							<el-radio :label="0">默认</el-radio>
-							<el-radio :label="1">主键</el-radio>
-							<el-radio :label="2">姓名</el-radio>
-							<el-radio :label="3">联系号码</el-radio>
-							<el-radio :label="4">部门ID</el-radio>
-							<el-radio :label="5">职能</el-radio>
-							<el-radio :label="6">场所ID</el-radio>
-							<el-radio :label="7">值班地点</el-radio>
-							<el-radio :label="8">值班开始时间</el-radio>
-							<el-radio :label="9">值班结束时间</el-radio>
-							<el-radio :label="10">备注</el-radio>
-							<el-radio :label="11">创建时间</el-radio>
-							<el-radio :label="12">创建人</el-radio>
-							<el-radio :label="13">更新时间</el-radio>
-							<el-radio :label="14">更新人</el-radio>
-						</el-radio-group>
-					</sa-item>
 				</el-form>
 				<!-- ------------- 快捷按钮 ------------- -->
-				<sa-item type="fast-btn" show="add,get,delete,export,reset"></sa-item>
+				<el-button type="primary" icon="el-icon-plus" @click="add" v-if="sa.isAuth('tb-person-filing-add')">
+					新增</el-button>
+				<el-button type="info" icon="el-icon-refresh" @click="f5">重置</el-button>
 				<!-- ------------- 数据列表 ------------- -->
 				<el-table class="data-table" ref="data-table" :data="dataList" >
 					<sa-td type="selection"></sa-td>
-					<sa-td name="主键" prop="id" type="num"></sa-td>
+					<sa-td name="序号" type="index"></sa-td>
 					<sa-td name="姓名" prop="name" ></sa-td>
 					<sa-td name="联系号码" prop="phone" ></sa-td>
-					<sa-td name="部门ID" prop="deptId" ></sa-td>
+<!--					<sa-td name="部门ID" prop="deptId" ></sa-td>-->
+					<sa-td name="部门" prop="deptName" ></sa-td>
 					<sa-td name="职能" prop="position" ></sa-td>
-					<sa-td name="场所ID" prop="venuesId" ></sa-td>
+<!--					<sa-td name="场所ID" prop="venuesId" ></sa-td>-->
 					<sa-td name="值班地点" prop="venuesName" ></sa-td>
 					<sa-td name="值班开始时间" prop="workStartTime" ></sa-td>
 					<sa-td name="值班结束时间" prop="workEndTime" ></sa-td>
 					<sa-td name="备注" prop="remark" ></sa-td>
-					<sa-td name="创建时间" prop="createTime" ></sa-td>
-					<sa-td name="创建人" prop="createBy" ></sa-td>
-					<sa-td name="更新时间" prop="updateTime" ></sa-td>
-					<sa-td name="更新人" prop="updateBy" ></sa-td>
 					<el-table-column label="操作" fixed="right"  width="240px">
 						<template slot-scope="s">
 							<el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看</el-button>
@@ -114,9 +91,15 @@
 						sortType: 0		// 排序方式 
 					},
 					dataCount: 0,
-					dataList: [], // 数据集合 
+					dataList: [], // 数据集合
+					deptList: [],
 				},
 				methods: {
+					getDeptList() {
+						sa.ajax('/TbDept/getList', function(resp) {
+							this.deptList = resp.data;
+						}.bind(this))
+					},
 					// 刷新
 					f5: function() {
 						sa.ajax('/TbManager/getList', sa.removeNull(this.p), function(res) {
@@ -127,7 +110,7 @@
 					},
 					// 查看
 					get: function(data) {
-						sa.showIframe('数据详情', 'tb-manager-info.html?id=' + data.id, '1050px', '90%');
+						sa.showIframe('数据详情', 'tb-manager-info.html?id=' + data.id, '750px', '70%');
 					},
 					// 查看 - 根据选中的
 					getBySelect: function(data) {
@@ -139,11 +122,11 @@
 					},
 					// 修改
 					update: function(data) {
-						sa.showIframe('修改数据', 'tb-manager-add.html?id=' + data.id, '1000px', '90%');
+						sa.showIframe('修改数据', 'tb-manager-add.html?id=' + data.id, '550px', '90%');
 					},
 					// 新增
 					add: function(data) {
-						sa.showIframe('新增数据', 'tb-manager-add.html?id=-1', '1000px', '90%');
+						sa.showIframe('新增数据', 'tb-manager-add.html?id=-1', '550px', '90%');
 					},
 					// 删除
 					del: function(data) {
@@ -175,6 +158,7 @@
 				},
 				created: function() {
 					this.f5();
+					this.getDeptList()
 					sa.onInputEnter();
 				}
 			})

+ 6 - 5
sa-view/tb-person-black/tb-person-black-add.html

@@ -35,7 +35,8 @@
 					<el-form v-if="m">
 						<div class="c-item">
 							<label class="c-label"><span style="color: red;">*</span>部门:</label>
-							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">
+<!--							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">-->
+							<el-select v-model="m.deptId" >
 								<el-option label="请选择" v-for="(item,index) in deptList" :key="item.id"
 									:label="item.name" :value="item.id"></el-option>
 
@@ -77,10 +78,10 @@
 							pageSize: 100
 						}, function(resp) {
 							let list = resp.data;
-							let deptId = this.currentUser.deptId;
-							if (deptId != '9999999') {
-								this.m.deptId = deptId;
-							}
+							// let deptId = this.currentUser.deptId;
+							// if (deptId != '9999999') {
+							// 	this.m.deptId = deptId;
+							// }
 							this.deptList = list;
 						}.bind(this))
 					},

+ 10 - 4
sa-view/tb-person-filing/tb-person-filing-add.html

@@ -35,8 +35,14 @@
 					<div class="c-title" v-else>数据修改</div>
 					<el-form v-if="m">
 						<div class="c-item">
+<<<<<<< HEAD
 							<label class="c-label"><span style="color: red;">*</span>备案组织:</label>
 							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">
+=======
+							<label class="c-label"><span style="color: red;">*</span>部门:</label>
+<!--							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">-->
+							<el-select v-model="m.deptId" >
+>>>>>>> 51f36421ae8b879e7e627a50ee37601903b857de
 								<el-option label="请选择" v-for="(item,index) in deptList" :key="item.id"
 									:label="item.name" :value="item.id"></el-option>
 
@@ -86,10 +92,10 @@
 							pageSize: 100
 						}, function(resp) {
 							let list = resp.data;
-							let deptId = this.currentUser.deptId;
-							if (deptId != '9999999') {
-								this.m.deptId = deptId;
-							}
+							// let deptId = this.currentUser.deptId;
+							// if (deptId != '9999999') {
+							// 	this.m.deptId = deptId;
+							// }
 							this.deptList = list;
 						}.bind(this))
 					},

+ 196 - 0
sa-view/tb-person-visit-record/health-code-record-add.html

@@ -0,0 +1,196 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>健康码管理-添加/修改</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <!-- 所有的 css js 资源 -->
+    <link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+    <link rel="stylesheet" href="../../static/sa.css">
+    <script src="../../static/kj/vue.min.js"></script>
+    <script src="../../static/kj/element-ui/index.js"></script>
+    <script src="../../static/kj/httpVueLoader.js"></script>
+    <script src="../../static/kj/jquery.min.js"></script>
+    <script src="../../static/kj/layer/layer.js"></script>
+    <script src="../../static/sa.js"></script>
+    <script src="../../static/kj/upload-util.js"></script>
+    <style type="text/css">
+        .c-panel .el-form .c-label {
+            width: 7em !important;
+        }
+
+        .c-panel .el-form .el-input,
+        .c-panel .el-form .el-textarea__inner {
+            width: 250px;
+        }
+    </style>
+</head>
+<body>
+<div class="vue-box" :class="{sbot: id}" style="display: none;" :style="'display: block;'">
+    <!-- ------- 内容部分 ------- -->
+    <div class="s-body">
+        <div class="c-panel">
+            <div class="c-title" v-if="id == 0">数据添加</div>
+            <div class="c-title" v-else>数据修改</div>
+            <el-form>
+                <el-card>
+                    <div slot="header" class="clearfix">
+                        <span>人员信息</span>
+                    </div>
+                    <el-row>
+                        <el-col :span="12">
+                            <sa-item type="text" name="姓名" v-model="m.name" br need></sa-item>
+                            <sa-item type="text" name="身份证" v-model="m.idCard" br need></sa-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <sa-item type="text" name="联系号码" v-model="m.phone" br need></sa-item>
+                            <div class="c-item">
+                                <label class="c-label"><span style="color: red;">*</span>健康码:</label>
+                                <el-select v-model="m.healthStatus" :disabled="currentUser.deptId!=='9999999'">
+                                    <el-option label="请选择" v-for="(item,index) in healthList" :key="index"
+                                               :label="item" :value="item"></el-option>
+
+                                </el-select>
+                            </div>
+                        </el-col>
+
+                    </el-row>
+                </el-card>
+                <el-card>
+                    <div slot="header" class="clearfix">
+                        <span>出入信息</span>
+                    </div>
+                    <div style="display: flex;">
+                        <div class="c-item">
+                            <label class="c-label">入场通道:</label>
+                            <el-select v-model="m.inChannel" placeholder="请选择">
+                                <el-option-group v-for="(area,index) in areaList" :key="index"
+                                                 :label="area.name">
+                                    <el-option v-for="item in area.children" :key="item.id" :label="item.name"
+                                               :value="item.id">
+                                    </el-option>
+                                </el-option-group>
+                            </el-select>
+                        </div>
+                        <sa-item type="num" name="入场体温" v-model="m.inTemperature" br></sa-item>
+                        <sa-item type="datetime" name="入场时间" v-model="m.inTime" br></sa-item>
+                    </div>
+                    <div style="display: flex;">
+                        <div class="c-item">
+                            <label class="c-label">离场通道:</label>
+                            <el-select v-model="m.outChannel" placeholder="请选择">
+                                <el-option-group v-for="(area,index) in areaList" :key="index"
+                                                 :label="area.name">
+                                    <el-option v-for="item in area.children" :key="item.id" :label="item.name"
+                                               :value="item.id">
+                                    </el-option>
+                                </el-option-group>
+                            </el-select>
+                        </div>
+                        <sa-item type="text" name="离场体温" v-model="m.outTemperature" br></sa-item>
+                        <sa-item type="datetime" name="离场时间" v-model="m.outTime" br></sa-item>
+                    </div>
+                </el-card>
+                <sa-item name="" class="s-ok" br>
+                    <el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
+                </sa-item>
+
+
+            </el-form>
+        </div>
+    </div>
+    <!-- ------- 底部按钮 ------- -->
+    <div class="s-foot">
+        <el-button type="primary" @click="ok()">确定</el-button>
+        <el-button @click="sa.closeCurrIframe()">取消</el-button>
+    </div>
+</div>
+<script>
+    var app = new Vue({
+        components: {
+            "sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
+        },
+        el: '.vue-box',
+        data: {
+            currentUser: sa.$sys.getCurrUser(),
+            healthList: [
+                '绿码', '黄码', '红码', '未知'
+            ],
+            areaList: [],
+            id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改)
+            m: {
+                id: '', // 主键
+                deptId: '', // 部门ID
+                healthStatus: '绿码', // 健康码
+                name: '', // 姓名
+                idCard: '', // 身份证
+                phone: '',
+                inChannel: '', // 场所
+                outChannel: '',
+                inTemperature: '36.5', // 体温
+                outTemperature: '36.5',
+                inTime: '', // 时间
+                outTime: '',
+                isNotify: '0',
+            }, // 实体对象
+        },
+        methods: {
+            init(){
+                if(this.isError === 1){
+
+                }
+            },
+            getVenuesList() {
+                console.log(this.currentUser)
+                sa.ajax('/TbVenues/getTree', function(res) {
+                    this.areaList = res.data; // 数据
+                }.bind(this));
+            },
+            // 创建一个 默认Model
+            createModel: function() {
+                return {
+                    id: '', // 主键
+                    deptId: '', // 部门ID
+                    healthStatus: '绿码', // 健康码
+                    name: '', // 姓名
+                    idCard: '', // 身份证
+                    phone: '',
+                    inChannel: '', // 场所
+                    outChannel: '',
+                    inTemperature: '36.5', // 体温
+                    outTemperature: '36.5',
+                    inTime: '', // 时间
+                    outTime: ''
+                }
+            },
+
+            // 提交数据
+            ok: function() {
+                // 表单校验
+                let m = this.m;
+                sa.checkNull(m.name, '请输入 [姓名]');
+                let phone = m.phone;
+                if (!sa.isPhone(phone)) {
+                    sa.error('请输入正确的号码');
+                    return false;
+                }
+                sa.checkNull(m.idCard, '请输入 [身份证]');
+                sa.ajax('/TbPersonVisitRecord/addHealthRecord', m, function(res) {
+                    sa.alert('增加成功', this.clean);
+                }.bind(this));
+            },
+            // 添加/修改 完成后的动作
+            clean: function() {
+                parent.app.f5(); // 刷新父页面列表
+                sa.closeCurrIframe(); // 关闭本页
+            }
+        },
+        mounted: function() {
+            this.getVenuesList();
+            this.init();
+        }
+    })
+</script>
+</body>
+</html>

+ 179 - 0
sa-view/tb-person-visit-record/health-code-record-edit.html

@@ -0,0 +1,179 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>健康码管理-添加/修改</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <!-- 所有的 css js 资源 -->
+    <link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+    <link rel="stylesheet" href="../../static/sa.css">
+    <script src="../../static/kj/vue.min.js"></script>
+    <script src="../../static/kj/element-ui/index.js"></script>
+    <script src="../../static/kj/httpVueLoader.js"></script>
+    <script src="../../static/kj/jquery.min.js"></script>
+    <script src="../../static/kj/layer/layer.js"></script>
+    <script src="../../static/sa.js"></script>
+    <script src="../../static/kj/upload-util.js"></script>
+    <style type="text/css">
+        .c-panel .el-form .c-label {
+            width: 7em !important;
+        }
+
+        .c-panel .el-form .el-input,
+        .c-panel .el-form .el-textarea__inner {
+            width: 250px;
+        }
+    </style>
+</head>
+<body>
+<div class="vue-box" :class="{sbot: id}" style="display: none;" :style="'display: block;'">
+    <!-- ------- 内容部分 ------- -->
+    <div class="s-body">
+        <div class="c-panel">
+            <div class="c-title" v-if="id == 0">数据添加</div>
+            <div class="c-title" v-else>数据修改</div>
+            <el-form v-if="m">
+                <el-row>
+                    <el-col :span="12">
+                        <div class="c-item">
+                            <label class="c-label"><span style="color: red;">*</span>部门:</label>
+                            <el-select v-model="m.deptId" disabled>
+                                <el-option label="请选择" v-for="(item,index) in deptList" :key="item.id"
+                                           :label="item.name" :value="item.id"></el-option>
+
+                            </el-select>
+                        </div>
+                        <sa-item type="text" name="姓名" v-model="m.name" br need></sa-item>
+                        <sa-item type="text" name="身份证" v-model="m.idCard" br need></sa-item>
+                        <sa-item type="text" name="联系号码" v-model="m.phone" br need></sa-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <sa-item type="text" name="体温" v-model="m.temperature" br need></sa-item>
+                        <div class="c-item">
+                            <label class="c-label">离场通道:</label>
+                            <el-select v-model="m.channel" placeholder="请选择">
+                                <el-option-group v-for="(area,index) in areaList" :key="index"
+                                                 :label="area.name">
+                                    <el-option v-for="item in area.children" :key="item.id" :label="item.name"
+                                               :value="item.id">
+                                    </el-option>
+                                </el-option-group>
+                            </el-select>
+                        </div>
+                        <div class="c-item">
+                            <label class="c-label"><span style="color: red;">*</span>健康码:</label>
+                            <el-select v-model="m.healthStatus" :disabled="currentUser.deptId!=='9999999'">
+                                <el-option label="请选择" v-for="(item,index) in healthList" :key="index"
+                                           :label="item" :value="item"></el-option>
+
+                            </el-select>
+                        </div>
+                        <sa-item type="datetime" name="时间" v-model="m.visitDate" br need></sa-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+        </div>
+    </div>
+    <!-- ------- 底部按钮 ------- -->
+    <div class="s-foot">
+        <el-button type="primary" @click="ok()">确定</el-button>
+        <el-button @click="sa.closeCurrIframe()">取消</el-button>
+    </div>
+</div>
+<script>
+    var app = new Vue({
+        components: {
+            "sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
+        },
+        el: '.vue-box',
+        data: {
+            currentUser: sa.$sys.getCurrUser(),
+            areaList: [],
+            healthList: [
+                '绿码', '黄码', '红码', '未知'
+            ],
+            deptList: [],
+            id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改)
+            m: null, // 实体对象
+        },
+        methods: {
+            // 创建一个 默认Model
+            createModel: function() {
+                return {
+                    id: '', // 主键
+                    direction: '', // 出入(1=入场,2=离场)
+                    deptId: '', // 部门ID
+                    phone: '', // 部门名称
+                    name: '', // 姓名
+                    picture: '', // 图片
+                    idCard: '', // 身份证
+                    channel: '', // 通过通道
+                    venues: '', // 场所
+                    temperature: '', // 体温
+                    healthStatus: '', // 健康码
+                    sn: '', // 上传设备
+                    visitDate: '', // 时间
+                    createTime: '', // 创建时间
+                }
+            },
+            // 提交数据
+            ok: function() {
+                // 表单校验
+                let m = this.m;
+                sa.checkNull(m.name, '请输入 [姓名]');
+                let phone = m.phone;
+                if (!sa.isPhone(phone)) {
+                    sa.error('请输入正确的号码');
+                    return false;
+                }
+                sa.checkNull(m.idCard, '请输入 [身份证]');
+                sa.checkNull(m.channel, '请输入 [通过通道]');
+                sa.checkNull(m.venues, '请输入 [场所]');
+                sa.checkNull(m.temperature, '请输入 [体温]');
+                sa.checkNull(m.healthStatus, '请输入 [健康码]');
+                sa.ajax('/TbPersonVisitRecord/updateHealthRecord', m, function(res) {
+                    sa.alert('修改成功', this.clean);
+                }.bind(this));
+            },
+            getVenuesList() {
+                sa.ajax('/TbVenues/getTree', function(res) {
+                    this.areaList = res.data; // 数据
+                }.bind(this));
+            },
+            getDeptList() {
+                sa.ajax('/TbDept/getList', {
+                    pageNo: 1,
+                    pageSize: 100
+                }, function(resp) {
+                    let list = resp.data;
+                    let deptId = this.currentUser.deptId;
+                    if (deptId != 9999999) {
+                        this.m.deptId = deptId;
+                    }
+                    this.deptList = list;
+                }.bind(this))
+            },
+            // 添加/修改 完成后的动作
+            clean: function() {
+                parent.app.f5(); // 刷新父页面列表
+                sa.closeCurrIframe(); // 关闭本页
+            },
+            getById() {
+                sa.ajax('/TbPersonVisitRecord/getById?id=' + this.id, function(res) {
+                    this.m = res.data;
+                    if (res.data == null) {
+                        sa.alert('未能查找到 id=' + this.id + " 详细数据");
+                    }
+                }.bind(this))
+            }
+        },
+        mounted: function() {
+            this.getDeptList();
+            this.getVenuesList();
+            this.getById();
+        }
+    })
+</script>
+</body>
+</html>

+ 75 - 0
sa-view/tb-person-visit-record/health-code-record-info.html

@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>健康码管理-详情</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <!-- 所有的 css js 资源 -->
+    <link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+    <link rel="stylesheet" href="../../static/sa.css">
+    <script src="../../static/kj/vue.min.js"></script>
+    <script src="../../static/kj/element-ui/index.js"></script>
+    <script src="../../static/kj/httpVueLoader.js"></script>
+    <script src="../../static/kj/jquery.min.js"></script>
+    <script src="../../static/kj/layer/layer.js"></script>
+    <script src="../../static/sa.js"></script>
+    <style type="text/css">
+        .c-panel .c-label{width: 8em;}
+    </style>
+</head>
+<body>
+<div class="vue-box sbot" style="display: none;" :style="'display: block;'">
+    <!-- ------- 内容部分 ------- -->
+    <div class="s-body">
+        <div class="c-panel">
+            <el-form v-if="m">
+                <el-row>
+                    <el-col :span="12">
+                        <sa-info type="enum" name="出入" :value="m.direction" :jv="{1: '入场', 2: '离场'}" br></sa-info>
+                        <sa-info name="部门名称" br>{{m.deptName}}</sa-info>
+                        <sa-info name="姓名" br>{{m.name}}</sa-info>
+                        <sa-info type="img" name="图片" :value="m.picture" br></sa-info>
+                        <sa-info name="身份证" br>{{m.idCard}}</sa-info>
+                        <sa-info name="通过通道" br>{{m.channel}}</sa-info>
+                    </el-col>
+                    <el-col :span="12">
+                        <sa-info name="体温" br>{{m.temperature}}</sa-info>
+                        <sa-info name="健康码" br>{{m.healthStatus}}</sa-info>
+                        <sa-info name="检测时间" br>{{m.visitDate}}</sa-info>
+                        <sa-info name="上传时间" br>{{m.createTime}}</sa-info>
+                    </el-col>
+                </el-row>
+            </el-form>
+        </div>
+    </div>
+    <!-- ------- 底部按钮 ------- -->
+    <div class="s-foot">
+        <el-button type="success" @click="sa.closeCurrIframe()">确定</el-button>
+        <el-button @click="sa.closeCurrIframe()">取消</el-button>
+    </div>
+</div>
+<script>
+    var app = new Vue({
+        components: {
+            "sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue')
+        },
+        el: '.vue-box',
+        data: {
+            id: sa.p('id', 0),	// 获取数据ID
+            m: null
+        },
+        methods: {
+        },
+        mounted: function() {
+            sa.ajax('/TbPersonVisitRecord/getById?id=' + this.id, function(res) {
+                this.m = res.data;
+                if(res.data == null) {
+                    sa.alert('未能查找到 id=' + this.id + " 详细数据");
+                }
+            }.bind(this))
+        }
+    })
+
+</script>
+</body>
+</html>

+ 233 - 0
sa-view/tb-person-visit-record/health-code-record-list.html

@@ -0,0 +1,233 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>健康码管理-列表</title>
+    <meta charset="utf-8">
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
+    <!-- 所有的 css & js 资源 -->
+    <link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+    <link rel="stylesheet" href="../../static/sa.css">
+    <script src="../../static/kj/vue.min.js"></script>
+    <script src="../../static/kj/element-ui/index.js"></script>
+    <script src="../../static/kj/httpVueLoader.js"></script>
+    <script src="../../static/kj/jquery.min.js"></script>
+    <script src="../../static/kj/layer/layer.js"></script>
+    <script src="../../static/sa.js"></script>
+</head>
+<body>
+<div class="vue-box" style="display: none;" :style="'display: block;'">
+    <div class="c-panel">
+        <!-- ------------- 检索参数 ------------- -->
+        <div class="c-title">检索参数</div>
+        <el-form ref="form" :model='p' @submit.native.prevent>
+            <el-row>
+                <el-col :span="20">
+                    <div>
+                        <div class="c-item">
+                            <label class="c-label">数据类型:</label>
+                            <el-select v-model="p.dataType" placeholder="请选择">
+                                <el-option label="-全部-" value=""> </el-option>
+                                <el-option label="健康码正常" value="0"> </el-option>
+                                <el-option label="健康码异常" value="1"> </el-option>
+                            </el-select>
+                        </div>
+                        <sa-item type="text" name="姓名" v-model="p.name"></sa-item>
+                        <sa-item type="enum" name="出入场" v-model="p.direction" :jv="{1: '入场', 2: '离场'}" jtype="4"
+                                 def="不限">
+                        </sa-item>
+
+
+                    </div>
+                    <div>
+                        <div class="c-item">
+                            <label class="c-label">健康码:</label>
+                            <el-select v-model="p.healthStatus" placeholder="请选择">
+                                <el-option label="-全部-" value=""> </el-option>
+                                <el-option label="绿码" value="绿码"> </el-option>
+                                <el-option label="黄码" value="黄码"> </el-option>
+                                <el-option label="红码" value="红码"> </el-option>
+                            </el-select>
+                        </div>
+                        <sa-item type="datetime" name="开始时间" v-model="p.startTime"></sa-item>
+                        <sa-item type="datetime" name="结束时间" v-model="p.endTime"></sa-item>
+                        <el-button type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询
+                        </el-button>
+                        <el-button type="info" icon="el-icon-refresh"
+                                   @click="p.direction='';p.name='';p.healthStatus='';p.startTime='';p.endTime='';f5()">
+                            重置
+                        </el-button>
+                    </div>
+                    <div>
+
+                        <el-button type="primary" icon="el-icon-plus" @click="add"
+                                   v-if="sa.isAuth('health-code-record-add')">手工补录
+                        </el-button>
+
+                    </div>
+                </el-col>
+                <el-col :span="4">
+                </el-col>
+            </el-row>
+
+        </el-form>
+        <!-- ------------- 快捷按钮 ------------- -->
+        <el-table class="data-table" ref="data-table" :data="dataList" style="margin-top: 10px;">
+            <sa-td name="序号" type="index"></sa-td>
+            <!--      <sa-td name="组织" prop="deptName" width="120"></sa-td>-->
+            <sa-td name="姓名" prop="name"></sa-td>
+            <sa-td name="联系号码" prop="phone"></sa-td>
+            <!--      <sa-td name="图片" prop="picture" type="img"></sa-td>-->
+            <!--      <sa-td name="体温" prop="temperature"></sa-td>-->
+            <sa-td name="健康码" prop="healthStatus"></sa-td>
+            <sa-td name="场所/通道" prop="channel"></sa-td>
+            <sa-td name="出/入" prop="direction" type="enum" :jv="{1: '入场', 2: '离场'}"></sa-td>
+            <!--      <sa-td name="检测设备" prop="terminalName"></sa-td>-->
+            <sa-td name="检测时间" prop="visitDate" width="160"></sa-td>
+<!--            <sa-td name="分类" prop="type" type="enum" :jv="{1: '补录', 2: '设备上传'}"></sa-td>-->
+            <sa-td name="通知状态" prop="isNotify" type="enum" :jv="{1: '未通知', 2: '已通知', 0: '-'}"></sa-td>
+            <sa-td name="处置状态" prop="isSolve" type="enum" :jv="{1: '未处置', 2: '已处置', 0: '-'}"></sa-td>
+            <sa-td name="处置方法" prop="way"></sa-td>
+            <el-table-column label="操作"  width="240px">
+                <template slot-scope="s">
+                    <el-button v-if="s.row.isSolve == 1" class="c-btn" type="primary"
+                                @click="solveFn1(s.row.id)">处置
+                    </el-button>
+                    <el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看
+                    </el-button>
+                    <el-button v-if="sa.isAuth('health-code-record-add')" class="c-btn" type="primary"
+                               icon="el-icon-edit" @click="update(s.row)">修改
+                    </el-button>
+                    <el-button v-if="sa.isAuth('health-code-record-del')" class="c-btn" type="danger"
+                               icon="el-icon-delete"
+                               @click="del(s.row)">删除
+                    </el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <!-- ------------- 分页 ------------- -->
+        <sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount" @change="f5()">
+        </sa-item>
+    </div>
+    <el-dialog title="请填写处置方法" :visible.sync="solveDate.visible" width="38%">
+        <sa-item type="textarea" name="处置方法" v-model="solveDate.form.way"></sa-item>
+        <span slot="footer" class="dialog-footer">
+					<el-button @click="solveDate.visible = false">取 消</el-button>
+					<el-button type="primary" @click="solve">保 存</el-button>
+				</span>
+    </el-dialog>
+</div>
+<script>
+    var app = new Vue({
+        components: {
+            "sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue'),
+            "sa-td": httpVueLoader('../../sa-frame/com/sa-td.vue'),
+        },
+        el: '.vue-box',
+        data: {
+
+              healthStatusList: [{
+                  name: '全部',
+                  value: ''
+                },
+                {
+                    name: '绿码',
+                    value: '绿码'
+                },
+                {
+                    name: '红码',
+                    value: '红码'
+                },
+                {
+                    name: '黄码',
+                    value: '黄码'
+                },
+            ],
+            p: { // 查询参数
+                id: '', // 主键
+                direction: '', // 出入(1=入场,2=离场)
+                deptName: '', // 部门名称
+                startTime: '',
+                endTime: '',
+                name: '', // 姓名
+                idCard: '', // 身份证
+                channel: '', // 通过通道
+                venues: '', // 场所
+                temperature: '', // 体温
+                healthStatus: '', // 健康码
+                unhealthy: '',
+                dataType: "",
+                pageNo: 1, // 当前页
+                pageSize: 10, // 页大小
+                sortType: 0 // 排序方式
+            },
+            dataCount: 0,
+            dataList: [], // 数据集合
+            solveDate: {
+                visible: false,
+                form: {
+                    id:'',
+                    way: '',
+                },
+            },
+        },
+        methods: {
+            solveFn1(id){
+                this.solveDate.visible = true;
+                this.solveDate.form.id = id;
+            },
+            solve(){
+                sa.ajax('/TbPersonVisitRecord/solve?' , this.solveDate.form, function(res) {
+                    sa.alert('保存成功');
+                    this.solveDate.visible = false;
+                    this.f5();
+                }.bind(this))
+            },
+
+            // 刷新
+            f5: function () {
+                sa.ajax('/TbPersonVisitRecord/getList', sa.removeNull(this.p), function (res) {
+                    this.dataList = res.data; // 数据
+                    this.dataCount = res.dataCount; // 数据总数
+                    sa.f5TableHeight(); // 刷新表格高度
+                }.bind(this));
+            },
+            add() {
+                sa.showIframe('新增数据', 'health-code-record-add.html?id=-1', '1200px', '90%');
+            },
+            // 查看
+            get: function (data) {
+                sa.showIframe('数据详情', 'health-code-record-info.html?id=' + data.id, '700px', '70%');
+            },
+            // 查看 - 根据选中的
+            getBySelect: function (data) {
+                var selection = this.$refs['data-table'].selection;
+                if (selection.length == 0) {
+                    return sa.msg('请选择一条数据')
+                }
+                this.get(selection[0]);
+            },
+            // 修改
+            update: function (data) {
+                sa.showIframe('修改数据', 'health-code-record-edit.html?id=' + data.id, '900px', '70%');
+            },
+            // 删除
+            del: function (data) {
+                sa.confirm('是否删除,此操作不可撤销', function () {
+                    sa.ajax('/TbPersonVisitRecord/deleteHealthRecord?id=' + data.id, function (res) {
+                        sa.arrayDelete(this.dataList, data);
+                        sa.ok('删除成功');
+                        sa.f5TableHeight(); // 刷新表格高度
+                    }.bind(this))
+                }.bind(this));
+            },
+
+        },
+        created: function () {
+            this.f5();
+            sa.onInputEnter();
+        }
+    })
+</script>
+</body>
+</html>

+ 4 - 2
sa-view/tb-person-visit-record/tb-person-visit-record-add.html

@@ -47,7 +47,7 @@
 									<sa-item type="text" name="联系号码" v-model="m.phone" br need></sa-item>
 									<div class="c-item">
 										<label class="c-label"><span style="color: red;">*</span>健康码:</label>
-										<el-select v-model="m.healthStatus" :disabled="currentUser.deptId!==9999999">
+										<el-select v-model="m.healthStatus" :disabled="currentUser.deptId!=='9999999'">
 											<el-option label="请选择" v-for="(item,index) in healthList" :key="index"
 												:label="item" :value="item"></el-option>
 
@@ -70,6 +70,8 @@
 											<el-option v-for="item in area.children" :key="item.id" :label="item.name"
 												:value="item.id">
 											</el-option>
+
+
 										</el-option-group>
 									</el-select>
 								</div>
@@ -95,7 +97,7 @@
 						<sa-item name="" class="s-ok" br>
 							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
 						</sa-item>
-				</div>
+
 
 				</el-form>
 			</div>

+ 1 - 1
sa-view/tb-person-visit-record/tb-person-visit-record-edit.html

@@ -63,7 +63,7 @@
 								</div>
 								<div class="c-item">
 									<label class="c-label"><span style="color: red;">*</span>健康码:</label>
-									<el-select v-model="m.healthStatus" :disabled="currentUser.deptId!==9999999">
+									<el-select v-model="m.healthStatus" :disabled="currentUser.deptId!=='9999999'">
 										<el-option label="请选择" v-for="(item,index) in healthList" :key="index"
 											:label="item" :value="item"></el-option>
 

+ 9 - 1
sa-view/tb-person-visit-record/tb-person-visit-record-list.html

@@ -43,6 +43,11 @@
 								<el-button type="primary" v-if="sa.isAuth('tb-person-visit-record-export')"
 									icon="el-icon-s-unfold" @click="exportFn">导出</el-button>
 							</div>
+							<div>
+
+								<el-button type="primary" icon="el-icon-plus" @click="add" v-if="sa.isAuth('tb-person-visit-record-add')">新增</el-button>
+
+							</div>
 						</el-col>
 						<el-col :span="4">
 						</el-col>
@@ -52,7 +57,7 @@
 				<!-- ------------- 快捷按钮 ------------- -->
 				<el-table class="data-table" ref="data-table" :data="dataList" style="margin-top: 10px;">
 					<sa-td name="序号" type="index"></sa-td>
-					<sa-td name="组织" prop="deptName" width="180"></sa-td>
+					<sa-td name="组织" prop="deptName" width="120"></sa-td>
 					<sa-td name="姓名" prop="name"></sa-td>
 					<sa-td name="联系号码" prop="phone"></sa-td>
 					<sa-td name="图片" prop="picture" type="img"></sa-td>
@@ -138,6 +143,9 @@
 							sa.f5TableHeight(); // 刷新表格高度 
 						}.bind(this));
 					},
+					add(){
+						sa.showIframe('新增数据', 'tb-person-visit-record-add.html?id=-1', '1200px', '90%');
+					},
 					// 查看
 					get: function(data) {
 						sa.showIframe('数据详情', 'tb-person-visit-record-info.html?id=' + data.id, '700px', '70%');

+ 16 - 4
sa-view/tb-venues/tb-venues-add.html

@@ -26,6 +26,18 @@
                     <div class="c-title" v-if="id == 0">数据添加</div>
 					<div class="c-title" v-else>数据修改</div>
 					<el-form v-if="m">
+<<<<<<< HEAD
+=======
+						<div class="c-item">
+							<label class="c-label"><span style="color: red;">*</span>部门:</label>
+<!--							<el-select v-model="m.deptId" :disabled="currentUser.deptId!=='9999999'">-->
+							<el-select v-model="m.deptId" >
+								<el-option label="请选择" v-for="(item,index) in deptList" :key="item.id"
+									:label="item.name" :value="item.id"></el-option>
+						
+							</el-select>
+						</div>
+>>>>>>> 51f36421ae8b879e7e627a50ee37601903b857de
 						<sa-item type="text" name="场所名称" v-model="m.name" br need></sa-item>
 						<sa-item name="" class="s-ok" br>
 							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
@@ -59,10 +71,10 @@
 							pageSize: 100
 						}, function(resp) {
 							let list = resp.data;
-							let deptId = this.currentUser.deptId;
-							if (deptId != '9999999') {
-								this.m.deptId = deptId;
-							}
+							// let deptId = this.currentUser.deptId;
+							// if (deptId != '9999999') {
+							// 	this.m.deptId = deptId;
+							// }
 							this.deptList = list;
 						}.bind(this))
 					},