ソースを参照

优化代码以及删除没用的东西。

xiaochan 2 年 前
コミット
6ac1126e87

+ 0 - 9
src/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru.js

@@ -122,15 +122,6 @@ export function getSupplyType() {
     })
 }
 
-export function huoQuZhuYuanPinLv(code) {
-    return request({
-        url: url + '/huoQuZhuYuanPinLv',
-        method: 'get',
-        params: {code},
-    })
-}
-
-
 export function huoQuZhiXinKeShi(code) {
     return request({
         url: url + '/huoQuZhiXinKeShi',

+ 46 - 25
src/components/query-components/XcQuery.vue

@@ -26,23 +26,13 @@
       </div>
       <el-form-item :label="value.label"
                     :prop="value.key">
-        <component
-            v-model="pageJson.queryParam[value.key]"
-            v-bind="value.bind"
-            :is="el[value.name]">
-          <template v-if="value.selectData && value.name ==='ElSelect'">
-            <el-option :label="select.label"
-                       :value="select.value"
-                       v-for="select in value.selectData"/>
-          </template>
-          <template v-if="value.text">
-            {{ value.text }}
-          </template>
-        </component>
+        <component :is="render(value)"/>
       </el-form-item>
     </div>
+
     <el-form-item>
       <el-button icon="Search" type="primary" @click="submit(true)">查询</el-button>
+      <el-button icon="RefreshLeft" @click="exportExcel">导出Excel</el-button>
       <el-button icon="RefreshLeft" @click="formReset">重置</el-button>
     </el-form-item>
   </el-form>
@@ -50,15 +40,15 @@
 
 <script setup lang="ts">
 import * as el from "element-plus";
-import {FormInstance, FormRules} from "element-plus";
-import {onMounted, ref, watch} from 'vue'
-import XEUtils from 'xe-utils'
+import {ElOption, FormInstance, FormRules} from "element-plus";
+import {onMounted, ref, watch, h} from 'vue'
 import {componentType, headerType} from "./page-help-type";
 import {useVModel} from "@vueuse/core";
-import {currentAndAFewDaysAgo, getFormatDatetime} from '../../utils/date'
-import moment from 'moment'
+import {currentAndAFewDaysAgo, getFormatDatetime} from '@/utils/date'
+import moment from 'moment';
 import {executeSQL, extractQueryData, pageHelpMitt} from "./page-help";
-import convertSql from "@/components/query-components/convert-sql";
+import XEUtils from "xe-utils";
+import {ExcelName} from '@/utils/ExportExcel'
 
 const props = defineProps<{
   pageJson: componentType,
@@ -78,10 +68,6 @@ const queryParam = ref({})
 
 const pageJson = useVModel(props, 'pageJson', emits)
 const propsCurrentIndex = useVModel(props, 'currentIndex', emits)
-
-
-
-
 const submit = async (reset = false) => {
   await formRef.value.validate()
 
@@ -224,6 +210,43 @@ const initAttribute = () => {
 }
 
 
+const render = (value: headerType) => {
+  let props = {
+    modelValue: pageJson.value.queryParam[value.key],
+    "onUpdate:modelValue": (val) => {
+      pageJson.value.queryParam[value.key] = val
+    },
+  }
+  XEUtils.assign(props, value.bind)
+  let children = renderChild(value)
+  return h(el[value.name], props, children === null ? children : () => children)
+}
+
+const renderChild = (value: headerType): [] | null => {
+  let children = null
+  if (value.name === 'ElSelect') {
+    if (value.selectData.length > 0) {
+      children = []
+      value.selectData.forEach(item => {
+        let tempH = h(ElOption, {
+          label: item.label,
+          value: item.value
+        }, null)
+        children.push(tempH)
+      })
+    }
+  }
+  return children
+}
+
+const exportExcel = () => {
+  let title = {}
+  pageJson.value.columns.forEach(item => {
+    title[item.bind.prop] = item.bind.label
+  })
+  ExcelName(pageJson.value.tableConfig.data, title)
+}
+
 watch(() => pageJson.value.header.length, () => {
   dataReset()
   intiRules()
@@ -234,8 +257,6 @@ onMounted(() => {
   dataReset()
   intiRules()
   initAttribute()
-  pageJson.value.submitClickFunc = submit
-  console.log(el)
 })
 
 defineExpose({

+ 15 - 12
src/components/query-components/page-help-type.ts

@@ -66,6 +66,20 @@ interface formConfig {
     labelSuffix?: string,
 }
 
+export interface PageJsonColumns {
+    bind: {
+        prop: string,
+        label: string,
+        showOverflowTooltip: boolean,
+        type?: 'selection' | 'index' | string
+        fixed?: 'left' | 'right' | boolean,
+        align?: 'left' | 'center' | 'right',
+        width?: number,
+    };
+    render: string;
+    exportColumns: boolean;
+}
+
 export interface componentType {
     isShow: boolean;
     header: headerType[]
@@ -81,18 +95,7 @@ export interface componentType {
         rowKey?: string,
         loading: boolean,
     };
-    columns: {
-        bind: {
-            prop: string,
-            label: string,
-            showOverflowTooltip: boolean,
-            type?: 'selection' | 'index' | string
-            fixed?: 'left' | 'right' | boolean,
-            align?: 'left' | 'center' | 'right',
-            width?: number,
-        };
-        render: string
-    }[],
+    columns: PageJsonColumns[],
     pageConfig: {
         currentPage: number;
         pageSize: number;

+ 1 - 0
src/components/query-components/page-help.ts

@@ -262,6 +262,7 @@ export const interFaced = {
 export const executeSQL = (sqlStr: string, data: any) => {
     let sql: string = convertSql(sqlStr, data)
     let res: AxiosPromise<any>
+    console.log('运行的sql\n', sql)
     try {
         res = service({
             url: '/reportCenter/executeSql',

+ 0 - 11
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuoQuMuBan.vue

@@ -268,17 +268,6 @@ const disabledDate = (time) => {
 }
 
 // 获取评率
-const getFrequCodeName = async (val) => {
-  frequCodeName.value = val.name
-}
-
-const pinLvRemoteMethod = (val) => {
-  if (val.length > 1) {
-    huoQuZhuYuanPinLv(val).then((res) => {
-      yaoPinPingLvData.value = res
-    })
-  }
-}
 
 onMounted(() => {
   dianJiChaXun()

+ 4 - 1
src/directives/v-title.ts

@@ -41,8 +41,11 @@ const VTitle = {
         el.addEventListener('mouseleave', (evt) => {
             div.style.display = 'none';
         })
-
+    },
+    unmounted() {
+        div.style.display = 'none';
     }
+
 }
 
 

+ 10 - 10
src/utils/ExportExcel.js

@@ -1,18 +1,17 @@
-import fs from 'file-saver'
-import XLSX from 'xlsx'
-import {clone} from "./clone";
+import fs from 'file-saver';
+import XLSX from 'xlsx';
 import {ElMessage, ElMessageBox} from "element-plus";
 import {listIsBlank} from "./blank-utils";
+import XEUtils from "xe-utils";
 
 export function Export(json, fields, filename) {
-    const temp = clone(json)
-    temp.forEach(item => {
-        for (let i in item) {
-            if (fields.hasOwnProperty(i)) {
-                item[fields[i]] = item[i];
-            }
-            delete item[i]; //删除原先的对象属性
+    let temp = []
+    XEUtils.arrayEach(json, (item) => {
+        let tempData = {}
+        for (let key in fields) {
+            tempData[key] = item[fields[key]]
         }
+        temp.push(tempData)
     })
     let sheetName = filename //excel的文件名称
     let wb = XLSX.utils.book_new()  //工作簿对象包含一SheetNames数组,以及一个表对象映射表名称到表对象。XLSX.utils.book_new实用函数创建一个新的工作簿对象。
@@ -40,6 +39,7 @@ export function ExcelName(json, fields) {
     if (listIsBlank(json)) {
         return ElMessage.error("没有可以导出的数据。")
     }
+
     ElMessageBox.prompt('请输入导出的文件名称。', '提示', {
         type: "warning",
         confirmButtonText: '确定',

+ 8 - 1
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/EmrMain.vue

@@ -438,7 +438,7 @@ const emrEvent = {
     openOrClosePage(isOpenPage.value)
     // 如果创建人不是自己就要开启审阅 如果是病程记录就不需要触发
     if (!isCourse()) {
-      openTheTraceByUser(createId)
+      openTheTraceByUser(createId);
     }
   },
 
@@ -1047,6 +1047,13 @@ const courseSegmentLocking = async () => {
           node.view.setDeletable(false);
         }
       }
+
+      // 测试环境下面随便删除
+      if (isDev) {
+        node.view.setReadonly(false);
+        node.view.setDeletable(true);
+      }
+
     } else {
       node.view.setReadonly(true);
       node.view.setDeletable(false);

ファイルの差分が大きいため隠しています
+ 1 - 0
src/views/utilities/page-editor-help/PageEditorHelp.vue


+ 177 - 0
src/views/utilities/page-editor-help/components/EditColumnRender.vue

@@ -0,0 +1,177 @@
+<script setup lang="ts">
+import {nextTick, ref} from "vue";
+import {useVModels} from "@vueuse/core";
+import {editor} from "monaco-editor";
+import IStandaloneCodeEditor = editor.IStandaloneCodeEditor;
+import * as monaco from "monaco-editor";
+import sleep from "@/utils/sleep";
+import {componentType, PageJsonColumns} from "@/components/query-components/page-help-type";
+
+const props = defineProps<{
+  data: PageJsonColumns,
+  pageJson: componentType
+  modelValue: boolean
+}>()
+
+const emits = defineEmits(['update:data', 'update:modelValue'])
+const {data, pageJson, modelValue} = useVModels(props, emits)
+let jsonEditorMonaco: IStandaloneCodeEditor, renderMonaco: IStandaloneCodeEditor
+
+const dialog = ref(true)
+const jsonEditRef = ref(null)
+const renderEditRef = ref(null)
+
+const jsonEdit = async () => {
+  jsonEditorMonaco = monaco.editor.create(jsonEditRef.value, {
+    // 初始化的dom节点
+    value: JSON.stringify(data.value), // 初始化值
+    language: 'json', // 语言支持自行查阅demo
+    automaticLayout: true, // 自适应布局
+    theme: 'vs-dark', // 官方自带三种主题vs, hc-black, or vs-dark
+    foldingStrategy: 'indentation',
+    renderLineHighlight: 'all', // 行亮
+    selectOnLineNumbers: true, // 显示行号
+    minimap: {
+      enabled: false,
+    },
+    readOnly: false, // 只读
+    fontSize: 16, // 字体大小
+    scrollBeyondLastLine: false, // 取消代码后面一大段空白
+    overviewRulerBorder: true,
+  });
+
+  await sleep(200)
+  jsonEditorMonaco.focus()
+  jsonEditorMonaco.trigger("anything", "editor.action.formatDocument", "")
+}
+
+const renderEdit = async () => {
+  renderMonaco = monaco.editor.create(renderEditRef.value, {
+    // 初始化的dom节点
+    value: data.value.render, // 初始化值
+    language: 'javascript', // 语言支持自行查阅demo
+    automaticLayout: true, // 自适应布局
+    theme: 'vs-dark', // 官方自带三种主题vs, hc-black, or vs-dark
+    foldingStrategy: 'indentation',
+    renderLineHighlight: 'all', // 行亮
+    selectOnLineNumbers: true, // 显示行号
+    minimap: {
+      enabled: false,
+    },
+    readOnly: false, // 只读
+    fontSize: 16, // 字体大小
+    scrollBeyondLastLine: false, // 取消代码后面一大段空白
+    overviewRulerBorder: true,
+  });
+
+  await sleep(200)
+}
+
+const setScopeType = () => {
+  let columns = []
+  pageJson.value.columns.forEach(item => {
+    if (item.bind.prop) {
+      columns.push(`${item.bind.prop}:string`);
+    }
+  })
+
+  let scopeType = `
+    interface scope{
+      row: {${columns.join(',')}},
+      // 行号
+      $index: number
+    }
+  `
+  monaco
+      .languages
+      .typescript
+      .javascriptDefaults
+      .addExtraLib(scopeType);
+}
+
+const opened = async () => {
+  await nextTick()
+  await jsonEdit()
+  await renderEdit()
+  setScopeType()
+}
+
+const closed = () => {
+  data.value = JSON.parse(jsonEditorMonaco.getValue());
+  data.value.render = renderMonaco.getValue();
+  jsonEditorMonaco.dispose();
+  renderMonaco.dispose();
+  modelValue.value = false
+}
+
+const addRender = () => {
+  let str = `/**
+ * @param {h} h 创建 html 标签
+ * @param {scope} scope row表格数据, $index 下标
+ * return 一定要写返回值 返回一个虚拟dom
+ */\nfunction render(h, {row,$index}){\n return \n}`
+  data.value['render'] = str
+  renderMonaco.setValue(str)
+}
+
+</script>
+
+<template>
+  <el-dialog v-model="dialog"
+             @opened="opened"
+             @closed="closed"
+             draggable
+             top="0%"
+             width="100%"
+             title="列编辑">
+    <div style="height: 400px">
+      <div style="display: flex; height: 100%; width: 100%">
+        <div style="height: 100%; width: 30%">
+          <a href="https://element-plus.gitee.io/zh-CN/component/table.html#table-column-%E5%B1%9E%E6%80%A7"
+             target="_blank">element-plus官网</a>
+          <pre>其他bind 属性可以去看
+bind: {
+ prop: 字段名,
+ label: 字段中文名,
+ type?: 'selection'  = 多选 |  'index' = 下标,不支持展开行
+ fixed?: 'left'  = 左固定 | 'right' = 右固定 | boolean,
+ showOverflowTooltip?: boolean,内容过多省略并显示
+ align?: 'left' | 'center' | 'right',
+ width?: number,
+ reserveSelection?: boolean,
+}
+render:用于渲染表格中的数据
+</pre>
+        </div>
+        <div ref="jsonEditRef" style="height: 100%; flex: 1"/>
+      </div>
+    </div>
+
+    <div style="height: 400px">
+      <div style="display: flex; height: 100%; width: 100%">
+        <div style="height: 100%; width: 30%">
+          <el-button @click="addRender" type="primary">添加render</el-button>
+          <pre>
+实例:function render(h,  {row, $index}) {
+  let {sex, name} = scope.row
+  // 判断如果性别是 1 就显示男性
+  if (sex === 1) {
+    // 这里用的是 element-plus 的 tag标签
+    return h(ElTag, {type: 'success'}, () => '男')
+  } else if (sex === 2) {
+    // 判断如果性别是 2 就显示女性,并且字体标红
+    // 这里用的是浏览器自带的标签需要带上 单引号
+    return h('span', {style: {color: 'red'}}, () => '女')
+  }
+}
+          </pre>
+        </div>
+        <div style="height: 100%; flex: 1" ref="renderEditRef"/>
+      </div>
+    </div>
+  </el-dialog>
+</template>
+
+<style scoped lang="scss">
+
+</style>

+ 27 - 4
src/views/utilities/page-editor-help/components/PageHelpColumns.vue

@@ -8,6 +8,7 @@ import {useCompRef} from "@/utils/useCompRef";
 import {ElTable} from "element-plus";
 import XEUtils from "xe-utils";
 import Sortable from 'sortablejs'
+import EditColumnRender from "@/views/utilities/page-editor-help/components/EditColumnRender.vue";
 
 const props = defineProps<{
   modelValue: boolean
@@ -79,7 +80,8 @@ const selectedClick = () => {
           label: item.code,
           showOverflowTooltip: false,
         },
-        render: ''
+        render: '',
+        exportColumns: true,
       })
     }
   })
@@ -123,6 +125,13 @@ const findInput = async (index) => {
   }
 }
 
+const columnData = ref()
+const columnDialog = ref(false)
+const editColumnClick = (row) => {
+  columnData.value = row
+  columnDialog.value = true
+}
+
 onMounted(async () => {
   watchColumns = watch(() => pageJson.value.columns, () => {
     changeColumns = true
@@ -135,7 +144,10 @@ onMounted(async () => {
 </script>
 
 <template>
-
+  <EditColumnRender v-model:data="columnData"
+                    v-model:page-json="pageJson"
+                    v-model="columnDialog"
+                    v-if="columnDialog"/>
   <el-dialog v-model="dialog"
              title="表格列配置"
              fullscreen
@@ -209,12 +221,23 @@ onMounted(async () => {
                            :inactive-value="false"/>
               </template>
             </el-table-column>
-            <el-table-column prop="render" label="插槽" show-overflow-tooltip/>
-            <el-table-column width="65" fixed="right">
+            <el-table-column prop="exportColumns" label="导出列" width="100">
+              <template #default="scope">
+                <el-switch v-model="scope.row.exportColumns"
+                           :active-value="true"
+                           :inactive-value="false"/>
+              </template>
+            </el-table-column>
+            <el-table-column prop="render" label="插槽" show-overflow-tooltip width="260"/>
+            <el-table-column min-width="80" fixed="right">
               <template #header>
                 <el-button @click="addTableColumn" type="primary">添加</el-button>
               </template>
               <template #default="scope">
+                <el-button type="primary"
+                           @click="editColumnClick(scope.row)">
+                  编辑
+                </el-button>
                 <el-button type="danger"
                            @click="pageJson.columns.splice(scope.$index,1)">
                   删除

+ 0 - 171
src/views/utilities/page-editor-help/components/PageHelpTable.vue

@@ -3,11 +3,7 @@ import {defineProps, defineEmits, ref, onMounted, nextTick} from 'vue'
 import {componentType} from "@/components/query-components/page-help-type";
 import {useVModels} from "@vueuse/core";
 import * as monaco from "monaco-editor";
-import sleep from "@/utils/sleep";
-import {editor} from "monaco-editor";
-import IStandaloneCodeEditor = editor.IStandaloneCodeEditor;
 import * as el from 'element-plus'
-import {ElTag} from "element-plus";
 import PageHelpColumns from "@/views/utilities/page-editor-help/components/PageHelpColumns.vue";
 
 const props = defineProps<{
@@ -16,99 +12,6 @@ const props = defineProps<{
 
 const emits = defineEmits(['update:pageJson'])
 const {pageJson} = useVModels(props, emits)
-let currentIndex = -1
-const editClick = (scope, index) => {
-  currentIndex = index
-  dialog.value = true
-}
-
-const dialog = ref(false)
-const jsonEditRef = ref(null)
-const renderEditRef = ref(null)
-let jsonEditorMonaco: IStandaloneCodeEditor, renderMonaco: IStandaloneCodeEditor
-
-const jsonEdit = async () => {
-  jsonEditorMonaco = monaco.editor.create(jsonEditRef.value, {
-    // 初始化的dom节点
-    value: JSON.stringify(pageJson.value.columns[currentIndex]), // 初始化值
-    language: 'json', // 语言支持自行查阅demo
-    automaticLayout: true, // 自适应布局
-    theme: 'vs-dark', // 官方自带三种主题vs, hc-black, or vs-dark
-    foldingStrategy: 'indentation',
-    renderLineHighlight: 'all', // 行亮
-    selectOnLineNumbers: true, // 显示行号
-    minimap: {
-      enabled: false,
-    },
-    readOnly: false, // 只读
-    fontSize: 16, // 字体大小
-    scrollBeyondLastLine: false, // 取消代码后面一大段空白
-    overviewRulerBorder: true,
-  });
-
-  await sleep(200)
-  jsonEditorMonaco.focus()
-  jsonEditorMonaco.trigger("anything", "editor.action.formatDocument", "")
-}
-
-const renderEdit = async () => {
-  renderMonaco = monaco.editor.create(renderEditRef.value, {
-    // 初始化的dom节点
-    value: pageJson.value.columns[currentIndex].render, // 初始化值
-    language: 'javascript', // 语言支持自行查阅demo
-    automaticLayout: true, // 自适应布局
-    theme: 'vs-dark', // 官方自带三种主题vs, hc-black, or vs-dark
-    foldingStrategy: 'indentation',
-    renderLineHighlight: 'all', // 行亮
-    selectOnLineNumbers: true, // 显示行号
-    minimap: {
-      enabled: false,
-    },
-    readOnly: false, // 只读
-    fontSize: 16, // 字体大小
-    scrollBeyondLastLine: false, // 取消代码后面一大段空白
-    overviewRulerBorder: true,
-  });
-
-  await sleep(200)
-}
-
-const addRender = () => {
-  let str = `/**
- * @param {h} h 创建 html 标签
- * @param {scope} scope row表格数据, $index 下标
- * return 一定要写返回值 返回一个虚拟dom
- */\nfunction render(h, {row,$index}){\n return \n}`
-  pageJson.value.columns[currentIndex].render = str
-  renderMonaco.setValue(str)
-}
-
-function render(h, {row, $index}) {
-  let {sex, name} = row
-  // 判断如果性别是 1 就显示男性
-  if (sex === 1) {
-    // 这里用的是 element-plus 的 tag标签
-    return h(ElTag, {type: 'success'}, () => '男')
-  } else if (sex === 2) {
-    // 判断如果性别是 2 就显示女性,并且字体标红
-    // 这里用的是浏览器自带的标签需要带上 单引号
-    return h('span', {style: {color: 'red'}}, () => '女')
-  }
-}
-
-const open = async () => {
-  await nextTick()
-  await jsonEdit()
-  await renderEdit()
-  setScopeType()
-}
-
-const closed = () => {
-  pageJson.value.columns[currentIndex] = JSON.parse(jsonEditorMonaco.getValue());
-  pageJson.value.columns[currentIndex].render = renderMonaco.getValue();
-  jsonEditorMonaco.dispose()
-  renderMonaco.dispose()
-}
 
 /**
  * 用来设置 Render 函数的类型,作用代码提示
@@ -130,28 +33,6 @@ const setRenderFuncType = () => {
       .addExtraLib(hType)
 }
 
-const setScopeType = () => {
-  let columns = []
-  pageJson.value.columns.forEach(item => {
-    if (item.bind.prop) {
-      columns.push(`${item.bind.prop}:string`);
-    }
-  })
-
-  let scopeType = `
-    interface scope{
-      row: {${columns.join(',')}},
-      // 行号
-      $index: number
-    }
-  `
-  monaco
-      .languages
-      .typescript
-      .javascriptDefaults
-      .addExtraLib(scopeType)
-}
-
 let elComp = ''
 const elPlus = () => {
   let str = []
@@ -181,58 +62,6 @@ onMounted(() => {
                    v-model="columnsDialog"
                    v-if="columnsDialog"/>
 
-  <el-dialog v-model="dialog"
-             fullscreen
-             title="表格属性编辑"
-             @opened="open"
-             @closed="closed">
-    <div style="height: 400px">
-      <div style="display: flex; height: 100%; width: 100%">
-        <div style="height: 100%; width: 30%">
-          <a href="https://element-plus.gitee.io/zh-CN/component/table.html#table-column-%E5%B1%9E%E6%80%A7"
-             target="_blank">element-plus官网</a>
-          <pre>其他bind 属性可以去看
-bind: {
- prop: 字段名,
- label: 字段中文名,
- type?: 'selection'  = 多选 |  'index' = 下标,不支持展开行
- fixed?: 'left'  = 左固定 | 'right' = 右固定 | boolean,
- showOverflowTooltip?: boolean,内容过多省略并显示
- align?: 'left' | 'center' | 'right',
- width?: number,
- reserveSelection?: boolean,
-}
-render:用于渲染表格中的数据
-</pre>
-        </div>
-        <div ref="jsonEditRef" style="height: 100%; flex: 1"/>
-      </div>
-    </div>
-
-    <div style="height: 400px">
-      <div style="display: flex; height: 100%; width: 100%">
-        <div style="height: 100%; width: 30%">
-          <el-button @click="addRender" type="primary">添加render</el-button>
-          <pre>
-实例:function render(h,  {row, $index}) {
-  let {sex, name} = scope.row
-  // 判断如果性别是 1 就显示男性
-  if (sex === 1) {
-    // 这里用的是 element-plus 的 tag标签
-    return h(ElTag, {type: 'success'}, () => '男')
-  } else if (sex === 2) {
-    // 判断如果性别是 2 就显示女性,并且字体标红
-    // 这里用的是浏览器自带的标签需要带上 单引号
-    return h('span', {style: {color: 'red'}}, () => '女')
-  }
-}
-          </pre>
-        </div>
-        <div style="height: 100%; flex: 1" ref="renderEditRef"/>
-      </div>
-    </div>
-  </el-dialog>
-
   <el-button @click="addTableColumn">添加</el-button>
   <el-table :data="pageJson.columns">
     <el-table-column prop="bind.prop" label="字段"/>

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません