Commit 06cd07c22c7db5228b236ff44e13a2782e9562a9

Authored by xp.Huang
2 parents 7908d9e5 a7b56d1d

Merge branch 'sqy_dev' into 'main'

'feat:实时数据(新增前端查询),fix:修复通知管理上传图片,feat:地图增加搜索功能'

See merge request huang/yun-teng-iot-front!114
@@ -38,7 +38,6 @@ @@ -38,7 +38,6 @@
38 import 'tinymce/plugins/print'; 38 import 'tinymce/plugins/print';
39 import 'tinymce/plugins/save'; 39 import 'tinymce/plugins/save';
40 import 'tinymce/plugins/searchreplace'; 40 import 'tinymce/plugins/searchreplace';
41 - import 'tinymce/plugins/spellchecker';  
42 import 'tinymce/plugins/tabfocus'; 41 import 'tinymce/plugins/tabfocus';
43 // import 'tinymce/plugins/table'; 42 // import 'tinymce/plugins/table';
44 import 'tinymce/plugins/template'; 43 import 'tinymce/plugins/template';
@@ -289,7 +288,11 @@ @@ -289,7 +288,11 @@
289 return; 288 return;
290 } 289 }
291 const content = editor?.getContent() ?? ''; 290 const content = editor?.getContent() ?? '';
292 - const val = content?.replace(getUploadingImgName(name), `<img src="${url}"/>`) ?? ''; 291 + const val =
  292 + content?.replace(
  293 + getUploadingImgName(name),
  294 + `<img src="${url}" style="height:6rem;width:6rem"/>`
  295 + ) ?? '';
293 setValue(editor, val); 296 setValue(editor, val);
294 } 297 }
295 298
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 :action="uploadUrl" 7 :action="uploadUrl"
8 :showUploadList="false" 8 :showUploadList="false"
9 accept=".jpg,.jpeg,.gif,.png,.webp" 9 accept=".jpg,.jpeg,.gif,.png,.webp"
  10 + :headers="{ 'X-Authorization': 'Bearer' + ' ' + token }"
10 > 11 >
11 <a-button type="primary" v-bind="{ ...getButtonProps }"> 12 <a-button type="primary" v-bind="{ ...getButtonProps }">
12 {{ t('component.upload.imgUpload') }} 13 {{ t('component.upload.imgUpload') }}
@@ -21,7 +22,8 @@ @@ -21,7 +22,8 @@
21 import { useDesign } from '/@/hooks/web/useDesign'; 22 import { useDesign } from '/@/hooks/web/useDesign';
22 import { useGlobSetting } from '/@/hooks/setting'; 23 import { useGlobSetting } from '/@/hooks/setting';
23 import { useI18n } from '/@/hooks/web/useI18n'; 24 import { useI18n } from '/@/hooks/web/useI18n';
24 - 25 + import { JWT_TOKEN_KEY } from '/@/enums/cacheEnum';
  26 + import { getAuthCache } from '/@/utils/auth';
