浏览代码

护理标识添加图片和展现方式设置

wuyunfeng 1 年之前
父节点
当前提交
c14060c6c4
共有 6 个文件被更改,包括 258 次插入103 次删除
  1. 15 1
      languages/en.js
  2. 15 1
      languages/es.js
  3. 14 0
      languages/ru-RU.js
  4. 15 1
      languages/zh-CN.js
  5. 1 0
      src/views/login/index.vue
  6. 198 100
      src/views/ncs-nurse-config/index.vue

+ 15 - 1
languages/en.js

@@ -1635,10 +1635,24 @@ module.exports = {
     inputContainerName: 'Please enter a container name',
     inputFileAddress: 'Please enter a file storage address',
     inputMysqlAddress: 'Please enter the address of the MySQL server',
-    deleteSqlMsg: 'The data is not recoverable after the deletion operation, are you sure you want to delete this data?',
+    deleteSqlMsg: 'The data is not recoverable after the deletion operation, are you sure you want to delete this data?'
 
   },
   wu20240322: {
     fileManager: 'File Manager'
+  },
+  wu20240530: {
+    nurseConfig: {
+      default_icon: 'Default Icon',
+      default_content_show: 'Default Content Display',
+      icon_text: 'Image + Text',
+      icon: 'Image Only',
+      text: 'Text Only'
+    },
+    nurseOption: {
+      icon_url: 'Icon',
+      content_show: 'Content Display Mode'
+    },
+    clear_icon: 'Clear Icon'
   }
 }

+ 15 - 1
languages/es.js

@@ -1636,9 +1636,23 @@ module.exports = {
     inputContainerName: 'Introduzca un nombre de contenedor',
     inputFileAddress: 'Introduzca una dirección de almacenamiento de archivos',
     inputMysqlAddress: 'Introduzca la dirección del servidor MySQL',
-    deleteSqlMsg: 'Los datos no se pueden recuperar después de la operación de eliminación, ¿está seguro de que desea eliminar estos datos?',
+    deleteSqlMsg: 'Los datos no se pueden recuperar después de la operación de eliminación, ¿está seguro de que desea eliminar estos datos?'
   },
   wu20240322: {
     fileManager: 'Administrador de Archivos'
+  },
+  wu20240530: {
+    nurseConfig: {
+      default_icon: 'Icono Predeterminado',
+      default_content_show: 'Visualización de Contenido Predeterminada',
+      icon_text: 'Imagen + Texto',
+      icon: 'Solo Imagen',
+      text: 'Solo Texto'
+    },
+    nurseOption: {
+      icon_url: 'Icono',
+      content_show: 'Modo de Visualización del Contenido'
+    },
+    clear_icon: 'Limpiar Icono'
   }
 }

+ 14 - 0
languages/ru-RU.js

@@ -1639,5 +1639,19 @@ module.exports = {
   },
   wu20240322: {
     fileManager: 'Файловый Менеджер'
+  },
+  wu20240530: {
+    nurseConfig: {
+      default_icon: 'Иконка по умолчанию',
+      default_content_show: 'Отображение контента по умолчанию',
+      icon_text: 'Изображение + Текст',
+      icon: 'Только изображение',
+      text: 'Только текст'
+    },
+    nurseOption: {
+      icon_url: 'Иконка',
+      content_show: 'Способ отображения контента'
+    },
+    clear_icon: 'Очистить иконку'
   }
 }

+ 15 - 1
languages/zh-CN.js

@@ -1635,10 +1635,24 @@ module.exports = {
     inputContainerName: '请输入容器名称',
     inputFileAddress: '请输入文件存储地址',
     inputMysqlAddress: '请输入mysql服务器地址',
-    deleteSqlMsg: '删除操作后数据不可复原,您确定要删除此数据?',
+    deleteSqlMsg: '删除操作后数据不可复原,您确定要删除此数据?'
 
   },
   wu20240322: {
     fileManager: '文件管理器'
+  },
+  wu20240530: {
+    nurseConfig: {
+      default_icon: '默认图标',
+      default_content_show: '默认内容显示',
+      icon_text: '图片+文字',
+      icon: '仅图片',
+      text: '仅文字'
+    },
+    nurseOption: {
+      icon_url: '图标',
+      content_show: '内容显示方式'
+    },
+    clear_icon: '清除图标'
   }
 }

+ 1 - 0
src/views/login/index.vue

