Procházet zdrojové kódy

用户管理增加职级明细

cz před 1 rokem
rodič
revize
e0f926b831

+ 20 - 4
src/views/EHSD/procurement/purchasedEHSD/index.vue

@@ -1,7 +1,14 @@
 <template>
   <div class="pageIndexClass">
     <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" :selectConfig="selectConfig"
-             :row-class-name="getRowClass" highlight-current-row @get-list="getList">
+             :row-class-name="getRowClass" highlight-current-row :action-list="[
+             
+               {
+                text: '导出Excel',
+                action: () => exportExcel(),
+                disabled: false,
+              },
+             ]" @get-list="getList">
       <template #code="{ item }">
         <div v-if="Number(item.sumPayMoney) > Number(item.amount)" style="cursor: pointer; color: #f54a45" @click="handleClickCode(item)">
           {{ item.code }}
@@ -745,9 +752,9 @@ const submitForm = () => {
 };
 
 const PdfDom = ref(null);
-const exportExcel = () => {
-  PdfDom.value.exportExcel();
-};
+// const exportExcel = () => {
+//   PdfDom.value.exportExcel();
+// };
 
 const handleChangeAccountPeriod = (val, row) => {
   proxy
@@ -762,6 +769,15 @@ const handleChangeAccountPeriod = (val, row) => {
       (err) => {}
     );
 };
+
+const exportExcel = () => {
+  proxy.msgTip("正在导出,请稍后", 2);
+  proxy
+    .postTwo("/ehsdPurchase/excelExport", sourceList.value.pagination)
+    .then((res) => {
+      proxy.downloadFile(res, "采购订单.xlsx");
+    });
+};
 </script>
 
 <style lang="scss" scoped>

+ 3 - 4
src/views/EHSD/saleContract/priceSheetEHSD/index.vue

@@ -2977,10 +2977,9 @@ const changeMinPrice = () => {
 
 const isDetailData = ref(false);
 const getConfirmDtl = (row, flag) => {
-  console.log(proxy.useUserStore().roles, "adws");
-  // if (!proxy.useUserStore().roles.includes("GM")) {
-  //   return proxy.msgTip("您的身份不对,无法进行确认", 2);
-  // }
+  if (!proxy.useUserStore().roles.includes("GM")) {
+    return proxy.msgTip("您的身份不对,无法进行确认", 2);
+  }
   isDetailData.value = flag;
   formOptionTwo.disabled = flag;
   modalType.value = "edit";

+ 6 - 1
src/views/process/processConfig/vueFlow.vue

@@ -197,6 +197,10 @@ const formConfig = computed(() => {
           label: "动态用户",
           value: 6,
         },
+        {
+          label: "部门主管",
+          value: 8,
+        },
       ],
     },
     // {
@@ -215,7 +219,8 @@ const formConfig = computed(() => {
       data: selectHanleData.value,
       isShow:
         formData.data.handleObjectType !== 5 &&
-        formData.data.handleObjectType !== 6,
+        formData.data.handleObjectType !== 6 &&
+        formData.data.handleObjectType !== 8,
     },
     {
       type: "select",

+ 14 - 0
src/views/product/material/index.vue

@@ -8,6 +8,11 @@
     <div class="content">
       <byTable :source="sourceList.data" :tableHeight="tableHeight" :pagination="sourceList.pagination" :config="config" :loading="loading"
                highlight-current-row :selectConfig="selectConfig" :action-list="[
+               {
+                text: '导出Excel',
+                action: () => exportExcel(),
+                disabled: false,
+              },
               {
                 text: '添加物料',
                 action: () => openModal('add'),
@@ -1014,6 +1019,15 @@ const getAssociationProduct = (row) => {
   };
   getAssociationList();
 };
+
+const exportExcel = () => {
+  proxy.msgTip("正在导出,请稍后", 2);
+  proxy
+    .postTwo("/productInfo/materialExcelExport", sourceList.value.pagination)
+    .then((res) => {
+      proxy.downloadFile(res, "物料数据.xlsx");
+    });
+};
 </script>
 
 <style lang="scss" scoped>

+ 139 - 48
src/views/systemTenant/tenant/userTenant/index.vue

@@ -37,7 +37,7 @@
       </byTable>
     </div>
 
-    <el-dialog :title="modalType == 'add' ? '添加用户' : '编辑用户'" v-if="dialogVisible" v-model="dialogVisible" width="650" v-loading="loadingDialog">
+    <el-dialog :title="modalType == 'add' ? '添加用户' : '编辑用户'" v-if="dialogVisible" v-model="dialogVisible" width="50%" v-loading="loadingDialog">
       <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="submit">
         <template #deptId>
           <div style="width: 100%">
@@ -46,9 +46,8 @@
           </div>
         </template>
         <template #account>
-          <el-input style="width: 200px; margin-right: 10px" v-model="formData.data.userName" @change="changeUserName"
-                    placeholder="请输入用户名"></el-input>
-          <el-input style="width: 200px; margin-right: 10px" v-model="formData.data.password" @change="changePassword" placeholder="密码"></el-input>
+          <el-input style="width: 42%; margin-right: 10px" v-model="formData.data.userName" @change="changeUserName" placeholder="请输入用户名"></el-input>
+          <el-input style="width: 42%; margin-right: 10px" v-model="formData.data.password" @change="changePassword" placeholder="密码"></el-input>
           <span style="color: #409eff; cursor: pointer" @click="newPassword">随机生成</span>
         </template>
 
@@ -60,6 +59,41 @@
           </div>
         </template>
 
+        <template #detail>
+          <div style="width:100%;padding-left:25px">
+            <el-button type="primary" @click="handleAdd()" plain style="margin-bottom: 16px">添加</el-button>
+            <el-table :data="formData.data.identityList" style="width: 100%;">
+              <el-table-column label="职级" prop="identity">
+                <template #default="{ row, $index }">
+                  <div style="width: 100%">
+                    <el-form-item :prop="'identityList.' + $index + '.identity'" :rules="rules.identity" :inline-message="true"
+                                  class="margin-b-0 wid100">
+                      <el-select v-model="row.identity" placeholder="请选择" style="width: 100%">
+                        <el-option v-for="item in rankData" :key="item.value" :label="item.label" :value="item.value" />
+                      </el-select>
+                    </el-form-item>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column label="部门" prop="deptId">
+                <template #default="{ row, $index }">
+                  <div style="width: 100%">
+                    <el-form-item :prop="'identityList.' + $index + '.deptId'" :rules="rules.deptId" :inline-message="true" class="margin-b-0 wid100">
+                      <el-tree-select v-model="row.deptId" :data="deptListOne" check-strictly :render-after-expand="false" node-key="deptId"
+                                      :props="defaultProps" style="width:100%" />
+                    </el-form-item>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="60" align="center" fixed="right">
+                <template #default="{ $index }">
+                  <el-button type="primary" link @click="handleRemove($index)">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </template>
+
       </byForm>
       <template #footer>
         <el-button @click="dialogVisible = false" size="default">取 消</el-button>
@@ -98,6 +132,25 @@ const defaultPropsOne = {
   label: "name",
 };
 const deptList = ref([]);
+const deptListOne = ref([]);
+const rankData = ref([
+  {
+    label: "员工",
+    value: 10,
+  },
+  {
+    label: "主管",
+    value: 20,
+  },
+  {
+    label: "经理",
+    value: 30,
+  },
+  {
+    label: "总监",
+    value: 40,
+  },
+]);
 const sourceList = ref({
   data: [],
   pagination: {
@@ -277,6 +330,10 @@ const formData = reactive({
 const formConfig = computed(() => {
   return [
     {
+      type: "title1",
+      title: "基本信息",
+    },
+    {
       type: "slot",
       prop: "deptId",
       slotName: "deptId",
@@ -286,12 +343,13 @@ const formConfig = computed(() => {
       type: "input",
       prop: "nickName",
       label: "姓名",
-      // itemWidth:50
+      itemWidth: 50,
     },
     {
       type: "input",
       prop: "nickNameEn",
       label: "英文名",
+      itemWidth: 50,
     },
     {
       type: "slot",
@@ -300,6 +358,24 @@ const formConfig = computed(() => {
       label: "账户信息",
     },
     {
+      type: "select",
+      label: "角色",
+      prop: "roleIds",
+      multiple: true,
+      data: roleData.value,
+      fn: (val) => {
+        changeRoleId(val);
+      },
+    },
+    {
+      type: "select",
+      label: "关联公司",
+      prop: "companySet",
+      multiple: true,
+      clearable: false,
+      data: companyData.value,
+    },
+    {
       type: "radio",
       prop: "userType",
       label: "系统用户",
@@ -316,23 +392,32 @@ const formConfig = computed(() => {
           id: 0,
         },
       ],
+      itemWidth: 50,
     },
     {
       type: "select",
-      label: "角色",
-      prop: "roleIds",
-      multiple: true,
-      data: roleData.value,
-      fn: (val) => {
-        changeRoleId(val);
-      },
+      label: "身份",
+      prop: "identity",
+      multiple: false,
+      data: [
+        {
+          label: "职员",
+          value: 10,
+        },
+        {
+          label: "股东",
+          value: 20,
+        },
+      ],
+      itemWidth: 50,
     },
+
     {
       type: "input",
       prop: "phonenumber",
       label: "手机号",
       required: true,
-      itemWidth: 100,
+      itemWidth: 50,
       itemType: "text",
     },
     {
@@ -340,33 +425,10 @@ const formConfig = computed(() => {
       prop: "jobNumber",
       label: "工号",
       required: true,
-      itemWidth: 100,
+      itemWidth: 50,
       itemType: "text",
     },
-    {
-      type: "select",
-      label: "关联公司",
-      prop: "companySet",
-      multiple: true,
-      clearable: false,
-      data: companyData.value,
-    },
-    {
-      type: "select",
-      label: "身份",
-      prop: "identity",
-      multiple: false,
-      data: [
-        {
-          label: "职员",
-          value: 10,
-        },
-        {
-          label: "股东",
-          value: 20,
-        },
-      ],
-    },
+
     {
       type: "input",
       prop: "accountBank",
@@ -396,10 +458,19 @@ const formConfig = computed(() => {
       itemWidth: 100,
       isShow: isShowPurchaseAtt.value,
     },
+    {
+      type: "title1",
+      title: "职级明细",
+    },
+    {
+      type: "slot",
+      slotName: "detail",
+      label: "",
+    },
   ];
 });
 const rules = ref({
-  deptId: [{ required: true, message: "请选择部门名称", trigger: "change" }],
+  deptId: [{ required: true, message: "请选择部门", trigger: "change" }],
   nickName: [{ required: true, message: "请输入姓名", trigger: "blur" }],
   userName: [{ required: true, message: "请输入用户名", trigger: "blur" }],
   roleIds: [{ required: true, message: "请选择角色", trigger: "change" }],
@@ -407,7 +478,7 @@ const rules = ref({
   companySet: [
     { required: true, message: "请选择关联公司", trigger: "change" },
   ],
-  identity: [{ required: true, message: "请选择身份", trigger: "change" }],
+  identity: [{ required: true, message: "请选择", trigger: "change" }],
 });
 
 const changeRoleId = (val) => {
@@ -538,6 +609,7 @@ const openModal = () => {
     purchaseRange: [],
     purchaseRangeOne: [],
     identity: 10,
+    identityList: [],
   };
   loadingDialog.value = false;
   dialogVisible.value = true;
@@ -664,7 +736,12 @@ const getDtl = (row) => {
   }));
   dialogVisible.value = true;
   proxy.get(`/tenantUser/${row.userId}`).then((res) => {
-    formData.data = { ...row, userType: 1, roleIds: res.roleIds };
+    formData.data = {
+      ...row,
+      userType: 1,
+      roleIds: res.roleIds,
+      identityList: res.data.identityList,
+    };
     if (res.data && res.data.purchaseRange) {
       formData.data.purchaseRange = [];
       formData.data.purchaseRangeOne = res.data.purchaseRange.split(",");
@@ -676,6 +753,9 @@ const getDtl = (row) => {
     } else {
       formData.data.purchaseRangeOne = [];
     }
+    if (!(res.data.identityList && res.data.identityList.length > 0)) {
+      formData.data.identityList = [];
+    }
     changeRoleId(res.roleIds);
     let companySetData = formData.data.companySet
       ? formData.data.companySet
@@ -755,13 +835,6 @@ const getTreeData = () => {
       tenantId: proxy.useUserStore().user.tenantId,
     })
     .then((res) => {
-      // treeData.value = [
-      //   {
-      //     deptName: "全部",
-      //     deptId: "0",
-      //     children: proxy.handleTree(res.data, "deptId"),
-      //   },
-      // ];
       for (let i = 0; i < res.data.length; i++) {
         if (res.data[i] && res.data[i].type == 0) {
           res.data[i].disabled = true;
@@ -769,6 +842,13 @@ const getTreeData = () => {
       }
       treeData.value = proxy.handleTree(res.data, "deptId");
       deptList.value = proxy.handleTree(res.data, "deptId");
+      let newData = proxy.deepClone(res.data);
+      for (let i = 0; i < newData.length; i++) {
+        if (newData[i] && newData[i].type == 3) {
+          newData[i].disabled = true;
+        }
+      }
+      deptListOne.value = proxy.handleTree(newData, "deptId");
     });
 };
 getTreeData();
@@ -795,6 +875,17 @@ const treeChange = (e, data) => {
   sourceList.value.pagination.deptId = e.deptId;
   getList();
 };
+
+const handleAdd = () => {
+  formData.data.identityList.push({
+    identity: "",
+    deptId: "",
+  });
+};
+
+const handleRemove = (index) => {
+  formData.data.identityList.splice(index, 1);
+};
 </script>
 
 <style lang="scss" scoped>