刘洋 hai 1 ano
pai
achega
2210d39f74

+ 3 - 3
src/components/common/select-area/index.vue

@@ -63,13 +63,14 @@ const parseCode = (val) => {
     }
     value = val.join('_');
   }
-
+  if (value === '') {
+    return [];
+  }
   const validName = Object.keys(areaCodeMap).find(
     (item) => item.includes(value) || item.replace('_', '').includes(value)
   );
   // if (!validName) return val;
   if (!validName) return '';
-
   const validCode = areaCodeMap[validName].split('_');
   return props.valueType === 'single'
     ? validCode[props.level - 1]
@@ -80,7 +81,6 @@ watch(
   () => props.modelValue,
   (val, oldval) => {
     if (val === oldval) return;
-
     const code = parseCode(val);
     selected.value = code;
   },

+ 9 - 0
src/views/sop/components/dynamic-form-item/CHECKBOX.vue

@@ -5,6 +5,7 @@
     :disabled="!config.writable"
     style="min-height: 32px"
     @change="emitChange"
+    class="flow-checkbox-group"
   ></t-checkbox-group>
 </template>
 
@@ -42,3 +43,11 @@ watch(
   }
 );
 </script>
+<style lang="less" scoped>
+.flow-checkbox-group {
+  display: block;
+  :deep(.t-checkbox) {
+    display: block;
+  }
+}
+</style>

+ 20 - 12
src/views/system/notice-log/notice-manage/edit-notice-dialog.vue

@@ -28,20 +28,20 @@
             </t-select>
           </t-form-item>
         </t-col>
-        <t-col :span="4" v-if="formData.type==='SERVICE'">
+        <t-col :span="4" v-if="formData.type === 'SERVICE'">
           <t-form-item label="服务单元" name="serviceId">
             <select-service-unit v-model="formData.serviceId">
             </select-service-unit>
           </t-form-item>
         </t-col>
-        <t-col :span="4" v-if="formData.type==='SUPPLIER'">
+        <t-col :span="4" v-if="formData.type === 'SUPPLIER'">
           <t-form-item label="人力供应商" name="supplierId">
             <select-supplier v-model="formData.supplierId" type="HUMAN">
             </select-supplier>
           </t-form-item>
         </t-col>
       </t-row>
-        <t-row>
+      <t-row>
         <t-col :span="8">
           <t-form-item label="通知名称" name="title">
             <t-input v-model="formData.title" clearable />
@@ -57,14 +57,21 @@
       </t-row>
       <div class="notice-content">
         <t-form-item name="content" :required-mark="false">
-<!--          <t-textarea-->
-<!--            v-model="formData.content"-->
-<!--            placeholder="请输入通知正文"-->
-<!--            :maxlength="9999"-->
-<!--            :autosize="{ minRows: 10, maxRows: 15 }"-->
-<!--          />-->
+          <!--          <t-textarea-->
+          <!--            v-model="formData.content"-->
+          <!--            placeholder="请输入通知正文"-->
+          <!--            :maxlength="9999"-->
+          <!--            :autosize="{ minRows: 10, maxRows: 15 }"-->
+          <!--          />-->
 
-          <TEditor  placeholder="请输入通知正文" ref="editor" v-model="formData.content"  @getContent="getContent" :maxlength="9999" :autosize="{ minRows: 10, maxRows: 15 }"/>
+          <TEditor
+            placeholder="请输入通知正文"
+            ref="editor"
+            v-model="formData.content"
+            @getContent="getContent"
+            :maxlength="9999"
+            :autosize="{ minRows: 10, maxRows: 15 }"
+          />
         </t-form-item>
       </div>
     </t-form>
@@ -78,7 +85,7 @@
         >
         <div>
           <t-button theme="default" @click="save(false)">保存草稿</t-button>
-<!--          <t-button theme="primary" ghost @click="onPreview">预览</t-button>-->
+          <!--          <t-button theme="primary" ghost @click="onPreview">预览</t-button>-->
           <t-button theme="primary" @click="save(true)">保存并发布</t-button>
         </div>
       </div>