@@ -109,6 +109,7 @@ export default {
     // window.addEventListener('storage', this.afterQRScan)
   },
   mounted() {
+    console.log(this.$t('action.wdklCallingSystem'))
     const uuid = Storage.getItem('calling_uuid')
     if (uuid) {
       this.uuid = uuid

+ 198 - 100
src/views/ncs-nurse-config/index.vue

@@ -13,18 +13,18 @@
 
       <el-aside width="300px" style="background-color: rgb(238, 241, 246)">
         <el-table
-          ref="nurseConfigTable"
-          v-loading="listLoading"
-          :data="tagList1"
-          highlight-current-row
-          :height="tableHeight-40"
-          stripe
-          @row-click="tableClick"
+            ref="nurseConfigTable"
+            v-loading="listLoading"
+            :data="tagList1"
+            highlight-current-row
+            :height="tableHeight-40"
+            stripe
+            @row-click="tableClick"
         >
-          <el-table-column prop="config_name" :label="this.$t('nurseConfig.configName')" width="120px" />
+          <el-table-column prop="config_name" :label="this.$t('nurseConfig.configName')" width="120px"/>
           <el-table-column
-            width="160px"
-            align="right"
+              width="160px"
+              align="right"
           >
             <template slot="header" slot-scope="scope">
               <el-button type="primary" size="mini" @click="addNurseConfig(1,null,1)">{{ configAdd }}</el-button>
@@ -38,18 +38,18 @@
               <!--                @click.native.prevent="addNurseConfig(scope.$index, scope.row,2)"-->
               <!--              />-->
               <el-button
-                type="primary"
-                icon="el-icon-edit"
-                circle
-                size="mini"
-                @click.native.prevent="updateRow(scope.$index, scope.row, 1)"
+                  type="primary"
+                  icon="el-icon-edit"
+                  circle
+                  size="mini"
+                  @click.native.prevent="updateRow(scope.$index, scope.row, 1)"
               />
               <el-button
-                type="danger"
-                icon="el-icon-delete"
-                circle
-                size="mini"
-                @click.native.prevent="deleteRow(scope.$index, scope.row,1)"
+                  type="danger"
+                  icon="el-icon-delete"
+                  circle
+                  size="mini"
+                  @click.native.prevent="deleteRow(scope.$index, scope.row,1)"
               />
             </template>
           </el-table-column>
@@ -77,38 +77,41 @@
         <!--        </el-table>-->
 
         <ag-grid-layout
-          toolbar
-          :table-height="tableHeight-130"
-          theme="ag-theme-alpine"
-          :column-defs="columnDefs"
-          :row-data="tagList2"
-          :locale-text="localeText"
-          :grid-options="gridOptions"
-          :default-col-def="defaultColDef"
-          :animate-rows="true"
-          :row-selection="rowSelection"
-          @filterChanged="filterModifed"
-          @sortChanged="gridSortChange"
+            toolbar
+            :table-height="tableHeight-130"
+            theme="ag-theme-alpine"
+            :column-defs="columnDefs"
+            :row-data="tagList2"
+            :locale-text="localeText"
+            :grid-options="gridOptions"
+            :default-col-def="defaultColDef"
+            :animate-rows="true"
+            :row-selection="rowSelection"
+            @filterChanged="filterModifed"
+            @sortChanged="gridSortChange"
         >
           <!--        @rowDoubleClicked="getList"-->
           <div slot="toolbar" class="inner-toolbar">
             <div class="toolbar-search">
-              <en-table-search :placeholder="this.$t('action.keywords')" @search="handlerSearch" />
+              <en-table-search :placeholder="this.$t('action.keywords')" @search="handlerSearch"/>
             </div>
             <div class="toolbar-btns">
-              <el-button type="primary" size="mini" @click="addOption">{{ this.$t('nurseConfig.optionAdd') }}</el-button>
+              <el-button type="primary" size="mini" @click="addOption">{{
+                  this.$t('nurseConfig.optionAdd')
+                }}
+              </el-button>
             </div>
           </div>
           <el-pagination
-            v-if="pageData"
-            slot="pagination"
-            :current-page="pageData.page_no"
-            :page-sizes="[10, 20, 50, 100]"
-            :page-size="pageData.page_size"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="pageData.data_total"
-            @size-change="handlePageSizeChange"
-            @current-change="handlePageCurrentChange"
+              v-if="pageData"
+              slot="pagination"
+              :current-page="pageData.page_no"
+              :page-sizes="[10, 20, 50, 100]"
+              :page-size="pageData.page_size"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="pageData.data_total"
+              @size-change="handlePageSizeChange"
+              @current-change="handlePageCurrentChange"
           />
         </ag-grid-layout>
       </el-main>
@@ -118,53 +121,118 @@
     <el-dialog v-model="addFormVisible" :title="myTitle" :visible.sync="addFormVisible" :close-on-click-modal="false">
       <el-form ref="addForm" :model="addForm" label-width="140px" :rules="addFormRules">
         <el-form-item :label="this.$t('nurseConfig.configName')" prop="config_name">
-          <el-input v-model="addForm.config_name" maxlength="100" />
+          <el-input v-model="addForm.config_name" maxlength="100"/>
         </el-form-item>
         <el-form-item :label="this.$t('action.sort')" prop="index_no">
-          <el-input-number v-model="addForm.index_no" :min="1" :max="100" />
+          <el-input-number v-model="addForm.index_no" :min="1" :max="100"/>
         </el-form-item>
-        <el-form-item  prop="basic">
-          <el-checkbox v-model="addForm.basic">{{this.$t('nurseConfig.basic')}}</el-checkbox>
+        <el-form-item :label="this.$t('wu20240530.nurseConfig.default_icon')" prop="default_icon">
+          <el-avatar shape="square" :size="32" fit="fill" @click.native="chooseImage('config')"
+                     :src="addForm.default_icon"></el-avatar>
+          <el-button type="text" v-if="addForm.default_icon&&addForm.default_icon.length" @click="clearIcon('config')">
+            {{ $t('wu20240530.clear_icon') }}
+          </el-button>
+        </el-form-item>
+        <el-form-item :label="this.$t('wu20240530.nurseConfig.default_content_show')" prop="default_content_show">
+          <el-radio-group v-model="addForm.default_content_show">
+            <el-radio :label="1">{{ $t('wu20240530.nurseConfig.icon_text') }}</el-radio>
+            <el-radio :label="2">{{ $t('wu20240530.nurseConfig.icon') }}</el-radio>
+            <el-radio :label="3">{{ $t('wu20240530.nurseConfig.text') }}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item prop="basic">
+          <el-checkbox v-model="addForm.basic">{{ this.$t('nurseConfig.basic') }}</el-checkbox>
         </el-form-item>
         <el-form-item>
-          <el-checkbox v-model="addForm.bool_critical">{{this.$t('nurseConfig.boolCritical')}}</el-checkbox>
+          <el-checkbox v-model="addForm.bool_critical">{{ this.$t('nurseConfig.boolCritical') }}</el-checkbox>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click.native="addFormVisible = false">{{ this.$t('action.cancel') }}</el-button>
-        <el-button type="primary" :loading="addOptionLoading" @click.native="addSubmit">{{ this.$t('action.submit') }}</el-button>
+        <el-button type="primary" :loading="addOptionLoading" @click.native="addSubmit">{{
+            this.$t('action.submit')
+          }}
+        </el-button>
       </div>
     </el-dialog>
     <!--新增护理项界面-->
-    <el-dialog v-model="addFormOptionVisible" :title="myTitle" :visible.sync="addFormOptionVisible" :close-on-click-modal="false">
+    <el-dialog v-model="addFormOptionVisible" :title="myTitle" :visible.sync="addFormOptionVisible"
+               :close-on-click-modal="false">
       <el-form ref="addOptionForm" :model="addOptionForm" label-width="140px" :rules="addFormRules">
         <el-form-item :label="this.$t('nurseConfig.optionName')" prop="option_name">
-          <el-input v-model="addOptionForm.option_name" maxlength="100" />
+          <el-input v-model="addOptionForm.option_name" maxlength="100"/>
         </el-form-item>
         <el-form-item :label="this.$t('nurseConfig.optionColor')">
-          <colorPicker v-model="addOptionForm.color_rgb" />
+          <colorPicker v-model="addOptionForm.color_rgb"/>
+        </el-form-item>
+        <el-form-item :label="this.$t('wu20240530.nurseOption.icon_url')" prop="icon_url">
+          <el-avatar shape="square" :size="32" fit="fill" @click.native="chooseImage('option')"
+                     :src="addOptionForm.icon_url"></el-avatar>
+          <el-button type="text" v-if="addOptionForm.icon_url&&addOptionForm.icon_url.length" @click="clearIcon('option')">清除图标
+          </el-button>
+        </el-form-item>
+        <el-form-item :label="this.$t('wu20240530.nurseOption.content_show')" prop="content_show">
+          <el-radio-group v-model="addOptionForm.content_show">
+            <el-radio :label="1">{{ $t('wu20240530.nurseConfig.icon_text') }}</el-radio>
+            <el-radio :label="2">{{ $t('wu20240530.nurseConfig.icon') }}</el-radio>
+            <el-radio :label="3">{{ $t('wu20240530.nurseConfig.text') }}</el-radio>
+          </el-radio-group>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click.native="addFormOptionVisible = false">{{ this.$t('action.cancel') }}</el-button>
-        <el-button type="primary" :loading="addOptionLoading" @click.native="addOptionSubmit">{{ this.$t('action.submit') }}</el-button>
+        <el-button type="primary" :loading="addOptionLoading" @click.native="addOptionSubmit">
+          {{ this.$t('action.submit') }}
+        </el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :visible.sync="customerFormVisible" class="customer-dialog" width="60%">
+      <div slot="title" style="display: none;">
       </div>
+      <VueFinder id="vuefinder" :height="500" :select-button="handleSelectButton" theme="dark" :persist="true"
+                 max-file-size="50 GB" path="" :request="fileServer"></VueFinder>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import { AG_GRID_LOCALE_CN } from '@/utils/AgGridVueLocaleCn'
-import { unix2Date } from '@/utils/Foundation'
+import {AG_GRID_LOCALE_CN} from '@/utils/AgGridVueLocaleCn'
+import {unix2Date} from '@/utils/Foundation'
 import ButtonCellRender from '../../components/AgGridCellRender/ButtonCellRender'
 import * as API_NcsNurseConfig from '@/api/ncs_nurse_config'
 import * as API_NcsNurseConfigOption from '@/api/ncs_nurse_config_option'
 
 export default {
   name: 'NcsNurseConfigList',
-  components: { ButtonCellRender },
+  components: {ButtonCellRender},
   data() {
     return {
+      fileServer: domain.fileServer,
+      customerFormVisible: false,
+      imageBlockId: '',
+      chooseType:'',
+      handleSelectButton: {
+        // show select button
+        active: true,
+        // allow multiple selection
+        multiple: false,
+        filters: ['png'],
+        // handle click event
+        click: (items, event) => {
+          if (!items.length) {
+            return;
+          }
+          this.customerFormVisible=false
+          if(this.chooseType=== 'config'){
+            this.addForm.default_icon = `${domain.fileServer}${items[0].href}`
+            console.log('addForm',this.addForm)
+          }else if (this.chooseType==='option'){
+            this.addOptionForm.icon_url=`${domain.fileServer}${items[0].href}`
+          }
+        }
+      },
+
       listLoading: false,
       tagList1: [],
       tagList2: [],
@@ -177,10 +245,10 @@ export default {
       addLoading: false,
       addFormRules: {
         config_name: [
-          { required: true, message: this.$t('nurseConfig.inputConfigName'), trigger: 'blur' }
+          {required: true, message: this.$t('nurseConfig.inputConfigName'), trigger: 'blur'}
         ],
         option_name: [
-          { required: true, message: this.$t('nurseConfig.inputOptionName'), trigger: 'blur' }
+          {required: true, message: this.$t('nurseConfig.inputOptionName'), trigger: 'blur'}
         ]
       },
       addFormOptionVisible: false,
@@ -223,8 +291,7 @@ export default {
     }
   },
   beforeMount() {
-    this.gridOptions = {
-    }
+    this.gridOptions = {}
     this.columnDefs = [
       {
         headerName: '#',
@@ -236,20 +303,28 @@ export default {
         resizable: false,
         valueGetter: this.hashValueGetter
       },
-      { headerName: 'ID', field: 'id', sortable: true, filter: 'agNumberColumnFilter', width: 80 },
-      { headerName: this.$t('nurseConfig.optionName'), field: 'option_name', sortable: true, flex: 1, filter: 'agTextColumnFilter', filterParams: {
-        debounceMs: 200,
-        newRowsAction: 'keep'
-      }
+      {headerName: 'ID', field: 'id', sortable: true, filter: 'agNumberColumnFilter', width: 80},
+      {
+        headerName: this.$t('nurseConfig.optionName'),
+        field: 'option_name',
+        sortable: true,
+        flex: 1,
+        filter: 'agTextColumnFilter',
+        filterParams: {
+          debounceMs: 200,
+          newRowsAction: 'keep'
+        }
       },
       // lockPosition 锁定位置,会在第一列
       // lockPinned = true 不能拖动然后固定
       // resizeable 单元个大小是否可以调整
-      { headerName: this.$t('nurseConfig.colorRgb'), field: 'color_rgb', sortable: true, filter: false,
+      {
+        headerName: this.$t('nurseConfig.colorRgb'), field: 'color_rgb', sortable: true, filter: false,
         cellRenderer: this.colorFormatter
       },
 
-      { headerName: this.$t('action.edit'),
+      {
+        headerName: this.$t('action.edit'),
         cellRendererFramework: 'ButtonCellRender',
         cellRendererParams: {
           onClick: this.handEdit,
@@ -262,8 +337,10 @@ export default {
         lockPinned: true,
         width: 100,
         resizable: false,
-        sortable: false },
-      { headerName: this.$t('action.delete'),
+        sortable: false
+      },
+      {
+        headerName: this.$t('action.delete'),
         cellRendererFramework: 'ButtonCellRender',
         cellRendererParams: param => {
           return {
@@ -279,7 +356,8 @@ export default {
         width: 100,
         resizable: false,
         filter: false,
-        sortable: false }
+        sortable: false
+      }
     ]
     this.defaultColDef = {
       filter: 'agTextColumnFilter',
@@ -350,12 +428,14 @@ export default {
         this.myTitle = this.$t('nurseConfig.configAdd')
         this.addFormVisible = true
         this.addForm = {
-          index_no: 1
+          index_no: 1,
+          default_content_show: 3
         }
       } else if (type === 2) {
         this.addOptionForm = {
           option_name: null,
-          color_rgb: '#000000'
+          color_rgb: '#000000',
+          content_show: 3
         }
         this.pid = row.id
         this.myTitle = this.$t('nurseConfig.optionAdd')
@@ -363,7 +443,7 @@ export default {
       }
     },
     addOption() {
-      this.addNurseConfig(null, { id: this.pid }, 2)
+      this.addNurseConfig(null, {id: this.pid}, 2)
     },
     addOptionSubmit() {
       const _this = this
@@ -433,13 +513,15 @@ export default {
       this.addOredit = 'edit'
       this.myTitle = this.$t('nurseConfig.configEdit')
       if (type === 1) {
-        this.addForm = { ...row }
+        this.addForm = {...row, default_content_show: row.default_content_show||3}
         this.addFormVisible = true
       } else {
         this.addOptionForm = {
           id: row.id,
           option_name: row.option_name,
-          color_rgb: '#' + row.color_rgb
+          color_rgb: '#' + row.color_rgb,
+          icon_url: row.icon_url,
+          content_show: row.content_show||3
         }
         this.addFormOptionVisible = true
       }
@@ -512,15 +594,15 @@ export default {
       console.log('sortparam', param)
       const columnState = param.columnApi.getColumnState()
       // 排序状态
-      const sortState = columnState.filter(function(s) {
+      const sortState = columnState.filter(function (s) {
         return s.sort != null
-      }).map(function(s) {
+      }).map(function (s) {
         return {
           colId: s.colId,
           sort: s.sort,
           sortIndex: s.sortIndex
         }
-      }).sort(function(a, b) {
+      }).sort(function (a, b) {
         return a.sortIndex - b.sortIndex
       })
       if (sortState.length > 0) {
@@ -529,7 +611,7 @@ export default {
           this.params.dir = sortState[0].sort
         } else {
           let sortstring = ''
-          sortState.forEach(function(item) {
+          sortState.forEach(function (item) {
             sortstring += item.colId + ' ' + item.sort + ','
           })
           this.params.sort = sortstring.substring(0, sortstring.length - 1)
@@ -549,31 +631,47 @@ export default {
       console.log('model', JSON.stringify(model))
       this.params.filter = JSON.stringify(model)
       this.gettagList2()
+    },
+    clearIcon(type) {
+      if(type==='config') {
+        this.addForm.default_icon = ''
+      }else if (type==='option'){
+        this.addOptionForm.icon_url = ''
+      }
+
+    },
+    chooseImage(type) {
+      this.customerFormVisible = true
+      this.chooseType = type
     }
   }
 }
 </script>
 
 <style scoped>
-  .permission-container {
-    padding: 10px;
-    background-color: #fff;
-  }
-  .el-aside{
-    padding: 8px 10px;
-  }
-  .mytable {
-    width: 100%;
-    padding: 20px;
-    min-height: 480px;
-    cursor: pointer;
-    font-size: 16px;
-  }
-  /deep/ .colorBtn {
-    width: 80px !important;
-    height: 40px !important;
-  }
-  /deep/ .m-colorPicker .box.open{
-    z-index: 1000 !important;
-  }
+.permission-container {
+  padding: 10px;
+  background-color: #fff;
+}
+
+.el-aside {
+  padding: 8px 10px;
+}
+
+.mytable {
+  width: 100%;
+  padding: 20px;
+  min-height: 480px;
+  cursor: pointer;
+  font-size: 16px;
+}
+
+/deep/ .colorBtn {
+  width: 80px !important;
+  height: 40px !important;
+}
+
+/deep/ .m-colorPicker .box.open {
+  z-index: 1000 !important;
+}
 </style>