Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master' into master

zxf před 21 hodinami
rodič
revize
81e104aebe

+ 12 - 12
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/domain/dto/DeptImportDTO.java

@@ -14,50 +14,50 @@ import lombok.Data;
 public class DeptImportDTO {
 
     /** 组织名称 */
-    @Excel(name = "组织名称")
+    @Excel(name = "*组织名称")
     private String deptName;
 
     /** 组织编码 */
-    @Excel(name = "组织编码")
+    @Excel(name = "*组织编码")
     private String deptCode;
 
     /** 父组织名称 */
-    @Excel(name = "父组织名称")
+    @Excel(name = "*父组织名称")
     private String parentDeptName;
 
     /** 父组织编码 */
-    @Excel(name = "父组织编码")
+    @Excel(name = "*父组织编码")
     private String parentDeptCode;
 
     /** 负责人手机号 */
-    @Excel(name = "负责人手机号")
+    @Excel(name = "*负责人手机号")
     private String phone;
 
     /** 负责人姓名 */
-    @Excel(name = "负责人姓名")
+    @Excel(name = "*负责人姓名")
     private String leader;
 
     /** 费率 */
-    @Excel(name = "费率")
+    @Excel(name = "*费率")
     private String rateValue;
 
     /** 发票抬头 */
-    @Excel(name = "发票抬头")
+    @Excel(name = "*发票抬头")
     private String invoiceName;
 
     /** 纳税人识别号 */
-    @Excel(name = "纳税人识别号")
+    @Excel(name = "*纳税人识别号")
     private String invoiceNum;
 
     /** 地址 */
-    @Excel(name = "地址")
+    @Excel(name = "*地址")
     private String companyAddress;
 
     /** 开户银行 */
-    @Excel(name = "开户银行")
+    @Excel(name = "*开户银行")
     private String openBank;
 
     /** 银行账号 */
-    @Excel(name = "银行账号")
+    @Excel(name = "*银行账号")
     private String bankAccount;
 }

+ 6 - 6
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/domain/dto/UserImportDTO.java

@@ -12,27 +12,27 @@ import lombok.Data;
 public class UserImportDTO {
 
     /** 手机号 */
-    @Excel(name = "手机号")
+    @Excel(name = "*手机号")
     private String phonenumber;
 
     /** 姓名 */
-    @Excel(name = "姓名")
+    @Excel(name = "*姓名")
     private String nickName;
 
     /** 工号 */
-    @Excel(name = "工号")
+    @Excel(name = "*工号")
     private String employeeCode;
 
     /** 用户角色名称 */
-    @Excel(name = "用户角色")
+    @Excel(name = "用户角色", defaultValue = "员工", combo = {"员工", "部门管理员", "瑞鲸管理员"})
     private String roleName;
 
     /** 组织名称 */
-    @Excel(name = "组织名称")
+    @Excel(name = "*组织名称")
     private String deptName;
 
     /** 组织编码 */
-    @Excel(name = "组织编码")
+    @Excel(name = "*组织编码")
     private String deptCode;
 
     /** 邮箱 */

+ 8 - 1
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -26,11 +26,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="openBank" column="open_bank" />
 		<result property="bankAccount" column="bank_account" />
 		<result property="companyAddress" column="company_address" />
+        <result property="deptCode" column="dept_code" />
 	</resultMap>
 	
 	<sql id="selectDeptVo">
         select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time,
-        d.invoice_name, d.invoice_num, d.rate_value, d.open_bank, d.bank_account, d.company_address
+        d.invoice_name, d.invoice_num, d.rate_value, d.open_bank, d.bank_account, d.company_address, d.dept_code
         from sys_dept d
     </sql>
     
@@ -46,6 +47,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="deptName != null and deptName != ''">
 			AND dept_name like concat('%', #{deptName}, '%')
 		</if>
+		<if test="deptCode != null and deptCode != ''">
+			AND dept_code like concat('%', #{deptCode}, '%')
+		</if>
 		<if test="status != null and status != ''">
 			AND status = #{status}
 		</if>
@@ -110,6 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
   			<if test="openBank != null and openBank != ''">open_bank,</if>
   			<if test="bankAccount != null and bankAccount != ''">bank_account,</if>
   			<if test="companyAddress != null and companyAddress != ''">company_address,</if>
+            <if test="deptCode != null and deptCode != ''">#{deptCode},</if>
  			create_time
  		)values(
  			<if test="deptId != null and deptId != 0">#{deptId},</if>
@@ -128,6 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
   			<if test="openBank != null and openBank != ''">#{openBank},</if>
   			<if test="bankAccount != null and bankAccount != ''">#{bankAccount},</if>
   			<if test="companyAddress != null and companyAddress != ''">#{companyAddress},</if>
+            <if test="deptCode != null and deptCode != ''">#{deptCode},</if>
  			sysdate()
  		)
 	</insert>
@@ -150,6 +156,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="openBank != null and openBank != ''">open_bank = #{openBank},</if>
             <if test="bankAccount != null and bankAccount != ''">bank_account = #{bankAccount},</if>
             <if test="companyAddress != null and companyAddress != ''">company_address = #{companyAddress},</if>
+            <if test="deptCode != null and deptCode != ''">dept_code = #{deptCode},</if>
  			update_time = sysdate()
  		</set>
  		where dept_id = #{deptId}

+ 9 - 0
jd-logistics-ui-v3/src/api/logistics/monthSummary.js

@@ -72,4 +72,13 @@ export function invoiceIssuance(query) {
     method: 'post',
     data: query
   })
+}
+
+// 票据回传
+export function invoiceReturnShop(query) {
+  return request({
+    url: '/system/invoice/returnShop',
+    method: 'post',
+    data: query
+  })
 }

+ 35 - 1
jd-logistics-ui-v3/src/views/logistics/monthSummary/index.vue

@@ -125,6 +125,7 @@
           >查看</el-button>
           <el-button link type="primary" @click="handleDuizhang(scope.row)" :disabled="scope.row.status != 1">对账</el-button>
           <el-button link type="primary" @click="handleKaipiao(scope.row)" :disabled="scope.row.status != 2">开票</el-button>
+          <el-button link type="primary" @click="handlePiaojuhuichuan(scope.row)" :disabled="scope.row.status != 3">票据回传</el-button>
 <!--          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:monthSummary:remove']">删除</el-button>-->
         </template>
       </el-table-column>
@@ -278,7 +279,7 @@
 </template>
 
 <script setup name="MonthSummary">
-import { listMonthSummary, getMonthSummary, delMonthSummary, addMonthSummary, updateMonthSummary,invoiceIssuance } from "@/api/logistics/monthSummary"
+import { listMonthSummary, getMonthSummary, delMonthSummary, addMonthSummary, updateMonthSummary,invoiceIssuance,invoiceReturnShop } from "@/api/logistics/monthSummary"
 import { getDept } from "@/api/system/dept"
 
 import auth from '@/plugins/auth'
@@ -492,6 +493,39 @@ function submitFormDZ(){
     getList()
   })
 }
+
+
+// 点击开票
+function handlePiaojuhuichuan(row){
+  const params = {
+    summaryId:row.summaryId
+  }
+  invoiceReturnShop(params).then(response => {
+    if(response.code == 200){
+      proxy.$modal.msgError(response.msg);
+    }
+    // proxy.$nextTick(() => {
+      // Object.assign(formKP, {
+      //   invoiceName: response.data.invoiceName || '',
+      //   invoiceNum: response.data.invoiceNum || '',
+      //   email: response.data.email || '',
+      //   companyAddress: response.data.companyAddress || '',
+      //   phone: response.data.phone || '',
+      //   openBank: response.data.openBank || '',
+      //   bankAccount: response.data.bankAccount || '',
+      //   remark: response.data.remark || '',
+      //   BigDecimal: row.payableAmount || 0,
+      //   summaryId: row.summaryId || 0
+      // });
+      // openKaipiao.value = true;
+    // });
+  }).catch(error => {
+    console.error('获取部门信息失败:', error);
+    proxy.$modal.msgError('获取开票信息失败');
+  });
+}
+
+
 // 点击开票
 function handleKaipiao(row){
   getDept(row.deptId).then(response => {

+ 9 - 2
jd-logistics-ui-v3/src/views/system/dept/index.vue

@@ -46,7 +46,7 @@
         >展开/折叠
         </el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button
             type="success"
             plain
@@ -55,7 +55,7 @@
             v-hasPermi="['system:dept:add']">
           模板下载
         </el-button>
-      </el-col>
+      </el-col> -->
       <el-col :span="1.5">
         <el-button
             type="success"
@@ -133,6 +133,11 @@
               <el-input v-model="form.deptName" placeholder="请输入供应商名称"/>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="供应商编码" prop="deptCode">
+              <el-input v-model="form.deptCode" placeholder="请输入供应商编码"/>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="负责人" prop="leader">
               <el-input v-model="form.leader" placeholder="请输入负责人" maxlength="20"/>
@@ -281,6 +286,7 @@ const data = reactive({
   rules: {
     parentId: [{ required: true, message: "上级组织不能为空", trigger: "blur" }],
     deptName: [{ required: true, message: "供应商名称不能为空", trigger: "blur" }],
+    deptCode: [{ required: true, message: "供应商编码不能为空", trigger: "blur" }],
     email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
     phone: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
     rateValue: [
@@ -359,6 +365,7 @@ function reset() {
     deptId: undefined,
     parentId: undefined,
     deptName: undefined,
+    deptCode: undefined,
     orderNum: 0,
     leader: undefined,
     phone: undefined,

+ 146 - 81
jd-logistics-ui-v3/src/views/system/user/index.vue

@@ -6,10 +6,13 @@
         <pane size="16">
           <el-col>
             <div class="head-container">
-              <el-input v-model="deptName" placeholder="请输入组织名称" clearable prefix-icon="Search" style="margin-bottom: 20px" />
+              <el-input v-model="deptName" placeholder="请输入组织名称" clearable prefix-icon="Search"
+                        style="margin-bottom: 20px"/>
             </div>
             <div class="head-container">
-              <el-tree :data="deptOptions" :props="{ label: 'label', children: 'children' }" :expand-on-click-node="false" :filter-node-method="filterNode" ref="deptTreeRef" node-key="id" highlight-current default-expand-all @node-click="handleNodeClick" />
+              <el-tree :data="deptOptions" :props="{ label: 'label', children: 'children' }"
+                       :expand-on-click-node="false" :filter-node-method="filterNode" ref="deptTreeRef" node-key="id"
+                       highlight-current default-expand-all @node-click="handleNodeClick"/>
             </div>
           </el-col>
         </pane>
@@ -18,18 +21,22 @@
           <el-col>
             <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
               <el-form-item label="用户帐号" prop="userName">
-                <el-input v-model="queryParams.userName" placeholder="请输入用户帐号" clearable style="width: 240px" @keyup.enter="handleQuery" />
+                <el-input v-model="queryParams.userName" placeholder="请输入用户帐号" clearable style="width: 240px"
+                          @keyup.enter="handleQuery"/>
               </el-form-item>
               <el-form-item label="用户昵称" prop="nickName">
-                <el-input v-model="queryParams.nickName" placeholder="请输入用户昵称" clearable style="width: 240px" @keyup.enter="handleQuery" />
+                <el-input v-model="queryParams.nickName" placeholder="请输入用户昵称" clearable style="width: 240px"
+                          @keyup.enter="handleQuery"/>
               </el-form-item>
               <el-form-item label="状态" prop="status">
                 <el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px">
-                  <el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
+                  <el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label"
+                             :value="dict.value"/>
                 </el-select>
               </el-form-item>
               <el-form-item label="创建时间" style="width: 308px">
-                <el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+                <el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
+                                start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
               </el-form-item>
               <el-form-item>
                 <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
@@ -39,42 +46,54 @@
 
             <el-row :gutter="10" class="mb8">
               <el-col :span="1.5">
-                <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button>
+                <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:user:add']">新增
+                </el-button>
               </el-col>
               <el-col :span="1.5">
-                <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button>
+                <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
+                           v-hasPermi="['system:user:edit']">修改
+                </el-button>
               </el-col>
               <el-col :span="1.5">
-                <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button>
+                <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
+                           v-hasPermi="['system:user:remove']">删除
+                </el-button>
               </el-col>
 
               <el-col :span="1.5">
-                <el-button type="info" plain icon="Upload" @click="handleImport" v-hasPermi="['system:user:add']">导入</el-button>
+                <el-button type="info" plain icon="Upload" @click="handleImport" v-hasPermi="['system:user:add']">导入
+                </el-button>
               </el-col>
-<!--              <el-col :span="1.5">-->
-<!--                <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:user:export']">导出</el-button>-->
-<!--              </el-col>-->
+              <!--              <el-col :span="1.5">-->
+              <!--                <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:user:export']">导出</el-button>-->
+              <!--              </el-col>-->
               <right-toolbar v-model:showSearch="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
             </el-row>
 
             <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
-              <el-table-column type="selection" width="50" align="center" />
-              <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" />
-              <el-table-column label="用户帐号" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" />
-              <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns.nickName.visible" :show-overflow-tooltip="true" />
-              <el-table-column label="组织" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" />
-<!--              <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" />-->
+              <el-table-column type="selection" width="50" align="center"/>
+              <el-table-column label="用户编号" align="center" key="userId" prop="userId"
+                               v-if="columns.userId.visible"/>
+              <el-table-column label="用户帐号" align="center" key="userName" prop="userName"
+                               v-if="columns.userName.visible" :show-overflow-tooltip="true"/>
+              <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName"
+                               v-if="columns.nickName.visible" :show-overflow-tooltip="true"/>
+              <el-table-column label="组织" align="center" key="deptName" prop="dept.deptName"
+                               v-if="columns.deptName.visible" :show-overflow-tooltip="true"/>
+              <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" width="120"/>
+<!--              <el-table-column label="邮箱" align="center" key="email" prop="email" width="120"/>-->
               <el-table-column label="状态" align="center" key="status" v-if="columns.status.visible">
                 <template #default="scope">
                   <el-switch
-                    v-model="scope.row.status"
-                    active-value="0"
-                    inactive-value="1"
-                    @change="handleStatusChange(scope.row)"
+                      v-model="scope.row.status"
+                      active-value="0"
+                      inactive-value="1"
+                      @change="handleStatusChange(scope.row)"
                   ></el-switch>
                 </template>
               </el-table-column>
-              <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns.createTime.visible" width="160">
+              <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns.createTime.visible"
+                               width="160">
                 <template #default="scope">
                   <span>{{ parseTime(scope.row.createTime) }}</span>
                 </template>
@@ -82,21 +101,26 @@
               <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
                 <template #default="scope">
                   <el-tooltip content="修改" placement="top" v-if="scope.row.userId !== 1">
-                    <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']"></el-button>
+                    <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
+                               v-hasPermi="['system:user:edit']"></el-button>
                   </el-tooltip>
                   <el-tooltip content="删除" placement="top" v-if="scope.row.userId !== 1">
-                    <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']"></el-button>
+                    <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
+                               v-hasPermi="['system:user:remove']"></el-button>
                   </el-tooltip>
                   <el-tooltip content="重置密码" placement="top" v-if="scope.row.userId !== 1">
-                    <el-button link type="primary" icon="Key" @click="handleResetPwd(scope.row)" v-hasPermi="['system:user:resetPwd']"></el-button>
+                    <el-button link type="primary" icon="Key" @click="handleResetPwd(scope.row)"
+                               v-hasPermi="['system:user:resetPwd']"></el-button>
                   </el-tooltip>
                   <el-tooltip content="分配角色" placement="top" v-if="scope.row.userId !== 1">
-                    <el-button link type="primary" icon="CircleCheck" @click="handleAuthRole(scope.row)" v-hasPermi="['system:user:edit']"></el-button>
+                    <el-button link type="primary" icon="CircleCheck" @click="handleAuthRole(scope.row)"
+                               v-hasPermi="['system:user:edit']"></el-button>
                   </el-tooltip>
                 </template>
               </el-table-column>
             </el-table>
-            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
+            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+                        v-model:limit="queryParams.pageSize" @pagination="getList"/>
           </el-col>
         </pane>
       </splitpanes>
@@ -108,51 +132,61 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="用户昵称" prop="nickName">
-              <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" />
+              <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="归属组织" prop="deptId">
-              <el-tree-select v-model="form.deptId" :data="enabledDeptOptions" :props="{ value: 'id', label: 'label', children: 'children' }" value-key="id" placeholder="请选择归属组织" clearable check-strictly />
+              <el-tree-select v-model="form.deptId" :data="enabledDeptOptions"
+                              :props="{ value: 'id', label: 'label', children: 'children' }" value-key="id"
+                              placeholder="请选择归属组织" clearable check-strictly/>
             </el-form-item>
           </el-col>
         </el-row>
-<!--        <el-row>
-          <el-col :span="12">
-            <el-form-item label="手机号码" prop="phonenumber">
-              <el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="邮箱" prop="email">
-              <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" />
-            </el-form-item>
-          </el-col>
-        </el-row>-->
+
         <el-row>
           <el-col :span="12">
             <el-form-item v-if="form.userId == undefined" label="用户账号" prop="userName">
-              <el-input v-model="form.userName" placeholder="请输入用户账号" maxlength="30" />
+              <el-input v-model="form.userName" placeholder="请输入用户账号" maxlength="30"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">
-              <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password />
+            <el-form-item label="手机号码" prop="phonenumber">
+              <el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11"/>
             </el-form-item>
           </el-col>
         </el-row>
+
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">-->
+<!--              <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20"-->
+<!--                        show-password/>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="邮箱" prop="email">-->
+<!--              <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50"/>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+
         <el-row>
           <el-col :span="12">
             <el-form-item label="用户性别">
               <el-select v-model="form.sex" placeholder="请选择">
-                <el-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
+                <el-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label"
+                           :value="dict.value"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="状态">
               <el-radio-group v-model="form.status">
-                <el-radio v-for="dict in sys_normal_disable" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
+                <el-radio v-for="dict in sys_normal_disable" :key="dict.value" :value="dict.value">{{
+                    dict.label
+                  }}
+                </el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -161,14 +195,16 @@
           <el-col :span="12">
             <el-form-item label="岗位">
               <el-select v-model="form.postIds" multiple placeholder="请选择">
-                <el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1"></el-option>
+                <el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId"
+                           :disabled="item.status == 1"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="角色">
               <el-select v-model="form.roleIds" multiple placeholder="请选择">
-                <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" :disabled="item.status == 1"></el-option>
+                <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId"
+                           :disabled="item.status == 1"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -191,16 +227,23 @@
 
     <!-- 用户导入对话框 -->
     <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
-      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :on-change="handleFileChange" :on-remove="handleFileRemove" :auto-upload="false" drag>
-        <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :on-change="handleFileChange"
+                 :on-remove="handleFileRemove" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
         <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
         <template #tip>
           <div class="el-upload__tip text-center">
-<!--            <div class="el-upload__tip">-->
-<!--              <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
-<!--            </div>-->
+            <!--            <div class="el-upload__tip">-->
+            <!--              <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
+            <!--            </div>-->
             <span>仅允许导入xls、xlsx格式文件。</span>
-            <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">下载模板</el-link>
+            <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
+                     @click="importTemplate">下载模板
+            </el-link>
           </div>
         </template>
       </el-upload>
@@ -215,17 +258,26 @@
 </template>
 
 <script setup name="User">
-import { getToken } from "@/utils/auth"
+import {getToken} from "@/utils/auth"
 import useAppStore from '@/store/modules/app'
-import { changeUserStatus, listUser, resetUserPwd, delUser, getUser, updateUser, addUser, deptTreeSelect } from "@/api/system/user"
-import { Splitpanes, Pane } from "splitpanes"
+import {
+  changeUserStatus,
+  listUser,
+  resetUserPwd,
+  delUser,
+  getUser,
+  updateUser,
+  addUser,
+  deptTreeSelect
+} from "@/api/system/user"
+import {Splitpanes, Pane} from "splitpanes"
 import "splitpanes/dist/splitpanes.css"
 import {download} from "@/utils/request.js";
 
 const router = useRouter()
 const appStore = useAppStore()
-const { proxy } = getCurrentInstance()
-const { sys_normal_disable, sys_user_sex } = proxy.useDict("sys_normal_disable", "sys_user_sex")
+const {proxy} = getCurrentInstance()
+const {sys_normal_disable, sys_user_sex} = proxy.useDict("sys_normal_disable", "sys_user_sex")
 
 const userList = ref([])
 const open = ref(false)
@@ -254,18 +306,18 @@ const upload = reactive({
   // 是否更新已经存在的用户数据
   updateSupport: 0,
   // 设置上传的请求头部
-  headers: { Authorization: "Bearer " + getToken() },
+  headers: {Authorization: "Bearer " + getToken()},
   // 上传的地址
   url: import.meta.env.VITE_APP_BASE_API + "/system/user/importData"
 })
 // 列显隐信息
 const columns = ref({
-  userId: { label: '用户编号', visible: true },
-  userName: { label: '用户账号', visible: true },
-  nickName: { label: '用户昵称', visible: true },
-  deptName: { label: '组织', visible: true },
-  status: { label: '状态', visible: true },
-  createTime: { label: '创建时间', visible: true }
+  userId: {label: '用户编号', visible: true},
+  userName: {label: '用户账号', visible: true},
+  nickName: {label: '用户昵称', visible: true},
+  deptName: {label: '组织', visible: true},
+  status: {label: '状态', visible: true},
+  createTime: {label: '创建时间', visible: true}
 })
 
 const data = reactive({
@@ -279,15 +331,27 @@ const data = reactive({
     deptId: undefined
   },
   rules: {
-    userName: [{ required: true, message: "用户帐号不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户帐号长度必须介于 2 和 20 之间", trigger: "blur" }],
-    nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
-    password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }, { pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }],
-    email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
-    // phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
+    userName: [{required: true, message: "用户帐号不能为空", trigger: "blur"}, {
+      min: 2,
+      max: 20,
+      message: "用户帐号长度必须介于 2 和 20 之间",
+      trigger: "blur"
+    }],
+    nickName: [{required: true, message: "用户昵称不能为空", trigger: "blur"}],
+    password: [{required: true, message: "用户密码不能为空", trigger: "blur"}, {
+      min: 5,
+      max: 20,
+      message: "用户密码长度必须介于 5 和 20 之间",
+      trigger: "blur"
+    }, {pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur"}],
+    email: [{type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"]}],
+    phonenumber: [
+        {required: true, message: "请填写手机号码", trigger: "blur"},
+      {pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur"}]
   }
 })
 
-const { queryParams, form, rules } = toRefs(data)
+const {queryParams, form, rules} = toRefs(data)
 
 /** 通过条件过滤节点  */
 const filterNode = (value, data) => {
@@ -360,14 +424,15 @@ function handleDelete(row) {
   }).then(() => {
     getList()
     proxy.$modal.msgSuccess("删除成功")
-  }).catch(() => {})
+  }).catch(() => {
+  })
 }
 
 /** 导出按钮操作 */
 function handleExport() {
   proxy.download("system/user/export", {
     ...queryParams.value,
-  },`user_${new Date().getTime()}.xlsx`)
+  }, `user_${new Date().getTime()}.xlsx`)
 }
 
 /** 用户状态修改  */
@@ -415,11 +480,12 @@ function handleResetPwd(row) {
         return "不能包含非法字符:< > \" ' \\\ |"
       }
     },
-  }).then(({ value }) => {
+  }).then(({value}) => {
     resetUserPwd(row.userId, value).then(response => {
       proxy.$modal.msgSuccess("修改成功,新密码是:" + value)
     })
-  }).catch(() => {})
+  }).catch(() => {
+  })
 }
 
 /** 选择条数  */
@@ -445,8 +511,7 @@ function handleImport() {
 
 /** 下载模板操作 */
 function importTemplate() {
-  proxy.download("system/user/importTemplate", {
-  }, `user_template_${new Date().getTime()}.xlsx`)
+  proxy.download("system/user/importTemplate", {}, `user_template_${new Date().getTime()}.xlsx`)
 }
 
 /**文件上传中处理 */
@@ -469,7 +534,7 @@ const handleFileSuccess = (response, file, fileList) => {
   upload.open = false
   upload.isUploading = false
   proxy.$refs["uploadRef"].handleRemove(file)
-  proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true })
+  proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", {dangerouslyUseHTMLString: true})
   getList()
 }
 

+ 8 - 9
jd_logistics-app/pages/address/edit.vue

@@ -126,15 +126,14 @@
 	// 粘贴并识别功能
 	const handleSearch = async (type) => {
 		try {
-			// 1. 读取剪贴板内容
-			const clipboardText = await new Promise((resolve, reject) => {
-				uni.getClipboardData({
-					success: res => resolve(res.data),
-					fail: err => reject(err)
-				});
-			});
-
 			if (type == 1) {
+				// 1. 读取剪贴板内容
+				const clipboardText = await new Promise((resolve, reject) => {
+					uni.getClipboardData({
+						success: res => resolve(res.data),
+						fail: err => reject(err)
+					});
+				});
 				if (!clipboardText) {
 					uni.showToast({
 						title: '剪贴板内容为空',
@@ -203,7 +202,7 @@
 
 				uni.showToast({
 					title: '识别成功,请核对地址信息',
-					icon: 'success'
+					icon: 'none'
 				});
 			} else {
 				uni.showToast({