@@ -165,7 +172,7 @@ const onPreview = () => {
   console.log('onPreview');
 };
 const getContent = (v) => {
-  formData.content = v
+  formData.content = v;
 };
 const save = async (isPublish) => {
   const valid = await formRef.value.validate();
@@ -208,6 +215,7 @@ const save = async (isPublish) => {
     }
     :deep(.t-form__controls-content) {
       height: 100%;
+      align-items: flex-start;
     }
     :deep(.t-textarea) {
       height: 100%;

+ 68 - 10
src/views/user/org-struct-manage/struct-manage/index.vue

@@ -8,7 +8,53 @@
     </div>
 
     <div class="flex-1 page-wrap">
-      <t-table
+      <t-enhanced-table
+        ref="tableRef"
+        v-model:expandedTreeNodes="expandedTreeNodes"
+        row-key="id"
+        :data="orgData"
+        :columns="columns"
+        :tree="treeConfig"
+        :tree-expand-and-fold-icon="treeIcon"
+        bordered
+      >
+        <template #isRoot="{ col, row }">
+          {{ row[col.colKey] ? '根节点' : '子节点' }}
+        </template>
+        <template #enable="{ col, row }">
+          <status-tag :value="row[col.colKey]" type="enable"></status-tag>
+        </template>
+        <template #operate="{ row }">
+          <div class="table-operations">
+            <t-link
+              v-if="perm.BUTTON_Add"
+              theme="primary"
+              hover="color"
+              @click="handleAdd(row)"
+            >
+              新增
+            </t-link>
+            <t-link
+              v-if="perm.LINK_Update"
+              theme="primary"
+              hover="color"
+              @click="handleEdit(row)"
+            >
+              修改
+            </t-link>
+            <t-link
+              v-if="perm.LINK_Enable"
+              theme="primary"
+              hover="color"
+              @click="handleEnable(row)"
+            >
+              {{ enableFilter(!row.enable) }}
+            </t-link>
+          </div>
+        </template>
+      </t-enhanced-table>
+
+      <!-- <t-table
         size="small"
         row-key="id"
         :columns="columns"
@@ -48,12 +94,9 @@
             >
               {{ enableFilter(!row.enable) }}
             </t-link>
-            <!-- <t-link theme="primary" hover="color" @click="handleDelete(row)">
-              删除
-            </t-link> -->
           </div>
         </template>
-      </t-table>
+      </t-table> -->
     </div>
 
     <AddNodeDialog
@@ -66,8 +109,8 @@
   </div>
 </template>
 
-<script setup name="StructManage">
-import { computed, ref } from 'vue';
+<script setup lang="jsx" name="StructManage">
+import { computed, ref, reactive, nextTick } from 'vue';
 import { MessagePlugin } from 'tdesign-vue-next';
 import { useRequest } from 'vue-request';
 import { getOrgStructList, toggleOrgNodeStatus } from '@/api/user';
@@ -75,10 +118,21 @@ import AddNodeDialog from './add-node-dialog.vue';
 import { enableFilter } from '@/utils/filter';
 import { omit } from 'lodash';
 import usePermission from '@/hooks/usePermission';
+import { ChevronRightIcon, ChevronDownIcon } from 'tdesign-icons-vue-next';
 const { perm } = usePermission();
 const showAddNodeDialog = ref(false);
 const curRow = ref({});
-
+const tableRef = ref();
+const treeConfig = reactive({
+  treeNodeColumnIndex: 0,
+  indent: 25,
+  expandTreeNodeOnClick: true,
+  defaultExpandAll: true,
+});
+const treeIcon = (h, { type, row }) => {
+  return type === 'expand' ? <ChevronRightIcon /> : <ChevronDownIcon />;
+};
+const expandedTreeNodes = ref([]);
 const columns = [
   { colKey: 'name', title: '管理节点' },
   { colKey: 'isRoot', title: '类型', width: 100 },
@@ -95,9 +149,13 @@ const columns = [
 const {
   data: orgData,
   loading: tableLoading,
-  run,
+  runAsync: run,
 } = useRequest(getOrgStructList);
-run();
+run().then(() => {
+  nextTick(() => {
+    tableRef.value?.expandAll();
+  });
+});
 
 const tableData = computed(() => {
   let orgList = [];