25 export default defineComponent({ 27 export default defineComponent({
26 name: 'TinymceImageUpload', 28 name: 'TinymceImageUpload',
27 components: { Upload }, 29 components: { Upload },
@@ -37,7 +39,7 @@ @@ -37,7 +39,7 @@
37 emits: ['uploading', 'done', 'error'], 39 emits: ['uploading', 'done', 'error'],
38 setup(props, { emit }) { 40 setup(props, { emit }) {
39 let uploading = false; 41 let uploading = false;
40 - 42 + const token: string = getAuthCache(JWT_TOKEN_KEY);
41 const { uploadUrl } = useGlobSetting(); 43 const { uploadUrl } = useGlobSetting();
42 const { t } = useI18n(); 44 const { t } = useI18n();
43 const { prefixCls } = useDesign('tinymce-img-upload'); 45 const { prefixCls } = useDesign('tinymce-img-upload');
@@ -52,7 +54,7 @@ @@ -52,7 +54,7 @@
52 function handleChange(info: Recordable) { 54 function handleChange(info: Recordable) {
53 const file = info.file; 55 const file = info.file;
54 const status = file?.status; 56 const status = file?.status;
55 - const url = file?.response?.url; 57 + const url = file?.response?.fileStaticUri;
56 const name = file?.name; 58 const name = file?.name;
57 59
58 if (status === 'uploading') { 60 if (status === 'uploading') {
@@ -75,6 +77,7 @@ @@ -75,6 +77,7 @@
75 uploadUrl, 77 uploadUrl,
76 t, 78 t,
77 getButtonProps, 79 getButtonProps,
  80 + token,
78 }; 81 };
79 }, 82 },
80 }); 83 });
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 // colorpicker/contextmenu/textcolor plugin is now built in to the core editor, please remove it from your editor configuration 4 // colorpicker/contextmenu/textcolor plugin is now built in to the core editor, please remove it from your editor configuration
5 5
6 export const plugins = [ 6 export const plugins = [
7 - 'advlist anchor autolink autosave code codesample directionality fullscreen hr insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus template textpattern visualblocks visualchars wordcount', 7 + 'advlist anchor autolink autosave code codesample directionality fullscreen hr insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace tabfocus template textpattern visualblocks visualchars wordcount',
8 ]; 8 ];
9 9
10 export const toolbar = [ 10 export const toolbar = [
@@ -99,7 +99,7 @@ export const alarmSearchSchemas: FormSchema[] = [ @@ -99,7 +99,7 @@ export const alarmSearchSchemas: FormSchema[] = [
99 }, 99 },
100 { 100 {
101 field: 'endTime', 101 field: 'endTime',
102 - label: '告警时间范围', 102 + label: '告警时间',
103 component: 'DatePicker', 103 component: 'DatePicker',
104 componentProps: { 104 componentProps: {
105 valueFormat: 'x', 105 valueFormat: 'x',
@@ -223,7 +223,6 @@ export const childDeviceSchemas: FormSchema[] = [ @@ -223,7 +223,6 @@ export const childDeviceSchemas: FormSchema[] = [
223 colProps: { span: 6 }, 223 colProps: { span: 6 },
224 component: 'Select', 224 component: 'Select',
225 componentProps: { 225 componentProps: {
226 - size: 'small',  
227 maxLength: 255, 226 maxLength: 255,
228 options: [ 227 options: [
229 { label: '待激活', value: 'INACTIVE' }, 228 { label: '待激活', value: 'INACTIVE' },
@@ -55,6 +55,16 @@ export const columns: BasicColumn[] = [ @@ -55,6 +55,16 @@ export const columns: BasicColumn[] = [
55 // 查询字段 55 // 查询字段
56 export const searchFormSchema: FormSchema[] = [ 56 export const searchFormSchema: FormSchema[] = [
57 { 57 {
  58 + field: 'name',
  59 + label: '设备名称',
  60 + component: 'Input',
  61 + colProps: { span: 6 },
  62 + componentProps: {
  63 + maxLength: 255,
  64 + placeholder: '请输入设备名称',
  65 + },
  66 + },
  67 + {
58 field: 'deviceType', 68 field: 'deviceType',
59 label: '设备类型', 69 label: '设备类型',
60 component: 'Select', 70 component: 'Select',
@@ -80,27 +90,4 @@ export const searchFormSchema: FormSchema[] = [ @@ -80,27 +90,4 @@ export const searchFormSchema: FormSchema[] = [
80 }, 90 },
81 colProps: { span: 6 }, 91 colProps: { span: 6 },
82 }, 92 },
83 - {  
84 - field: 'name',  
85 - label: '设备名称',  
86 - component: 'Input',  
87 - colProps: { span: 6 },  
88 - componentProps: {  
89 - maxLength: 255,  
90 - placeholder: '请输入设备名称',  
91 - },  
92 - dynamicRules: () => {  
93 - return [  
94 - {  
95 - required: false,  
96 - validator: (_, value) => {  
97 - if (String(value).length > 255) {  
98 - return Promise.reject('字数不超过255个字');  
99 - }  
100 - return Promise.resolve();  
101 - },  
102 - },  
103 - ];  
104 - },  
105 - },  
106 ]; 93 ];
@@ -44,16 +44,31 @@ @@ -44,16 +44,31 @@
44 centered 44 centered
45 > 45 >
46 <div> 46 <div>
47 - <a-form :label-col="labelCol">  
48 - <a-row :gutter="20" class="pt-4 pl-6">  
49 - <a-col :span="8"> 47 + <a-form :label-col="labelCol" :colon="false">
  48 + <a-row :gutter="20" class="mt-4">
  49 + <a-col :span="20">
  50 + <a-form-item label="搜索位置">
  51 + <AutoComplete
  52 + v-model:value="positionState.address"
  53 + :options="dataSource"
  54 + style="width: 100%"
  55 + placeholder="搜索位置"
  56 + @search="debounceSearch"
  57 + @select="handleSelect"
  58 + backfill
  59 + />
  60 + </a-form-item>
  61 + </a-col>
  62 + </a-row>
  63 + <a-row :gutter="20" class="">
  64 + <a-col :span="10">
50 <a-form-item label="经度"> 65 <a-form-item label="经度">
51 - <Input type="input" v-model:value="positionState.longitude" disabled /> 66 + <Input v-model:value="positionState.longitude" disabled />
52 </a-form-item> 67 </a-form-item>
53 </a-col> 68 </a-col>
54 - <a-col :span="8"> 69 + <a-col :span="10">
55 <a-form-item label="纬度"> 70 <a-form-item label="纬度">
56 - <Input type="input" v-model:value="positionState.latitude" disabled /> 71 + <Input v-model:value="positionState.latitude" disabled />
57 </a-form-item> 72 </a-form-item>
58 </a-col> 73 </a-col>
59 </a-row> 74 </a-row>
@@ -68,18 +83,19 @@ @@ -68,18 +83,19 @@
68 import { BasicForm, useForm } from '/@/components/Form'; 83 import { BasicForm, useForm } from '/@/components/Form';
69 import { step1Schemas } from '../../config/data'; 84 import { step1Schemas } from '../../config/data';
70 import { useScript } from '/@/hooks/web/useScript'; 85 import { useScript } from '/@/hooks/web/useScript';
71 - import { Input, Divider, Upload, message, Modal, Form, Row, Col } from 'ant-design-vue'; 86 + import { Input, Upload, message, Modal, Form, Row, Col, AutoComplete } from 'ant-design-vue';
72 import { EnvironmentTwoTone, PlusOutlined } from '@ant-design/icons-vue'; 87 import { EnvironmentTwoTone, PlusOutlined } from '@ant-design/icons-vue';
73 import { upload } from '/@/api/oss/ossFileUploader'; 88 import { upload } from '/@/api/oss/ossFileUploader';
74 import { FileItem } from '/@/components/Upload/src/typing'; 89 import { FileItem } from '/@/components/Upload/src/typing';
75 import { BAI_DU_MAP_URL } from '/@/utils/fnUtils'; 90 import { BAI_DU_MAP_URL } from '/@/utils/fnUtils';
76 import icon from '/@/assets/images/wz.png'; 91 import icon from '/@/assets/images/wz.png';
  92 + import { useDebounceFn } from '@vueuse/core';
77 export default defineComponent({ 93 export default defineComponent({
78 components: { 94 components: {
79 BasicForm, 95 BasicForm,
80 Input, 96 Input,
  97 + AutoComplete,
81 [Input.Group.name]: Input.Group, 98 [Input.Group.name]: Input.Group,
82 - [Divider.name]: Divider,  
83 Upload, 99 Upload,
84 EnvironmentTwoTone, 100 EnvironmentTwoTone,
85 PlusOutlined, 101 PlusOutlined,
@@ -101,16 +117,7 @@ @@ -101,16 +117,7 @@
101 emits: ['next'], 117 emits: ['next'],
102 setup(props, { emit }) { 118 setup(props, { emit }) {
103 const devicePic = ref(''); 119 const devicePic = ref('');
104 - let positionState = reactive<{  
105 - longitude: string;  
106 - latitude: string;  
107 - description?: string;  
108 - address: string;  
109 - }>({  
110 - longitude: '',  
111 - latitude: '',  
112 - address: '',  
113 - }); 120 +
114 const [register, { validate, resetFields, setFieldsValue, getFieldsValue, updateSchema }] = 121 const [register, { validate, resetFields, setFieldsValue, getFieldsValue, updateSchema }] =
115 useForm({ 122 useForm({
116 labelWidth: 100, 123 labelWidth: 100,
@@ -169,6 +176,35 @@ @@ -169,6 +176,35 @@
169 } 176 }
170 }; 177 };
171 178
  179 + let positionState = reactive<{
  180 + longitude: string;
  181 + latitude: string;
  182 + description?: string;
  183 + address: string;
  184 + map: null;
  185 + marker: null;
  186 + }>({
  187 + longitude: '',
  188 + latitude: '',
  189 + address: '',
  190 + map: null,
  191 + marker: null,
  192 + });
  193 + /**
  194 + * 逆地址解析函数(根据坐标点获取详细地址)
  195 + * @param {Object} point 百度地图坐标点,必传
  196 + */
  197 + function getAddrByPoint(point) {
  198 + let geco = new BMap.Geocoder();
  199 + geco.getLocation(point, function (res) {
  200 + positionState.marker.setPosition(point); //重新设置标注的地理坐标
  201 + positionState.map.panTo(point); //将地图的中心点更改为给定的点
  202 + positionState.address = res.address; //记录该点的详细地址信息
  203 + positionState.longitude = point.lng; //记录当前坐标点
  204 + positionState.latitude = point.lat;
  205 + });
  206 + }
  207 +
172 // 地图 208 // 地图
173 const wrapRef = ref<HTMLDivElement | null>(null); 209 const wrapRef = ref<HTMLDivElement | null>(null);
174 const { toPromise } = useScript({ src: BAI_DU_MAP_URL }); 210 const { toPromise } = useScript({ src: BAI_DU_MAP_URL });
@@ -180,48 +216,94 @@ @@ -180,48 +216,94 @@
180 const BMap = (window as any).BMap; 216 const BMap = (window as any).BMap;
181 if (!wrapEl) return; 217 if (!wrapEl) return;
182 let preMarker = null; 218 let preMarker = null;
183 - const map = new BMap.Map(wrapEl); 219 + positionState;
  220 + positionState.map = new BMap.Map(wrapEl, { enableMapClick: false });
184 let myIcon = new BMap.Icon(icon, new BMap.Size(20, 30)); 221 let myIcon = new BMap.Icon(icon, new BMap.Size(20, 30));
185 const point = new BMap.Point(Number(longitude), Number(latitude)); 222 const point = new BMap.Point(Number(longitude), Number(latitude));
186 - let marker = new BMap.Marker(point, { icon: myIcon });  
187 - if (marker) {  
188 - map.removeOverlay(preMarker); 223 + positionState.marker = new BMap.Marker(point, { icon: myIcon, enableDragging: true });
  224 + if (positionState.marker) {
  225 + positionState.map.removeOverlay(preMarker);
189 } 226 }
190 - map.addOverlay(marker);  
191 - preMarker = marker;  
192 - map.centerAndZoom(point, 15);  
193 - map.enableScrollWheelZoom(true);  
194 - map.addEventListener('click', (e) => {  
195 - const { lat, lng } = e.point;  
196 - positionState.latitude = lat + '';  
197 - positionState.longitude = lng + '';  
198 - let gc = new BMap.Geocoder();  
199 - let newPoint = new BMap.Point(lng, lat); 227 + positionState.map.addOverlay(positionState.marker);
  228 + preMarker = positionState.marker;
  229 + positionState.map.centerAndZoom(point, 15);
  230 + positionState.map.enableScrollWheelZoom(true);
  231 + let navigationControl = new BMap.NavigationControl({
  232 + //创建一个特定样式的地图平移缩放控件
  233 + anchor: BMAP_ANCHOR_TOP_RIGHT, //靠右上角位置
  234 + type: BMAP_NAVIGATION_CONTROL_LARGE, //SMALL控件类型
  235 + });
  236 + positionState.map.addControl(navigationControl); //将控件添加到地图
200 237
201 - // 添加锚点  
202 - if (!e.overlay) {  
203 - let marker = new BMap.Marker(e.point, { icon: myIcon });  
204 - map.removeOverlay(preMarker);  
205 - map.addOverlay(marker);  
206 - preMarker = marker;  
207 - }  
208 - //获取详细的地址,精确到街道的名称  
209 - gc.getLocation(newPoint, (rs) => {  
210 - let addComp = rs.addressComponents;  
211 - let address = addComp.city + addComp.district + addComp.street + addComp.streetNumber;  
212 - positionState.address = address;  
213 - }); 238 + positionState.marker.addEventListener('dragend', function (e) {
  239 + getAddrByPoint(e.point); //拖拽结束后调用逆地址解析函数,e.point为拖拽后的地理坐标
  240 + });
  241 + positionState.map.addEventListener('click', (e) => {
  242 + getAddrByPoint(e.point);
214 }); 243 });
215 } 244 }
  245 + const dataSource = ref<any[]>([]);
  246 +
  247 + const onSearch = (searchText: string) => {
  248 + if (!searchText) {
  249 + dataSource.value = [];
  250 + return;
  251 + }
  252 + let local = new BMap.LocalSearch(positionState.map, {
  253 + onSearchComplete(res) {
  254 + //检索完成后的回调函数
  255 + if (local.getStatus() == BMAP_STATUS_SUCCESS) {
  256 + const searchArr = [];
  257 + for (let i = 0; i < res.getCurrentNumPois(); i++) {
  258 + const item = res.getPoi(i);
  259 + console.log(item);
  260 + searchArr.push({
  261 + label: item.address + item.title,
  262 + value: item.address + item.title,
  263 + point: item.point,
  264 + });
  265 + }
  266 + dataSource.value = searchArr;
  267 + }
  268 + },
  269 + }); //调用search方法,根据检索词searchText发起检索
  270 + local.search(searchText);
  271 + console.log(dataSource);
  272 + };
  273 + // 防抖函数包装一下,防止频繁执行
  274 + const debounceSearch = useDebounceFn(onSearch, 500);
  275 + function handleSelect(value, option) {
  276 + dataSource.value = [];
  277 + console.log(option);
  278 + positionState.address = option.value; //记录详细地址,含建筑物名
  279 + const { lat, lng } = option.point;
  280 + positionState.latitude = lat; //记录当前选中地址坐标
  281 + positionState.longitude = lng; //记录当前选中地址坐标
  282 + positionState.map.clearOverlays(); //清除地图上所有覆盖物
  283 + let myIcon = new BMap.Icon(icon, new BMap.Size(20, 30));
  284 + positionState.marker = new BMap.Marker(option.point, {
  285 + icon: myIcon,
  286 + enableDragging: true,
  287 + }); //根据所选坐标重新创建Marker
  288 + positionState.marker.addEventListener('dragend', function (e) {
  289 + getAddrByPoint(e.point); //拖拽结束后调用逆地址解析函数,e.point为拖拽后的地理坐标
  290 + });
  291 + positionState.map.addOverlay(positionState.marker); //将覆盖物重新添加到地图中
  292 + positionState.map.panTo(option.point); //将地图的中心点更改为选定坐标点
  293 + }
  294 +
216 // 确定选择的位置 295 // 确定选择的位置
217 const handleOk = () => { 296 const handleOk = () => {
218 visible.value = false; 297 visible.value = false;
219 }; 298 };
220 // 取消选择位置 299 // 取消选择位置
221 const handleCancel = () => { 300 const handleCancel = () => {
  301 + dataSource.value = [];
  302 +
222 for (let key in positionState) { 303 for (let key in positionState) {
223 positionState[key] = ''; 304 positionState[key] = '';
224 } 305 }
  306 + console.log(positionState);
225 }; 307 };
226 // 父组件调用更新字段值的方法 308 // 父组件调用更新字段值的方法
227 function parentSetFieldsValue(data) { 309 function parentSetFieldsValue(data) {
@@ -280,7 +362,7 @@ @@ -280,7 +362,7 @@
280 handleOk, 362 handleOk,
281 handleCancel, 363 handleCancel,
282 wrapRef, 364 wrapRef,
283 - labelCol: { style: { width: '40px' } }, 365 + labelCol: { style: { width: '100px' } },
284 parentSetFieldsValue, 366 parentSetFieldsValue,
285 parentGetFieldsValue, 367 parentGetFieldsValue,
286 parentValidate, 368 parentValidate,
@@ -288,6 +370,10 @@ @@ -288,6 +370,10 @@
288 parentResetPositionState, 370 parentResetPositionState,
289 disabledDeviceType, 371 disabledDeviceType,
290 nextStep, 372 nextStep,
  373 + onSearch,
  374 + handleSelect,
  375 + dataSource,
  376 + debounceSearch,
291 }; 377 };
292 }, 378 },
293 }); 379 });
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 columns: alarmColumns, 42 columns: alarmColumns,
43 useSearchForm: true, 43 useSearchForm: true,
44 formConfig: { 44 formConfig: {
45 - labelWidth: 120, 45 + labelWidth: 100,
46 schemas: alarmSearchSchemas, 46 schemas: alarmSearchSchemas,
47 }, 47 },
48 showTableSetting: true, 48 showTableSetting: true,
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 </div> 25 </div>
26 </template> 26 </template>
27 <script lang="ts"> 27 <script lang="ts">
28 - import { defineComponent, onMounted } from 'vue'; 28 + import { defineComponent } from 'vue';
29 import { Tag } from 'ant-design-vue'; 29 import { Tag } from 'ant-design-vue';
30 import { DeviceState } from '/@/api/device/model/deviceModel'; 30 import { DeviceState } from '/@/api/device/model/deviceModel';
31 import { BasicTable, useTable } from '/@/components/Table'; 31 import { BasicTable, useTable } from '/@/components/Table';
@@ -44,19 +44,14 @@ @@ -44,19 +44,14 @@
44 }, 44 },
45 }, 45 },
46 setup(props) { 46 setup(props) {
47 - console.log(123);  
48 - onMounted(() => {  
49 - console.log(props.fromId);  
50 - });  
51 const [registerTable] = useTable({ 47 const [registerTable] = useTable({
52 api: getChildDevicePage, 48 api: getChildDevicePage,
53 columns: childDeviceColumns, 49 columns: childDeviceColumns,
54 formConfig: { 50 formConfig: {
55 - labelWidth: 120, 51 + labelWidth: 100,
56 schemas: childDeviceSchemas, 52 schemas: childDeviceSchemas,
57 }, 53 },
58 beforeFetch: (data) => { 54 beforeFetch: (data) => {
59 - console.log(props.fromId);  
60 Reflect.set(data, 'fromId', props.fromId); 55 Reflect.set(data, 'fromId', props.fromId);
61 }, 56 },
62 useSearchForm: true, 57 useSearchForm: true,
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 recordList: Array<socketDataType>(), 48 recordList: Array<socketDataType>(),
49 }); 49 });
50 const { createMessage } = useMessage(); 50 const { createMessage } = useMessage();
51 - const [registerTable] = useTable({ 51 + const [registerTable, { getForm, setTableData }] = useTable({
52 columns: realTimeDataColumns, 52 columns: realTimeDataColumns,
53 showTableSetting: true, 53 showTableSetting: true,
54 bordered: true, 54 bordered: true,
@@ -56,18 +56,42 @@ @@ -56,18 +56,42 @@
56 dataSource: state.recordList, 56 dataSource: state.recordList,
57 useSearchForm: true, 57 useSearchForm: true,
58 formConfig: { 58 formConfig: {
59 - labelWidth: 120, 59 + labelWidth: 100,
60 schemas: [ 60 schemas: [
61 { 61 {
62 - field: 'icon',  
63 - label: '设备配置',  
64 - component: 'Select', 62 + field: 'key',
  63 + label: '键/值',
  64 + component: 'Input',
65 colProps: { span: 6 }, 65 colProps: { span: 6 },
66 componentProps: { 66 componentProps: {
  67 + placeholder: '请输入 键/值',
67 maxLength: 255, 68 maxLength: 255,
68 }, 69 },
69 }, 70 },
70 ], 71 ],
  72 + // 自定义前端查询
  73 + submitFunc() {
  74 + const { getFieldsValue } = getForm();
  75 + const { key } = getFieldsValue();
  76 + if (!key) {
  77 + setTableData(state.recordList);
  78 + return;
  79 + }
  80 + const newRecordList = state.recordList.find((item) => {
  81 + if (item.key === key) return item;
  82 + console.log('--------------------------', item);
  83 + if (item.value === key) return item;
  84 + });
  85 + console.log(newRecordList);
  86 + if (!newRecordList) {
  87 + setTableData([]);
  88 + } else {
  89 + setTableData([newRecordList]);
  90 + }
  91 + },
  92 + resetFunc() {
  93 + setTableData(state.recordList);
  94 + },
71 }, 95 },
72 }); 96 });
73 97
@@ -115,7 +139,6 @@ @@ -115,7 +139,6 @@
115 createMessage.error('webSocket连接超时,请联系管理员'); 139 createMessage.error('webSocket连接超时,请联系管理员');
116 }, 140 },
117 }); 141 });
118 -  
119 return { 142 return {
120 registerTable, 143 registerTable,
121 }; 144 };
@@ -162,7 +162,7 @@ @@ -162,7 +162,7 @@
162 api: devicePage, 162 api: devicePage,
163 columns, 163 columns,
164 formConfig: { 164 formConfig: {
165 - labelWidth: 120, 165 + labelWidth: 100,
166 schemas: searchFormSchema, 166 schemas: searchFormSchema,
167 resetFunc: resetFn, 167 resetFunc: resetFn,
168 }, 168 },
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 render: ({ model, field }) => { 26 render: ({ model, field }) => {
27 return h(Tinymce, { 27 return h(Tinymce, {
28 value: model[field], 28 value: model[field],
29 - showImageUpload: false, 29 + // showImageUpload: false,
30 onChange: (value: string) => { 30 onChange: (value: string) => {
31 model[field] = value; 31 model[field] = value;
32 }, 32 },
@@ -101,9 +101,8 @@ export const formSchema: FormSchema[] = [ @@ -101,9 +101,8 @@ export const formSchema: FormSchema[] = [
101 field: 'content', 101 field: 'content',
102 component: 'Input', 102 component: 'Input',
103 colProps: { span: 24 }, 103 colProps: { span: 24 },
104 - label: '内容', 104 + label: '通知内容',
105 required: true, 105 required: true,
106 - defaultValue: '',  
107 render: ({ model, field }) => { 106 render: ({ model, field }) => {
108 return h(Tinymce, { 107 return h(Tinymce, {
109 value: model[field], 108 value: model[field],
@@ -143,15 +142,6 @@ export const formSchema: FormSchema[] = [ @@ -143,15 +142,6 @@ export const formSchema: FormSchema[] = [
143 }, 142 },
144 ifShow: ({ values }) => isOrg(Reflect.get(values, 'receiverType')), 143 ifShow: ({ values }) => isOrg(Reflect.get(values, 'receiverType')),
145 }, 144 },
146 - {  
147 - field: 'abc',  
148 - component: 'Input',  
149 - label: '',  
150 - colProps: {  
151 - span: 12,  
152 - },  
153 - slot: 'add',  
154 - },  
155 ]; 145 ];
156 146
157 export const searchFormSchema: FormSchema[] = [ 147 export const searchFormSchema: FormSchema[] = [
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 }, 38 },
39 { 39 {
40 field: 'type', 40 field: 'type',
41 - label: '类型:', 41 + label: '类型',
42 render: (_, { type }) => { 42 render: (_, { type }) => {
43 return type === 'NOTICE' 43 return type === 'NOTICE'
44 ? '公告' 44 ? '公告'