ezhizao_zx 1 年之前
父節點
當前提交
fdcc2e7bf7
共有 100 個文件被更改,包括 6399 次插入5380 次删除
  1. 9 0
      src/api/business/crm/contract.js
  2. 10 0
      src/api/business/crm/workOrder.js
  3. 8 0
      src/api/business/entrust/entrustOrder.js
  4. 10 0
      src/api/business/production/salary.js
  5. 10 0
      src/api/business/tenant.js
  6. 6 5
      src/directive/permission/hasPermi.js
  7. 58 32
      src/layout/components/Navbar.vue
  8. 2 2
      src/router/index.js
  9. 1 1
      src/utils/request.js
  10. 222 170
      src/views/business/crm/AddCompanyDialog.vue
  11. 42 42
      src/views/business/crm/ZeroChangeDialog.vue
  12. 568 145
      src/views/business/crm/company/form.vue
  13. 46 202
      src/views/business/crm/company/index.vue
  14. 214 559
      src/views/business/crm/order/form.vue
  15. 106 1
      src/views/business/crm/order/index.vue
  16. 40 10
      src/views/business/crm/workorder/index.vue
  17. 79 52
      src/views/business/deduction/HousingFundViewDialog.vue
  18. 79 52
      src/views/business/deduction/SocialSecurityViewDialog.vue
  19. 129 10
      src/views/business/deduction/index.vue
  20. 126 92
      src/views/business/entrust/deduct/form.vue
  21. 3 7
      src/views/business/entrust/deduct/index.vue
  22. 116 49
      src/views/business/entrust/deductOfFactory/index.vue
  23. 18 12
      src/views/business/entrust/deposit/index.vue
  24. 41 28
      src/views/business/entrust/depositOfFactory/index.vue
  25. 28 13
      src/views/business/entrust/entrustOrder/form.vue
  26. 7 6
      src/views/business/entrust/entrustOrder/index.vue
  27. 54 20
      src/views/business/entrust/statementAccount/ChoiceMonthDialog.vue
  28. 5 2
      src/views/business/entrust/statementAccount/form.vue
  29. 39 31
      src/views/business/entrust/statementAccount/index.vue
  30. 78 149
      src/views/business/entrust/workOrder/currentMonth/index.vue
  31. 73 134
      src/views/business/entrust/workOrder/nextMonth/index.vue
  32. 59 101
      src/views/business/entrust/workOrder/once/index.vue
  33. 14 63
      src/views/business/entrust/workOrder/setEntrustDialog.vue
  34. 1 2
      src/views/business/entrust/workOrderForFactory/currentMonth/index.vue
  35. 1 1
      src/views/business/entrust/workOrderForFactory/nextMonth/index.vue
  36. 1 1
      src/views/business/entrust/workOrderForFactory/once/index.vue
  37. 36 11
      src/views/business/financial/collection/form.vue
  38. 8 2
      src/views/business/financial/collection/importExcelDialog.vue
  39. 2 2
      src/views/business/financial/collection/index.vue
  40. 70 275
      src/views/business/financial/contract/form.vue
  41. 2 2
      src/views/business/financial/contract/index.vue
  42. 119 362
      src/views/business/financial/payment/form.vue
  43. 2 2
      src/views/business/financial/payment/index.vue
  44. 9 2
      src/views/business/housingFund/confirm/form.vue
  45. 104 154
      src/views/business/housingFund/confirm/index.vue
  46. 1 8
      src/views/business/housingFund/declare/form.vue
  47. 107 148
      src/views/business/housingFund/declare/index.vue
  48. 155 124
      src/views/business/housingFund/declare/view.vue
  49. 50 201
      src/views/business/paymentEntry/type/index.vue
  50. 2 4
      src/views/business/production/IndividualIncomeTaxIs/FormDialog.vue
  51. 4 4
      src/views/business/production/IndividualIncomeTaxIs/MemberDialog.vue
  52. 47 27
      src/views/business/production/IndividualIncomeTaxIs/index.vue
  53. 1 1
      src/views/business/production/IndividualIncomeTaxIsZero/FormDialog.vue
  54. 5 4
      src/views/business/production/IndividualIncomeTaxIsZero/MemberDialog.vue
  55. 46 56
      src/views/business/production/IndividualIncomeTaxIsZero/index.vue
  56. 16 2
      src/views/business/production/archiveTicket/index.vue
  57. 35 163
      src/views/business/production/deduction/index.vue
  58. 1 0
      src/views/business/production/feedbackDialog.vue
  59. 36 68
      src/views/business/production/financialReportTax/FormDialog.vue
  60. 63 33
      src/views/business/production/financialReportTax/index.vue
  61. 1 31
      src/views/business/production/financialReportTaxIsZero/FormDialog.vue
  62. 45 25
      src/views/business/production/financialReportTaxIsZero/index.vue
  63. 281 44
      src/views/business/production/keepAccount/index.vue
  64. 19 4
      src/views/business/production/onceWork/index.vue
  65. 1 12
      src/views/business/production/productionCompany/index.vue
  66. 425 44
      src/views/business/production/receiveTicket/index.vue
  67. 1 9
      src/views/business/production/receiveTicket/view.vue
  68. 109 22
      src/views/business/production/receiveTicketFeedback/index.vue
  69. 153 4
      src/views/business/production/salary/index.vue
  70. 60 208
      src/views/business/production/salary/view.vue
  71. 1 1
      src/views/business/production/salaryZero/form.vue
  72. 130 15
      src/views/business/production/salaryZero/index.vue
  73. 2 1
      src/views/business/production/salaryZero/view.vue
  74. 3 4
      src/views/business/service/loop/housingFundForm.vue
  75. 61 186
      src/views/business/service/loop/index.vue
  76. 38 33
      src/views/business/service/loop/keepAccountForm.vue
  77. 342 91
      src/views/business/service/loop/socialSecurityForm.vue
  78. 27 7
      src/views/business/service/once/form.vue
  79. 143 60
      src/views/business/service/once/index.vue
  80. 37 19
      src/views/business/service/once/view.vue
  81. 55 36
      src/views/business/service/serviceForm.vue
  82. 44 142
      src/views/business/setting/account/index.vue
  83. 12 2
      src/views/business/socialSecurity/confirm/form.vue
  84. 125 3
      src/views/business/socialSecurity/confirm/index.vue
  85. 1 1
      src/views/business/socialSecurity/confirm/view.vue
  86. 125 4
      src/views/business/socialSecurity/declare/index.vue
  87. 24 5
      src/views/business/socialSecurity/feedbackDialog.vue
  88. 38 34
      src/views/business/source/channel/index.vue
  89. 40 35
      src/views/business/source/index.vue
  90. 1 0
      src/views/business/tenant/form.vue
  91. 1 1
      src/views/business/tenant/index.vue
  92. 1 1
      src/views/business/tenant/init.vue
  93. 4 12
      src/views/dialog/DialogContractChoice.vue
  94. 146 0
      src/views/dialog/DialogHistoryChoice.vue
  95. 159 260
      src/views/index.vue
  96. 39 159
      src/views/system/dept/index.vue
  97. 248 110
      src/views/system/dict/index.vue
  98. 225 100
      src/views/system/post/index.vue
  99. 3 1
      src/views/system/reconciliation/oncePrice/formDialog.vue
  100. 5 5
      src/views/system/reconciliation/oncePrice/index.vue

+ 9 - 0
src/api/business/crm/contract.js

@@ -140,3 +140,12 @@ export function alterOrder(data) {
   })
 
 }
+
+export function verifyCheckOrder(data) {
+  request.defaults.baseURL = '/ezhizao-yzbh-crm'
+  return request({
+    url: '/business/archive/order/verifyCheck',
+    method: 'post',
+    data: data
+  })
+}

+ 10 - 0
src/api/business/crm/workOrder.js

@@ -11,6 +11,16 @@ export function listWorkOrder(query) {
   })
 }
 
+// 查询工单管理列表
+export function indexList(query) {
+  request.defaults.baseURL = '/ezhizao-yzbh-crm'
+  return request({
+    url: '/business/workOrder/indexList',
+    method: 'get',
+    params: query
+  })
+}
+
 // 查询工单管理详细
 export function getWorkOrder(id) {
   request.defaults.baseURL = '/ezhizao-yzbh-crm'

+ 8 - 0
src/api/business/entrust/entrustOrder.js

@@ -85,3 +85,11 @@ export function exportEntrustOrder(query) {
     `委托订单导出_${new Date().getTime()}.xlsx`
   )
 }
+
+export function getMonths(id) {
+  request.defaults.baseURL = '/ezhizao-yzbh-entrust'
+  return request({
+    url: `/business/entrustOrder/getMonths/${id}`,
+    method: 'get'
+  })
+}

+ 10 - 0
src/api/business/production/salary.js

@@ -91,4 +91,14 @@ export function turnBackDetail(data) {
     method: 'post',
     data: data
   })
+}
+
+export function exportSalaryEmployee(id) {
+  request.defaults.baseURL = '/ezhizao-yzbh-production'
+  download(
+    "business/salary/exportDetailExcel",
+    {
+    },
+    `工资表${new Date().getTime()}.xlsx`
+  )
 }

+ 10 - 0
src/api/business/tenant.js

@@ -19,6 +19,16 @@ export function getTenant(id) {
   })
 }
 
+// 查询【请填写功能名称】详细
+export function getTenantById(id) {
+  request.defaults.baseURL = '/ezhizao-yzbh-sys'
+  return request({
+    url: '/business/tenant/' + id,
+    method: 'get'
+  })
+}
+
+
 // 新增【请填写功能名称】
 export function addTenant(data) {
   request.defaults.baseURL = '/ezhizao-yzbh-sys'

+ 6 - 5
src/directive/permission/hasPermi.js

@@ -1,8 +1,8 @@
- /**
- * v-hasPermi 操作权限处理
- * Copyright (c) 2019 ruoyi
- */
- 
+/**
+* v-hasPermi 操作权限处理
+* Copyright (c) 2019 ruoyi
+*/
+
 import useUserStore from '@/store/modules/user'
 
 export default {
@@ -10,6 +10,7 @@ export default {
     const { value } = binding
     const all_permission = "*:*:*";
     const permissions = useUserStore().permissions
+    // debugger
 
     if (value && value instanceof Array && value.length > 0) {
       const permissionFlag = value

+ 58 - 32
src/layout/components/Navbar.vue

@@ -1,13 +1,17 @@
 <template>
   <div class="navbar">
-    <hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container"
-      @toggleClick="toggleSideBar" />
+    <hamburger
+      id="hamburger-container"
+      :is-active="appStore.sidebar.opened"
+      class="hamburger-container"
+      @toggleClick="toggleSideBar"
+    />
     <!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!settingsStore.topNav" /> -->
     <!-- <top-nav id="topmenu-container" class="topmenu-container" v-if="!settingsStore.topNav" /> -->
     <top-nav id="topmenu-container" class="topmenu-container" />
 
     <div class="right-menu">
-      <div style="color: #fff; padding-right: 16px;">优政博惠</div>
+      <div style="color: #fff; padding-right: 16px">{{ tenantName }}</div>
       <template v-if="appStore.device !== 'mobile'">
         <!--
         <header-search id="header-search" class="right-menu-item" />
@@ -28,7 +32,11 @@
         -->
       </template>
       <div class="avatar-container">
-        <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
+        <el-dropdown
+          @command="handleCommand"
+          class="right-menu-item hover-effect"
+          trigger="click"
+        >
           <div class="avatar-wrapper">
             <img :src="userStore.avatar" class="user-avatar" />
             <el-icon><caret-bottom /></el-icon>
@@ -53,25 +61,29 @@
 </template>
 
 <script setup>
-import { ElMessageBox } from 'element-plus'
-import Breadcrumb from '@/components/Breadcrumb'
-import TopNav from '@/components/TopNav'
-import Hamburger from '@/components/Hamburger'
-import Screenfull from '@/components/Screenfull'
-import SizeSelect from '@/components/SizeSelect'
-import HeaderSearch from '@/components/HeaderSearch'
-import RuoYiGit from '@/components/RuoYi/Git'
-import RuoYiDoc from '@/components/RuoYi/Doc'
-import useAppStore from '@/store/modules/app'
-import useUserStore from '@/store/modules/user'
-import useSettingsStore from '@/store/modules/settings'
-
-const appStore = useAppStore()
-const userStore = useUserStore()
-const settingsStore = useSettingsStore()
+import { ElMessageBox } from "element-plus";
+import { getTenant } from "@/utils/auth";
+import { getTenantById } from "@/api/business/tenant";
+import Breadcrumb from "@/components/Breadcrumb";
+import TopNav from "@/components/TopNav";
+import Hamburger from "@/components/Hamburger";
+import Screenfull from "@/components/Screenfull";
+import SizeSelect from "@/components/SizeSelect";
+import HeaderSearch from "@/components/HeaderSearch";
+import RuoYiGit from "@/components/RuoYi/Git";
+import RuoYiDoc from "@/components/RuoYi/Doc";
+import useAppStore from "@/store/modules/app";
+import useUserStore from "@/store/modules/user";
+import useSettingsStore from "@/store/modules/settings";
+import { ref } from "vue";
+
+const appStore = useAppStore();
+const tenantName = ref();
+const userStore = useUserStore();
+const settingsStore = useSettingsStore();
 
 function toggleSideBar() {
-  appStore.toggleSideBar()
+  appStore.toggleSideBar();
 }
 
 function handleCommand(command) {
@@ -87,22 +99,36 @@ function handleCommand(command) {
   }
 }
 
+function getTenantName() {
+  //获取当前账套id
+  var id = getTenant();
+  //查询当前账套名称
+  getTenantById(id).then((res) => {
+    if (res.code === 200) {
+      tenantName.value = res.data.accountName;
+    }
+  });
+}
+
 function logout() {
-  ElMessageBox.confirm('确定注销并退出系统吗?', '提示', {
-    confirmButtonText: '确定',
-    cancelButtonText: '取消',
-    type: 'warning'
-  }).then(() => {
-    userStore.logOut().then(() => {
-      location.href = '/index';
+  ElMessageBox.confirm("确定注销并退出系统吗?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  })
+    .then(() => {
+      userStore.logOut().then(() => {
+        location.href = "/index";
+      });
     })
-  }).catch(() => { });
+    .catch(() => {});
 }
 
-const emits = defineEmits(['setLayout'])
+const emits = defineEmits(["setLayout"]);
 function setLayout() {
-  emits('setLayout');
+  emits("setLayout");
 }
+getTenantName();
 </script>
 
 <style lang='scss' scoped>
@@ -110,7 +136,7 @@ function setLayout() {
   height: 50px;
   overflow: hidden;
   position: relative;
-  background: #282B33;
+  background: #282b33;
   box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
 
   .hamburger-container {

+ 2 - 2
src/router/index.js

@@ -139,7 +139,7 @@ export const dynamicRoutes = [{
   path: '/customer/dict-data',
   component: Layout,
   hidden: true,
-  permissions: ['system:dict:list'],
+  permissions: ['business:crm:dict:list'],
   children: [{
     path: 'index/:dictId(\\d+)',
     component: () => import('@/views/business/crm/dict/data'),
@@ -184,7 +184,7 @@ export const dynamicRoutes = [{
   path: '/entrust/statusment',
   component: Layout,
   hidden: true,
-  permissions: ['business:entrust:statement:list'],
+  permissions: ['business:entrustOrder:statement:list'],
   children: [{
     path: 'order/:orderId(\\d+)',
     component: () => import('@/views/business/entrust/statementAccount/index'),

+ 1 - 1
src/utils/request.js

@@ -17,7 +17,7 @@ const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: import.meta.env.VITE_APP_BASE_API,
   // 超时
-  timeout: 10000
+  timeout: 100000
 })
 
 // request拦截器

+ 222 - 170
src/views/business/crm/AddCompanyDialog.vue

@@ -1,7 +1,19 @@
 <template>
   <!-- 添加或修改菜单对话框 -->
-  <el-dialog title="客户添加" v-model="visible" width="680px" append-to-body draggable>
-    <el-form ref="companyRef" :model="form" size="small" :rules="rules" label-width="100px">
+  <el-dialog
+    title="客户添加"
+    v-model="visible"
+    width="680px"
+    append-to-body
+    draggable
+  >
+    <el-form
+      ref="companyRef"
+      :model="form"
+      size="small"
+      :rules="rules"
+      label-width="100px"
+    >
       <el-row>
         <el-col :span="24">
           <el-radio-group v-model="addType">
@@ -16,27 +28,47 @@
         </el-col>
         <el-col v-if="addType === 1" :span="24">
           <el-form-item label="客户来源" prop="sourceCategoryName" required>
-            <CustomerFormCom ref="addComRef" :edit-status="true" :form-data="form"
-              :source-categories="sourceCategories" />
+            <CustomerFormCom
+              ref="addComRef"
+              :edit-status="true"
+              :form-data="form"
+              :source-categories="sourceCategories"
+            />
           </el-form-item>
         </el-col>
         <el-col v-if="addType === 2" :span="24">
           <el-form-item label="上传">
-            <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" :auto-upload="false" drag>
+            <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"
+              :auto-upload="false"
+              drag
+            >
               <el-icon class="el-icon--upload">
                 <upload-filled />
               </el-icon>
-              <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+              <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>
                   <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>
@@ -46,8 +78,14 @@
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
+        <el-button
+          type="primary"
+          icon="Finished"
+          size="small"
+          @click="submitForm"
+          >确 定</el-button
+        >
+        <el-button icon="close" size="small" @click="cancel">取 消</el-button>
       </div>
     </template>
   </el-dialog>
@@ -55,175 +93,176 @@
 
 
 <script setup>
-import { getToken, getTenant } from '@/utils/auth'
-import { addCompany } from "@/api/business/crm/company"
-import CustomerFormCom from '@/components/CustomerFormCom'
-import useUserStore from '@/store/modules/user'
-import { listSource } from '@/api/settings/source'
-import { deepClone } from '@/utils'
+import { getToken, getTenant } from "@/utils/auth";
+import { addCompany } from "@/api/business/crm/company";
+import CustomerFormCom from "@/components/CustomerFormCom";
+import useUserStore from "@/store/modules/user";
+import { listSource } from "@/api/settings/source";
+import { deepClone } from "@/utils";
 // import { incomeDefault, taxTypes, confirmDefault } from "@/utils/default"
-const { proxy } = getCurrentInstance()
+const { proxy } = getCurrentInstance();
 /** 父组件传参 */
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { }
-  }
-})
-const { getList } = toRefs(props)
+    default: () => {},
+  },
+});
+const { getList } = toRefs(props);
 /** 字典数组区 */
-const { develop_type } = proxy.useDict('develop_type')
+const { develop_type } = proxy.useDict("develop_type");
 /** 表单抽屉 页变量 */
-const title = ref("")
-const loading = ref(false)
-const multiple = ref(true)
-const visible = ref(false)
-const editStatus = ref(false)
-const isFullscreen = ref(false)
-const addDetailNum = ref(1)
-const currentMember = {}
-const provinces = ref(proxy.region.getProvinces())
-provinces.value.unshift({ code: '', name: '全部' })
-const cities = ref([])
-const districts = ref([])
+const title = ref("");
+const loading = ref(false);
+const multiple = ref(true);
+const visible = ref(false);
+const editStatus = ref(false);
+const isFullscreen = ref(false);
+const addDetailNum = ref(1);
+const currentMember = {};
+const provinces = ref(proxy.region.getProvinces());
+provinces.value.unshift({ code: "", name: "全部" });
+const cities = ref([]);
+const districts = ref([]);
 
-const sourceCategories = ref([])
+const sourceCategories = ref([]);
 
-const addType = ref(1)
+const addType = ref(1);
 
 watch(addType, (value) => {
   switch (value) {
-    case '1':
-      break
-    case '2':
-      break
+    case "1":
+      break;
+    case "2":
+      break;
     default:
-      break
+      break;
   }
-})
+});
 
-const webHost = import.meta.env.VITE_APP_BASE_API
+const webHost = import.meta.env.VITE_APP_BASE_API;
 
 const setHeaders = {
-  Authorization: getToken()
-}
+  Authorization: getToken(),
+};
 const data = reactive({
   form: {},
   followData: {},
   rules: {
-    name: [
-      { required: true, message: "客户名称不能为空", trigger: "blur" }
-    ],
+    name: [{ required: true, message: "客户名称不能为空", trigger: "blur" }],
     sourceCategoryName: [
-      { validator: sourceValidator, trigger: 'blur' },
-      { required: true, message: "客户来源不能为空", trigger: "blur" }
-    ]
-  }
-})
-const addComRef = ref(null)
-
+      { validator: sourceValidator, trigger: "blur" },
+      { required: true, message: "客户来源不能为空", trigger: "blur" },
+    ],
+  },
+});
+const addComRef = ref(null);
 
 /*** 客户导入参数 */
 const upload = reactive({
   // 是否禁用上传
   isUploading: false,
   // 设置上传的请求头部
-  headers: { Authorization: 'Bearer ' + getToken(), tenantId: getTenant() },
+  headers: { Authorization: "Bearer " + getToken(), tenantId: getTenant() },
   // 上传的地址
-  url: '/ezhizao-yzbh-crm/business/company/importData'
-})
+  url: "/ezhizao-yzbh-crm/business/company/importData",
+});
 
 function sourceValidator(rule, value, callback) {
-  console.log(form.value.reffererDataSource, form.value.sourceName)
-  if (form.value.sourceCategoryName === '') {
-    callback(new Error('来源类型不能为空'))
-    return
+  console.log(form.value.reffererDataSource, form.value.sourceName);
+  if (form.value.sourceCategoryName === "") {
+    callback(new Error("来源类型不能为空"));
+    return;
   }
-  if (form.value.referrerDataSource !== '' && form.value.referrerDataSource != null && form.value.sourceName === '') {
-    callback(new Error('来源不能为空'))
-    return
+  if (
+    form.value.referrerDataSource !== "" &&
+    form.value.referrerDataSource != null &&
+    form.value.sourceName === ""
+  ) {
+    callback(new Error("来源不能为空"));
+    return;
   }
-  return callback()
+  return callback();
 }
 
 const contactorEmptyData = {
   id: null,
-  name: '',
-  position: '',
-  gender: '男',
-  phone: '',
-  email: '',
-  isMain: '是',
-  remark: ''
-}
+  name: "",
+  position: "",
+  gender: "男",
+  phone: "",
+  email: "",
+  isMain: "是",
+  remark: "",
+};
 
 const companyEmptyData = {
   id: null,
-  code: '',
-  name: '',
-  oldName: '',
-  shortName: '',
-  ownerId: '',
-  ownerName: '',
-  sourceCategoryId: '',
-  sourceCategoryName: '',
-  sourceId: '',
-  sourceName: '',
-  stageId: '',
-  stageName: '',
-  phone: '',
-  email: '',
-  contactAddress: '',
-  remark: '',
-  socialCreditCode: '',
-  mainBusinessId: '',
-  mainBusinessName: '',
-  typeId: '',
-  typeName: '',
-  legalRepresentative: '',
-  foundationDate: '',
-  licenceDate: '',
-  businessStartDate: '',
-  collectionMethod: '',
-  businessEndDate: '',
-  isPermanentlyEffective: '',
-  registerMoney: '',
-  registerMoneyUnitId: '',
-  registerMoneyUnitName: '',
-  provinceCode: '',
-  province: '',
-  cityCode: '',
-  city: '',
-  districtCode: '',
-  district: '',
-  address: '',
-  businessField: '',
-  taxTypeId: '',
-  taxTypeName: '',
-  taxDeclarationCategoryId: '',
-  taxDeclarationCategoryName: '',
-  isZero: '',
-  taxDishId: '',
-  taxDishName: '',
-  competentTaxAuthority: '',
-  annualIncome: '',
-  taxType: '',
-  taxCollectorName: '',
-  taxCollectorPhone: '',
-  taxMonth: '',
-  openingBank: '',
-  bankAccount: '',
+  code: "",
+  name: "",
+  oldName: "",
+  shortName: "",
+  ownerId: "",
+  ownerName: "",
+  sourceCategoryId: "",
+  sourceCategoryName: "",
+  sourceId: "",
+  sourceName: "",
+  stageId: "",
+  stageName: "",
+  phone: "",
+  email: "",
+  contactAddress: "",
+  remark: "",
+  socialCreditCode: "",
+  mainBusinessId: "",
+  mainBusinessName: "",
+  typeId: "",
+  typeName: "",
+  legalRepresentative: "",
+  foundationDate: "",
+  licenceDate: "",
+  businessStartDate: "",
+  collectionMethod: "",
+  businessEndDate: "",
+  isPermanentlyEffective: "",
+  registerMoney: "",
+  registerMoneyUnitId: "",
+  registerMoneyUnitName: "",
+  provinceCode: "",
+  province: "",
+  cityCode: "",
+  city: "",
+  districtCode: "",
+  district: "",
+  address: "",
+  businessField: "",
+  taxTypeId: "",
+  taxTypeName: "",
+  taxDeclarationCategoryId: "",
+  taxDeclarationCategoryName: "",
+  isZero: "",
+  taxDishId: "",
+  taxDishName: "",
+  competentTaxAuthority: "",
+  annualIncome: "",
+  taxType: "",
+  taxCollectorName: "",
+  taxCollectorPhone: "",
+  taxMonth: "",
+  openingBank: "",
+  bankAccount: "",
   companyTags: [],
   companyTagIds: [],
   contactors: [],
   serviceTeams: [],
   companyFiles: [],
   stores: [],
-  creatorId: useUserStore().user.id
-}
+  creatorId: useUserStore().user.id,
+};
 
-const followQuery = ref({})
-const { form, rules, followData } = toRefs(data)
+const followQuery = ref({});
+const { form, rules, followData } = toRefs(data);
 
 /***********************  表单页方法 ****************************/
 
@@ -234,70 +273,83 @@ function open() {
 }
 
 function init() {
-  listSource().then(res => {
-    // console.log(res)
-    sourceCategories.value = res.rows
-    // console.log(sourceCategories.value)
-  }).catch(err => {
-    console.log(err)
-  })
+  listSource()
+    .then((res) => {
+      // console.log(res)
+      sourceCategories.value = res.rows;
+      // console.log(sourceCategories.value)
+    })
+    .catch((err) => {
+      console.log(err);
+    });
 }
 
 function reset() {
-  form.value = deepClone(companyEmptyData)
+  form.value = deepClone(companyEmptyData);
   // console.log(addComRef.value)
-  if (addComRef.value != null) addComRef.value.reset()
+  if (addComRef.value != null) addComRef.value.reset();
 }
 
 function cancel() {
-  visible.value = false
+  visible.value = false;
 }
 
 function submitForm() {
   if (addType.value === 1) {
-    proxy.$refs["companyRef"].validate(valid => {
+    proxy.$refs["companyRef"].validate((valid) => {
       if (valid) {
-        addCompany(form.value).then(res => {
-          console.log(res)
-          visible.value = false
-          getList.value()
-          // emit('success')
-        }).catch(err => {
-          console.log(err)
-        })
+        addCompany(form.value)
+          .then((res) => {
+            console.log(res);
+            visible.value = false;
+            getList.value();
+            // emit('success')
+          })
+          .catch((err) => {
+            console.log(err);
+          });
       }
-    })
+    });
   } else {
-    submitFileForm()
+    submitFileForm();
   }
-
 }
 
 const importTemplate = () => {
-  proxy.download('/business/company/importTemplate', {}, `company_template${new Date().getTime()}.xlsx`)
-}
+  proxy.download(
+    "/business/company/importTemplate",
+    {},
+    `company_template${new Date().getTime()}.xlsx`
+  );
+};
 /**文件上传中处理 */
 const handleFileUploadProgress = (event, file, fileList) => {
-  upload.isUploading = true
-}
+  upload.isUploading = true;
+};
 /** 文件上传成功处理 */
 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 })
-  getList.value()
-}
+  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 }
+  );
+  getList.value();
+};
 /** 提交上传文件 */
 function submitFileForm() {
-  proxy.$refs['uploadRef'].submit()
+  proxy.$refs["uploadRef"].submit();
 }
 
 // 暴露给父组件的方法
 defineExpose({
-  open
-})
-init()
+  open,
+});
+init();
 </script>
 
 <style></style>

+ 42 - 42
src/views/business/crm/ZeroChangeDialog.vue

@@ -5,7 +5,7 @@
       <i class="el-icon-close" @click="close" />
     </div> -->
     <!-- 功能按钮 -->
-    <div style="padding: 8px 24px 16px 24px;">
+    <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="100px" v-model="form">
         <el-row :gutter="30">
           <el-col :span="12">
@@ -23,11 +23,11 @@
         </el-row>
       </el-form>
     </div>
-    <div class="form-btns-container" style="height: 40px;">
-      <el-button type="success" size="small" style="float: right; margin-left: 12px; margin-right: 12px;"
-        @click="handleSave"><i class="fa fa-floppy-o" aria-hidden="true" /> 保存</el-button>
-      <el-button size="small" style="float: right;" @click="close"><i class="fa fa-close" aria-hidden="true" f />
+    <div class="form-btns-container" style="height: 40px">
+      <el-button size="small" style="float: right" @click="close" icon="close">
         取消</el-button>
+      <el-button type="primary" icon="Finished" size="small" style="float: right; margin-left: 12px; margin-right: 12px"
+        @click="handleSave">保存</el-button>
     </div>
   </el-dialog>
 </template>
@@ -37,97 +37,97 @@ import {
   addCompany,
   updateCompany,
 } from "@/api/business/crm/company";
-import {
-  yesOrNo,
-} from "@/utils/default";
+import { yesOrNo } from "@/utils/default";
 import { ref } from "vue";
-const { proxy } = getCurrentInstance()
-const visible = ref(false)
-const width = ref(800)
-const editStatus = ref(false)
-const baseUrl = ref(import.meta.env.VITE_APP_BASE_API)
-const defaultIsZero = ref(null)
+const { proxy } = getCurrentInstance();
+const visible = ref(false);
+const width = ref(800);
+const editStatus = ref(false);
+const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
+const defaultIsZero = ref(null);
 const props = defineProps({
   saveCallBack: {
     type: Function,
     default: () => { },
-  }
+  },
 });
-const { saveCallBack } = toRefs(props)
-const total = ref(0)
+const { saveCallBack } = toRefs(props);
+const total = ref(0);
 
-const form = ref({})
-const saveValue = ref(null)
+const form = ref({});
+const saveValue = ref(null);
 
 const emptyForm = {
-  details: []
-}
+  details: [],
+};
 
 function open(companyId, row) {
-  saveValue.value = row
+  saveValue.value = row;
   reset();
   visible.value = true;
   if (companyId) {
     getCompany(companyId).then((response) => {
       form.value = response.data;
-      defaultIsZero.value = response.data.isZero
+      defaultIsZero.value = response.data.isZero;
     });
   }
 }
 
 function close() {
-  visible.value = false
-  reset()
+  visible.value = false;
+  reset();
 }
 
 function reset() {
-  form.value = proxy.deepClone(emptyForm)
+  form.value = proxy.deepClone(emptyForm);
 }
 
 function handleSave() {
   if (checkZero()) {
-    proxy.$modal.confirm('确定修改么?').then(_ => {
+    proxy.$modal.confirm("确定修改么?").then((_) => {
       if (form.value.id) {
         updateCompany(form.value).then((response) => {
           proxy.$modal.msgSuccess("保存成功!");
           form.value = response.data;
-          defaultIsZero.value = Number(response.data.isZero)
+          defaultIsZero.value = Number(response.data.isZero);
           saveCallBack.value(saveValue.value);
-          close()
+          close();
         });
       } else {
         addCompany(form.value).then((res) => {
           proxy.$modal.msgSuccess("保存成功!");
           form.value = response.data;
-          defaultIsZero.value = Number(response.data.isZero)
+          defaultIsZero.value = Number(response.data.isZero);
           saveCallBack.value(saveValue.value);
-          close()
+          close();
         });
       }
-    })
+    });
   }
-
 }
 
 function checkZero() {
   if (form.value.isZero == null) {
-    proxy.$modal.msgError('请选择是否零申报')
-    return false
+    proxy.$modal.msgError("请选择是否零申报");
+    return false;
   }
   if (defaultIsZero.value === 1 || defaultIsZero.value == null) {
-    return true
-  } else if (defaultIsZero.value != form.value.isZero && form.value.isZero === 1) {
-    proxy.$modal.msgError('不可将非零申报客户改为零申报')
-    return false
+    return true;
+  } else if (
+    defaultIsZero.value != form.value.isZero &&
+    form.value.isZero === 1
+  ) {
+    proxy.$modal.msgError("不可将非零申报客户改为零申报");
+    return false;
   } else {
-    return true
+    return true;
   }
 }
 
 // 暴露给父组件的方法
 defineExpose({
-  open
-})
+  open,
+});
 </script>
 <style scoped>
 .img {

文件差異過大導致無法顯示
+ 568 - 145
src/views/business/crm/company/form.vue


+ 46 - 202
src/views/business/crm/company/index.vue

@@ -2,268 +2,112 @@
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button
-        type="primary"
-        size="small"
-        icon="Plus"
-        @click="handleAdd"
-        v-hasPermi="['business:company:add']"
-        >新增</el-button
-      >
-      <el-button
-        type="danger"
-        size="small"
-        icon="Delete"
-        :disabled="multiple"
-        @click="handleDelete"
-        v-hasPermi="['business:company:remove']"
-        >删除</el-button
-      >
+      <el-button type="primary" size="small" icon="Plus" @click="handleAdd"
+        v-hasPermi="['business:company:add']">新增</el-button>
+      <el-button type="danger" size="small" icon="Delete" :disabled="multiple" @click="handleDelete"
+        v-hasPermi="['business:company:remove']">删除</el-button>
       <el-dropdown>
         <el-button type="primary" size="small">
           其它<el-icon class="el-icon--right"><arrow-down /></el-icon>
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              @click="handleAdviser()"
-              v-hasPermi="['business:company:edit']"
-            >
-              设置客服</el-dropdown-item
-            >
-            <el-dropdown-item
-              @click="handleLeader()"
-              v-hasPermi="['business:company:edit']"
-            >
-              设置负责人</el-dropdown-item
-            >
-            <el-dropdown-item
-              type="warning"
-              size="small"
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:company:export']"
-            >
-              导出</el-dropdown-item
-            >
+            <el-dropdown-item @click="handleAdviser()" v-hasPermi="['business:company:edit']" icon="Operation">
+              设置客服</el-dropdown-item>
+            <el-dropdown-item @click="handleLeader()" v-hasPermi="['business:company:edit']" icon="Operation">
+              设置负责人</el-dropdown-item>
+            <el-dropdown-item type="warning" size="small" icon="Download" @click="handleExport"
+              v-hasPermi="['business:company:export']">
+              导出</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true">
       <el-form-item label="客户名称:" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入客户名称"
-          clearable
-          @keyup.enter="handleQuery"
-          style="width: 200px"
-        />
+        <el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery"
+          style="width: 200px" />
       </el-form-item>
       <el-form-item label="税号:" prop="socialCreditCode">
-        <el-input
-          v-model="queryParams.socialCreditCode"
-          style="width: 200px"
-          placeholder="税号"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.socialCreditCode" style="width: 200px" placeholder="税号" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item label="客户负责人:" prop="leader">
-        <el-input
-          v-model="queryParams.leader"
-          style="width: 200px"
-          placeholder="请输入客户负责人"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.leader" style="width: 200px" placeholder="请输入客户负责人" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="list"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
-      <el-table-column
-        type="selection"
-        width="55"
-        :resizable="false"
-        align="center"
-      />
+    <el-table v-loading="loading" :data="list" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" :resizable="false" align="center" />
 
-      <el-table-column
-        label="公司名称"
-        :resizable="false"
-        width="300"
-        align="center"
-      >
+      <el-table-column label="公司名称" :resizable="false" width="300" align="center">
         <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            size="small"
-            @click="handleInfo(scope.row)"
-            v-hasPermi="['business:company:info']"
-            >{{ scope.row.name }}
+          <el-button link type="primary" size="small" @click="handleInfo(scope.row)"
+            v-hasPermi="['business:company:info']">{{ scope.row.name }}
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column
-        label="所属区域"
-        prop="provinceCode"
-        :resizable="false"
-        min-width="150"
-        align="center"
-      >
+      <el-table-column label="所属区域" prop="provinceCode" :resizable="false" min-width="150" align="center">
         <template #default="scope">
           <span>{{
             scope.row.province + "-" + scope.row.city + "-" + scope.row.district
           }}</span>
         </template>
       </el-table-column>
-      <el-table-column
-        label="年收入"
-        :resizable="false"
-        prop="annualIncome"
-        align="center"
-      />
-      <el-table-column
-        label="纳税性质"
-        prop="taxType"
-        min-width="90"
-        :resizable="false"
-        align="center"
-      />
-      <el-table-column
-        label="是否零申报"
-        prop="isZero"
-        :resizable="false"
-        width="80"
-        align="center"
-      >
+      <el-table-column label="年收入" :resizable="false" prop="annualIncome" align="center" />
+      <el-table-column label="纳税性质" prop="taxType" min-width="90" :resizable="false" align="center" />
+      <el-table-column label="是否零申报" prop="isZero" :resizable="false" width="80" align="center">
         <template #default="scope">
           {{
             scope.row.isZero === 1 ? "是" : scope.row.isZero === 0 ? "否" : ""
           }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="税号"
-        prop="socialCreditCode"
-        min-width="200"
-        :resizable="false"
-        align="center"
-      />
-      <el-table-column
-        label="负责人"
-        prop="leaderName"
-        :resizable="false"
-        min-width="85"
-        align="center"
-      />
-      <el-table-column
-        label="客服"
-        min-width="85"
-        prop="adviserName"
-        :resizable="false"
-        align="center"
-      />
-      <el-table-column
-        label="客户跟进"
-        :resizable="false"
-        width="65"
-        align="center"
-        fixed="right"
-      >
+      <el-table-column label="税号" prop="socialCreditCode" min-width="200" :resizable="false" align="center" />
+      <el-table-column label="负责人" prop="leaderName" :resizable="false" min-width="85" align="center" />
+      <el-table-column label="客服" min-width="85" prop="adviserName" :resizable="false" align="center" />
+      <el-table-column label="客户跟进" :resizable="false" width="65" align="center" fixed="right">
         <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            size="small"
-            @click="handleFollow(scope.row)"
-            v-hasPermi="['business:company:follow']"
-            >跟进</el-button
-          >
+          <el-button link type="primary" size="small" @click="handleFollow(scope.row)"
+            v-hasPermi="['business:company:follow']">跟进</el-button>
         </template>
       </el-table-column>
-      <el-table-column
-        label="操作"
-        align="center"
-        width="80"
-        :resizable="false"
-        fixed="right"
-      >
+      <el-table-column label="操作" align="center" width="80" :resizable="false" fixed="right">
         <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            size="small"
-            @click="handleInfo(scope.row)"
-            v-hasPermi="['business:company:info']"
-            >详细信息</el-button
-          >
+          <el-button link type="primary" size="small" @click="handleInfo(scope.row)"
+            v-hasPermi="['business:company:info']">详细信息</el-button>
         </template>
       </el-table-column>
     </el-table>
 
     <!-- 分页 -->
     <!-- <div class="pagination-container"> -->
-    <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" />
     <!-- </div> -->
     <!-- 表单 -->
     <company-form ref="companyRef" :get-list="getList"></company-form>
     <exportColumn ref="exportColumnRef"></exportColumn>
     <add ref="addRef" :get-list="getList"></add>
-    <el-dialog
-      :title="title"
-      v-model="open"
-      width="500px"
-      append-to-body
-      draggable
-      @close="cancel"
-    >
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body draggable @close="cancel">
       <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
         <el-form-item :label="title" :prop="content">
-          <el-autocomplete
-            :fetch-suggestions="querySearchAsync"
-            :trigger-on-focus="true"
-            v-model="selectionName"
-            :placeholder="content"
-            popper-class="my-autocomplete"
-            @select="handleSelectEmployee"
-          >
+          <el-autocomplete :fetch-suggestions="querySearchAsync" :trigger-on-focus="true" v-model="selectionName"
+            :placeholder="content" popper-class="my-autocomplete" @select="handleSelectEmployee">
             <template #default="{ item }">
-              <div
-                style="
+              <div style="
                   display: flex;
                   flex-direction: row;
                   justify-content: space-between;
-                "
-              >
+                ">
                 <div class="name" style="font-size: 12px">
                   {{ item.nickName }}
                 </div>
@@ -383,7 +227,7 @@ function handleDelete(row) {
       getList();
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => {});
+    .catch(() => { });
 }
 
 /** 导出按钮操作 */

文件差異過大導致無法顯示
+ 214 - 559
src/views/business/crm/order/form.vue


+ 106 - 1
src/views/business/crm/order/index.vue

@@ -42,8 +42,19 @@
         <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable style="width: 200px"
           @keyup.enter="handleQuery" />
       </el-form-item>
+      <el-form-item label="合同类型:" prop="contractType">
+        <el-select size="small" v-model="queryParams.contractType" placeholder="服务类型" clearable style="width: 100px;">
+          <el-option v-for="item in contractTypes" :key="item.value" :label="item.label" :value="item.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="服务类型:" prop="serviceType">
+        <el-select size="small" v-model="queryParams.serviceType" placeholder="合同类型" clearable style="width: 100px;">
+          <el-option v-for="item in serviceTypes" :key="item.value" :label="item.label" :value="item.value" />
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -73,7 +84,7 @@
           {{ scope.row.contractType === 0 ? "新签" : "续签" }}
         </template>
       </el-table-column>
-      <el-table-column label="务类型" align="center" prop="serviceType" width="80">
+      <el-table-column label="务类型" align="center" prop="serviceType" width="80">
         <template #default="scope">
           {{ scope.row.serviceType === 1 ? "循环" : "代办" }}
         </template>
@@ -97,6 +108,75 @@
     <!-- 分页 -->
     <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
       @pagination="getList" />
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable>
+      <el-form :model="queryParams" ref="queryRef" :rules="rules" size="small" label-width="100">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable style="width: 200px"
+                @keyup.enter="handleQuery" />
+            </el-form-item>
+            <el-form-item label="服务类型:" prop="serviceType">
+              <el-select size="small" v-model="queryParams.serviceType" placeholder="合同类型" clearable style="width: 100%;">
+                <el-option v-for="item in serviceTypes" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="代理记账:" prop="isKeepAccount">
+              <el-select size="small" v-model="queryParams.isKeepAccount" placeholder="是否记账" clearable
+                style="width: 100%;">
+                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="公积金代缴:" prop="isHousingFund">
+              <el-select size="small" v-model="queryParams.isHousingFund" placeholder="是否代缴公积金" clearable
+                style="width: 100%;">
+                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="注册:" prop="isRegister">
+              <el-select size="small" v-model="queryParams.isRegister" placeholder="是否注册" clearable style="width: 100%;">
+                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="合同类型:" prop="contractType">
+              <el-select size="small" v-model="queryParams.contractType" placeholder="服务类型" clearable
+                style="width: 100%;">
+                <el-option v-for="item in contractTypes" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="签约日期:" prop="formDate">
+              <el-date-picker clearable v-model="queryParams.formDate" type="date" value-format="YYYY-MM-DD"
+                placeholder="请选择签约日期" />
+            </el-form-item>
+            <el-form-item label="社保代缴:" prop="isSocialSecurity">
+              <el-select size="small" v-model="queryParams.isSocialSecurity" placeholder="是否代缴社保" clearable
+                style="width: 100%;">
+                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="返税申报:" prop="isReturnTax">
+              <el-select size="small" v-model="queryParams.isReturnTax" placeholder="是否申报返税" clearable
+                style="width: 100%;">
+                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="变更:" prop="isAlter">
+              <el-select size="small" v-model="queryParams.isAlter" placeholder="是否变更" clearable style="width: 100%;">
+                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" icon="Finished" size="small" @click="handleQuery">确 定</el-button>
+          <el-button icon="close" size="small" @click="moreSearch = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -105,6 +185,9 @@ import { dissolutionOrder } from "../../../../api/business/crm/contract";
 import contractForm from "./form";
 import { listOrder, delOrder, exportOrder } from "@/api/business/crm/contract";
 import importExcelDialog from "./importExcelDialog.vue";
+import {
+  yesOrNo,
+} from "@/utils/default";
 const { proxy } = getCurrentInstance();
 /** 字典数组区 */
 /** 查询 对象 */
@@ -116,6 +199,23 @@ const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
 const importExcelDialogRef = ref(null);
+const moreSearch = ref(false);
+
+const contractTypes = ref([{
+  label: '新签',
+  value: 0
+}, {
+  label: '续签',
+  value: 1
+}])
+
+const serviceTypes = ref([{
+  label: '循环服务',
+  value: 1
+}, {
+  label: '单次服务',
+  value: 2
+}])
 
 const { contract_verify_status } = proxy.useDict("contract_verify_status");
 const { contract_status } = proxy.useDict("contract_status");
@@ -243,6 +343,11 @@ function handleAlter(row) {
 
 function handleDissolution() {
   const row = orderList.value.find((item) => item.id === ids.value[0]);
+  console.log(row);
+  if (row.verifyStatus == 0) {
+    proxy.$modal.msgError("未审核合同无法解除!");
+    return;
+  }
   proxy.$modal
     .confirm("是否确认解除合同?")
     .then(function () {

+ 40 - 10
src/views/business/crm/workorder/index.vue

@@ -15,14 +15,9 @@
           <el-dropdown-menu>
             <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:workOrder:export']">
               导出</el-dropdown-item>
-            <!-- <el-dropdown-item type="warning" size="small" icon="Download" @click="handleArea"
-              v-hasPermi="['business:workOrder:export']"> area</el-dropdown-item> -->
           </el-dropdown-menu>
         </template>
       </el-dropdown>
-      <!-- <el-button type="warning" size="small" icon="Download" @click="handleExport"
-        v-hasPermi="['business:workOrder:export']">导出</el-button> -->
-      <!--<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
     </div>
     <!-- 搜索区 -->
     <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
@@ -31,6 +26,11 @@
         <el-input v-model="queryParams.companyName" style="width: 150px" placeholder="请输入客户名称" clearable
           @keyup.enter="handleQuery" />
       </el-form-item>
+      <el-form-item label="工单类型:" prop="type">
+        <el-select size="small" v-model="queryParams.type" placeholder="工单类型" clearable>
+          <el-option v-for="item in types" :key="item.value" :label="item.label" :value="item.value" />
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -46,10 +46,10 @@
       <el-table-column label="税号" align="center" min-width="200" prop="socialCreditCode" :resizable="false" />
       <el-table-column label="工单类型" align="center" prop="amount" min-width="80" :resizable="false">
         <template #default="scope">
-          {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
         </template>
       </el-table-column>
-      <el-table-column label="项目" align="center" prop="taskTypeName" :resizable="false" min-width="80">
+      <el-table-column label="项目" align="center" prop="taskTypeName" :resizable="false" min-width="120">
         <template #default="scope">
           {{ scope.row.taskTypeName }}
           {{
@@ -59,7 +59,28 @@
           }}
         </template>
       </el-table-column>
-      <el-table-column label="起始月" align="center" min-width="80" prop="startMonth" :resizable="false">
+      <el-table-column label="合同状态" align="center" width="150" prop="socialCreditCode" :resizable="false">
+        <template #default="scope">
+          <span v-if="scope.row.type === 1">{{ scope.row.closingMonth }}</span>
+          <span v-else>{{ scope.row.onceContractStatus }}</span>
+          <!-- <el-select
+            v-model="queryParams.status"
+            type="text"
+            placeholder="状态"
+            :clearable="true"
+            style="width: 130px"
+            @clear="clearStatus"
+          >
+            <el-option
+            v-for="item in selectStatus"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+          </el-select> -->
+        </template>
+      </el-table-column>
+      <el-table-column label="起始月" align="center" min-width="120" prop="startMonth" :resizable="false">
         <template #default="scope">
           <div v-if="scope.row.type === 1">
             <div v-if="scope.row.editStatus.startMonth" style="
@@ -85,8 +106,8 @@
                   : ""
                 }}
               </div>
-              <el-button v-if="scope.row.isStop === 0" link type="primary" icon="Edit" size="small" style="padding: 0"
-                @click="() => {
+              <el-button v-show="scope.row.isStop === 0" link type="primary" icon="Edit" size="small" style="padding: 0"
+                v-hasPermi="['business:workOrder:edit']" @click="() => {
                   scope.row.editStatus.startMonth =
                     !scope.row.editStatus.startMonth;
                 }
@@ -158,6 +179,14 @@ const queryParams = ref({
   noContract: 0,
 });
 
+const types = ref([{
+  value: 1,
+  label: '循环工单'
+}, {
+  value: 2,
+  label: '代办工单'
+}])
+
 const editStatus = {
   startMonth: false,
 };
@@ -175,6 +204,7 @@ function getList() {
     prev.value = proxy.deepClone(response.rows);
     total.value = response.total;
     loading.value = false;
+    console.log("查询", response);
   });
 }
 

+ 79 - 52
src/views/business/deduction/HousingFundViewDialog.vue

@@ -1,11 +1,18 @@
 <template>
-  <el-dialog title="公积金申报信息" v-model="visible" :width="width" append-to-body draggable @close="close">
+  <el-dialog
+    title="公积金申报信息"
+    v-model="visible"
+    :width="width"
+    append-to-body
+    draggable
+    @close="close"
+  >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
     </div> -->
     <!-- 功能按钮 -->
-    <div style="padding: 8px 24px 16px 24px;">
+    <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="120px" v-model="form">
         <el-row :gutter="30">
           <el-col :span="12">
@@ -36,17 +43,36 @@
           </el-col>
           <el-col :span="24">
             <el-form-item label="备注">
-              <el-input v-model.trim="form.content" readonly type="textarea" rows="2" />
+              <div>{{ form.content }}</div>
             </el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="凭证" required>
-              <el-table ref="dbTable" :data="form.evidenceFiles" size="small" border
-                header-row-class-name="list-header-row" row-class-name="list-row">
-                <el-table-column label="文件名" prop="originalFileName" align="center" show-overflow-tooltip>
+              <el-table
+                ref="dbTable"
+                :data="form.evidenceFiles"
+                size="small"
+                border
+                header-row-class-name="list-header-row"
+                row-class-name="list-row"
+              >
+                <el-table-column
+                  label="文件名"
+                  prop="originalFileName"
+                  align="center"
+                  show-overflow-tooltip
+                >
                   <template #default="scope">
-                    <el-button size="small" type="text" @click="openFile(scope.row)">{{ scope.row.originalFileName == '' ?
-                      '打开文件' : scope.row.originalFileName }}</el-button>
+                    <el-button
+                      size="small"
+                      type="text"
+                      @click="openFile(scope.row)"
+                      >{{
+                        scope.row.originalFileName == ""
+                          ? "打开文件"
+                          : scope.row.originalFileName
+                      }}</el-button
+                    >
                   </template>
                 </el-table-column>
               </el-table>
@@ -55,88 +81,89 @@
         </el-row>
       </el-form>
     </div>
-    <div class="form-btns-container" style="height: 40px;">
-      <el-button size="small" style="float: right;" @click="close"><i class="fa fa-close" aria-hidden="true" f />
-        取消</el-button>
+    <div class="form-btns-container" style="height: 40px">
+      <el-button size="small" style="float: right" @click="close"
+        ><i class="fa fa-close" aria-hidden="true" f /> 取消</el-button
+      >
     </div>
   </el-dialog>
 </template>
 <script setup>
-import { getAmountView, } from "@/api/business/production/deduction";
-import { uploadFile } from '@/api/tool/file'
+import { getAmountView } from "@/api/business/production/deduction";
+import { uploadFile } from "@/api/tool/file";
 import { ref } from "vue";
-const { proxy } = getCurrentInstance()
-const visible = ref(false)
-const width = ref(800)
-const selections = ref([])
-const currentSource = ref(null)
-const editStatus = ref(false)
-const canSave = ref(false)
-const baseUrl = ref(import.meta.env.VITE_APP_BASE_API)
+const { proxy } = getCurrentInstance();
+const visible = ref(false);
+const width = ref(800);
+const selections = ref([]);
+const currentSource = ref(null);
+const editStatus = ref(false);
+const canSave = ref(false);
+const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { },
-  }
+    default: () => {},
+  },
 });
 
-const { getList } = toRefs(props)
-const total = ref(0)
+const { getList } = toRefs(props);
+const total = ref(0);
 
 const employeeEmptyData = {
   id: null,
-  title: '',
-  remark: '',
-  employeeName: '',
-  departmentName: '',
-  idCardImage: '',
-  idCardImageBack: '',
-  idiograph: '',
+  title: "",
+  remark: "",
+  employeeName: "",
+  departmentName: "",
+  idCardImage: "",
+  idCardImageBack: "",
+  idiograph: "",
   details: [],
-  editStatus: true
-}
+  editStatus: true,
+};
 
-const form = ref({})
-const conditions = ref({})
+const form = ref({});
+const conditions = ref({});
 
 const emptyForm = {
-  details: []
-}
+  details: [],
+};
 
 function open(detail) {
-  visible.value = true
-  conditions.value = detail
-  loadData()
+  visible.value = true;
+  conditions.value = detail;
+  loadData();
 }
 
 function loadData() {
-  getAmountView(conditions.value).then(res => {
-    form.value = res.data.housingFund
-  })
+  getAmountView(conditions.value).then((res) => {
+    form.value = res.data.housingFund;
+  });
 }
 
 function close() {
-  visible.value = false
-  reset()
+  visible.value = false;
+  reset();
 }
 
 function reset() {
-  form.value = proxy.deepClone(emptyForm)
-  canSave.value = false
+  form.value = proxy.deepClone(emptyForm);
+  canSave.value = false;
 }
 
 function handleCurrentChange(row) {
-  currentSource.value = row
+  currentSource.value = row;
 }
 
 function openFile(row) {
-  window.open(`${baseUrl.value}${row.fileUrl}`)
+  window.open(`${baseUrl.value}${row.fileUrl}`);
 }
 
 // 暴露给父组件的方法
 defineExpose({
-  open
-})
+  open,
+});
 </script>
 <style scoped>
 .img {

+ 79 - 52
src/views/business/deduction/SocialSecurityViewDialog.vue

@@ -1,11 +1,18 @@
 <template>
-  <el-dialog title="社保申报信息" v-model="visible" :width="width" append-to-body draggable @close="close">
+  <el-dialog
+    title="社保申报信息"
+    v-model="visible"
+    :width="width"
+    append-to-body
+    draggable
+    @close="close"
+  >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
     </div> -->
     <!-- 功能按钮 -->
-    <div style="padding: 8px 24px 16px 24px;">
+    <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="100px" v-model="form">
         <el-row :gutter="30">
           <el-col :span="12">
@@ -87,17 +94,36 @@
           </el-col>
           <el-col :span="24">
             <el-form-item label="备注">
-              <el-input v-model.trim="form.content" readonly type="textarea" rows="2" />
+              <div>{{ form.content }}</div>
             </el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="凭证" required>
-              <el-table ref="dbTable" :data="form.evidenceFiles" size="small" border
-                header-row-class-name="list-header-row" row-class-name="list-row">
-                <el-table-column label="文件名" prop="originalFileName" align="center" show-overflow-tooltip>
+              <el-table
+                ref="dbTable"
+                :data="form.evidenceFiles"
+                size="small"
+                border
+                header-row-class-name="list-header-row"
+                row-class-name="list-row"
+              >
+                <el-table-column
+                  label="文件名"
+                  prop="originalFileName"
+                  align="center"
+                  show-overflow-tooltip
+                >
                   <template #default="scope">
-                    <el-button size="small" type="text" @click="openFile(scope.row)">{{ scope.row.originalFileName == '' ?
-                      '打开文件' : scope.row.originalFileName }}</el-button>
+                    <el-button
+                      size="small"
+                      type="text"
+                      @click="openFile(scope.row)"
+                      >{{
+                        scope.row.originalFileName == ""
+                          ? "打开文件"
+                          : scope.row.originalFileName
+                      }}</el-button
+                    >
                   </template>
                 </el-table-column>
               </el-table>
@@ -106,9 +132,10 @@
         </el-row>
       </el-form>
     </div>
-    <div class="form-btns-container" style="height: 40px;">
-      <el-button size="small" style="float: right;" @click="close"><i class="fa fa-close" aria-hidden="true" f />
-        取消</el-button>
+    <div class="form-btns-container" style="height: 40px">
+      <el-button size="small" style="float: right" @click="close"
+        ><i class="fa fa-close" aria-hidden="true" f /> 取消</el-button
+      >
     </div>
     <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
     <print-dialog ref="printDialog" :parent="this" /> -->
@@ -116,81 +143,81 @@
 </template>
 <script setup>
 import { getAmountView } from "@/api/business/production/deduction";
-import { uploadFile } from '@/api/tool/file'
+import { uploadFile } from "@/api/tool/file";
 import { ref } from "vue";
-const { proxy } = getCurrentInstance()
-const visible = ref(false)
-const width = ref(800)
-const selections = ref([])
-const currentSource = ref(null)
-const editStatus = ref(false)
-const canSave = ref(false)
-const baseUrl = ref(import.meta.env.VITE_APP_BASE_API)
+const { proxy } = getCurrentInstance();
+const visible = ref(false);
+const width = ref(800);
+const selections = ref([]);
+const currentSource = ref(null);
+const editStatus = ref(false);
+const canSave = ref(false);
+const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { },
-  }
+    default: () => {},
+  },
 });
 
-const { getList } = toRefs(props)
-const total = ref(0)
+const { getList } = toRefs(props);
+const total = ref(0);
 
 const employeeEmptyData = {
   id: null,
-  title: '',
-  remark: '',
-  employeeName: '',
-  departmentName: '',
-  idCardImage: '',
-  idCardImageBack: '',
-  idiograph: '',
+  title: "",
+  remark: "",
+  employeeName: "",
+  departmentName: "",
+  idCardImage: "",
+  idCardImageBack: "",
+  idiograph: "",
   details: [],
-  editStatus: true
-}
+  editStatus: true,
+};
 
-const form = ref({})
-const conditions = ref({})
+const form = ref({});
+const conditions = ref({});
 
 const emptyForm = {
-  details: []
-}
+  details: [],
+};
 
 function open(detail) {
-  visible.value = true
-  conditions.value = detail
-  loadData()
+  visible.value = true;
+  conditions.value = detail;
+  loadData();
 }
 
 function loadData() {
-  console.log(conditions.value)
-  getAmountView(conditions.value).then(res => {
-    form.value = res.data.socialSecurity
-  })
+  console.log(conditions.value);
+  getAmountView(conditions.value).then((res) => {
+    form.value = res.data.socialSecurity;
+  });
 }
 
 function close() {
-  visible.value = false
-  reset()
+  visible.value = false;
+  reset();
 }
 
 function reset() {
-  form.value = proxy.deepClone(emptyForm)
-  canSave.value = false
+  form.value = proxy.deepClone(emptyForm);
+  canSave.value = false;
 }
 
 function handleCurrentChange(row) {
-  currentSource.value = row
+  currentSource.value = row;
 }
 
 function openFile(row) {
-  window.open(`${baseUrl.value}${row.fileUrl}`)
+  window.open(`${baseUrl.value}${row.fileUrl}`);
 }
 
 // 暴露给父组件的方法
 defineExpose({
-  open
-})
+  open,
+});
 </script>
 <style scoped>
 .img {

+ 129 - 10
src/views/business/deduction/index.vue

@@ -44,7 +44,7 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="78px"
     >
       <el-form-item label="来源名:">
         <el-select
@@ -74,15 +74,19 @@
         <el-date-picker
           v-model="queryParams.currentMonth"
           type="month"
-          format="yyyy年MM月"
-          value-format="yyyy-MM"
+          format="YYYY年MM月"
+          value-format="YYYY-MM"
           style="width: 130px"
         />
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
         >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -202,7 +206,7 @@
           <template v-if="scope.row.deductible === 1">
             <el-button
               v-hasPermi="['business:deduction:confirm']"
-              v-if="
+              v-show="
                 (scope.row.status === 0 || scope.row.status === 4) &&
                 checkConfirm(scope.row)
               "
@@ -216,7 +220,7 @@
               <el-button
                 link
                 v-hasPermi="['business:deduction:declare']"
-                v-if="scope.row.status === 1"
+                v-show="scope.row.status === 1"
                 style="margin-right: 5px"
                 type="primary"
                 size="small"
@@ -231,7 +235,7 @@
               <el-button
                 link
                 v-hasPermi="['business:deduction:deduction']"
-                v-if="scope.row.status === 5"
+                v-show="scope.row.status === 5"
                 style="margin-left: 5px; :5px "
                 type="primary"
                 size="small"
@@ -241,7 +245,7 @@
               <el-button
                 link
                 v-hasPermi="['business:deduction:deduction']"
-                v-if="scope.row.status === 5"
+                v-show="scope.row.status === 5"
                 style="margin-right: 5px"
                 type="primary"
                 size="small"
@@ -256,7 +260,7 @@
               <el-button
                 link
                 v-hasPermi="['business:deduction:deduction']"
-                v-if="scope.row.status === 1"
+                v-show="scope.row.status === 1"
                 style="margin-right: 5px"
                 type="primary"
                 size="small"
@@ -266,7 +270,7 @@
               <el-button
                 link
                 v-hasPermi="['business:deduction:deduction']"
-                v-if="scope.row.status === 1"
+                v-show="scope.row.status === 1"
                 style="margin-left: 5px; :5px "
                 type="primary"
                 size="small"
@@ -389,6 +393,100 @@
     <MergeTaxViewDialog ref="mergeTaxViewDialog" />
     <HousingFundViewDialog ref="housingFundViewDialog" />
     <SocialSecurityViewDialog ref="socialSecurityViewDialog" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      append-to-body
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        size="small"
+        :rules="rules"
+        label-width="100"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:">
+              <el-input
+                v-model.trim="queryParams.companyName"
+                size="small"
+                type="text"
+                placeholder="客户名称"
+                :clearable="true"
+              />
+            </el-form-item>
+            <el-form-item label="来源名:" prop="sourceNames">
+              <el-select
+                v-model="queryParams.sourceNames"
+                placeholder="请选择来源名"
+                multiple
+              >
+                <el-option
+                  v-for="item in sources"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+
+            <el-form-item label="来源:" prop="fromCompanyName">
+              <el-input
+                size="small"
+                v-model="queryParams.fromCompanyName"
+                type="text"
+                placeholder="客户来源"
+                :clearable="true"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="纳税性质:" prop="taxType">
+              <el-select
+                size="small"
+                v-model="queryParams.taxType"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+                @change="taxTypeChange"
+              >
+                <el-option
+                  v-for="item in taxTypes"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="所属期:">
+              <el-date-picker
+                v-model="queryParams.currentMonth"
+                type="month"
+                format="YYYY年MM月"
+                value-format="YYYY-MM"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -402,6 +500,7 @@ import MergeTaxViewDialog from "./MergeTaxViewDialog.vue";
 import feedbackDialog from "./feedbackDialog.vue";
 import { uploadFile } from "@/api/tool/file";
 import { listCompany } from "@/api/business/crm/company";
+import { taxTypes } from "@/utils/default";
 import useUserStore from "@/store/modules/user";
 import { getTenant } from "@/utils/auth";
 import { ref } from "vue";
@@ -418,6 +517,8 @@ const loading = ref(true);
 const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
+const oneself = ref(false);
+const moreSearch = ref(false);
 const total = ref(0);
 const prev = ref([]);
 const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
@@ -485,6 +586,16 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 function radioChangeHandler(arg) {
   const query = {
     pageNum: 1,
@@ -520,12 +631,20 @@ function radioChangeHandler(arg) {
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
+  moreSearch.value = false;
   getList();
 }
 
 /** 重置按钮操作 */
 function resetQuery() {
-  proxy.resetForm("queryRef");
+  // proxy.resetForm("queryRef");
+  queryParams.value = {
+    pageNum: 1,
+    pageSize: 10,
+    companyName: "",
+    orderByColumn: "create_time",
+    noContract: 1,
+  };
   handleQuery();
 }
 

+ 126 - 92
src/views/business/entrust/deduct/form.vue

@@ -9,12 +9,13 @@
               <Document />
             </el-icon>
             对账单表单</span>
-          <el-button-group>
-            <el-button v-if="form.status === 0" type="warning" size="small" @click="handleConfirm">确认扣款</el-button>
-            <el-button v-if="form.status === 0" type="danger" size="small" @click="handleReject">驳回扣款</el-button>
-            <el-button v-if="form.id" type="success" size="small" @click="getForm"><i class="fa fa-refresh"
-                aria-hidden="true" /> 刷新</el-button>
-          </el-button-group>
+
+          <el-button v-show="form.status === 0" type="primary" size="small" icon="Finished"
+            v-hasPermi="['business:deduct:confirm']" @click="handleConfirm">确认扣款</el-button>
+          <el-button v-show="form.status === 0" type="danger" icon="back" size="small" @click="handleReject"
+            v-hasPermi="['business:deduct:confirm']">驳回扣款</el-button>
+          <el-button v-if="form.id" type="success" size="small" icon="refresh" @click="getForm">刷新</el-button>
+
           <div class="screen-btn" @click="handleScreen">
             <template v-if="!isFullscreen">
               <i class="fa fa-window-maximize" aria-hidden="true" />
@@ -32,61 +33,70 @@
         </div>
         <el-form ref="companyRef" class="master-container" size="small" :model="form" :rules="rules" label-width="120px">
           <el-row :gutter="30">
-            <el-col :span="6">
-              结算单位:{{ form.contactCompany }}
-            </el-col>
-            <el-col :span="6">
-              结算订单编号:{{ form.formNo }}
-            </el-col>
-            <el-col :span="4">
-              上期余额:{{ form.prevRemainAmount }}
-            </el-col>
-            <el-col :span="4">
-              本期消耗:{{ form.amount }}
-            </el-col>
-            <el-col :span="4">
-              本期余额:{{ form.remainAmount }}
-            </el-col>
+            <el-col :span="6"> 结算单位:{{ form.contactCompany }} </el-col>
+            <el-col :span="6"> 结算订单编号:{{ form.formNo }} </el-col>
+            <el-col :span="4"> 上期余额:{{ form.prevRemainAmount }} </el-col>
+            <el-col :span="4"> 本期消耗:{{ form.amount }} </el-col>
+            <el-col :span="4"> 本期余额:{{ form.remainAmount }} </el-col>
             <el-col :span="24">
               <el-tabs v-model="activeName">
                 <el-tab-pane label="汇总" name="base" class="baseTable">
-                  <table class="header" cellspacing="0" cellpadding="0" style="table-layout: fixed;">
+                  <table class="header" cellspacing="0" cellpadding="0" style="table-layout: fixed">
                     <tbody>
                       <tr class="bg-white-color">
-                        <td :colspan="1" style="width: 100px;">自然月</td>
+                        <td :colspan="1" style="width: 100px">自然月</td>
                         <td :colspan="2" style="width: 200px">项目分类</td>
-                        <td :colspan="1" style="width: 100px;">客户数量(单位:户)</td>
-                        <td :colspan="1" style="width: 100px;">单价(单位:元)</td>
-                        <td :colspan="1" style="width: 100px;">小计(单位:元)</td>
-                        <td :colspan="1" style="width: 100px;">优惠后单价</td>
-                        <td :colspan="1" style="width: 100px;">优惠后金额</td>
-                        <td :colspan="1" style="width: 100px;">减免金额</td>
-                        <td :colspan="1" style="width: 100px;">实际支付</td>
-                        <td :colspan="2" class="tdLast" style="width: 100px;">说明</td>
+                        <td :colspan="1" style="width: 100px">
+                          客户数量(单位:户)
+                        </td>
+                        <td :colspan="1" style="width: 100px">
+                          单价(单位:元)
+                        </td>
+                        <td :colspan="1" style="width: 100px">
+                          小计(单位:元)
+                        </td>
+                        <td :colspan="1" style="width: 100px">优惠后单价</td>
+                        <td :colspan="1" style="width: 100px">优惠后金额</td>
+                        <td :colspan="1" style="width: 100px">减免金额</td>
+                        <td :colspan="1" style="width: 100px">实际支付</td>
+                        <td :colspan="2" class="tdLast" style="width: 100px">
+                          说明
+                        </td>
                       </tr>
                       <tr class="bg-white-color" v-for="(item, index) in form.collect" :key="index">
-                        <td :colspan="1" v-if="index === 0" :rowspan="form.collect.length">{{ item.year }}年{{ item.month
-                        }}月</td>
+                        <td :colspan="1" v-if="index === 0" :rowspan="form.collect.length">
+                          {{ item.year }}年{{ item.month }}月
+                        </td>
                         <td :colspan="1">{{ item.taskType }}</td>
-                        <td :colspan="1">{{ item.taskType === '代理记账' ? item.annualIncome : (item.taskType === '社保代缴' ||
-                          item.taskType === '公积金代缴') ? (item.haveChanged === 1 ? '有变化' : '无变化') : ''
-                        }}</td>
+                        <td :colspan="1">
+                          {{
+                            item.taskType === "代理记账"
+                            ? item.annualIncome
+                            : item.taskType === "社保代缴" ||
+                              item.taskType === "公积金代缴"
+                              ? item.haveChanged === 1
+                                ? "有变化"
+                                : "无变化"
+                              : ""
+                          }}
+                        </td>
                         <td :colspan="1">{{ item.companyNum }}</td>
                         <td :colspan="1">{{ item.price }}</td>
                         <td :colspan="1">
-                          {{ item.amount }}</td>
+                          {{ item.amount }}
+                        </td>
                         <td :colspan="1">{{ item.discountPrice }}</td>
                         <td :colspan="1">{{ item.discountAmount }}</td>
                         <td :colspan="1">{{ item.freeAmount }}</td>
                         <td :colspan="1">{{ item.actuallyAmount }}</td>
                         <td :colspan="2" class="tdLast" v-if="index === 0" :rowspan="form.collect.length">
-                          {{ form.description }}</td>
+                          {{ form.description }}
+                        </td>
                       </tr>
                     </tbody>
                   </table>
                   <table class="header" cellspacing="0" cellpadding="0">
-                    <tbody>
-                    </tbody>
+                    <tbody></tbody>
                   </table>
                 </el-tab-pane>
                 <el-tab-pane label="循环任务" name="loop">
@@ -96,24 +106,26 @@
                     <el-table-column label="税号" align="center" prop="socialCreditCode" width="150" />
                     <el-table-column label="注册地址" align="center" prop="formNo" width="120">
                       <template #default="scope">
-                        {{ scope.row.province }}-{{ scope.row.city }}-{{ scope.row.district }}
+                        {{ scope.row.province }}-{{ scope.row.city }}-{{
+                          scope.row.district
+                        }}
                       </template>
                     </el-table-column>
                     <el-table-column label="年收入" align="center" prop="annualIncome" width="100">
                     </el-table-column>
                     <el-table-column label="税务申报" align="center" width="80">
                       <template #default="scope">
-                        {{ scope.row.isTax === 1 ? '是' : '否' }}
+                        {{ scope.row.isTax === 1 ? "是" : "否" }}
                       </template>
                     </el-table-column>
                     <el-table-column label="社保" prop="remainAmount" align="center" width="80">
                       <template #default="scope">
-                        {{ scope.row.isSocialSecurity === 1 ? '是' : '否' }}
+                        {{ scope.row.isSocialSecurity === 1 ? "是" : "否" }}
                       </template>
                     </el-table-column>
                     <el-table-column label="公积金" prop="status" align="center" width="80">
                       <template #default="scope">
-                        {{ scope.row.isHousingFund === 1 ? '是' : '否' }}
+                        {{ scope.row.isHousingFund === 1 ? "是" : "否" }}
                       </template>
                     </el-table-column>
                     <el-table-column label="纳税性质" align="center" prop="taxType" width="100" />
@@ -122,12 +134,14 @@
                     <el-table-column label="实际年收入" align="center" prop="actuallyAnnualIncome" width="100" />
                     <el-table-column label="社保有无变化" prop="status" align="center" width="100">
                       <template #default="scope">
-                        {{ scope.row.changedSocialSecurity === 1 ? '是' : '否' }}
+                        {{
+                          scope.row.changedSocialSecurity === 1 ? "是" : "否"
+                        }}
                       </template>
                     </el-table-column>
                     <el-table-column label="公积金有无变化" prop="status" align="center" width="100">
                       <template #default="scope">
-                        {{ scope.row.changedHousingFund === 1 ? '是' : '否' }}
+                        {{ scope.row.changedHousingFund === 1 ? "是" : "否" }}
                       </template>
                     </el-table-column>
                     <el-table-column label="累计年收入" prop="status" align="center" width="100">
@@ -144,12 +158,16 @@
                     <el-table-column label="税号" align="center" prop="socialCreditCode" width="150" />
                     <el-table-column label="所在区" align="center" prop="formNo" width="120">
                       <template #default="scope">
-                        {{ scope.row.province }}-{{ scope.row.city }}-{{ scope.row.district }}
+                        {{ scope.row.province }}-{{ scope.row.city }}-{{
+                          scope.row.district
+                        }}
                       </template>
                     </el-table-column>
                     <el-table-column label="办理事项" align="center" prop="annualIncome" width="120">
                       <template #default="scope">
-                        {{ scope.row.taskTypeName }}-{{ scope.row.taskTypeDetailName }}
+                        {{ scope.row.taskTypeName }}-{{
+                          scope.row.taskTypeDetailName
+                        }}
                       </template>
                     </el-table-column>
                     <el-table-column label="下单时间" prop="entrustDate" align="center" width="100">
@@ -173,14 +191,18 @@
 </template>
 <script setup>
 import { getToken } from "@/utils/auth";
-import { addFollow, listFollow, delFollow } from '@/api/business/crm/companyFollowDetail'
+import {
+  addFollow,
+  listFollow,
+  delFollow,
+} from "@/api/business/crm/companyFollowDetail";
 import {
   getDeduct,
   genDeduct,
   addDeduct,
   updateDeduct,
   confirmDeduct,
-  rejectDeduct
+  rejectDeduct,
 } from "@/api/business/entrust/deduct";
 import useUserStore from "@/store/modules/user";
 import { deepClone } from "@/utils";
@@ -202,7 +224,7 @@ const props = defineProps({
 
 const { getList } = toRefs(props);
 /** 字典数组区 */
-import { uploadFile } from '@/api/tool/file'
+import { uploadFile } from "@/api/tool/file";
 const CustomerFormComRef = ref(null);
 /** 表单抽屉 页变量 */
 const title = ref("");
@@ -213,34 +235,33 @@ const editStatus = ref(false);
 const isFullscreen = ref(false);
 const addDetailNum = ref(1);
 const currentMember = {};
-const activeName = ref('base')
+const activeName = ref("base");
 const provinces = ref(proxy.region.getProvinces());
 provinces.value.unshift({ code: "", name: "全部" });
 const cities = ref([]);
 const districts = ref([]);
 const sourceCategories = ref([]);
 const area = ref([]);
-const fileList = ref([])
+const fileList = ref([]);
 
-const showViewer = ref(false)
-const currentFileList = ref([])
-const showIndex = ref(0)
-const types = ref([])
-const taxDeclarationCategories = ref([])
+const showViewer = ref(false);
+const currentFileList = ref([]);
+const showIndex = ref(0);
+const types = ref([]);
+const taxDeclarationCategories = ref([]);
 
-const baseUrl = ref(import.meta.env.VITE_APP_BASE_API)
+const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
 
 const webHost = import.meta.env.VITE_APP_BASE_API;
 const setHeaders = {
   Authorization: getToken(),
 };
 const data = reactive({
-  form: {}
+  form: {},
 });
 
 const { form, rules } = toRefs(data);
 
-
 const contactorEmptyData = {
   id: null,
   name: "",
@@ -259,22 +280,26 @@ const deductEmptyData = {
   creatorId: useUserStore().user.id,
 };
 const queryRadio = ref("base-form");
-const defaultIsZero = ref(0)
+const defaultIsZero = ref(0);
 /***********************  表单页方法 ****************************/
 
 function sourceValidator(rule, value, callback) {
   // console.log(form.value)
-  if (form.value.sourceCategoryName === '') {
-    callback(new Error('来源类型不能为空'))
-    return
+  if (form.value.sourceCategoryName === "") {
+    callback(new Error("来源类型不能为空"));
+    return;
   }
   // console.log(`referrerDataSource: ${form.value.referrerDataSource}`)
   // console.log(`sourceName: ${form.value.sourceName}`)
-  if (form.value.referrerDataSource !== '' && form.value.referrerDataSource != null && (form.value.sourceName === '' || form.value.sourceName == null)) {
-    callback(new Error('来源不能为空'))
-    return
+  if (
+    form.value.referrerDataSource !== "" &&
+    form.value.referrerDataSource != null &&
+    (form.value.sourceName === "" || form.value.sourceName == null)
+  ) {
+    callback(new Error("来源不能为空"));
+    return;
   }
-  return callback()
+  return callback();
 }
 
 /** 抽屉打开 */
@@ -330,20 +355,23 @@ function handleScreen() {
 
 function getForm() {
   loading.value = true;
-  getDeduct(form.value.id).then(response => {
+  getDeduct(form.value.id).then((response) => {
     form.value = response.data;
     editStatus.value = false;
-  })
+  });
 }
 
 function checkZero() {
   if (defaultIsZero.value === 1) {
-    return true
-  } else if (defaultIsZero.value != form.value.isZero && form.value.isZero === 1) {
-    proxy.$modal.msgError('不可将非零申报客户改为零申报')
-    return false
+    return true;
+  } else if (
+    defaultIsZero.value != form.value.isZero &&
+    form.value.isZero === 1
+  ) {
+    proxy.$modal.msgError("不可将非零申报客户改为零申报");
+    return false;
   } else {
-    return true
+    return true;
   }
 }
 
@@ -443,35 +471,41 @@ function validDetails() {
   return true;
 }
 function closeImages() {
-  reset()
+  reset();
   showViewer.value = false;
 }
 
 function handleConfirm() {
-  proxy.$modal.confirm('确认扣款么?').then(_ => {
-    confirmDeduct(form.value).then(res => {
-      cancel()
-      getList.value()
+  proxy.$modal
+    .confirm("确认扣款么?")
+    .then((_) => {
+      confirmDeduct(form.value).then((res) => {
+        cancel();
+        getList.value();
+      });
     })
-  }).catch(_ => {
-    proxy.$modal.msg('取消确认')
-  })
+    .catch((_) => {
+      proxy.$modal.msg("取消确认");
+    });
 }
 
 function handleReject() {
-  proxy.$modal.confirm('确认驳回么?').then(_ => {
-    rejectDeduct(form.value).then(res => {
-      cancel()
-      getList.value()
+  proxy.$modal
+    .confirm("确认驳回么?")
+    .then((_) => {
+      rejectDeduct(form.value).then((res) => {
+        cancel();
+        getList.value();
+      });
     })
-  }).catch(_ => {
-    proxy.$modal.msg('取消确认')
-  })
+    .catch((_) => {
+      proxy.$modal.msg("取消确认");
+    });
 }
 
 // 暴露给父组件的方法
 defineExpose({
-  open
+  open,
 });
 </script>
 

+ 3 - 7
src/views/business/entrust/deduct/index.vue

@@ -26,12 +26,7 @@
     </el-row>
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button
-        type="success"
-        size="small"
-        icon="Refresh"
-        @click="getList"
-        v-hasPermi="['business:entrustOrder:remove']"
+      <el-button type="success" size="small" icon="Refresh" @click="getList"
         >刷新</el-button
       >
       <el-dropdown>
@@ -43,7 +38,7 @@
             <el-dropdown-item
               icon="Download"
               @click="handleExport"
-              v-hasPermi="['business:workOrder:export']"
+              v-hasPermi="['business:deduct:export']"
             >
               导出</el-dropdown-item
             >
@@ -117,6 +112,7 @@
             link
             size="small"
             type="primary"
+            v-hasPermi="['business:deduct:info']"
             @click="handleStatementAccount(scope.row)"
             >跳转对账单</el-button
           >

+ 116 - 49
src/views/business/entrust/deductOfFactory/index.vue

@@ -2,44 +2,99 @@
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button type="warning" size="small" icon="Refresh" @click="getList"
-        v-hasPermi="['business:entrustOrder:remove']">刷新</el-button>
+      <el-button
+        type="warning"
+        size="small"
+        icon="Refresh"
+        @click="getList"
+        v-hasPermi="['business:entrustOrder:remove']"
+        >刷新</el-button
+      >
       <el-dropdown>
         <el-button type="primary" size="small">
           其它<el-icon class="el-icon--right"><arrow-down /></el-icon>
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:entrustOrder:export']">
-              导出</el-dropdown-item>
+            <el-dropdown-item
+              icon="Download"
+              @click="handleExport"
+              v-hasPermi="['business:entrustOrder:export']"
+            >
+              导出</el-dropdown-item
+            >
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
-      label-width="68px">
+    <el-form
+      class="list-search-container"
+      size="small"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      label-width="68px"
+    >
       <el-form-item label="往来单位:" prop="contactCompany">
-        <el-input v-model="queryParams.contactCompany" placeholder="请输入往来单位" clearable @keyup.enter="handleQuery" />
+        <el-input
+          v-model="queryParams.contactCompany"
+          placeholder="请输入往来单位"
+          clearable
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="Search" @click="handleQuery"
+          >搜索</el-button
+        >
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table v-loading="loading" :data="list" size="small" border height="100%"
-      @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="list"
+      size="small"
+      border
+      height="100%"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="签约日期" align="center" prop="formDate" width="150" />
-      <el-table-column label="合同编号" align="center" prop="formNo" width="120">
+      <el-table-column
+        label="签约日期"
+        align="center"
+        prop="formDate"
+        width="150"
+      />
+      <el-table-column
+        label="合同编号"
+        align="center"
+        prop="formNo"
+        width="120"
+      >
       </el-table-column>
-      <el-table-column label="往来单位" align="center" prop="contactCompany" width="140">
+      <el-table-column
+        label="往来单位"
+        align="center"
+        prop="contactCompany"
+        width="140"
+      >
       </el-table-column>
-      <el-table-column label="预存金额" prop="depositAmount" align="center" width="100">
+      <el-table-column
+        label="预存金额"
+        prop="depositAmount"
+        align="center"
+        width="100"
+      >
       </el-table-column>
-      <el-table-column label="结余金额" prop="remainAmount" align="center" width="100">
+      <el-table-column
+        label="结余金额"
+        prop="remainAmount"
+        align="center"
+        width="100"
+      >
       </el-table-column>
       <el-table-column label="备注" prop="remark" align="center">
       </el-table-column>
@@ -51,14 +106,25 @@
     </el-table>
     <entrust-order-form ref="entrustOrderFormRef" :getList="getList" />
     <!-- 分页 -->
-    <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"
+    />
   </div>
 </template>
 
 <script setup name="Company">
-import { listEntrustOrder, exportEntrustOrder, delEntrustOrder, confirmEntrustOrder, finishedEntrustOrder } from "@/api/business/entrust/entrustOrder"
-import entrustOrderForm from './form'
+import {
+  listEntrustOrder,
+  exportEntrustOrder,
+  delEntrustOrder,
+  confirmEntrustOrder,
+  finishedEntrustOrder,
+} from "@/api/business/entrust/entrustOrder";
+import entrustOrderForm from "./form";
 const { proxy } = getCurrentInstance();
 /** 字典数组区 */
 /** 查询 对象 */
@@ -66,27 +132,27 @@ const { proxy } = getCurrentInstance();
 const list = ref([]);
 const loading = ref(true);
 const ids = ref([]);
-const selections = ref([])
+const selections = ref([]);
 const single = ref(false);
 const multiple = ref(false);
 const total = ref(0);
-const prev = ref([])
-const entrustOrderFormRef = ref(null)
+const prev = ref([]);
+const entrustOrderFormRef = ref(null);
 
-const setEntrustDialogRef = ref(null)
+const setEntrustDialogRef = ref(null);
 
 const { entrust_order_status } = proxy.useDict("entrust_order_status");
 /** 查询对象 */
 const queryParams = ref({
   pageNum: 1,
   pageSize: 10,
-  contactCompany: '',
-  type: 2
+  contactCompany: "",
+  type: 2,
 });
 
 const editStatus = {
-  startMonth: false
-}
+  startMonth: false,
+};
 
 /***********************  方法区  ****************************/
 
@@ -94,7 +160,7 @@ const editStatus = {
 function getList() {
   loading.value = true;
   listEntrustOrder(queryParams.value).then((response) => {
-    list.value = response.rows
+    list.value = response.rows;
     total.value = response.total;
     loading.value = false;
   });
@@ -115,23 +181,23 @@ function resetQuery() {
 // 多选框选中数据
 function handleSelectionChange(selection) {
   ids.value = selection.map((item) => item.id);
-  selections.value = selection
+  selections.value = selection;
   single.value = selection.length != 1;
   multiple.value = selection.length > 0;
 }
 
 /** 导出按钮操作 */
 function handleExport() {
-  exportEntrustOrder(queryParams.value)
+  exportEntrustOrder(queryParams.value);
 }
 
 /** 新增按钮操作 */
 function handleAdd() {
-  entrustOrderFormRef.value.open()
+  entrustOrderFormRef.value.open();
 }
 
 function handleUpdate(id) {
-  entrustOrderFormRef.value.open(id)
+  entrustOrderFormRef.value.open(id);
 }
 
 /** 删除按钮操作 */
@@ -146,35 +212,36 @@ function handleDelete(row) {
       getList();
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => { });
+    .catch(() => {});
 }
 
 function handleConfirm(row) {
   proxy.$modal
     .confirm("确认启用该合同?")
-    .then(_ => {
-      return confirmEntrustOrder(row)
-    }).then(res => {
-      console.log(res)
-      getList()
-      proxy.$modal.msgSuccess("确认成功")
+    .then((_) => {
+      return confirmEntrustOrder(row);
     })
+    .then((res) => {
+      console.log(res);
+      getList();
+      proxy.$modal.msgSuccess("确认成功");
+    });
 }
 
 function handleFinished(row) {
-  proxy.$modal.confirm('确认完结该合同?')
-    .then(_ => {
-      return finishedEntrustOrder(row)
-    }).then(res => {
-      console.log(res)
-      getList()
-      proxy.$modal.msgSuccess("完结成功")
+  proxy.$modal
+    .confirm("确认完结该合同?")
+    .then((_) => {
+      return finishedEntrustOrder(row);
     })
+    .then((res) => {
+      console.log(res);
+      getList();
+      proxy.$modal.msgSuccess("完结成功");
+    });
 }
 
-function handleViewAccountment(row) {
-
-}
+function handleViewAccountment(row) {}
 
 getList();
 </script>

+ 18 - 12
src/views/business/entrust/deposit/index.vue

@@ -64,16 +64,16 @@
       </el-table-column>
       <el-table-column label="操作" align="center" prop="verifyStatus" min-width="200">
         <template #default="scope">
-          <el-button v-if="scope.row.status === 0" link type="warning" size="small" @click="handleInfo(scope.row)"
-            v-hasPermi="['business:deposit:info']">修改</el-button>
-          <el-button v-if="scope.row.status === 0" link type="danger" size="small" @click="handleDelete(scope.row)"
+          <el-button v-show="scope.row.status === 0" link type="warning" size="small" @click="handleInfo(scope.row)"
+            v-hasPermi="['business:deposit:edit']">修改</el-button>
+          <el-button v-show="scope.row.status === 0" link type="danger" size="small" @click="handleDelete(scope.row)"
             v-hasPermi="['business:deposit:remove']">删除</el-button>
-          <el-button v-if="scope.row.status === 0" link type="success" size="small" @click="handleVerify(scope.row, 1)"
+          <el-button v-show="scope.row.status === 0" link type="success" size="small" @click="handleVerify(scope.row, 1)"
             v-hasPermi="['business:deposit:verify']">审核通过</el-button>
-          <el-button v-if="scope.row.status === 0" link type="danger" size="small" @click="handleVerify(scope.row, 4)"
+          <el-button v-show="scope.row.status === 0" link type="danger" size="small" @click="handleVerify(scope.row, 4)"
             v-hasPermi="['business:deposit:verify']">驳回</el-button>
-          <el-button v-if="scope.row.status !== 0" link type="primary" size="small" @click="handleInfo(scope.row)"
-            v-hasPermi="['business:deposit:info']">查看</el-button>
+          <el-button v-show="scope.row.status !== 0" link type="primary" size="small" @click="handleInfo(scope.row)"
+            v-hasPermi="['business:deposit:query']">查看</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -147,9 +147,9 @@
         </el-row>
       </el-form>
       <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="saveHandler">确 定</el-button>
-          <el-button @click="formCancel">取 消</el-button>
+        <div v-if="form.status == 0" class="dialog-footer">
+          <el-button type="primary" icon="Finished" size="small" @click="saveHandler">确 定</el-button>
+          <el-button @click="formCancel" icon="close" size="small">取 消</el-button>
         </div>
       </template>
     </el-dialog>
@@ -386,8 +386,14 @@ function closeImages() {
 function querySearchEntrustOrderAsync(queryString, cb) {
   const query =
     queryString.length > 0
-      ? { keyword: queryString, pageSize: 20, pageNum: 1, status: 1 }
-      : { pageSize: 20, pageNum: 1, status: 1 };
+      ? {
+        keyword: queryString,
+        pageSize: 20,
+        pageNum: 1,
+        status: 1,
+        orderByColumn: "create_time",
+      }
+      : { pageSize: 20, pageNum: 1, status: 1, orderByColumn: "create_time" };
   listEntrustOrder(query).then((res) => {
     cb(res.rows);
   });

+ 41 - 28
src/views/business/entrust/depositOfFactory/index.vue

@@ -12,8 +12,6 @@
           <el-dropdown-menu>
             <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:deposit:export']">
               导出</el-dropdown-item>
-            <!-- <el-dropdown-item type="warning" size="small" icon="Download" @click="handleArea"
-              v-hasPermi="['business:deposit:export']"> area</el-dropdown-item> -->
           </el-dropdown-menu>
         </template>
       </el-dropdown>
@@ -55,11 +53,11 @@
       </el-table-column>
       <el-table-column label="操作" align="center" prop="verifyStatus" width="200">
         <template #default="scope">
-          <el-button v-if="scope.row.status === 0" link type="warning" size="small" @click="handleVerify(scope.row, 1)"
+          <el-button v-show="scope.row.status === 0" link type="warning" size="small" @click="handleVerify(scope.row, 1)"
             v-hasPermi="['business:deposit:verify']">审核通过</el-button>
-          <el-button v-if="scope.row.status === 0" link type="danger" size="small" @click="handleVerify(scope.row, 4)"
+          <el-button v-show="scope.row.status === 0" link type="danger" size="small" @click="handleVerify(scope.row, 4)"
             v-hasPermi="['business:deposit:verify']">驳回</el-button>
-          <el-button v-if="scope.row.status !== 0" link type="success" size="small" @click="handleInfo(scope.row)"
+          <el-button v-show="scope.row.status !== 0" link type="success" size="small" @click="handleInfo(scope.row)"
             v-hasPermi="['business:deposit:info']">查看</el-button>
         </template>
       </el-table-column>
@@ -74,8 +72,14 @@
                 :trigger-on-focus="true" v-model="form.formNo" placeholder="请输入客户名称" popper-class="my-autocomplete"
                 @select="handleSelectEntrustOrder">
                 <template #default="{ item }">
-                  <div style="display: flex; flex-direction: row; justify-content: space-between;">
-                    <div class="name" style="font-size: 12px;">{{ item.formNo }}-{{ item.signingSubject }}</div>
+                  <div style="
+                      display: flex;
+                      flex-direction: row;
+                      justify-content: space-between;
+                    ">
+                    <div class="name" style="font-size: 12px">
+                      {{ item.formNo }}-{{ item.signingSubject }}
+                    </div>
                   </div>
                 </template>
               </el-autocomplete>
@@ -152,7 +156,7 @@ import {
   getDeposit,
   updateDeposit,
   listEntrustOrder,
-  verifyDeposit
+  verifyDeposit,
 } from "@/api/business/entrust/deposit";
 // import ElImageViewer from 'element-plus/lib/components/image-viewer';
 import freeAmountDialog from "./freeAmountDialog.vue";
@@ -175,7 +179,7 @@ const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
 const showViewer = ref(false);
 const currentFileList = ref([]);
 const showIndex = ref(0);
-const freeAmountDialogRef = ref(null)
+const freeAmountDialogRef = ref(null);
 
 const formOpen = ref(false);
 
@@ -303,7 +307,11 @@ function handleSelectCompany(item) {
 }
 
 function saveHandler() {
-  if (form.value.entrustOrderId == null || form.value.entrustOrderId === 0 || form.value.entrustOrderId === '') {
+  if (
+    form.value.entrustOrderId == null ||
+    form.value.entrustOrderId === 0 ||
+    form.value.entrustOrderId === ""
+  ) {
     proxy.$modal.msgError("请选择存款委托合同");
     return;
   }
@@ -361,19 +369,22 @@ function closeImages() {
 }
 
 function querySearchEntrustOrderAsync(queryString, cb) {
-  const query = queryString.length > 0 ? { keyword: queryString, pageSize: 20, pageNum: 1, status: 1 } : { pageSize: 20, pageNum: 1, status: 1 }
-  listEntrustOrder(query).then(res => {
-    cb(res.rows)
-  })
+  const query =
+    queryString.length > 0
+      ? { keyword: queryString, pageSize: 20, pageNum: 1, status: 1 }
+      : { pageSize: 20, pageNum: 1, status: 1 };
+  listEntrustOrder(query).then((res) => {
+    cb(res.rows);
+  });
 }
 
 function handleSelectEntrustOrder(item) {
-  form.value.formNo = item.formNo
-  form.value.tenantId = item.tenantId
-  form.value.fromTenantId = item.fromTenantId
-  form.value.entrustOrderId = item.id
-  form.value.signingSubject = item.signingSubject
-  form.value.contactCompany = item.contactCompany
+  form.value.formNo = item.formNo;
+  form.value.tenantId = item.tenantId;
+  form.value.fromTenantId = item.fromTenantId;
+  form.value.entrustOrderId = item.id;
+  form.value.signingSubject = item.signingSubject;
+  form.value.contactCompany = item.contactCompany;
 }
 
 function handleInfo(row) {
@@ -392,16 +403,18 @@ function getForm(id) {
 
 function handleVerify(row, status) {
   if (status === 1) {
-    freeAmountDialogRef.value.open(row)
+    freeAmountDialogRef.value.open(row);
   } else {
-    proxy.$modal.confirm(`确认${status === 1 ? '审核通过' : '驳回'}么?`)
-      .then(_ => {
-        const saveValue = proxy.deepClone(row)
-        saveValue.status = status
-        return verifyDeposit(saveValue)
-      }).then(res => {
-        getList()
+    proxy.$modal
+      .confirm(`确认${status === 1 ? "审核通过" : "驳回"}么?`)
+      .then((_) => {
+        const saveValue = proxy.deepClone(row);
+        saveValue.status = status;
+        return verifyDeposit(saveValue);
       })
+      .then((res) => {
+        getList();
+      });
   }
 }
 

+ 28 - 13
src/views/business/entrust/entrustOrder/form.vue

@@ -26,7 +26,7 @@
           <el-col :span="12">
             <el-form-item label="签约主体" required>
               <el-autocomplete
-                v-if="form.status == 0"
+                v-if="form.status == 0 && view"
                 :fetch-suggestions="querySearchSigningSubjectAsync"
                 :trigger-on-focus="true"
                 v-model="form.signingSubject"
@@ -54,7 +54,7 @@
           <el-col :span="12">
             <el-form-item label="往来单位" required>
               <el-autocomplete
-                v-if="form.status == 0"
+                v-if="form.status == 0 && view"
                 :fetch-suggestions="querySearchContactCompanyAsync"
                 :trigger-on-focus="true"
                 v-model="form.contactCompany"
@@ -82,7 +82,7 @@
           <el-col :span="12">
             <el-form-item label="合同日期" required>
               <el-date-picker
-                v-if="form.status == 0"
+                v-if="form.status == 0 && view"
                 clearable
                 v-model="form.formDate"
                 type="date"
@@ -98,7 +98,7 @@
               <el-input
                 v-model="form.formNo"
                 placeholder="请输入合同编号"
-                v-if="form.status == 0"
+                v-if="form.status == 0 && view"
               />
               <span v-else>{{ form.formNo }}</span>
             </el-form-item>
@@ -109,25 +109,22 @@
     <template #footer>
       <div class="dialog-footer">
         <el-button
-          v-hasPermi="[
-            'business:entrustOrder:edit',
-            'business:entrustOrder:add',
-          ]"
           type="primary"
           size="small"
           icon="Finished"
           @click="handleSave"
-          v-if="form.status == 0"
+          v-if="form.status == 0 && view"
         >
           保存</el-button
         >
+
         <el-button @click="close" icon="close" size="small">取 消</el-button>
       </div>
     </template>
   </el-dialog>
 </template>
 <script setup>
-import { reactive } from "vue";
+import { reactive, ref } from "vue";
 import {
   getEntrustOrder,
   listTenant,
@@ -137,8 +134,11 @@ import {
   addEntrustOrder,
   updateEntrustOrder,
 } from "../../../../api/business/entrust/entrustOrder";
+import useUserStore from "@/store/modules/user";
 const { proxy } = getCurrentInstance();
-
+const view = ref(true);
+const permissions = useUserStore().permissions;
+const all_permission = "*:*:*";
 const emptyData = {
   id: null,
   status: 0,
@@ -157,7 +157,6 @@ const props = defineProps({
 });
 const { getList, width } = toRefs(props);
 
-// import api from '@/api/biz/fileStorage'
 const data = reactive({
   visible: false,
   list: [],
@@ -177,12 +176,28 @@ const data = reactive({
 });
 const { visible, baseUrl, options, files, form, months } = toRefs(data);
 
+function viewable() {
+  return (
+    permissions.includes(all_permission) ||
+    permissions.includes("business:entrustOrder:edit") ||
+    permissions.includes("business:entrustOrder:add")
+  );
+}
+
 function open(id) {
   visible.value = true;
+  view.value = viewable();
+  console.log("权限", view.value);
   reset();
   form.value.id = id;
   if (id != null) {
-    loadData();
+    //   loadData();
+    getEntrustOrder(form.value.id).then((res) => {
+      if (res.data != null) {
+        form.value = res.data;
+        console.log("form", form.value);
+      }
+    });
   }
 }
 /**

+ 7 - 6
src/views/business/entrust/entrustOrder/index.vue

@@ -56,14 +56,15 @@
       <el-table-column label="操作" align="center" min-width="150" class-name="small-padding fixed-width">
         <template #default="scope">
           <el-button link type="primary" size="small" @click="handleUpdate(scope.row.id)"
-            v-hasPermi="['monitor:entrustOrder:query']">详情</el-button>
-          <el-button v-if="scope.row.status === 0" link type="primary" size="small" @click="handleConfirm(scope.row)"
-            v-hasPermi="['monitor:entrustOrder:confirm']">确认订单</el-button>
-          <el-button v-if="scope.row.status === 1" link type="primary" size="small" @click="handleFinished(scope.row)"
-            v-hasPermi="['monitor:entrustOrder:confirm']">确认完结</el-button>
+            v-hasPermi="['business:entrustOrder:query']">详情</el-button>
+          <el-button v-show="scope.row.status === 0" link type="primary" size="small" @click="handleConfirm(scope.row)"
+            v-hasPermi="['business:entrustOrder:confirm']">确认订单</el-button>
+          <el-button v-show="scope.row.status === 1" link type="primary" size="small" @click="handleFinished(scope.row)"
+            v-hasPermi="['business:entrustOrder:finished']">确认完结</el-button>
 
           <router-link v-if="scope.row.status !== 0" :to="'/entrust/statusment/order/' + scope.row.id" class="link-type">
-            <el-button link size="small" style="margin-left: 10px" type="primary">对账单列表</el-button>
+            <el-button link size="small" style="margin-left: 10px" type="primary"
+              v-hasPermi="['business:entrustOrder:statement:list']">对账单列表</el-button>
           </router-link>
         </template>
       </el-table-column>

+ 54 - 20
src/views/business/entrust/statementAccount/ChoiceMonthDialog.vue

@@ -1,9 +1,10 @@
 <template>
   <el-dialog title="设置当前工作月" v-model="formOpen" width="500px" append-to-body draggable @close="cancel">
-    <el-form ref="dictRef" :model="form" label-width="100">
-      <el-form-item label="当前工作月:">
-        <el-date-picker v-model="currentMonth" size="small" placeholder="起始月" :clearable="true" value-format="YYYY-MM-01"
-          format="YYYY年MM月" type="monthrange" />
+    <el-form ref="dictRef" :model="form" label-width="100" size="small">
+      <el-form-item label="对账工作月:">
+        <el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="monthrange"
+          :disabled-date="disabledDateHandler" range-separator="-" format="YYYY年 第MM期" start-placeholder="开始日期"
+          end-placeholder="结束日期" style="width: 240px;" @change="dateRangeChange" />
       </el-form-item>
     </el-form>
     <template #footer>
@@ -15,7 +16,8 @@
   </el-dialog>
 </template>
 <script setup>
-import { initCurrentMonth } from "@/api/business/entrust/currentWorkOrder";
+// 获取所有有委托的月份
+import { getMonths } from "@/api/business/entrust/entrustOrder";
 import { ref } from "vue";
 
 const { proxy } = getCurrentInstance();
@@ -30,28 +32,56 @@ const props = defineProps({
     default: () => { },
   },
 });
+const emit = defineEmits(["confirm"]);
 
 const { getList } = toRefs(props);
 const currentMonth = ref(proxy.moment().format("YYYY-MM-01"));
+const entrustOrderId = ref(null)
+const dateRange = ref([])
 
 const formOpen = ref(false);
 const form = ref({});
+const months = ref([])
+
+// function submitForm() {
+//   if (currentMonth.value == null || currentMonth.value == "") {
+//     proxy.$modal.msgError("请选择月份!");
+//     return;
+//   }
+//   initCurrentMonth({
+//     year: currentMonth.value.substring(0, 4),
+//     month: currentMonth.value.substring(5, 7),
+//   }).then((response) => {
+//     proxy.$modal.msgSuccess("设置完成!");
+//     formOpen.value = false;
+//     setCurrentMonth(proxy.moment().format("YYYY-MM-01"));
+//     cancel();
+//     getList.value();
+//   });
+// }
 
 function submitForm() {
-  if (currentMonth.value == null || currentMonth.value == "") {
-    proxy.$modal.msgError("请选择月份!");
-    return;
+  if (dateRange.value === null || dateRange.value.length === 0) {
+    proxy.$modal.msgError('请选择对账月份')
+    return
+  }
+  emit('confirm', dateRange.value)
+  cancel()
+}
+
+function disabledDateHandler(date) {
+  const d = proxy.moment(date, 'YYYY-MM-DD').format('YYYY-MM-DD')
+  console.log(d)
+  // debugger
+  // 判断是否在months 中
+  if (months.value.includes(d)) {
+    return false
+  } else {
+    return true
   }
-  initCurrentMonth({
-    year: currentMonth.value.substring(0, 4),
-    month: currentMonth.value.substring(5, 7),
-  }).then((response) => {
-    proxy.$modal.msgSuccess("设置完成!");
-    formOpen.value = false;
-    setCurrentMonth(proxy.moment().format("YYYY-MM-01"));
-    cancel();
-    getList.value();
-  });
+}
+
+function dateRangeChange(arg) {
 }
 
 function cancel() {
@@ -60,11 +90,15 @@ function cancel() {
 }
 
 function open(options) {
-  formOpen.value = true;
+  formOpen.value = true
+  entrustOrderId.value = options
+  getMonths(entrustOrderId.value).then(res => {
+    months.value = res.data
+  })
 }
 
 function reset() {
-  currentMonth.value = proxy.moment().format("YYYY-MM-01");
+  dateRange.value = []
 }
 
 // 暴露给父组件的方法

+ 5 - 2
src/views/business/entrust/statementAccount/form.vue

@@ -58,8 +58,10 @@
                         <td :colspan="2" class="tdLast" style="width: 300px;">说明</td>
                       </tr>
                       <tr class="bg-white-color" v-for="(item, index) in form.collect" :key="index">
-                        <td :colspan="1" v-if="index === 0" :rowspan="form.collect.length">{{ item.year }}年{{ item.month
-                        }}月</td>
+                        <td :colspan="1" v-if="index === 0" :rowspan="form.collect.length">
+                          <!-- {{ item.year }}年{{ item.month}}月 -->
+                          {{ form.startMonth }} - {{ form.endMonth }}
+                        </td>
                         <td :colspan="1">{{ item.taskType }}</td>
                         <td :colspan="1">
                           {{
@@ -123,6 +125,7 @@
                 <el-tab-pane label="循环任务" name="loop">
                   <el-table v-loading="loading" :data="form.loopList" size="small" border height="100%">
                     <!-- <el-table-column label="工单号" align="center" prop="workOrderNo" width="200" /> -->
+                    <el-table-column label="工作月" align="center" prop="workMonth" />
                     <el-table-column label="客户名称" align="center" width="150" prop="companyName" />
                     <el-table-column label="税号" align="center" prop="socialCreditCode" width="150" />
                     <el-table-column label="注册地址" align="center" prop="formNo" width="120">

+ 39 - 31
src/views/business/entrust/statementAccount/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="page-container list-container">
     <div class="list-btns-container">
-      <el-button v-if="info.status !== 2" type="primary" size="small" icon="Plus" @click="handleAdd"
-        v-hasPermi="['business:statementAccount:add']">生成新对账单</el-button>
+      <el-button v-show="info.status !== 2" type="primary" size="small" icon="Plus" @click="handleAdd"
+        v-hasPermi="['business:deduct:add']">生成新对账单</el-button>
 
       <el-button size="small" icon="Close" @click="handleClose">关闭</el-button>
     </div>
@@ -39,16 +39,17 @@
       <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
       <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
         <template #default="scope">
-          <el-button v-if="info.status !== 2" link size="small" type="warning" @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:dict:edit']">修改</el-button>
-          <el-button v-if="info.status !== 2" link size="small" type="danger" @click="handleDelete(scope.row)"
-            v-hasPermi="['system:dict:remove']">删除</el-button>
-          <el-button v-if="info.status === 2" link size="small" type="primary" @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:dict:edit']">查看</el-button>
+          <el-button v-show="info.status !== 2" link size="small" type="warning" @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:deduct:edit']">修改</el-button>
+          <el-button v-show="info.status !== 2" link size="small" type="danger" @click="handleDelete(scope.row)"
+            v-hasPermi="['business:deduct:remove']">删除</el-button>
+          <el-button v-show="info.status === 2" link size="small" type="primary" @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:deduct:info']">查看</el-button>
         </template>
       </el-table-column>
     </el-table>
     <statement-account-form ref="statementAccountFormRef" :get-list="getList" />
+    <choice-month-dialog ref="choiceMonthDialogRef" @confirm="monthConfirmHandler" />
     <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
       @pagination="getList" />
   </div>
@@ -60,13 +61,14 @@ import {
   delDeduct,
   exportDeduct,
   checkStatementAccount,
-  getEntrustOrder
+  getEntrustOrder,
 } from "@/api/business/entrust/deduct";
 import statementAccountForm from "./form.vue";
+import ChoiceMonthDialog from "./ChoiceMonthDialog.vue";
 
 const { proxy } = getCurrentInstance();
 const { entrust_deduct_status } = proxy.useDict("entrust_deduct_status");
-const info = ref({})
+const info = ref({});
 
 const dataList = ref([]);
 const open = ref(false);
@@ -79,9 +81,13 @@ const total = ref(0);
 const title = ref("");
 const defaultDictType = ref("");
 const typeOptions = ref([]);
-const statementAccountFormRef = ref(null);
+
+const statementAccountFormRef = ref(null)
+const choiceMonthDialogRef = ref(null)
+
 const route = useRoute();
 const webHost = import.meta.env.VITE_APP_BASE_API;
+
 // 数据标签回显样式
 const listClassOptions = ref([
   { value: "default", label: "默认" },
@@ -123,9 +129,9 @@ function setEntrustOrder(id) {
 }
 
 function getInfo(id) {
-  getEntrustOrder(id).then(res => {
-    info.value = res.data
-  })
+  getEntrustOrder(id).then((res) => {
+    info.value = res.data;
+  });
 }
 
 /** 查询字典数据列表 */
@@ -182,14 +188,15 @@ function handleAdd() {
   // 判断上月委托是否已做对账单
   // 假设已做对账单 则询问是否做本月对账单
   // 假设做本月对账单 传入本月信息到dialog
-  checkStatementAccount(queryParams.value.entrustOrderId).then((res) => {
-    const currentDate = res.msg;
-    statementAccountFormRef.value.add({
-      entrustOrderId: queryParams.value.entrustOrderId,
-      currentDate: currentDate,
-    });
-    // console.log(res)
-  });
+  choiceMonthDialogRef.value.open(queryParams.value.entrustOrderId)
+  // checkStatementAccount(queryParams.value.entrustOrderId).then((res) => {
+  //   const currentDate = res.msg;
+  //   statementAccountFormRef.value.add({
+  //     entrustOrderId: queryParams.value.entrustOrderId,
+  //     currentDate: currentDate,
+  //   });
+  //   // console.log(res)
+  // });
 }
 
 /** 多选框选中数据 */
@@ -240,15 +247,16 @@ function handleDelete(row) {
     })
     .catch(() => { });
 }
-/** 导出按钮操作 */
-function handleExport() {
-  proxy.download(
-    "system/dict/data/export",
-    {
-      ...queryParams.value,
-    },
-    `dict_data_${new Date().getTime()}.xlsx`
-  );
+
+function monthConfirmHandler(daterange) {
+  const startMonth = daterange[0]
+  const endMonth = daterange[1]
+  statementAccountFormRef.value.add({
+    entrustOrderId: queryParams.value.entrustOrderId,
+    startMonth: startMonth,
+    endMonth: endMonth
+  });
 }
+
 setEntrustOrder(route.params && route.params.orderId);
 </script>

+ 78 - 149
src/views/business/entrust/workOrder/currentMonth/index.vue

@@ -2,172 +2,91 @@
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button
-        type="primary"
-        size="small"
-        icon="Plus"
-        @click="setEntrustHandle"
-        v-hasPermi="['business:entrust:workOrder:current:edit']"
-        >设置委托</el-button
-      >
-      <el-button
-        type="danger"
-        size="small"
-        icon="delete"
-        @click="delEntrustHandle"
-        v-hasPermi="['business:entrust:workOrder:current:edit']"
-        >取消委托</el-button
-      >
-      <el-button
-        type="success"
-        size="small"
-        icon="Refresh"
-        @click="transEntrustHandler"
-        v-hasPermi="['business:entrust:workOrder:current:trans']"
-        >委托流转</el-button
-      >
+      <el-button type="primary" size="small" icon="Plus" :disabled="multiple" @click="setEntrustHandle"
+        v-hasPermi="['business:entrust:workOrder:current:edit']">设置委托</el-button>
+      <el-button type="danger" size="small" icon="delete" :disabled="cancel" @click="delEntrustHandle"
+        v-hasPermi="['business:entrust:workOrder:current:edit']">取消委托</el-button>
+      <el-button type="success" size="small" icon="Refresh" @click="transEntrustHandler"
+        v-hasPermi="['business:entrust:workOrder:current:trans']">委托流转</el-button>
       <el-dropdown>
         <el-button type="primary" size="small">
           其它<el-icon class="el-icon--right"><arrow-down /></el-icon>
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:entrust:workOrder:current:export']"
-            >
-              导出</el-dropdown-item
-            >
+            <el-dropdown-item icon="Download" @click="handleExport"
+              v-hasPermi="['business:entrust:workOrder:current:export']">
+              导出</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      label-width="68px"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="68px">
       <el-form-item label="当前月:">{{
         currentMonth == null
-          ? "未设定本月"
-          : moment(currentMonth).format("YYYY年MM月")
+        ? "未设定本月"
+        : moment(currentMonth).format("YYYY年MM月")
       }}</el-form-item>
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input
-          v-model="queryParams.companyName"
-          style="width: 150px"
-          placeholder="请输入客户名称"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.companyName" style="width: 150px" placeholder="请输入客户名称" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="list"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="list" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <!-- <el-table-column label="工单号" align="center" prop="workOrderNo" width="200" /> -->
-      <el-table-column
-        label="客户名称"
-        align="center"
-        min-width="250"
-        prop="companyName"
-      />
-      <el-table-column
-        label="税号"
-        align="center"
-        prop="socialCreditCode"
-        min-width="200"
-      />
-      <el-table-column
-        label="工单类型"
-        align="center"
-        prop="amount"
-        min-width="80"
-      >
+      <el-table-column label="客户名称" align="center" min-width="250" prop="companyName" />
+      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="200" />
+      <el-table-column label="工单类型" align="center" prop="amount" min-width="80">
         <template #default="scope">
-          {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
         </template>
       </el-table-column>
-      <el-table-column
-        v-if="list.findIndex((v) => v.tenantId !== tenantId) >= 0"
-        label="来源"
-        align="center"
-        prop="fromCompanyName"
-        min-width="80"
-      >
+      <el-table-column v-if="list.findIndex((v) => v.tenantId !== tenantId) >= 0" label="来源" align="center"
+        prop="fromCompanyName" min-width="80">
       </el-table-column>
-      <el-table-column
-        label="项目"
-        align="center"
-        prop="taskTypeName"
-        min-width="140"
-      >
+      <el-table-column label="项目" align="center" prop="taskTypeName" min-width="140">
         <template #default="scope">
           {{ scope.row.taskTypeName }}
           {{
             scope.row.taskTypeDetailName
-              ? `-${scope.row.taskTypeDetailName}`
-              : ""
+            ? `-${scope.row.taskTypeDetailName}`
+            : ""
           }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="起始月"
-        align="center"
-        width="90"
-        min-prop="startMonth"
-      >
+      <el-table-column label="起始月" align="center" width="90" min-prop="startMonth">
         <template #default="scope">
           {{
             scope.row.type === 1
-              ? scope.row.startMonth
-                ? moment(scope.row.startMonth).format("YYYY年MM月")
-                : ""
-              : "-"
+            ? scope.row.startMonth
+              ? moment(scope.row.startMonth).format("YYYY年MM月")
+              : ""
+            : "-"
           }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="结束月"
-        align="center"
-        min-width="90"
-        prop="endMonth"
-      >
+      <el-table-column label="结束月" align="center" min-width="90" prop="endMonth">
         <template #default="scope">
           {{
             scope.row.type === 1
-              ? scope.row.endMonth
-                ? moment(scope.row.endMonth).format("YYYY年MM月")
-                : ""
-              : "-"
+            ? scope.row.endMonth
+              ? moment(scope.row.endMonth).format("YYYY年MM月")
+              : ""
+            : "-"
           }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="工单月数"
-        align="center"
-        min-width="80"
-        prop="monthNum"
-      >
+      <el-table-column label="工单月数" align="center" min-width="80" prop="monthNum">
         <template #default="scope">
           {{ scope.row.type === 1 ? scope.row.monthNum : "-" }}
         </template>
@@ -176,32 +95,19 @@
         <template #default="scope">
           {{
             scope.row.entrust != null
-              ? scope.row.entrust.toAccountName
-              : scope.row.serviceName
+            ? scope.row.entrust.toAccountName
+            : scope.row.serviceName
           }}
         </template>
       </el-table-column>
     </el-table>
     <!-- <contract-form ref="contractRef" :get-list="getList" /> -->
     <!-- 分页 -->
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      v-model:page="queryParams.pageNum"
-      v-model:limit="queryParams.pageSize"
-      @pagination="getList"
-    />
-    <init-month-dialog
-      ref="initMonthDialogRef"
-      :get-list="checkCurrentMonthHandle"
-      :setCurrentMonth="setCurrentMonth"
-    />
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
+      @pagination="getList" />
+    <init-month-dialog ref="initMonthDialogRef" :get-list="checkCurrentMonthHandle" :setCurrentMonth="setCurrentMonth" />
 
-    <set-entrust-dialog
-      ref="setEntrustDialogRef"
-      :get-list="getList"
-      @submit="handleAddEntrust"
-    />
+    <set-entrust-dialog ref="setEntrustDialogRef" :get-list="getList" @submit="handleAddEntrust" />
   </div>
 </template>
 
@@ -217,6 +123,7 @@ import {
   addEntrust,
 } from "@/api/business/entrust/currentWorkOrder";
 import SetEntrustDialog from "../setEntrustDialog";
+// import { ca } from "element-plus/es/locale";
 const { proxy } = getCurrentInstance();
 const currentMonth = ref(null);
 /** 字典数组区 */
@@ -224,10 +131,11 @@ const currentMonth = ref(null);
 
 const list = ref([]);
 const loading = ref(true);
+const cancel = ref(true);
+const multiple = ref(true);
 const ids = ref([]);
 const selections = ref([]);
 const single = ref(false);
-const multiple = ref(false);
 const total = ref(0);
 const prev = ref([]);
 const tenantId = ref(getTenant());
@@ -298,8 +206,37 @@ function resetQuery() {
 function handleSelectionChange(selection) {
   ids.value = selection.map((item) => item.id);
   selections.value = selection;
-  single.value = selection.length != 1;
-  multiple.value = selection.length > 0;
+
+  //取消委托计数
+  let cancelNum = 0;
+  //设置委托计数
+  let multipleNum = 0;
+  //判断是否有执行人
+  selections.value.forEach((item) => {
+    if (item.entrust) {
+      //有执行人
+      if (item.entrust.toAccountName) {
+        cancelNum++;
+      }
+    }
+    //没有执行人
+    if (!item.entrust) {
+      multipleNum++;
+    }
+  });
+
+  //判断是否有选中数据
+  if (!selections.value.length > 0) {
+    multiple.value = true;
+    cancel.value = true;
+  } //判断是否设置执行人和设置委托选中
+  else if (cancelNum > 0 && multipleNum > 0) {
+    cancel.value = cancelNum > 0;
+    multiple.value = multipleNum > 0;
+  } else {
+    cancel.value = !cancelNum > 0;
+    multiple.value = !multipleNum > 0;
+  }
 }
 
 /** 导出按钮操作 */
@@ -312,10 +249,6 @@ function setCurrentMonth(month) {
 }
 
 function setEntrustHandle() {
-  if (!multiple.value) {
-    proxy.$modal.msgError("请选择一条记录!");
-    return;
-  }
   setEntrustDialogRef.value.open({
     selections: selections.value,
     optionCurrentMonth: currentMonth.value,
@@ -323,10 +256,6 @@ function setEntrustHandle() {
 }
 
 function delEntrustHandle() {
-  if (!multiple.value) {
-    proxy.$modal.msgError("请选择一条记录!");
-    return;
-  }
   const entrust = {
     workMonth: currentMonth.value,
     workOrderIds: ids.value,

+ 73 - 134
src/views/business/entrust/workOrder/nextMonth/index.vue

@@ -2,156 +2,86 @@
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button
-        type="primary"
-        size="small"
-        icon="Plus"
-        @click="setEntrustHandle"
-        v-hasPermi="['business:entrust:workOrder:next:edit']"
-        >设置委托</el-button
-      >
-      <el-button
-        type="danger"
-        size="small"
-        icon="delete"
-        @click="delEntrustHandle"
-        v-hasPermi="['business:entrust:workOrder:next:edit']"
-        >取消委托</el-button
-      >
+      <el-button type="primary" size="small" :disabled="multiple" icon="Plus" @click="setEntrustHandle"
+        v-hasPermi="['business:entrust:workOrder:next:edit']">设置委托</el-button>
+      <el-button type="danger" size="small" :disabled="cancel" icon="delete" @click="delEntrustHandle"
+        v-hasPermi="['business:entrust:workOrder:next:edit']">取消委托</el-button>
       <el-dropdown>
         <el-button type="primary" size="small">
           其它<el-icon class="el-icon--right"><arrow-down /></el-icon>
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:workOrder:export']"
-            >
-              导出</el-dropdown-item
-            >
+            <el-dropdown-item icon="Download" @click="handleExport"
+              v-hasPermi="['business:entrust:workOrder:next:export']">
+              导出</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      label-width="68px"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="68px">
       <el-form-item label="当前月:">{{
         currentMonth == null
-          ? "未设定本月"
-          : moment(currentMonth).format("YYYY年MM月")
+        ? "未设定本月"
+        : moment(currentMonth).format("YYYY年MM月")
       }}</el-form-item>
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input
-          v-model="queryParams.companyName"
-          placeholder="请输入客户名称"
-          style="width: 150px"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" style="width: 150px" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="list"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="list" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <!-- <el-table-column label="工单号" align="center" prop="workOrderNo" width="200" /> -->
-      <el-table-column
-        label="客户名称"
-        align="center"
-        min-width="250"
-        prop="companyName"
-      />
-      <el-table-column
-        label="税号"
-        align="center"
-        prop="socialCreditCode"
-        min-width="200"
-      />
-      <el-table-column
-        label="工单类型"
-        align="center"
-        prop="amount"
-        min-width="90"
-      >
+      <el-table-column label="客户名称" align="center" min-width="250" prop="companyName" />
+      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="200" />
+      <el-table-column label="工单类型" align="center" prop="amount" min-width="90">
         <template #default="scope">
-          {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="项目"
-        align="center"
-        prop="taskTypeName"
-        min-width="130"
-      >
+      <el-table-column label="项目" align="center" prop="taskTypeName" min-width="130">
         <template #default="scope">
           {{ scope.row.taskTypeName }}
           {{
             scope.row.taskTypeDetailName
-              ? `-${scope.row.taskTypeDetailName}`
-              : ""
+            ? `-${scope.row.taskTypeDetailName}`
+            : ""
           }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="起始月"
-        align="center"
-        min-width="90"
-        prop="startMonth"
-      >
+      <el-table-column label="起始月" align="center" min-width="90" prop="startMonth">
         <template #default="scope">
           {{
             scope.row.type === 1
-              ? scope.row.startMonth
-                ? moment(scope.row.startMonth).format("YYYY年MM月")
-                : ""
-              : "-"
+            ? scope.row.startMonth
+              ? moment(scope.row.startMonth).format("YYYY年MM月")
+              : ""
+            : "-"
           }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="结束月"
-        align="center"
-        min-width="90"
-        prop="endMonth"
-      >
+      <el-table-column label="结束月" align="center" min-width="90" prop="endMonth">
         <template #default="scope">
           {{
             scope.row.type === 1
-              ? scope.row.endMonth
-                ? moment(scope.row.endMonth).format("YYYY年MM月")
-                : ""
-              : "-"
+            ? scope.row.endMonth
+              ? moment(scope.row.endMonth).format("YYYY年MM月")
+              : ""
+            : "-"
           }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="工单月数"
-        align="center"
-        min-width="80"
-        prop="monthNum"
-      >
+      <el-table-column label="工单月数" align="center" min-width="80" prop="monthNum">
         <template #default="scope">
           {{ scope.row.type === 1 ? scope.row.monthNum : "-" }}
         </template>
@@ -160,30 +90,17 @@
         <template #default="scope">
           {{
             scope.row.entrust != null
-              ? scope.row.entrust.toAccountName
-              : scope.row.serviceName
+            ? scope.row.entrust.toAccountName
+            : scope.row.serviceName
           }}
         </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"
-    />
-    <init-month-dialog
-      ref="initMonthDialogRef"
-      :get-list="getList"
-      :setCurrentMonth="setCurrentMonth"
-    />
-    <set-entrust-dialog
-      ref="setEntrustDialogRef"
-      :get-list="getList"
-      @submit="handleAddEntrust"
-    />
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
+      @pagination="getList" />
+    <init-month-dialog ref="initMonthDialogRef" :get-list="getList" :setCurrentMonth="setCurrentMonth" />
+    <set-entrust-dialog ref="setEntrustDialogRef" :get-list="getList" @submit="handleAddEntrust" />
   </div>
 </template>
 
@@ -207,7 +124,8 @@ const loading = ref(true);
 const ids = ref([]);
 const selections = ref([]);
 const single = ref(false);
-const multiple = ref(false);
+const cancel = ref(true);
+const multiple = ref(true);
 const total = ref(0);
 const prev = ref([]);
 
@@ -276,8 +194,37 @@ function resetQuery() {
 function handleSelectionChange(selection) {
   ids.value = selection.map((item) => item.id);
   selections.value = selection;
-  single.value = selection.length != 1;
-  multiple.value = selection.length > 0;
+
+  //取消委托计数
+  let cancelNum = 0;
+  //设置委托计数
+  let multipleNum = 0;
+  //判断是否有执行人
+  selections.value.forEach((item) => {
+    if (item.entrust) {
+      //有执行人
+      if (item.entrust.toAccountName) {
+        cancelNum++;
+      }
+    }
+    //没有执行人
+    if (!item.entrust) {
+      multipleNum++;
+    }
+  });
+
+  //判断是否有选中数据
+  if (!selections.value.length > 0) {
+    multiple.value = true;
+    cancel.value = true;
+  } //判断是否设置执行人和设置委托选中
+  else if (cancelNum > 0 && multipleNum > 0) {
+    cancel.value = cancelNum > 0;
+    multiple.value = multipleNum > 0;
+  } else {
+    cancel.value = !cancelNum > 0;
+    multiple.value = !multipleNum > 0;
+  }
 }
 
 /** 导出按钮操作 */
@@ -290,10 +237,6 @@ function setCurrentMonth(month) {
 }
 
 function setEntrustHandle() {
-  if (!multiple.value) {
-    proxy.$modal.msgError("请选择一条记录!");
-    return;
-  }
   setEntrustDialogRef.value.open({
     selections: selections.value,
     optionCurrentMonth: currentMonth.value,
@@ -301,10 +244,6 @@ function setEntrustHandle() {
 }
 
 function delEntrustHandle() {
-  if (!multiple.value) {
-    proxy.$modal.msgError("请选择一条记录!");
-    return;
-  }
   const entrust = {
     workMonth: currentMonth.value,
     workOrderIds: ids.value,

+ 59 - 101
src/views/business/entrust/workOrder/once/index.vue

@@ -2,111 +2,56 @@
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button
-        type="primary"
-        size="small"
-        icon="Plus"
-        @click="setEntrustHandle"
-        v-hasPermi="['business:entrust:workOrder:current:edit']"
-        >设置委托</el-button
-      >
-      <el-button
-        type="danger"
-        size="small"
-        icon="Delete"
-        @click="delEntrustHandle"
-        v-hasPermi="['business:entrust:workOrder:current:edit']"
-        >取消委托</el-button
-      >
+      <el-button type="primary" size="small" icon="Plus" :disabled="multiple" @click="setEntrustHandle"
+        v-hasPermi="['business:entrust:workOrder:current:edit']">设置委托</el-button>
+      <el-button type="danger" size="small" icon="Delete" :disabled="cancel" @click="delEntrustHandle"
+        v-hasPermi="['business:entrust:workOrder:current:edit']">取消委托</el-button>
       <el-dropdown>
         <el-button type="primary" size="small">
           其它<el-icon class="el-icon--right"><arrow-down /></el-icon>
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:entrust:workOrder:current:export']"
-            >
-              导出</el-dropdown-item
-            >
+            <el-dropdown-item icon="Download" @click="handleExport"
+              v-hasPermi="['business:entrust:workOrder:current:export']">
+              导出</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      label-width="68px"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="68px">
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input
-          v-model="queryParams.companyName"
-          placeholder="请输入客户名称"
-          clearable
-          style="width: 150px"
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable style="width: 150px"
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="list"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="list" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <!-- <el-table-column label="工单号" align="center" prop="workOrderNo" width="200" /> -->
-      <el-table-column
-        label="客户名称"
-        align="center"
-        min-width="250"
-        prop="companyName"
-      />
-      <el-table-column
-        label="税号"
-        align="center"
-        prop="socialCreditCode"
-        min-width="160"
-      />
-      <el-table-column
-        label="工单类型"
-        align="center"
-        prop="amount"
-        min-width="80"
-      >
+      <el-table-column label="客户名称" align="center" min-width="250" prop="companyName" />
+      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="160" />
+      <el-table-column label="工单类型" align="center" prop="amount" min-width="80">
         <template #default="scope">
-          {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="项目"
-        align="center"
-        prop="taskTypeName"
-        min-width="600"
-      >
+      <el-table-column label="项目" align="center" prop="taskTypeName" min-width="600">
         <template #default="scope">
           {{ scope.row.noContract === 1 ? scope.row.remark : "" }}
           {{ scope.row.taskTypeName }}
           {{
             scope.row.taskTypeDetailName
-              ? `-${scope.row.taskTypeDetailName}`
-              : ""
+            ? `-${scope.row.taskTypeDetailName}`
+            : ""
           }}
         </template>
       </el-table-column>
@@ -114,26 +59,17 @@
         <template #default="scope">
           {{
             scope.row.entrust != null
-              ? scope.row.entrust.toAccountName
-              : scope.row.serviceName
+            ? scope.row.entrust.toAccountName
+            : scope.row.serviceName
           }}
         </template>
       </el-table-column>
     </el-table>
     <!-- <contract-form ref="contractRef" :get-list="getList" /> -->
     <!-- 分页 -->
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      v-model:page="queryParams.pageNum"
-      v-model:limit="queryParams.pageSize"
-      @pagination="getList"
-    />
-    <set-entrust-dialog
-      ref="setEntrustDialogRef"
-      :get-list="getList"
-      @submit="handleAddEntrust"
-    />
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
+      @pagination="getList" />
+    <set-entrust-dialog ref="setEntrustDialogRef" :get-list="getList" @submit="handleAddEntrust" />
   </div>
 </template>
 
@@ -156,7 +92,8 @@ const loading = ref(true);
 const ids = ref([]);
 const selections = ref([]);
 const single = ref(false);
-const multiple = ref(false);
+const cancel = ref(true);
+const multiple = ref(true);
 const total = ref(0);
 const prev = ref([]);
 
@@ -205,8 +142,37 @@ function resetQuery() {
 function handleSelectionChange(selection) {
   ids.value = selection.map((item) => item.id);
   selections.value = selection;
-  single.value = selection.length != 1;
-  multiple.value = selection.length > 0;
+
+  //取消委托计数
+  let cancelNum = 0;
+  //设置委托计数
+  let multipleNum = 0;
+  //判断是否有执行人
+  selections.value.forEach((item) => {
+    if (item.entrust) {
+      //有执行人
+      if (item.entrust.toAccountName) {
+        cancelNum++;
+      }
+    }
+    //没有执行人
+    if (!item.entrust) {
+      multipleNum++;
+    }
+  });
+
+  //判断是否有选中数据
+  if (!selections.value.length > 0) {
+    multiple.value = true;
+    cancel.value = true;
+  } //判断是否设置执行人和设置委托选中
+  else if (cancelNum > 0 && multipleNum > 0) {
+    cancel.value = cancelNum > 0;
+    multiple.value = multipleNum > 0;
+  } else {
+    cancel.value = !cancelNum > 0;
+    multiple.value = !multipleNum > 0;
+  }
 }
 
 /** 导出按钮操作 */
@@ -215,18 +181,10 @@ function handleExport() {
 }
 
 function setEntrustHandle() {
-  if (!multiple.value) {
-    proxy.$modal.msgError("请选择一条记录!");
-    return;
-  }
   setEntrustDialogRef.value.open({ selections: selections.value });
 }
 
 function delEntrustHandle() {
-  if (!multiple.value) {
-    proxy.$modal.msgError("请选择一条记录!");
-    return;
-  }
   const entrust = {
     workOrderIds: ids.value,
   };

+ 14 - 63
src/views/business/entrust/workOrder/setEntrustDialog.vue

@@ -1,77 +1,34 @@
 <template>
-  <el-dialog
-    title="设置委托"
-    v-model="formOpen"
-    width="900px"
-    append-to-body
-    draggable
-    @close="cancel"
-  >
+  <el-dialog title="设置委托" v-model="formOpen" width="900px" append-to-body draggable @close="cancel">
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="受委托方:">
         <el-select placeholder="请选择受委托方" v-model="toTenantId">
-          <el-option
-            v-for="(item, index) in factories"
-            :key="index"
-            :label="item.accountName"
-            :value="item.id"
-          ></el-option>
+          <el-option v-for="(item, index) in factories" :key="index" :label="item.accountName"
+            :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="委托工单:">
-        <el-table
-          :data="list"
-          size="small"
-          border
-          height="100%"
-          @selection-change="handleSelectionChange"
-        >
-          <el-table-column
-            label="客户名称"
-            align="center"
-            min-width="250"
-            prop="companyName"
-          />
-          <el-table-column
-            label="税号"
-            align="center"
-            prop="socialCreditCode"
-            min-width="180"
-          />
-          <el-table-column
-            label="工单类型"
-            align="center"
-            prop="amount"
-            width="80"
-          >
+        <el-table :data="list" size="small" border height="100%" @selection-change="handleSelectionChange">
+          <el-table-column label="客户名称" align="center" min-width="250" prop="companyName" />
+          <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="180" />
+          <el-table-column label="工单类型" align="center" prop="amount" width="80">
             <template #default="scope">
-              {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+              {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
             </template>
           </el-table-column>
-          <el-table-column
-            label="项目"
-            align="center"
-            prop="taskTypeName"
-            width="150"
-          >
+          <el-table-column label="项目" align="center" prop="taskTypeName" width="150">
             <template #default="scope">
               {{ scope.row.taskTypeName }}
               {{
                 scope.row.taskTypeDetailName
-                  ? `-${scope.row.taskTypeDetailName}`
-                  : ""
+                ? `-${scope.row.taskTypeDetailName}`
+                : ""
               }}
             </template>
           </el-table-column>
           <el-table-column label="操作" align="center" width="50">
             <template #default="scope">
-              <el-button
-                type="danger"
-                size="small"
-                link
-                @click="delWorkOrderHandler(scope.$index)"
-                >删除</el-button
-              >
+              <el-button type="danger" size="small" link @click="delWorkOrderHandler(scope.$index)">删除</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -79,13 +36,7 @@
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button
-          type="primary"
-          icon="Finished"
-          size="small"
-          @click="submitForm"
-          >确 定</el-button
-        >
+        <el-button type="primary" icon="Finished" size="small" @click="submitForm">确 定</el-button>
         <el-button @click="cancel" icon="close" size="small">取 消</el-button>
       </div>
     </template>
@@ -110,7 +61,7 @@ const list = ref([]);
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => {},
+    default: () => { },
   },
 });
 

+ 1 - 2
src/views/business/entrust/workOrderForFactory/currentMonth/index.vue

@@ -44,7 +44,7 @@
       <el-table-column label="税号" align="center" prop="socialCreditCode" width="150" />
       <el-table-column label="工单类型" align="center" prop="amount" width="80">
         <template #default="scope">
-          {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
         </template>
       </el-table-column>
       <el-table-column label="项目" align="center" prop="taskTypeName" width="140">
@@ -98,7 +98,6 @@
     <!-- 分页 -->
     <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
       @pagination="getList" />
-
   </div>
 </template>
 

+ 1 - 1
src/views/business/entrust/workOrderForFactory/nextMonth/index.vue

@@ -41,7 +41,7 @@
       <el-table-column label="税号" align="center" prop="socialCreditCode" width="150" />
       <el-table-column label="工单类型" align="center" prop="amount" width="80">
         <template #default="scope">
-          {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
         </template>
       </el-table-column>
       <el-table-column label="项目" align="center" prop="taskTypeName" width="140">

+ 1 - 1
src/views/business/entrust/workOrderForFactory/once/index.vue

@@ -37,7 +37,7 @@
       <el-table-column label="来源" align="center" prop="fromCompanyName" />
       <el-table-column label="工单类型" align="center" prop="amount" width="80">
         <template #default="scope">
-          {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
         </template>
       </el-table-column>
       <el-table-column label="项目" align="center" prop="taskTypeName" width="140">

+ 36 - 11
src/views/business/financial/collection/form.vue

@@ -20,10 +20,11 @@
             >保存</el-button
           >
           <el-button
-            v-else-if="form.verifyDate == null"
+            v-show="!editStatus && form.verifyDate == null"
             type="warning"
             size="small"
             icon="Edit"
+            v-hasPermi="['business:collection:edit']"
             @click="editStatus = true"
             >修改</el-button
           >
@@ -45,11 +46,11 @@
               v-hasPermi="['business:archive:order:verify']" type="danger" size="small"
               @click="rejectHandler">驳回</el-button> -->
           <el-button
-            v-if="form.id && !editStatus && form.verifyDate == null"
+            v-show="form.id && !editStatus && form.verifyDate == null"
             v-hasPermi="['business:collection:verify']"
             type="primary"
             size="small"
-            icon="Finished"
+            icon="Check"
             @click="verifyHandler"
             >收款审核</el-button
           >
@@ -243,7 +244,7 @@
               <el-form-item label="收款金额:" required>
                 <el-input-number
                   v-if="editStatus"
-                  v-model.trim="form.amount"
+                  v-model.trim="form.arriveAmount"
                   size="small"
                   placeholder="收款金额"
                   :clearable="true"
@@ -252,7 +253,17 @@
                   :controls="false"
                   @change="amountChange"
                 />
-                <span v-else>{{ form.amount }}</span>
+                <span v-else>{{ form.arriveAmount }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col v-if="form.status === 1" :span="6">
+              <el-form-item label="审核意见:" required>
+                <span>{{ form.verifyComment }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col v-if="form.status === 2" :span="6">
+              <el-form-item label="驳回原因:" required>
+                <span>{{ form.verifyComment }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -452,10 +463,15 @@
             placeholder="实际付款时间"
           />
         </el-form-item>
-        <el-form-item label="审核意见" :prop="verifyRemark">
+        <el-form-item
+          :label="form.status == 2 ? '驳回原因' : '审核意见'"
+          :prop="verifyComment"
+        >
           <el-input
-            v-model.trim="form.verifyComment"
             type="textarea"
+            maxlength="200"
+            show-word-limit
+            v-model.trim="form.verifyComment"
             :rows="3"
             placeholder="请输入审核意见"
           />
@@ -463,8 +479,16 @@
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button type="primary" @click="verifyUpload()">确 定</el-button>
-          <el-button @click="rejectCancel">取 消</el-button>
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="verifyUpload()"
+            >确 定</el-button
+          >
+          <el-button icon="Close" size="small" @click="rejectCancel"
+            >取 消</el-button
+          >
         </div>
       </template>
     </el-dialog>
@@ -598,6 +622,7 @@ function cancel() {
 /** 表单重置 */
 function reset() {
   form.value = JSON.parse(JSON.stringify(contractEmpty));
+  console.log("重置表单", form.value);
   type.value = "";
   // console.log(form)
   // proxy.resetForm("orderRef");
@@ -699,7 +724,7 @@ function verifyUpload() {
     open(form.value.id);
     getList.value();
     rejectCancel();
-    proxy.$modal.msg("保存成功");
+    proxy.$modal.mseSuccess("保存成功");
   });
 }
 
@@ -733,7 +758,7 @@ function computeTotalAmount() {
     const element = form.value.details[index];
     amount += element.arriveAmount == null ? 0 : element.arriveAmount;
   }
-  form.value.amount = amount;
+  form.value.arriveAmount = amount;
 }
 
 function amountChange() {

+ 8 - 2
src/views/business/financial/collection/importExcelDialog.vue

@@ -72,8 +72,14 @@
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
+        <el-button
+          type="primary"
+          icon="Finished"
+          size="small"
+          @click="submitForm"
+          >确 定</el-button
+        >
+        <el-button icon="close" size="small" @click="cancel">取 消</el-button>
       </div>
     </template>
   </el-dialog>

+ 2 - 2
src/views/business/financial/collection/index.vue

@@ -11,14 +11,14 @@
             <el-dropdown-item
               icon="Download"
               @click="handleExport"
-              v-hasPermi="['business:waitForCollection:export']"
+              v-hasPermi="['business:collection:export']"
             >
               导出</el-dropdown-item
             >
             <el-dropdown-item
               icon="Upload"
               @click="handleImport"
-              v-hasPermi="['business:archive:order:export']"
+              v-hasPermi="['business:collection:import']"
               >导入</el-dropdown-item
             >
           </el-dropdown-menu>

+ 70 - 275
src/views/business/financial/contract/form.vue

@@ -4,61 +4,25 @@
     <el-drawer :title="title" v-model="visible" direction="rtl" size="100%">
       <div class="page-container form-container">
         <div class="form-btns-container">
-          <span class="title-label"
-            ><el-icon>
+          <span class="title-label"><el-icon>
               <Document />
             </el-icon>
-            合同信息</span
-          >
+            合同信息</span>
           <el-button-group>
-            <el-button
-              v-if="editStatus"
-              type="primary"
-              size="small"
-              icon="Finished"
-              @click="submitForm"
-              >保存</el-button
-            >
-            <el-button
-              v-else-if="form.verifyStatus == 0"
-              type="warning"
-              size="small"
-              icon="Edit"
-              @click="editStatus = true"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="form.id && editStatus"
-              type="info"
-              size="small"
-              icon="Close"
-              @click="editStatus = false"
-              >取消编辑</el-button
-            >
-            <el-button
-              v-if="form.id"
-              type="success"
-              size="small"
-              @click="getForm"
-            >
+            <el-button v-if="editStatus" type="primary" size="small" icon="Finished" @click="submitForm">保存</el-button>
+            <el-button v-else-if="form.verifyStatus == 0" type="warning" size="small" icon="Edit"
+              @click="editStatus = true">编辑</el-button>
+            <el-button v-if="form.id && editStatus" type="info" size="small" icon="Close"
+              @click="editStatus = false">取消编辑</el-button>
+            <el-button v-if="form.id" type="success" size="small" @click="getForm">
               <i class="fa fa-refresh" aria-hidden="true" /> 刷新
             </el-button>
-            <el-button
-              v-if="form.id && !editStatus && form.verifyStatus == 0"
-              v-hasPermi="['business:archive:order:verify']"
-              type="warning"
-              size="small"
-              @click="verifyHandler"
-              >审核通过</el-button
-            >
-            <el-button
-              v-if="form.id && !editStatus && form.verifyStatus == 0"
-              v-hasPermi="['business:archive:order:verify']"
-              type="danger"
-              size="small"
-              @click="rejectHandler"
-              >驳回</el-button
-            >
+            <el-button v-show="form.id && !editStatus && form.verifyStatus == 0"
+              v-hasPermi="['business:archive:order:verify']" type="warning" size="small"
+              @click="verifyHandler">审核通过</el-button>
+            <el-button v-show="form.id && !editStatus && form.verifyStatus == 0"
+              v-hasPermi="['business:archive:order:verify']" type="danger" size="small"
+              @click="rejectHandler">驳回</el-button>
           </el-button-group>
           <div class="screen-btn" @click="handleScreen">
             <template v-if="!isFullscreen">
@@ -75,66 +39,37 @@
             <!-- <span>关闭</span> -->
           </div>
         </div>
-        <div
-          class="Y-scrollbar"
-          style="
+        <div class="Y-scrollbar" style="
             position: absolute;
             top: 32px;
             bottom: 0;
             width: 100%;
             overflow: auto;
-          "
-        ></div>
-        <el-form
-          ref="orderRef"
-          class="master-container"
-          size="small"
-          :model="form"
-          :rules="rules"
-          label-width="100px"
-        >
+          "></div>
+        <el-form ref="orderRef" class="master-container" size="small" :model="form" :rules="rules" label-width="100px">
           <el-row :gutter="30">
             <el-col :span="6">
               <el-form-item label="收款流水号:">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.flowNo"
-                  readonly
-                  size="small"
-                  type="text"
-                  placeholder="收款流水号"
-                  :clearable="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.flowNo" readonly size="small" type="text"
+                  placeholder="收款流水号" :clearable="true" />
                 <span v-else>{{ form.flowNo }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="收款账户:" prop="subsidiaryName">
-                <el-autocomplete
-                  v-if="editStatus"
-                  :fetch-suggestions="querySearchAccountAsync"
-                  :trigger-on-focus="true"
-                  v-model="form.subsidiaryName"
-                  placeholder="请输入收款账户"
-                  popper-class="my-autocomplete"
-                  @select="handleSelectAccount"
-                >
+                <el-autocomplete v-if="editStatus" :fetch-suggestions="querySearchAccountAsync" :trigger-on-focus="true"
+                  v-model="form.subsidiaryName" placeholder="请输入收款账户" popper-class="my-autocomplete"
+                  @select="handleSelectAccount">
                   <template #default="{ item }">
-                    <div
-                      style="
+                    <div style="
                         display: flex;
                         flex-direction: row;
                         justify-content: space-between;
-                      "
-                    >
+                      ">
                       <div class="name" style="font-size: 12px">
                         {{ item.name }}
                       </div>
-                      <span
-                        class="code"
-                        style="font-size: 10px; color: darkgrey"
-                        >{{ item.code }}</span
-                      >
+                      <span class="code" style="font-size: 10px; color: darkgrey">{{ item.code }}</span>
                     </div>
                   </template>
                 </el-autocomplete>
@@ -143,83 +78,44 @@
             </el-col>
             <el-col :span="6">
               <el-form-item label="收款开户行:" prop="subsidiaryBankName">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.subsidiaryBankName"
-                  size="small"
-                  type="text"
-                  placeholder="开户行"
-                  :clearable="true"
-                  :readonly="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.subsidiaryBankName" size="small" type="text"
+                  placeholder="开户行" :clearable="true" :readonly="true" />
                 <span v-else>{{ form.subsidiaryBankName }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="收款账号:" prop="subsidiaryBankAccount">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.subsidiaryBankAccount"
-                  size="small"
-                  type="text"
-                  placeholder="账号"
-                  :clearable="true"
-                  :readonly="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.subsidiaryBankAccount" size="small" type="text"
+                  placeholder="账号" :clearable="true" :readonly="true" />
                 <span v-else>{{ form.subsidiaryBankAccount }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="付款名称:" prop="applyName">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.applyName"
-                  size="small"
-                  type="text"
-                  placeholder="付款名称"
-                  :clearable="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.applyName" size="small" type="text" placeholder="付款名称"
+                  :clearable="true" />
                 <span v-else>{{ form.applyName }}</span>
               </el-form-item>
             </el-col>
 
             <el-col :span="6">
               <el-form-item label="付款账号:" prop="appyAccount">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.appyAccount"
-                  size="small"
-                  type="text"
-                  placeholder="付款账号"
-                  :clearable="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.appyAccount" size="small" type="text" placeholder="付款账号"
+                  :clearable="true" />
                 <span v-else>{{ form.appyAccount }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="到账日期:" prop="arriveDate">
-                <el-date-picker
-                  v-if="editStatus"
-                  v-model.trim="form.arriveDate"
-                  size="small"
-                  :clearable="true"
-                  format="YYYY-MM-DD"
-                  value-format="YYYY-MM-DD HH:mm:ss"
-                  align="center"
-                  type="date"
-                  placeholder="到账日期"
-                />
+                <el-date-picker v-if="editStatus" v-model.trim="form.arriveDate" size="small" :clearable="true"
+                  format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" align="center" type="date" placeholder="到账日期" />
                 <span v-else>{{ form.arriveDate }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="到账时间:" prop="arriveTime">
-                <el-time-select
-                  v-if="editStatus"
-                  v-model.trim="form.arriveTime"
-                  :picker-options="timeOptions"
-                  placeholder="选择时间"
-                />
+                <el-time-select v-if="editStatus" v-model.trim="form.arriveTime" :picker-options="timeOptions"
+                  placeholder="选择时间" />
                 <span v-else>{{ form.arriveTime }}</span>
               </el-form-item>
             </el-col>
@@ -245,30 +141,15 @@
             </el-col>
             <el-col :span="6">
               <el-form-item label="收款金额:" required>
-                <el-input-number
-                  v-if="editStatus"
-                  v-model.trim="form.amount"
-                  size="small"
-                  placeholder="收款金额"
-                  :clearable="true"
-                  :precision="2"
-                  controls-position="right"
-                  :controls="false"
-                  @change="amountChange"
-                />
+                <el-input-number v-if="editStatus" v-model.trim="form.amount" size="small" placeholder="收款金额"
+                  :clearable="true" :precision="2" controls-position="right" :controls="false" @change="amountChange" />
                 <span v-else>{{ form.amount }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="备注:">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.remark"
-                  size="small"
-                  type="text"
-                  placeholder="备注"
-                  :clearable="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.remark" size="small" type="text" placeholder="备注"
+                  :clearable="true" />
                 <span v-else style="word-break: break-all">{{
                   form.remark
                 }}</span>
@@ -285,68 +166,28 @@
                 </div>
               </div>
               <div class="details-body">
-                <el-table
-                  ref="filesTable"
-                  :data="form.details"
-                  size="small"
-                  height="100%"
-                  border
-                  header-row-class-name="list-header-row"
-                  highlight-current-row
-                >
-                  <el-table-column
-                    type="index"
-                    label="序号"
-                    width="47"
-                    align="center"
-                  />
-                  <el-table-column
-                    label="任务名称"
-                    prop="taskTypeName"
-                    align="center"
-                    show-overflow-tooltip
-                  >
+                <el-table ref="filesTable" :data="form.details" size="small" height="100%" border
+                  header-row-class-name="list-header-row" highlight-current-row>
+                  <el-table-column type="index" label="序号" width="47" align="center" />
+                  <el-table-column label="任务名称" prop="taskTypeName" align="center" show-overflow-tooltip>
                   </el-table-column>
-                  <el-table-column
-                    label="任务金额"
-                    prop="amount"
-                    width="100"
-                    align="center"
-                  />
-                  <el-table-column
-                    label="本次付款金额"
-                    prop="arriveAmount"
-                    width="100"
-                    align="center"
-                  >
+                  <el-table-column label="任务金额" prop="amount" width="100" align="center" />
+                  <el-table-column label="本次付款金额" prop="arriveAmount" width="100" align="center">
                     <template #default="scope">
                       <template v-if="editStatus">
-                        <el-input-number
-                          v-model="scope.row.arriveAmount"
-                          size="small"
-                          placeholder="本次付款金额"
-                          :precision="2"
-                          :controls="false"
-                          style="width: 100%"
-                          @change="
-                            (arg) =>
-                              amountChangeHandler(
-                                arg,
-                                scope.row,
-                                'arriveAmount'
-                              )
-                          "
-                        />
+                        <el-input-number v-model="scope.row.arriveAmount" size="small" placeholder="本次付款金额" :precision="2"
+                          :controls="false" style="width: 100%" @change="(arg) =>
+                            amountChangeHandler(
+                              arg,
+                              scope.row,
+                              'arriveAmount'
+                            )
+                            " />
                       </template>
                       <template v-else>{{ scope.row.arriveAmount }}</template>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="已付款金额"
-                    prop="arrived"
-                    width="100"
-                    align="center"
-                  />
+                  <el-table-column label="已付款金额" prop="arrived" width="100" align="center" />
                 </el-table>
               </div>
             </el-col>
@@ -356,61 +197,26 @@
                   <i class="fa fa-th-list" aria-hidden="true" /> 附件
                   <i style="color: red">*</i>
                 </div>
-                <el-upload
-                  v-if="editStatus"
-                  action="#"
-                  :http-request="upload"
-                  :with-credentials="true"
-                  :show-file-list="false"
-                  multiple
-                >
-                  <el-button size="small" type="primary" icon="Upload"
-                    >点击上传</el-button
-                  >
+                <el-upload v-if="editStatus" action="#" :http-request="upload" :with-credentials="true"
+                  :show-file-list="false" multiple>
+                  <el-button size="small" type="primary" icon="Upload">点击上传</el-button>
                 </el-upload>
               </div>
               <div class="details-body">
-                <el-table
-                  ref="filesTable"
-                  :data="form.files"
-                  size="small"
-                  height="100%"
-                  border
-                  header-row-class-name="list-header-row"
-                  highlight-current-row
-                >
-                  <el-table-column
-                    type="index"
-                    label="序号"
-                    width="47"
-                    align="center"
-                  />
-                  <el-table-column
-                    label="文件名"
-                    prop="originalFileName"
-                    align="center"
-                    show-overflow-tooltip
-                  >
+                <el-table ref="filesTable" :data="form.files" size="small" height="100%" border
+                  header-row-class-name="list-header-row" highlight-current-row>
+                  <el-table-column type="index" label="序号" width="47" align="center" />
+                  <el-table-column label="文件名" prop="originalFileName" align="center" show-overflow-tooltip>
                     <template #default="scope">
-                      <el-button
-                        size="small"
-                        type="primary"
-                        link
-                        @click="openFile(scope.row)"
-                        >{{ scope.row.originalFileName }}</el-button
-                      >
+                      <el-button size="small" type="primary" link @click="openFile(scope.row)">{{
+                        scope.row.originalFileName }}</el-button>
                     </template>
                   </el-table-column>
                   <el-table-column label="操作" width="50" align="center">
                     <template #default="scope">
                       <div v-if="editStatus">
-                        <el-button
-                          size="small"
-                          link
-                          type="danger"
-                          @click="handlerDelAttach(scope.row, scope.$index)"
-                          >删除</el-button
-                        >
+                        <el-button size="small" link type="danger"
+                          @click="handlerDelAttach(scope.row, scope.$index)">删除</el-button>
                       </div>
                     </template>
                   </el-table-column>
@@ -421,21 +227,10 @@
         </div>
       </div>
     </el-drawer>
-    <el-dialog
-      title="驳回详情"
-      v-model="rejectOpen"
-      width="500px"
-      append-to-body
-      draggable
-    >
+    <el-dialog title="驳回详情" v-model="rejectOpen" width="500px" append-to-body draggable>
       <el-form ref="dictRef" :model="form" label-width="100">
         <el-form-item label="驳回原因" :prop="verifyRemark">
-          <el-input
-            v-model.trim="form.verifyRemark"
-            type="textarea"
-            :rows="3"
-            placeholder="请输入驳回原因"
-          />
+          <el-input v-model.trim="form.verifyRemark" type="textarea" :rows="3" placeholder="请输入驳回原因" />
         </el-form-item>
       </el-form>
       <template #footer>
@@ -479,7 +274,7 @@ const baseUrl = import.meta.env.VITE_APP_BASE_API;
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => {},
+    default: () => { },
   },
 });
 const { getList } = toRefs(props);

+ 2 - 2
src/views/business/financial/contract/index.vue

@@ -16,7 +16,7 @@
             <el-dropdown-item
               icon="Download"
               @click="handleExport"
-              v-hasPermi="['business:waitForCollection:export']"
+              v-hasPermi="['business:collection:export']"
             >
               导出</el-dropdown-item
             >
@@ -163,7 +163,7 @@
             type="warning"
             size="small"
             @click="handleAdd(scope.row)"
-            v-hasPermi="['business:waitForcollection:add']"
+            v-hasPermi="['business:collection:add']"
             >新增收款</el-button
           >
         </template>

+ 119 - 362
src/views/business/financial/payment/form.vue

@@ -4,55 +4,20 @@
     <el-drawer :title="title" v-model="visible" direction="rtl" size="100%">
       <div class="page-container form-container">
         <div class="form-btns-container">
-          <span class="title-label"
-            ><el-icon>
+          <span class="title-label"><el-icon>
               <Document />
             </el-icon>
-            支出信息</span
-          >
-          <el-button-group>
-            <el-button
-              v-if="editStatus"
-              type="primary"
-              size="small"
-              icon="Finished"
-              @click="submitForm"
-              >保存</el-button
-            >
-            <el-button
-              v-else-if="form.verifyDate == null"
-              type="warning"
-              size="small"
-              icon="Edit"
-              @click="editStatus = true"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="form.id && editStatus"
-              type="info"
-              size="small"
-              icon="Close"
-              @click="editStatus = false"
-              >取消编辑</el-button
-            >
-            <!-- <el-button v-if="form.id" type="success" size="small" @click="getForm">
-              <i class="fa fa-refresh" aria-hidden="true" /> 刷新
-            </el-button> -->
-            <!-- <el-button v-if="form.id && !editStatus && form.verifyStatus == 0"
-              v-hasPermi="['business:archive:order:verify']" type="warning" size="small"
-              @click="verifyHandler">审核通过</el-button>
-            <el-button v-if="form.id && !editStatus && form.verifyStatus == 0"
-              v-hasPermi="['business:archive:order:verify']" type="danger" size="small"
-              @click="rejectHandler">驳回</el-button> -->
-            <el-button
-              v-if="form.id && !editStatus && form.verifyDate == null"
-              v-hasPermi="['business:payment:verify']"
-              type="warning"
-              size="small"
-              @click="verifyHandler"
-              >收款审核</el-button
-            >
-          </el-button-group>
+            支出信息</span>
+
+          <el-button v-if="editStatus" type="primary" size="small" icon="Finished" @click="submitForm">保存</el-button>
+          <el-button v-else-if="form.verifyDate == null" type="warning" size="small" icon="Edit"
+            @click="editStatus = true">修改</el-button>
+          <el-button v-if="form.id && editStatus" size="small" icon="Close" @click="editStatus = false">取消修改</el-button>
+
+          <el-button v-show="form.id && !editStatus && form.verifyDate == null"
+            v-hasPermi="['business:payment:submitVerify']" type="primary" size="small" icon="Check"
+            @click="verifyHandler">收款审核</el-button>
+
           <div class="screen-btn" @click="handleScreen">
             <template v-if="!isFullscreen">
               <i class="fa fa-window-maximize" aria-hidden="true" />
@@ -68,172 +33,76 @@
             <!-- <span>关闭</span> -->
           </div>
         </div>
-        <div
-          class="Y-scrollbar"
-          style="
+        <div class="Y-scrollbar" style="
             position: absolute;
             top: 32px;
             bottom: 0;
             width: 100%;
             overflow: auto;
-          "
-        ></div>
-        <el-form
-          ref="orderRef"
-          class="master-container"
-          size="small"
-          :model="form"
-          :rules="rules"
-          label-width="100px"
-        >
+          "></div>
+        <el-form ref="orderRef" class="master-container" size="small" :model="form" :rules="rules" label-width="100px">
           <el-row :gutter="30">
             <el-col :span="6">
               <el-form-item label="支出流水号:">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.flowNo"
-                  readonly
-                  size="small"
-                  type="text"
-                  placeholder="支出流水号"
-                  :clearable="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.flowNo" readonly size="small" type="text"
+                  placeholder="支出流水号" :clearable="true" />
                 <span v-else>{{ form.flowNo }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="支出日期:" prop="formDate" required>
-                <el-date-picker
-                  v-if="editStatus"
-                  v-model="form.formDate"
-                  size="small"
-                  :clearable="true"
-                  format="YYYY-MM-DD"
-                  value-format="YYYY-MM-DD"
-                  align="center"
-                  type="date"
-                  placeholder="支出日期"
-                />
+                <el-date-picker v-if="editStatus" v-model="form.formDate" size="small" :clearable="true"
+                  format="YYYY-MM-DD" value-format="YYYY-MM-DD" align="center" type="date" placeholder="支出日期" />
                 <span v-else>{{ form.formDate }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="支出类目:">
-                <el-select
-                  v-if="editStatus"
-                  v-model.trim="form.paymentCauseId"
-                  placeholder="支出类目"
-                  size="small"
-                  :clearable="true"
-                  @change="paymentCauseChange"
-                >
-                  <el-option
-                    v-for="item in paymentTypes"
-                    :key="item.id"
-                    :label="item.name"
-                    :value="item.id"
-                  />
+                <el-select v-if="editStatus" v-model.trim="form.paymentCauseId" placeholder="支出类目" size="small"
+                  :clearable="true" @change="paymentCauseChange">
+                  <el-option v-for="item in paymentTypes" :key="item.id" :label="item.name" :value="item.id" />
                 </el-select>
                 <span v-else>{{ form.paymentCause }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="支出科目:">
-                <el-select
-                  v-if="editStatus"
-                  v-model.trim="form.paymentSubjectId"
-                  placeholder="支出科目"
-                  size="small"
-                  :clearable="true"
-                  @change="paymentSubjectChange"
-                >
-                  <el-option
-                    v-for="item in paymentSubjects"
-                    :key="item.id"
-                    :label="item.name"
-                    :value="item.id"
-                  />
+                <el-select v-if="editStatus" v-model.trim="form.paymentSubjectId" placeholder="支出科目" size="small"
+                  :clearable="true" @change="paymentSubjectChange">
+                  <el-option v-for="item in paymentSubjects" :key="item.id" :label="item.name" :value="item.id" />
                 </el-select>
                 <span v-else>{{ form.paymentSubject }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="收款账户名:">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.acceptAccount"
-                  size="small"
-                  type="text"
-                  placeholder="收款账户名"
-                  :clearable="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.acceptAccount" size="small" type="text" placeholder="收款账户名"
+                  :clearable="true" />
                 <span v-else>{{ form.acceptAccount }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="收款账号:">
                 <template v-if="editStatus">
-                  <el-input
-                    v-model.trim="form.acceptAccountNo"
-                    size="small"
-                    type="text"
-                    style="width: 66.67%"
-                    placeholder="收款账号"
-                    :clearable="true"
-                  />
+                  <el-input v-model.trim="form.acceptAccountNo" size="small" type="text" style="width: 66.67%"
+                    placeholder="收款账号" :clearable="true" />
                 </template>
-                <span v-else
-                  >{{ form.acceptAccountType }} -
-                  {{ form.acceptAccountNo }}</span
-                >
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="到账日期:" prop="arriveDate">
-                <el-date-picker
-                  v-if="editStatus"
-                  v-model.trim="form.arriveDate"
-                  size="small"
-                  :clearable="true"
-                  format="YYYY-MM-DD"
-                  value-format="YYYY-MM-DD HH:mm:ss"
-                  align="center"
-                  type="date"
-                  placeholder="到账日期"
-                />
-                <span v-else>{{ form.arriveDate }}</span>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="到账时间:" prop="arriveTime">
-                <el-time-select
-                  v-if="editStatus"
-                  v-model.trim="form.arriveTime"
-                  :picker-options="timeOptions"
-                  placeholder="选择时间"
-                />
-                <span v-else>{{ form.arriveTime }}</span>
+                <span v-else>{{ form.acceptAccountType }} -
+                  {{ form.acceptAccountNo }}</span>
               </el-form-item>
             </el-col>
+
             <el-col :span="6">
               <el-form-item label="客户名称" prop="companyName" required>
-                <el-autocomplete
-                  v-if="editStatus"
-                  :fetch-suggestions="querySearchCompanyAsync"
-                  :trigger-on-focus="true"
-                  v-model="form.companyName"
-                  placeholder="请输入客户名称"
-                  popper-class="my-autocomplete"
-                  @select="handleSelectCompany"
-                >
+                <el-autocomplete v-if="editStatus" :fetch-suggestions="querySearchCompanyAsync" :trigger-on-focus="true"
+                  v-model="form.companyName" placeholder="请输入客户名称" popper-class="my-autocomplete"
+                  @select="handleSelectCompany">
                   <template #default="{ item }">
-                    <div
-                      style="
+                    <div style="
                         display: flex;
                         flex-direction: row;
                         justify-content: space-between;
-                      "
-                    >
+                      ">
                       <div class="name" style="font-size: 12px">
                         {{ item.name }}
                       </div>
@@ -246,19 +115,10 @@
             </el-col>
             <el-col :span="6">
               <el-form-item label="合同:" required>
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.contractNo"
-                  size="small"
-                  type="text"
-                  placeholder="请选择"
-                  :clearable="true"
-                >
+                <el-input v-if="editStatus" v-model.trim="form.contractNo" size="small" type="text" placeholder="请选择"
+                  :clearable="true">
                   <template #append>
-                    <el-button
-                      icon="Search"
-                      @click="() => contractChoiceHandler()"
-                    />
+                    <el-button icon="Search" @click="() => contractChoiceHandler()" />
                   </template>
                 </el-input>
                 <span v-else style="width: 100%">
@@ -275,36 +135,26 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="未收款金额:" prop="remark">
-                <span>{{ form.nonpayment }}</span>
+              <el-form-item label="已支出金额:" prop="remark">
+                <span>{{ form.payedAmount }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="支出金额:" required>
-                <el-input-number
-                  v-if="editStatus"
-                  v-model.trim="form.amount"
-                  size="small"
-                  placeholder="收款金额"
-                  :clearable="true"
-                  :precision="2"
-                  controls-position="right"
-                  :controls="false"
-                  @change="amountChange"
-                />
+                <el-input-number v-if="editStatus" v-model.trim="form.amount" size="small" placeholder="收款金额"
+                  :clearable="true" :precision="2" controls-position="right" :controls="false" @change="amountChange" />
                 <span v-else>{{ form.amount }}</span>
               </el-form-item>
             </el-col>
+            <el-col v-if="form.verifyStatus === 2" :span="6">
+              <el-form-item label="驳回原因:" required>
+                <span>{{ form.verifyComment }}</span>
+              </el-form-item>
+            </el-col>
             <el-col :span="12">
               <el-form-item label="备注:">
-                <el-input
-                  v-if="editStatus"
-                  v-model.trim="form.remark"
-                  size="small"
-                  type="text"
-                  placeholder="备注"
-                  :clearable="true"
-                />
+                <el-input v-if="editStatus" v-model.trim="form.remark" size="small" type="text" placeholder="备注"
+                  :clearable="true" />
                 <span v-else style="word-break: break-all">{{
                   form.remark
                 }}</span>
@@ -321,68 +171,28 @@
                 </div>
               </div>
               <div class="details-body">
-                <el-table
-                  ref="filesTable"
-                  :data="form.details"
-                  size="small"
-                  height="100%"
-                  border
-                  header-row-class-name="list-header-row"
-                  highlight-current-row
-                >
-                  <el-table-column
-                    type="index"
-                    label="序号"
-                    width="47"
-                    align="center"
-                  />
-                  <el-table-column
-                    label="任务名称"
-                    prop="taskTypeName"
-                    align="center"
-                    show-overflow-tooltip
-                  >
+                <el-table ref="filesTable" :data="form.details" size="small" height="100%" border
+                  header-row-class-name="list-header-row" highlight-current-row>
+                  <el-table-column type="index" label="序号" width="47" align="center" />
+                  <el-table-column label="任务名称" prop="taskTypeName" align="center" show-overflow-tooltip>
                   </el-table-column>
-                  <el-table-column
-                    label="任务金额"
-                    prop="amount"
-                    width="100"
-                    align="center"
-                  />
-                  <el-table-column
-                    label="本次支出金额"
-                    prop="paymentAmount"
-                    width="100"
-                    align="center"
-                  >
+                  <el-table-column label="任务金额" prop="amount" width="100" align="center" />
+                  <el-table-column label="本次支出金额" prop="paymentAmount" width="100" align="center">
                     <template #default="scope">
                       <template v-if="editStatus">
-                        <el-input-number
-                          v-model="scope.row.paymentAmount"
-                          size="small"
-                          placeholder="本次支出金额"
-                          :precision="2"
-                          :controls="false"
-                          style="width: 100%"
-                          @change="
-                            (arg) =>
-                              amountChangeHandler(
-                                arg,
-                                scope.row,
-                                'paymentAmount'
-                              )
-                          "
-                        />
+                        <el-input-number v-model="scope.row.paymentAmount" size="small" placeholder="本次支出金额"
+                          :precision="2" :controls="false" style="width: 100%" @change="(arg) =>
+                            amountChangeHandler(
+                              arg,
+                              scope.row,
+                              'paymentAmount'
+                            )
+                            " />
                       </template>
                       <template v-else>{{ scope.row.paymentAmount }}</template>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="已支出金额"
-                    prop="arrived"
-                    width="100"
-                    align="center"
-                  />
+                  <el-table-column label="已支出金额" prop="arrived" width="100" align="center" />
                 </el-table>
               </div>
             </el-col>
@@ -392,61 +202,26 @@
                   <i class="fa fa-th-list" aria-hidden="true" /> 附件
                   <i style="color: red">*</i>
                 </div>
-                <el-upload
-                  v-if="editStatus"
-                  action="#"
-                  :http-request="upload"
-                  :with-credentials="true"
-                  :show-file-list="false"
-                  multiple
-                >
-                  <el-button size="small" type="primary" icon="Upload"
-                    >点击上传</el-button
-                  >
+                <el-upload v-if="editStatus" action="#" :http-request="upload" :with-credentials="true"
+                  :show-file-list="false" multiple>
+                  <el-button size="small" type="primary" icon="Upload">点击上传</el-button>
                 </el-upload>
               </div>
               <div class="details-body">
-                <el-table
-                  ref="filesTable"
-                  :data="form.files"
-                  size="small"
-                  height="100%"
-                  border
-                  header-row-class-name="list-header-row"
-                  highlight-current-row
-                >
-                  <el-table-column
-                    type="index"
-                    label="序号"
-                    width="47"
-                    align="center"
-                  />
-                  <el-table-column
-                    label="文件名"
-                    prop="originalFileName"
-                    align="center"
-                    show-overflow-tooltip
-                  >
+                <el-table ref="filesTable" :data="form.files" size="small" height="100%" border
+                  header-row-class-name="list-header-row" highlight-current-row>
+                  <el-table-column type="index" label="序号" width="47" align="center" />
+                  <el-table-column label="文件名" prop="originalFileName" align="center" show-overflow-tooltip>
                     <template #default="scope">
-                      <el-button
-                        size="small"
-                        type="primary"
-                        link
-                        @click="openFile(scope.row)"
-                        >{{ scope.row.originalFileName }}</el-button
-                      >
+                      <el-button size="small" type="primary" link @click="openFile(scope.row)">{{
+                        scope.row.originalFileName }}</el-button>
                     </template>
                   </el-table-column>
                   <el-table-column label="操作" width="50" align="center">
                     <template #default="scope">
                       <div v-if="editStatus">
-                        <el-button
-                          icon="Close"
-                          size="small"
-                          circle
-                          type="danger"
-                          @click="handlerDelAttach(scope.row, scope.$index)"
-                        />
+                        <el-button size="small" link type="danger"
+                          @click="handlerDelAttach(scope.row, scope.$index)">删除</el-button>
                       </div>
                     </template>
                   </el-table-column>
@@ -457,63 +232,33 @@
         </div>
       </div>
     </el-drawer>
-    <el-dialog
-      title="审核详情"
-      v-model="rejectOpen"
-      width="500px"
-      append-to-body
-      draggable
-    >
+    <el-dialog title="审核详情" v-model="rejectOpen" width="500px" append-to-body draggable>
       <el-form ref="dictRef" :model="form" label-width="100" size="small">
         <el-form-item label="审核状态">
-          <el-select
-            v-model.trim="form.verifyStatus"
-            placeholder="请选择"
-            size="small"
-          >
-            <el-option
-              v-for="i in verified"
-              :key="i.value"
-              :label="i.label"
-              :value="i.value"
-            />
+          <el-select v-model.trim="form.verifyStatus" placeholder="请选择" size="small">
+            <el-option v-for="i in verified" :key="i.value" :label="i.label" :value="i.value" />
           </el-select>
         </el-form-item>
         <el-form-item label="实际支出时间" required>
-          <el-date-picker
-            v-model.trim="form.actuallyDate"
-            size="small"
-            :clearable="true"
-            format="YYYY-MM-DD HH:mm:ss"
-            value-format="YYYY-MM-DD HH:mm:ss"
-            align="center"
-            type="datetime"
-            placeholder="实际付款时间"
-          />
+          <el-date-picker v-model.trim="form.actuallyDate" size="small" :clearable="true" format="YYYY-MM-DD HH:mm:ss"
+            value-format="YYYY-MM-DD HH:mm:ss" align="center" type="datetime" placeholder="实际付款时间" />
         </el-form-item>
         <!-- <el-form-item label="支出附件上传" required>
 
         </el-form-item> -->
-        <el-form-item label="审核意见" :prop="verifyRemark">
-          <el-input
-            v-model.trim="form.verifyComment"
-            type="textarea"
-            :rows="3"
-            placeholder="请输入审核意见"
-          />
+        <el-form-item :label="form.verifyStatus == 2 ? '驳回原因' : '审核意见'" :prop="verifyRemark">
+          <el-input v-model.trim="form.verifyComment" type="textarea" maxlength="200" show-word-limit :rows="3"
+            placeholder="请输入审核意见" />
         </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button type="primary" @click="verifyUpload()">确 定</el-button>
-          <el-button @click="rejectCancel">取 消</el-button>
+          <el-button type="primary" icon="Finished" size="small" @click="verifyUpload()">确 定</el-button>
+          <el-button icon="close" size="small" @click="rejectCancel">取 消</el-button>
         </div>
       </template>
     </el-dialog>
-    <dialog-contract-choice
-      ref="contractChoiceRef"
-      @choice="contractChoiceHandle"
-    />
+    <dialog-contract-choice ref="contractChoiceRef" @choice="contractChoiceHandle" />
   </div>
 </template>
 <script setup>
@@ -549,7 +294,7 @@ const baseUrl = import.meta.env.VITE_APP_BASE_API;
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => {},
+    default: () => { },
   },
 });
 const { getList } = toRefs(props);
@@ -655,6 +400,8 @@ function open(id) {
     getPayment(id).then((res) => {
       form.value = res.data;
       editStatus.value = false;
+      paymentCauseChange(form.value.paymentCauseId);
+      paymentSubjectChange(form.value.paymentSubjectId);
     });
   }
 }
@@ -697,6 +444,10 @@ function submitForm() {
     proxy.$modal.msgError("请输入支出金额");
     return;
   }
+  if (form.value.amount > form.value.contractAmount - form.value.payedAmount) {
+    proxy.$modal.msgError("支出金额大于合同金额");
+    return;
+  }
   proxy.$refs["orderRef"].validate((valid) => {
     if (valid && detailValid()) {
       const formValue = form.value;
@@ -839,11 +590,11 @@ function querySearchCompanyAsync(queryString, cb) {
   const query =
     queryString.length > 0
       ? {
-          keyword: queryString,
-          pageSize: 50,
-          pageNum: 1,
-          orderByColumn: "create_time",
-        }
+        keyword: queryString,
+        pageSize: 50,
+        pageNum: 1,
+        orderByColumn: "create_time",
+      }
       : { pageSize: 50, pageNum: 1, orderByColumn: "create_time" };
   listCompany(query).then((res) => {
     cb(res.rows);
@@ -857,17 +608,19 @@ function handleSelectCompany(item) {
 
 function paymentCauseChange(arg) {
   const index = paymentTypes.value.findIndex((v) => v.id === arg);
-  paymentSubjects.value = [{ id: "0", name: "请选择" }].concat(
-    paymentTypes.value[index].bizPaymentSubjectList
-  );
-  form.value.paymentCause = paymentTypes.value[index].name;
-  if (
-    paymentSubjects.value.findIndex(
-      (v) => v.id === form.value.paymentSubjectId
-    ) < 0
-  ) {
-    form.value.paymentSubjectId = null;
-    form.value.paymentSubject = "";
+  if (index >= 0) {
+    paymentSubjects.value = [{ id: "0", name: "请选择" }].concat(
+      paymentTypes.value[index].bizPaymentSubjectList
+    );
+    form.value.paymentCause = paymentTypes.value[index].name;
+    if (
+      paymentSubjects.value.findIndex(
+        (v) => v.id === form.value.paymentSubjectId
+      ) < 0
+    ) {
+      form.value.paymentSubjectId = null;
+      form.value.paymentSubject = "";
+    }
   }
 }
 function contractChoiceHandler() {
@@ -881,6 +634,8 @@ function contractChoiceHandler() {
 function contractChoiceHandle(info) {
   form.value.contractId = info.id;
   form.value.contractNo = info.contractNo;
+  form.value.contractAmount = info.trueAmount;
+  form.value.payedAmount = info.paidAmount;
   listContractDetail({ contractId: info.id }).then((res) => {
     const rows = res.rows;
     rows.forEach((item) => {
@@ -909,8 +664,10 @@ function handlerDelAttach(row, index) {
 }
 
 function paymentSubjectChange(id) {
-  const index = paymentSubjects.value.findIndex((v) => v.id === arg);
-  form.value.paymentSubjectId = paymentSubjects.value[index].id;
+  const index = paymentSubjects.value.findIndex((v) => v.id === id);
+  if (index >= 0) {
+    form.value.paymentSubjectId = paymentSubjects.value[index].id;
+  }
 }
 
 init();

+ 2 - 2
src/views/business/financial/payment/index.vue

@@ -7,7 +7,7 @@
         size="small"
         icon="Plus"
         @click="handleAdd"
-        v-hasPermi="['business:waitForcollection:add']"
+        v-hasPermi="['business:payment:add']"
         >新增</el-button
       >
       <el-dropdown>
@@ -19,7 +19,7 @@
             <el-dropdown-item
               icon="Download"
               @click="handleExport"
-              v-hasPermi="['business:waitForCollection:export']"
+              v-hasPermi="['business:payment:export']"
             >
               导出</el-dropdown-item
             >

+ 9 - 2
src/views/business/housingFund/confirm/form.vue

@@ -151,9 +151,10 @@
                 v-if="selections.length > 0"
                 type="danger"
                 size="small"
+                icon="delete"
                 @click="handleEmployeeBatchDelete"
-                ><i class="fa fa-trash" aria-hidden="true" /> 删除</el-button
-              >
+                >删除
+              </el-button>
             </div>
             <div class="details-body">
               <div>
@@ -691,6 +692,12 @@ function upload(param, row, field) {
   uploadFile(formData).then((res) => {
     if (res.code === 200) {
       const file = {};
+      file.fileType =
+        res.newFileName.split(".")[res.newFileName.split(".").length - 1];
+      if (file.fileType !== "png" && file.fileType !== "jpg") {
+        proxy.$modal.msgError("文件类型错误,只能上传png,jpg格式");
+        return;
+      }
       file.fileName = res.newFileName;
       file.url = res.url;
       file.originalFileName = res.originalFilename;

+ 104 - 154
src/views/business/housingFund/confirm/index.vue

@@ -8,112 +8,49 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:workOrder:export']"
-            >
-              导出</el-dropdown-item
-            >
+            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:workOrder:export']">
+              导出</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      label-width="68px"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="78px">
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input
-          v-model="queryParams.companyName"
-          style="width: 150px"
-          placeholder="请输入客户名称"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.companyName" style="width: 150px" placeholder="请输入客户名称" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item label="月份:">
-        <el-select
-          v-model.trim="queryParams.month"
-          size="small"
-          placeholder="月份"
-          style="width: 130px"
-          @change="handleQuery"
-        >
-          <el-option
-            v-for="item in selectMonths"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
+        <el-select v-model.trim="queryParams.month" size="small" placeholder="月份" style="width: 130px"
+          @change="handleQuery">
+          <el-option v-for="item in selectMonths" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
       <el-form-item label="状态:">
-        <el-select
-          v-model.trim="queryParams.status"
-          prop="status"
-          size="small"
-          type="text"
-          placeholder="状态"
-          :clearable="true"
-          style="width: 130px"
-          @clear="clearStatus"
-        >
-          <el-option
-            v-for="item in selectStatus"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
+        <el-select v-model.trim="queryParams.status" prop="status" size="small" type="text" placeholder="状态"
+          :clearable="true" style="width: 130px" @clear="clearStatus">
+          <el-option v-for="item in selectStatus" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="list"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="list" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column
-        label="客户名称"
-        align="center"
-        prop="companyName"
-        min-width="250"
-      />
-      <el-table-column
-        label="来源"
-        align="center"
-        prop="fromCompanyName"
-        min-width="100"
-      />
-      <el-table-column
-        label="纳税性质"
-        width="120"
-        align="center"
-        prop="taxType"
-      />
-      <el-table-column
-        label="税号"
-        align="center"
-        prop="socialCreditCode"
-        min-width="200"
-      />
+      <el-table-column label="客户名称" align="center" prop="companyName" min-width="250" />
+      <el-table-column label="来源" align="center" prop="fromCompanyName" min-width="100" />
+      <el-table-column label="纳税性质" width="120" align="center" prop="taxType" />
+      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="200" />
       <el-table-column label="当前期间" min-width="90" align="center">
         <template #default="scope">
           <!-- {{ scope.row.currentDate != null && scope.row.currentDate > scope.row.checkoutDate ? scope.row.currentDate :
@@ -123,97 +60,96 @@
       </el-table-column>
       <el-table-column align="center">
         <template #header>
-          <div
-            style="
+          <div style="
               display: flex;
               flex-direction: row;
               justify-content: space-between;
-            "
-          >
+            ">
             <div style="display: flex; flex-direction: row">
-              <el-button
-                link
-                type="primary"
-                size="small"
-                icon="ArrowLeft"
-                @click="prevYear"
-              />
+              <el-button link type="primary" size="small" icon="ArrowLeft" @click="prevYear" />
               <el-link style="margin: 0 40px" :underline="false">{{
                 queryParams.year
               }}</el-link>
-              <el-button
-                link
-                type="primary"
-                icon="ArrowRight"
-                size="small"
-                @click="nextYear"
-              />
+              <el-button link type="primary" icon="ArrowRight" size="small" @click="nextYear" />
             </div>
             <div style="display: flex; flex-direction: row; margin-right: 20px">
-              <div
-                v-for="item in selectStatus"
-                :key="item.value"
-                style="display: flex; flex-direction: row; margin-right: 10px"
-              >
-                <div
-                  :style="{
-                    backgroundColor: item.color,
-                    width: '14px',
-                    height: '14px',
-                    margin: 'auto',
-                    borderRadius: '50%',
-                    border: item.color === '#fff' ? '1px solid #ddd' : 'none',
-                  }"
-                />
-                <div
-                  style="
+              <div v-for="item in selectStatus" :key="item.value"
+                style="display: flex; flex-direction: row; margin-right: 10px">
+                <div :style="{
+                  backgroundColor: item.color,
+                  width: '14px',
+                  height: '14px',
+                  margin: 'auto',
+                  borderRadius: '50%',
+                  border: item.color === '#fff' ? '1px solid #ddd' : 'none',
+                }" />
+                <div style="
                     display: inline-block;
                     margin-left: 10px;
                     line-height: 36px;
-                  "
-                >
+                  ">
                   {{ item.label }}
                 </div>
               </div>
             </div>
           </div>
         </template>
-        <el-table-column
-          v-for="item in selectMonths"
-          :key="item.value"
-          min-width="50"
-          :label="item.label"
-          align="center"
-        >
+        <el-table-column v-for="item in selectMonths" :key="item.value" min-width="50" :label="item.label" align="center">
           <template #default="scope">
-            <el-button
-              size="small"
-              :style="monthStatusStyle(scope.row, item.value)"
-              circle
-              @click="openDetail(scope.row, item)"
-              style="width: 12px; height: 12px"
-            />
+            <el-button size="small" :style="monthStatusStyle(scope.row, item.value)" circle
+              @click="openDetail(scope.row, item)" style="width: 12px; height: 12px" />
           </template>
         </el-table-column>
       </el-table-column>
-      <el-table-column
-        label="工单执行人"
-        align="center"
-        prop="serviceName"
-        width="100"
-      >
+      <el-table-column label="工单执行人" align="center" prop="serviceName" width="100">
       </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" />
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable>
+      <el-form :model="queryParams" ref="queryRef" :rules="rules" size="small" label-width="100">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery" />
+            </el-form-item>
+            <el-form-item label="月份:">
+              <el-select v-model.trim="queryParams.month" size="small" placeholder="月份" :clearable="true">
+                <el-option v-for="item in selectMonths" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="纳税性质:" prop="taxType">
+              <el-select size="small" v-model="queryParams.taxType" placeholder="请选择纳税性质" :clearable="true"
+                @change="taxTypeChange">
+                <el-option v-for="item in taxTypes" :key="item.label" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="状态:">
+              <el-select v-model.trim="queryParams.status" prop="status" size="small" type="text" placeholder="状态"
+                :clearable="true" @clear="clearStatus">
+                <el-option v-for="item in selectStatus" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="来源:" prop="fromCompanyName">
+              <el-input size="small" v-model="queryParams.fromCompanyName" type="text" placeholder="客户来源"
+                :clearable="true" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" icon="Finished" size="small" @click="handleQuery">确 定</el-button>
+          <el-button icon="close" size="small" @click="moreSearch = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -222,6 +158,7 @@ import useUserStore from "@/store/modules/user";
 import { listHousingFundConfirm } from "@/api/business/production/housingFundConfirm";
 import { listCompany } from "@/api/business/crm/company";
 import { reactive, ref, toRefs } from "vue";
+import { taxTypes } from "@/utils/default";
 import formDialog from "./form";
 import viewDialog from "./view";
 // import workorderForm from "./form"
@@ -231,8 +168,10 @@ const { proxy } = getCurrentInstance();
 
 const list = ref([]);
 const loading = ref(true);
+const oneself = ref(false);
 const ids = ref([]);
 const single = ref(true);
+const moreSearch = ref(false);
 const multiple = ref(true);
 const total = ref(0);
 const prev = ref([]);
@@ -361,9 +300,20 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
+  moreSearch.value = false;
   getList();
 }
 
@@ -374,7 +324,7 @@ function resetQuery() {
     pageNum: 1,
     pageSize: 10,
     year: proxy.moment().format("yyyy"),
-    month: proxy.moment().subtract(1, "month").format("MM"),
+    month: proxy.moment().format("MM"),
     companyName: "",
   };
   handleQuery();
@@ -443,21 +393,21 @@ function directDialog(detail) {
 function viewable() {
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:socialSecurityConfirm:view")
+    permissions.includes("business:housingFundConfirm:view")
   );
 }
 
 function editable() {
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:socialSecurityConfirm:edit")
+    permissions.includes("business:housingFundConfirm:edit")
   );
 }
 
 function verifiable() {
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:socialSecurityConfirm:verify")
+    permissions.includes("business:housingFundConfirm:verify")
   );
 }
 

+ 1 - 8
src/views/business/housingFund/declare/form.vue

@@ -93,14 +93,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="合计:">
-              <el-input-number
-                v-model="form.amount"
-                size="small"
-                placeholder="个人缴纳"
-                :precision="2"
-                :controls="false"
-                style="width: 100%"
-              />
+              <div v-if="form.amount != 0">{{ form.amount }}</div>
             </el-form-item>
           </el-col>
           <el-col :span="24">

+ 107 - 148
src/views/business/housingFund/declare/index.vue

@@ -8,13 +8,8 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:deposit:export']"
-            >
-              导出</el-dropdown-item
-            >
+            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:deposit:export']">
+              导出</el-dropdown-item>
             <!-- <el-dropdown-item type="warning" size="small" icon="Download" @click="handleArea"
               v-hasPermi="['business:deposit:export']"> area</el-dropdown-item> -->
           </el-dropdown-menu>
@@ -22,127 +17,59 @@
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      label-width="68px"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="78px">
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input
-          v-model="queryParams.companyName"
-          placeholder="请输入客户名称"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item label="所属月:">
-        <el-date-picker
-          v-model="currentMonth"
-          type="month"
-          format="YYYY年MM月"
-          :clearable="false"
-          value-format="YYYY-MM-01"
-          @change="currentMonthChange"
-          :disabled-date="disabledDateHandler"
-        />
+        <el-date-picker v-model="currentMonth" type="month" format="YYYY年MM月" :clearable="false" value-format="YYYY-MM-01"
+          @change="currentMonthChange" :disabled-date="disabledDateHandler" />
       </el-form-item>
       <el-form-item label="状态:">
-        <el-select
-          v-model.trim="queryParams.status"
-          prop="status"
-          size="small"
-          type="text"
-          placeholder="状态"
-          :clearable="true"
-          style="width: 130px"
-          @clear="clearStatus"
-        >
-          <el-option
-            v-for="item in selectStatus"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
+        <el-select v-model.trim="queryParams.status" prop="status" size="small" type="text" placeholder="状态"
+          :clearable="true" style="width: 130px" @clear="clearStatus">
+          <el-option v-for="item in selectStatus" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="orderList"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="orderList" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column
-        label="客户名称"
-        min-width="250"
-        align="center"
-        prop="companyName"
-      />
-      <el-table-column
-        label="来源"
-        min-width="100"
-        align="center"
-        prop="fromCompanyName"
-      />
-      <el-table-column
-        label="纳税性质"
-        width="100"
-        align="center"
-        prop="taxType"
-      />
+      <el-table-column label="客户名称" min-width="250" align="center" prop="companyName" />
+      <el-table-column label="来源" min-width="100" align="center" prop="fromCompanyName" />
+      <el-table-column label="纳税性质" width="100" align="center" prop="taxType" />
       <el-table-column label="人员信息" width="100" align="center" prop="">
         <template #default="scope">
-          <el-button
-            v-if="scope.row.detail != null"
-            link
-            type="primary"
-            size="small"
-            @click="showMember(scope.row)"
-            >查看</el-button
-          >
+          <el-button v-if="scope.row.detail != null" link type="primary" size="small"
+            @click="showMember(scope.row)">查看</el-button>
         </template>
       </el-table-column>
       <el-table-column label="申报填写" width="100" align="center" prop="">
         <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            size="small"
-            @click="fillIn(scope.row)"
-            >{{
-              scope.row.detail == null
-                ? "填写"
-                : scope.row.detail.status === 1
-                ? "进行中"
-                : "已填写"
-            }}</el-button
-          >
+          <el-button link type="primary" size="small" @click="fillIn(scope.row)">{{
+            scope.row.detail == null
+            ? "填写"
+            : scope.row.detail.status === 1
+              ? "进行中"
+              : "已填写"
+          }}</el-button>
         </template>
       </el-table-column>
       <el-table-column label="申报附件" width="100" align="center" prop="">
         <template #default="scope">
-          <el-button
-            size="small"
-            type="primary"
-            link
-            :disabled="scope.row.detail == null || scope.row.detail.status <= 1"
-            @click="showFiles(scope.row)"
-            >查看文件</el-button
-          >
+          <el-button size="small" type="primary" link :disabled="scope.row.detail == null || scope.row.detail.status <= 1"
+            @click="showFiles(scope.row)">查看文件</el-button>
         </template>
       </el-table-column>
       <el-table-column label="状态" width="110" align="center" prop="">
@@ -151,36 +78,28 @@
             {{ getStatusLabel(scope.row) }}
             <el-popover placement="top-start" width="250" trigger="hover">
               <div style="display: flex; flex-direction: row">
-                <div
-                  v-for="item in selectStatus"
-                  :key="item.value"
-                  style="display: flex; flex-direction: row; margin-right: 10px"
-                >
-                  <div
-                    :style="{
-                      backgroundColor: item.color,
-                      width: '14px',
-                      height: '14px',
-                      margin: 'auto',
-                      borderRadius: '50%',
-                      border: item.color === '#fff' ? '1px solid #ddd' : 'none',
-                    }"
-                  />
-                  <div
-                    style="
+                <div v-for="item in selectStatus" :key="item.value"
+                  style="display: flex; flex-direction: row; margin-right: 10px">
+                  <div :style="{
+                    backgroundColor: item.color,
+                    width: '14px',
+                    height: '14px',
+                    margin: 'auto',
+                    borderRadius: '50%',
+                    border: item.color === '#fff' ? '1px solid #ddd' : 'none',
+                  }" />
+                  <div style="
                       display: inline-block;
                       margin-left: 10px;
                       line-height: 36px;
                       font-size: 10px;
-                    "
-                  >
+                    ">
                     {{ item.label }}
                   </div>
                 </div>
               </div>
               <template #reference>
-                <span
-                  style="
+                <span style="
                     color: #fff;
                     font-size: 12px;
                     text-align: center;
@@ -190,9 +109,7 @@
                     height: 14px;
                     background-color: #ccc;
                     border-radius: 50%;
-                  "
-                  >?</span
-                >
+                  ">?</span>
               </template>
             </el-popover>
           </div>
@@ -201,31 +118,58 @@
       <el-table-column label="执行人" width="80" align="center" prop="" />
       <el-table-column label="操作" width="80" align="center" prop="">
         <template #default="scope">
-          <el-button
-            size="small"
-            type="primary"
-            link
-            :disabled="
-              scope.row.detail == null || scope.row.detail.status !== 3
-            "
-            @click="turnBack(scope.row.detail)"
-            >退回</el-button
-          >
+          <el-button size="small" type="primary" link :disabled="scope.row.detail == null || scope.row.detail.status !== 3
+            " @click="turnBack(scope.row.detail)">退回</el-button>
         </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" />
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
     <member-dialog ref="memeberDialogRef" :get-list="getList" />
     <FileListDialog ref="fileListDialogRef" :get-list="getList" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable>
+      <el-form :model="queryParams" ref="queryRef" size="small" :rules="rules" label-width="100">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery" />
+            </el-form-item>
+            <el-form-item label="所属月:">
+              <el-date-picker v-model="currentMonth" type="month" format="YYYY年MM月" :clearable="false"
+                value-format="YYYY-MM-01" @change="currentMonthChange" :disabled-date="disabledDateHandler" />
+            </el-form-item>
+            <el-form-item label="纳税性质:" prop="taxType">
+              <el-select size="small" v-model="queryParams.taxType" placeholder="请选择纳税性质" :clearable="true"
+                @change="taxTypeChange">
+                <el-option v-for="item in taxTypes" :key="item.label" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="状态:">
+              <el-select v-model.trim="queryParams.status" prop="status" size="small" type="text" placeholder="状态"
+                :clearable="true" @clear="clearStatus">
+                <el-option v-for="item in selectStatus" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="来源:" prop="fromCompanyName">
+              <el-input size="small" v-model="queryParams.fromCompanyName" type="text" placeholder="客户来源"
+                :clearable="true" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" icon="Finished" size="small" @click="handleQuery">确 定</el-button>
+          <el-button icon="close" size="small" @click="moreSearch = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -239,6 +183,7 @@ import { uploadFile } from "@/api/tool/file";
 import { listCompany } from "@/api/business/crm/company";
 import { ref } from "vue";
 import formDialog from "./form";
+import { taxTypes } from "@/utils/default";
 import viewDialog from "./view";
 import memberDialog from "../memberDialog";
 import FileListDialog from "../fileListDialog.vue";
@@ -251,11 +196,13 @@ const loading = ref(true);
 const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
+const oneself = ref(false);
 const total = ref(0);
 const prev = ref([]);
 const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
 const showViewer = ref(false);
 const currentFileList = ref([]);
+const moreSearch = ref(false);
 const showIndex = ref(0);
 const formDialogRef = ref(null);
 const viewDialogRef = ref(null);
@@ -331,9 +278,20 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
+  moreSearch.value = false;
   getList();
 }
 
@@ -346,6 +304,7 @@ function resetQuery() {
     year: proxy.moment().format("YYYY"),
     month: proxy.moment().format("MM"),
   };
+  currentMonth.value = proxy.moment().format("YYYY-MM-01");
   handleQuery();
 }
 
@@ -435,21 +394,21 @@ function directDialog(detail) {
 function viewable() {
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:socialSecurityDeclare:view")
+    permissions.includes("business:housingFundDeclare:view")
   );
 }
 
 function editable() {
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:socialSecurityDeclare:edit")
+    permissions.includes("business:housingFundDeclare:edit")
   );
 }
 
 function verifiable() {
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:socialSecurityDeclare:verify")
+    permissions.includes("business:housingFundDeclare:verify")
   );
 }
 

+ 155 - 124
src/views/business/housingFund/declare/view.vue

@@ -1,11 +1,18 @@
 <template>
-  <el-dialog title="公积金申报信息" v-model="visible" :width="width" append-to-body draggable @close="close">
+  <el-dialog
+    title="公积金申报信息"
+    v-model="visible"
+    :width="width"
+    append-to-body
+    draggable
+    @close="close"
+  >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
     </div> -->
     <!-- 功能按钮 -->
-    <div style="padding: 8px 24px 16px 24px;">
+    <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="120px" v-model="form">
         <el-row :gutter="30">
           <el-col :span="12">
@@ -21,17 +28,15 @@
           <el-col :span="12">
             <el-form-item label="窗口缴纳:" required class="edit-label">
               <template #label>
-                <div>窗口缴纳
-                </div>
+                <div>窗口缴纳</div>
               </template>
-              <div>{{ form.isPayOnWindow === 1 ? '是' : '否' }}</div>
+              <div>{{ form.isPayOnWindow === 1 ? "是" : "否" }}</div>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="公积金单位账号" required class="edit-label">
               <template #label>
-                <div>公积金单位账号
-                </div>
+                <div>公积金单位账号</div>
               </template>
               <div>{{ form.housingFundUnitAccount }}</div>
             </el-form-item>
@@ -39,8 +44,7 @@
           <el-col :span="12">
             <el-form-item label="公积金秘钥密码" required class="edit-label">
               <template #label>
-                <div>公积金秘钥密码
-                </div>
+                <div>公积金秘钥密码</div>
               </template>
               <div>{{ form.housingFundPassword }}</div>
             </el-form-item>
@@ -48,8 +52,7 @@
           <el-col :span="12">
             <el-form-item label="公积金划款密码" required class="edit-label">
               <template #label>
-                <div>公积金划款密码
-                </div>
+                <div>公积金划款密码</div>
               </template>
               <div>{{ form.housingFundDeductionPassword }}</div>
             </el-form-item>
@@ -72,17 +75,36 @@
           </el-col>
           <el-col :span="24">
             <el-form-item label="备注">
-              <el-input v-model.trim="form.content" readonly type="textarea" rows="2" />
+              <div>{{ form.content }}</div>
             </el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="凭证" required>
-              <el-table ref="dbTable" :data="form.evidenceFiles" size="small" border
-                header-row-class-name="list-header-row" row-class-name="list-row">
-                <el-table-column label="文件名" prop="originalFileName" align="center" show-overflow-tooltip>
+              <el-table
+                ref="dbTable"
+                :data="form.evidenceFiles"
+                size="small"
+                border
+                header-row-class-name="list-header-row"
+                row-class-name="list-row"
+              >
+                <el-table-column
+                  label="文件名"
+                  prop="originalFileName"
+                  align="center"
+                  show-overflow-tooltip
+                >
                   <template #default="scope">
-                    <el-button size="small" type="text" @click="openFile(scope.row)">{{ scope.row.originalFileName == '' ?
-                      '打开文件' : scope.row.originalFileName }}</el-button>
+                    <el-button
+                      size="small"
+                      type="text"
+                      @click="openFile(scope.row)"
+                      >{{
+                        scope.row.originalFileName == ""
+                          ? "打开文件"
+                          : scope.row.originalFileName
+                      }}</el-button
+                    >
                   </template>
                 </el-table-column>
               </el-table>
@@ -91,184 +113,189 @@
         </el-row>
       </el-form>
     </div>
-    <div class="form-btns-container" style="height: 40px;">
-      <el-button size="small" style="float: right;" @click="close"><i class="fa fa-close" aria-hidden="true" f />
-        取消</el-button>
+    <div class="form-btns-container" style="height: 40px">
+      <el-button size="small" style="float: right" @click="close"
+        ><i class="fa fa-close" aria-hidden="true" f /> 取消</el-button
+      >
     </div>
     <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
     <print-dialog ref="printDialog" :parent="this" /> -->
   </el-dialog>
 </template>
 <script setup>
-import { getDetail, saveDetail } from "@/api/business/production/housingFundDeclare";
-import { uploadFile } from '@/api/tool/file'
+import {
+  getDetail,
+  saveDetail,
+} from "@/api/business/production/housingFundDeclare";
+import { uploadFile } from "@/api/tool/file";
 import { ref } from "vue";
-const { proxy } = getCurrentInstance()
-const visible = ref(false)
-const width = ref(800)
-const selections = ref([])
-const currentSource = ref(null)
-const editStatus = ref(false)
-const canSave = ref(false)
-const baseUrl = ref(import.meta.env.VITE_APP_BASE_API)
+const { proxy } = getCurrentInstance();
+const visible = ref(false);
+const width = ref(800);
+const selections = ref([]);
+const currentSource = ref(null);
+const editStatus = ref(false);
+const canSave = ref(false);
+const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { },
-  }
+    default: () => {},
+  },
 });
 
-const { getList } = toRefs(props)
-const total = ref(0)
+const { getList } = toRefs(props);
+const total = ref(0);
 
 const employeeEmptyData = {
   id: null,
-  title: '',
-  remark: '',
-  employeeName: '',
-  departmentName: '',
-  idCardImage: '',
-  idCardImageBack: '',
-  idiograph: '',
+  title: "",
+  remark: "",
+  employeeName: "",
+  departmentName: "",
+  idCardImage: "",
+  idCardImageBack: "",
+  idiograph: "",
   details: [],
-  editStatus: true
-}
+  editStatus: true,
+};
 
-const form = ref({})
+const form = ref({});
 
 const emptyForm = {
-  details: []
-}
+  details: [],
+};
 
 function open(detail) {
-  visible.value = true
-  form.value = detail
-  loadData()
+  visible.value = true;
+  form.value = detail;
+  loadData();
 }
 
 function loadData() {
-  getDetail(form.value).then(res => {
-    form.value = { ...proxy.deepClone(emptyForm), ...res.data }
-    amountChangeHandler()
-  })
+  getDetail(form.value).then((res) => {
+    form.value = { ...proxy.deepClone(emptyForm), ...res.data };
+    amountChangeHandler();
+  });
 }
 
 function close() {
-  visible.value = false
-  reset()
+  visible.value = false;
+  reset();
 }
 
 function reset() {
-  form.value = proxy.deepClone(emptyForm)
-  canSave.value = false
+  form.value = proxy.deepClone(emptyForm);
+  canSave.value = false;
 }
 
 function handleCurrentChange(row) {
-  currentSource.value = row
+  currentSource.value = row;
 }
 
 function handleCheckChange(selection) {
-  selections.value = selection.map((item) => item)
+  selections.value = selection.map((item) => item);
 }
 
 function handleSave() {
   for (let i = 0; i < form.value.details.length; i++) {
-    const l = form.value.details[i]
+    const l = form.value.details[i];
     // 数据校验
-    if (l.employeeName == null || l.employeeName === '') {
-      proxy.$modal.msgError(`第${i + 1}行姓名不能为空`)
-      return
+    if (l.employeeName == null || l.employeeName === "") {
+      proxy.$modal.msgError(`第${i + 1}行姓名不能为空`);
+      return;
     }
-    if (l.phone == null || l.phone === '') {
-      proxy.$modal.msgError(`第${i + 1}行电话不能为空`)
-      return
+    if (l.phone == null || l.phone === "") {
+      proxy.$modal.msgError(`第${i + 1}行电话不能为空`);
+      return;
     }
     // 正则表达式匹配身份证号的格式
-    const regExp = /1[3-9]\d{9}/
+    const regExp = /1[3-9]\d{9}/;
     if (!regExp.test(l.phone)) {
-      proxy.$modal.msgError(`第${i + 1}行请输入正确的电话号码!`)
-      return
+      proxy.$modal.msgError(`第${i + 1}行请输入正确的电话号码!`);
+      return;
     }
     if (!l.idCardImage) {
-      proxy.$modal.msgError(`第${i + 1}行身份证正面照不能为空`)
-      return
+      proxy.$modal.msgError(`第${i + 1}行身份证正面照不能为空`);
+      return;
     }
     if (!l.idCardImageBack) {
-      proxy.$modal.msgError(`第${i + 1}行身份证反面照不能为空`)
-      return
+      proxy.$modal.msgError(`第${i + 1}行身份证反面照不能为空`);
+      return;
     }
     if (!l.cardinalNumber) {
-      proxy.$modal.msgError(`第${i + 1}行基数不能为空`)
-      return
+      proxy.$modal.msgError(`第${i + 1}行基数不能为空`);
+      return;
     }
     if (!l.medicalCardinalNumber) {
-      proxy.$modal.msgError(`第${i + 1}行医疗基数不能为空`)
-      return
+      proxy.$modal.msgError(`第${i + 1}行医疗基数不能为空`);
+      return;
     }
   }
   if (form.value.isFirstSocialSecurity === 0) {
     if (!form.value.governmentAccountNo) {
-      proxy.$modal.msgError('请输入政务网账号')
-      return
+      proxy.$modal.msgError("请输入政务网账号");
+      return;
     }
     if (!form.value.governmentPassword) {
-      proxy.$modal.msgError('请输入政务网密码')
-      return
+      proxy.$modal.msgError("请输入政务网密码");
+      return;
     }
     if (!passwordCheck(form.value.governmentPassword)) {
-      proxy.$modal.msgError('请输入正确的政务网密码')
-      return
+      proxy.$modal.msgError("请输入正确的政务网密码");
+      return;
     }
     if (!form.value.socialSecurityAccountNo) {
-      proxy.$modal.msgError('请输入社保账号')
-      return
+      proxy.$modal.msgError("请输入社保账号");
+      return;
     }
     if (!form.value.socialSecurityPassword) {
-      proxy.$modal.msgError('请输入社保密码')
-      return
+      proxy.$modal.msgError("请输入社保密码");
+      return;
     }
     if (!passwordCheck(form.value.socialSecurityPassword)) {
-      proxy.$modal.msgError('请输入正确的社保密码')
-      return
+      proxy.$modal.msgError("请输入正确的社保密码");
+      return;
     }
     if (!form.value.employeePassword) {
-      proxy.$modal.msgError('请输入用工密码')
-      return
+      proxy.$modal.msgError("请输入用工密码");
+      return;
     }
     if (!passwordCheck(form.value.employeePassword)) {
-      proxy.$modal.msgError('请输入正确的用工密码')
-      return
+      proxy.$modal.msgError("请输入正确的用工密码");
+      return;
     }
   }
-  proxy.$modal.confirm('确认保存么?').then(() => {
-    const saveValue = proxy.deepClone(form.value)
-    saveValue.status = 3
-    saveDetail(saveValue).then(res => {
-      proxy.$modal.msgSuccess('保存成功')
-      reset()
-      close()
-      getList.value()
+  proxy.$modal
+    .confirm("确认保存么?")
+    .then(() => {
+      const saveValue = proxy.deepClone(form.value);
+      saveValue.status = 3;
+      saveDetail(saveValue).then((res) => {
+        proxy.$modal.msgSuccess("保存成功");
+        reset();
+        close();
+        getList.value();
+      });
     })
-  }).catch(err => {
-    proxy.$modal.msg('取消保存')
-  })
-
-
+    .catch((err) => {
+      proxy.$modal.msg("取消保存");
+    });
 }
 
 function passwordCheckHandler(value, field) {
   // console.log(value)
   if (!passwordCheck(form.value[field])) {
-    proxy.$modal.msgError('请输入正确密码')
+    proxy.$modal.msgError("请输入正确密码");
   }
 }
 
 function passwordCheck(value) {
-  const pattern = /^[A-Za-z0-9~!@#$%^&*()_+-=]*$/
+  const pattern = /^[A-Za-z0-9~!@#$%^&*()_+-=]*$/;
   if (!pattern.test(value)) {
-    return false
+    return false;
   }
-  return true
+  return true;
 }
 
 function upload(param) {
@@ -281,38 +308,42 @@ function upload(param) {
       file.url = res.url;
       file.originalFileName = res.originalFilename;
       file.fileUrl = res.fileName;
-      form.value.evidenceFiles.push(file)
+      form.value.evidenceFiles.push(file);
     }
   });
 }
 
 function openFile(row) {
-  window.open(`${baseUrl.value}${row.fileUrl}`)
+  window.open(`${baseUrl.value}${row.fileUrl}`);
 }
 
 function changeEdit() {
-  editStatus.value = !editStatus.value
+  editStatus.value = !editStatus.value;
 }
 
 function amountChangeHandler() {
-  let amount = 0
-  amount += form.value.unitAmount == null ? 0 : form.value.unitAmount
-  amount += form.value.individualAmount == null ? 0 : form.value.individualAmount
-  form.value.amount = amount
+  let amount = 0;
+  amount += form.value.unitAmount == null ? 0 : form.value.unitAmount;
+  amount +=
+    form.value.individualAmount == null ? 0 : form.value.individualAmount;
+  form.value.amount = amount;
 }
 
 function handleDel(row, index) {
-  proxy.$modal.confirm('确定删除吗?').then(_ => {
-    form.value.evidenceFiles.splice(index, 1)
-  }).catch(_ => {
-    proxy.$modal.msg('已取消删除')
-  })
+  proxy.$modal
+    .confirm("确定删除吗?")
+    .then((_) => {
+      form.value.evidenceFiles.splice(index, 1);
+    })
+    .catch((_) => {
+      proxy.$modal.msg("已取消删除");
+    });
 }
 
 // 暴露给父组件的方法
 defineExpose({
-  open
-})
+  open,
+});
 </script>
 <style scoped>
 .img {

+ 50 - 201
src/views/business/paymentEntry/type/index.vue

@@ -6,8 +6,7 @@
         <div class="page-container list-container">
           <!--操作按钮 开始-->
           <div>
-            <span
-              style="
+            <span style="
                 display: inline-block;
                 height: 20px;
                 line-height: 18px;
@@ -16,122 +15,49 @@
                 margin-top: 5px;
                 font-weight: 700;
                 border-left: 3px;
-              "
-              >支出类目</span
-            >
-            <el-button
-              type="primary"
-              size="small"
-              v-hasPermi="['paymentEntry:type:add']"
-              icon="plus"
-              @click="newType"
-            >
-              新增</el-button
-            >
+              ">支出类目</span>
+            <el-button type="primary" size="small" v-hasPermi="['paymentEntry:type:add']" icon="plus" @click="newType">
+              新增</el-button>
 
-            <el-button
-              type="success"
-              size="small"
-              icon="refresh"
-              @click="loadData"
-              v-hasPermi="['paymentEntry:type:list']"
-            >
-              刷新</el-button
-            >
+            <el-button type="success" size="small" icon="refresh" @click="loadData">
+              刷新</el-button>
           </div>
-          <div
-            class="el-table-container"
-            style="height: 100%; position: relative; overflow: auto"
-          >
-            <div
-              style="
+          <div class="el-table-container" style="height: 100%; position: relative; overflow: auto">
+            <div style="
                 height: 100%;
                 position: absolute;
                 top: 0;
                 left: 0;
                 right: 0;
                 bottom: 0;
-              "
-            >
-              <el-table
-                class="table-falex"
-                v-loading="loading"
-                :data="typeList"
-                size="small"
-                border
-                height="100%"
-                @row-click="rowClick"
-                @selection-change="handleSelectionChange"
-                highlight-current-row="true"
-              >
+              ">
+              <el-table class="table-falex" v-loading="loading" :data="typeList" size="small" border height="100%"
+                @row-click="rowClick" @selection-change="handleSelectionChange" highlight-current-row="true">
                 <el-table-column label="支出类目" align="center" prop="name">
                   <template #default="scope">
-                    <el-input
-                      size="small"
-                      v-if="scope.row.isAdd || scope.row.isEdit"
-                      v-model="scope.row.name"
-                      placeholder="请输入支出类目"
-                    ></el-input>
+                    <el-input size="small" v-if="scope.row.isAdd || scope.row.isEdit" v-model="scope.row.name"
+                      placeholder="请输入支出类目"></el-input>
                     <span v-else>{{ scope.row.name }}</span>
                   </template>
                 </el-table-column>
 
                 <el-table-column label="备注" align="center" prop="remark">
                   <template #default="scope">
-                    <el-input
-                      size="small"
-                      v-if="scope.row.isAdd || scope.row.isEdit"
-                      v-model="scope.row.remark"
-                      placeholder="请输入备注"
-                    ></el-input>
+                    <el-input size="small" v-if="scope.row.isAdd || scope.row.isEdit" v-model="scope.row.remark"
+                      placeholder="请输入备注"></el-input>
                     <span v-else>{{ scope.row.remark }}</span>
                   </template>
                 </el-table-column>
-                <el-table-column
-                  label="操作"
-                  align="center"
-                  class-name="small-padding fixed-width"
-                >
+                <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
                   <template #default="scope">
-                    <el-button
-                      v-if="!scope.row.isAdd && !scope.row.isEdit"
-                      link
-                      type="warning"
-                      size="small"
-                      @click="handleUpdate(scope.row)"
-                      circle
-                      v-hasPermi="['paymentEntry:type:edit']"
-                      >修改</el-button
-                    >
-                    <el-button
-                      v-if="!scope.row.isAdd && !scope.row.isEdit"
-                      link
-                      type="danger"
-                      size="small"
-                      @click="handleDelete(scope.row)"
-                      v-hasPermi="['paymentEntry:type:remove']"
-                      >删除</el-button
-                    >
-                    <el-button
-                      v-if="scope.row.isEdit || scope.row.isAdd"
-                      link
-                      type="primary"
-                      size="small"
-                      @click="typeleSave(scope.row)"
-                      v-hasPermi="[
-                        'paymentEntry:type:edit',
-                        'paymentEntry:type:add',
-                      ]"
-                      >保存</el-button
-                    >
-                    <el-button
-                      v-if="scope.row.isEdit || scope.row.isAdd"
-                      link
-                      type="Delete"
-                      size="small"
-                      @click="handleCancel(scope.row)"
-                      >取消</el-button
-                    >
+                    <el-button v-show="!scope.row.isAdd && !scope.row.isEdit" link type="warning" size="small"
+                      @click="handleUpdate(scope.row)" circle v-hasPermi="['paymentEntry:type:edit']">修改</el-button>
+                    <el-button v-show="!scope.row.isAdd && !scope.row.isEdit" link type="danger" size="small"
+                      @click="handleDelete(scope.row)" v-hasPermi="['paymentEntry:type:remove']">删除</el-button>
+                    <el-button v-if="scope.row.isEdit || scope.row.isAdd" link type="primary" size="small"
+                      @click="typeleSave(scope.row)">保存</el-button>
+                    <el-button v-if="scope.row.isEdit || scope.row.isAdd" link type="Delete" size="small"
+                      @click="handleCancel(scope.row)">取消</el-button>
                   </template>
                 </el-table-column>
               </el-table>
@@ -145,8 +71,7 @@
         <div class="page-container list-container">
           <!--操作按钮 开始-->
           <div>
-            <span
-              style="
+            <span style="
                 display: inline-block;
                 height: 20px;
                 line-height: 18px;
@@ -155,118 +80,47 @@
                 margin-top: 5px;
                 font-weight: 700;
                 border-left: 3px;
-              "
-              >支付科目</span
-            >
+              ">支付科目</span>
             <template v-if="currentDepartment !== null">
-              <el-button
-                type="primary"
-                size="small"
-                icon="plus"
-                v-hasPermi="['expenditure:subject:add']"
-                @click="newSubType"
-                >新增</el-button
-              >
+              <el-button type="primary" size="small" icon="plus" v-hasPermi="['expenditure:subject:add']"
+                @click="newSubType">新增</el-button>
             </template>
-            <el-button
-              type="success"
-              size="small"
-              icon="refresh"
-              @click="loadSubData"
-              v-hasPermi="['paymentEntry:type:list']"
-            >
-              刷新</el-button
-            >
+            <el-button type="success" size="small" icon="refresh" @click="loadSubData">
+              刷新</el-button>
           </div>
           <!--支付科目列表数据 开始-->
           <div class="el-table-container" style="height: 100%">
             <div style="height: 100%">
-              <el-table
-                v-loading="loading"
-                :data="typeSubLis"
-                size="small"
-                border
-                height="100%"
-                @selection-change="handleSelectionChange"
-              >
+              <el-table v-loading="loading" :data="typeSubLis" size="small" border height="100%"
+                @selection-change="handleSelectionChange">
                 <el-table-column label="支付科目" align="center" prop="name">
                   <template #default="scope">
-                    <el-input
-                      size="small"
-                      v-if="scope.row.isAdd || scope.row.isEdit"
-                      v-model="scope.row.name"
-                      placeholder="请输入支付科目"
-                    ></el-input>
+                    <el-input size="small" v-if="scope.row.isAdd || scope.row.isEdit" v-model="scope.row.name"
+                      placeholder="请输入支付科目"></el-input>
                     <span v-else>{{ scope.row.name }}</span>
                   </template>
                 </el-table-column>
                 <el-table-column label="状态" align="center" prop="status">
                   <template #default="scope">
-                    <el-select
-                      size="small"
-                      style="width: 100%"
-                      v-if="scope.row.isAdd || scope.row.isEdit"
-                      v-model.trim="scope.row.status"
-                      placeholder="选择状态"
-                      :clearable="true"
-                    >
-                      <el-option
-                        v-for="item in subType"
-                        :key="item.label"
-                        :label="item.label"
-                        :value="item.value"
-                      />
+                    <el-select size="small" style="width: 100%" v-if="scope.row.isAdd || scope.row.isEdit"
+                      v-model.trim="scope.row.status" placeholder="选择状态" :clearable="true">
+                      <el-option v-for="item in subType" :key="item.label" :label="item.label" :value="item.value" />
                     </el-select>
                     <span v-else>{{
                       scope.row.status === 0 ? "启用" : "停用"
                     }}</span>
                   </template>
                 </el-table-column>
-                <el-table-column
-                  label="操作"
-                  align="center"
-                  class-name="small-padding fixed-width"
-                >
+                <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
                   <template #default="scope">
-                    <el-button
-                      v-if="!scope.row.isAdd && !scope.row.isEdit"
-                      link
-                      type="warning"
-                      size="small"
-                      @click="handleUpdate(scope.row)"
-                      circle
-                      v-hasPermi="['expenditure:subject:edit']"
-                      >修改</el-button
-                    >
-                    <el-button
-                      v-if="!scope.row.isAdd && !scope.row.isEdit"
-                      link
-                      type="danger"
-                      size="small"
-                      @click="handleSubDelete(scope.row)"
-                      v-hasPermi="['expenditure:subject:remove']"
-                      >删除</el-button
-                    >
-                    <el-button
-                      v-if="scope.row.isEdit || scope.row.isAdd"
-                      link
-                      type="primary"
-                      size="small"
-                      @click="typeSubSave(scope.row)"
-                      v-hasPermi="[
-                        'expenditure:subject:edit',
-                        'expenditure:subject:add',
-                      ]"
-                      >保存</el-button
-                    >
-                    <el-button
-                      v-if="scope.row.isEdit || scope.row.isAdd"
-                      link
-                      type="Delete"
-                      size="small"
-                      @click="subCancel(scope.row)"
-                      >取消</el-button
-                    >
+                    <el-button v-show="!scope.row.isAdd && !scope.row.isEdit" link type="warning" size="small"
+                      @click="handleUpdate(scope.row)" circle v-hasPermi="['expenditure:subject:edit']">修改</el-button>
+                    <el-button v-show="!scope.row.isAdd && !scope.row.isEdit" link type="danger" size="small"
+                      @click="handleSubDelete(scope.row)" v-hasPermi="['expenditure:subject:remove']">删除</el-button>
+                    <el-button v-if="scope.row.isEdit || scope.row.isAdd" link type="primary" size="small"
+                      @click="typeSubSave(scope.row)">保存</el-button>
+                    <el-button v-if="scope.row.isEdit || scope.row.isAdd" link type="Delete" size="small"
+                      @click="subCancel(scope.row)">取消</el-button>
                   </template>
                 </el-table-column>
               </el-table>
@@ -276,13 +130,8 @@
       </el-col>
     </el-row>
     <!-- 分页 -->
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      v-model:page="queryParams.pageNum"
-      v-model:limit="queryParams.pageSize"
-      @pagination="loadSubData"
-    />
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
+      @pagination="loadSubData" />
   </div>
 </template>
 
@@ -545,7 +394,7 @@ function handleDelete(row) {
         getList();
         proxy.$modal.msgSuccess("删除成功!");
       })
-      .catch(() => {});
+      .catch(() => { });
   });
 }
 /** 科目删除按钮操作 */
@@ -561,7 +410,7 @@ function handleSubDelete(row) {
       getTypeSubList(queryParams.value);
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => {});
+    .catch(() => { });
 }
 
 /** 导出按钮操作 */

+ 2 - 4
src/views/business/production/IndividualIncomeTaxIs/FormDialog.vue

@@ -27,7 +27,7 @@
               <el-form-item label="个税金额">
                 <el-input-number
                   v-if="!isView"
-                  label="个税金额"
+                  placeholder="个税金额"
                   v-model="emptyForm.amount"
                   style="
                     display: flex;
@@ -63,7 +63,6 @@
                     :with-credentials="true"
                     list-type="picture-card"
                     :show-file-list="false"
-                    :file-list="files"
                     multiple
                   >
                     <img
@@ -134,7 +133,7 @@
                   <el-table-column
                     v-if="!isView"
                     label="操作"
-                    width="47"
+                    width="50"
                     align="center"
                   >
                     <template #default="scope">
@@ -228,7 +227,6 @@ const emptyForm = ref({
   status: null,
   fileName: "",
   fileList: [],
-  amount: 0,
   year: "",
   month: "",
   reportFiles: [],

+ 4 - 4
src/views/business/production/IndividualIncomeTaxIs/MemberDialog.vue

@@ -218,11 +218,11 @@ const followQuery = ref({});
 function open(data) {
   console.log("工资open");
   getSalaryDetail(data).then((response) => {
-    console.log("响应", response);
-    detailList.value = response.data.details;
-    content.value = response.data.content;
+    if (response.data) {
+      detailList.value = response.data.details;
+      content.value = response.data.content;
+    }
     visible.value = true;
-    console.log(detailList.value);
   });
 }
 

+ 47 - 27
src/views/business/production/IndividualIncomeTaxIs/index.vue

@@ -7,13 +7,23 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="80px"
+      label-width="78px"
     >
+      <el-form-item label="客户名称:">
+        <el-input
+          v-model="queryParams.companyName"
+          type="text"
+          placeholder="请输入客户名称"
+          :clearable="true"
+          style="width: 220px"
+        />
+      </el-form-item>
       <el-form-item label="个税所属期:" prop="year">
         <el-date-picker
           v-model="currentMonth"
           type="month"
           format="YYYY年MM月"
+          style="width: 120px"
           value-format="YYYY-MM-01"
           :disabled-date="disabledDateHandler"
           @change="monthChangeHandler"
@@ -26,7 +36,6 @@
           placeholder="状态"
           :clearable="true"
           style="width: 130px"
-          @clear="clearStatus"
         >
           <el-option
             v-for="item in selectStatus"
@@ -36,14 +45,9 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="关键字:">
-        <el-input
-          v-model="queryParams.companyName"
-          type="text"
-          placeholder="请输入客户名称"
-          :clearable="true"
-          style="width: 220px"
-        />
+
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
@@ -68,7 +72,7 @@
         label="客户名称"
         align="center"
         prop="companyName"
-        width="180"
+        min-width="250"
       />
       <el-table-column
         label="来源"
@@ -82,12 +86,18 @@
         prop="socialCreditCode"
         width="180"
       />
-      <el-table-column label="纳税性质" align="center" prop="taxType" />
+      <el-table-column
+        label="纳税性质"
+        align="center"
+        width="100"
+        prop="taxType"
+      />
       <el-table-column label="人员信息" align="center">
         <template #default="scope">
           <el-button
-            v-if="scope.row.detail != null"
-            type="text"
+            v-show="scope.row.detail != null"
+            link
+            type="primary"
             size="small"
             @click="showMember(scope.row)"
             v-hasPermi="['business:tax:wageList']"
@@ -98,9 +108,10 @@
       <el-table-column label="个税填写" align="center" prop="evidenceFile">
         <template #default="scope">
           <el-button
-            type="text"
+            type="primary"
+            link
             size="small"
-            v-hasPermi="['business:individualIncomeTaxDetail:query']"
+            v-hasPermi="['business:individualIncomeTaxDetail:saveDetail']"
             @click="fillIn(scope.row)"
             >{{
               scope.row.detail == null
@@ -115,7 +126,8 @@
       <el-table-column label="个税附件" align="center" prop="content">
         <template #default="scope">
           <el-button
-            type="text"
+            type="primary"
+            link
             size="small"
             v-hasPermi="['business:individualIncomeTaxDetail:query']"
             :disabled="
@@ -179,13 +191,9 @@
           </div>
         </template>
       </el-table-column>
+      <el-table-column label="执行人" align="center" prop="serviceName" />
       <el-table-column
-        label="工单执行人"
-        align="center"
-        prop="currentEmployeeName"
-      />
-      <el-table-column
-        label="划款退回"
+        label="操作"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -225,9 +233,10 @@
       v-model="moreSearch"
       width="620px"
       append-to-body
+      size="small"
       draggable
     >
-      <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
+      <el-form ref="dictRef" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="报税所属期:" prop="year">
@@ -247,7 +256,6 @@
                 v-model="queryParams.taxType"
                 placeholder="请选择纳税性质"
                 :clearable="true"
-                @change="taxTypeChange"
               >
                 <el-option
                   v-for="item in taxTypes"
@@ -264,7 +272,6 @@
                 type="text"
                 placeholder="状态"
                 :clearable="true"
-                @clear="clearStatus"
               >
                 <el-option
                   v-for="item in selectStatus"
@@ -333,6 +340,7 @@ import {
 import { selectMonths, selectStatus, taxTypes } from "@/utils/default";
 import MemberDialog from "./MemberDialog.vue";
 import FormDialog from "./FormDialog.vue";
+import useUserStore from "@/store/modules/user";
 
 const { proxy } = getCurrentInstance();
 /** 字典数组区 */
@@ -342,6 +350,7 @@ const detailList = ref([]);
 const bizStandardCompanyList = ref([]);
 const loading = ref(false);
 const ids = ref([]);
+const oneself = ref(false);
 const moreSearch = ref(false);
 const single = ref(true);
 const multiple = ref(true);
@@ -369,7 +378,7 @@ const queryParams = ref({
   socialCreditCode: null,
   taxType: null,
   currentEmployeeName: null,
-  year: proxy.moment().format("YYYY"),
+  year: proxy.moment().subtract(1, "month").format("YYYY"),
   month: proxy.moment().subtract(1, "month").format("MM"),
 });
 
@@ -386,6 +395,7 @@ function monthChangeHandler(arg) {
   queryParams.value.year = year;
   queryParams.value.month = month;
   console.log(year, month);
+  handleQuery();
 }
 
 function getStatusStyle(row) {
@@ -461,6 +471,16 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   moreSearch.value = false;

+ 1 - 1
src/views/business/production/IndividualIncomeTaxIsZero/FormDialog.vue

@@ -91,7 +91,6 @@
         size="small"
         icon="Finished"
         style="float: right"
-        v-hasPermi="['business:individualIncomeTaxDetail:saveDetail']"
         @click="handleSave"
       >
         保存</el-button
@@ -150,6 +149,7 @@ const emptyForm = ref({
   originalFileName: "",
   status: null,
   fileName: "",
+  files: [],
   fileList: [],
   amount: 0,
   year: "",

+ 5 - 4
src/views/business/production/IndividualIncomeTaxIsZero/MemberDialog.vue

@@ -20,7 +20,6 @@
               header-row-class-name="list-header-row"
               row-class-name="list-row"
               show-summary
-              :summary-method="getSummaries"
             >
               <el-table-column label="员工姓名" width="80" align="center">
                 <template #default="scope">
@@ -219,10 +218,12 @@ function open(data) {
   console.log("工资open");
   getSalaryDetail(data).then((response) => {
     console.log("响应", response);
-    detailList.value = response.data.details;
-    content.value = response.data.content;
+    if (response.data) {
+      detailList.value = response.data.details;
+      content.value = response.data.content;
+      console.log(detailList.value);
+    }
     visible.value = true;
-    console.log(detailList.value);
   });
 }
 

+ 46 - 56
src/views/business/production/IndividualIncomeTaxIsZero/index.vue

@@ -29,11 +29,20 @@
       :inline="true"
       label-width="80px"
     >
+      <el-form-item label="客户名称:">
+        <el-input
+          v-model="queryParams.companyName"
+          placeholder="请输入客户名称"
+          :clearable="true"
+          style="width: 220px"
+        />
+      </el-form-item>
       <el-form-item label="个税所属期:" prop="year">
         <el-date-picker
           v-model="currentMonth"
           type="month"
           format="YYYY年MM月"
+          style="width: 120px"
           value-format="YYYY-MM-01"
           :disabled-date="disabledDateHandler"
           @change="monthChangeHandler"
@@ -42,11 +51,9 @@
       <el-form-item label="个税状态:">
         <el-select
           v-model="queryParams.status"
-          type="text"
           placeholder="状态"
           :clearable="true"
           style="width: 130px"
-          @clear="clearStatus"
         >
           <el-option
             v-for="item in selectStatus"
@@ -56,14 +63,9 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="关键字:">
-        <el-input
-          v-model="queryParams.companyName"
-          type="text"
-          placeholder="请输入客户名称"
-          :clearable="true"
-          style="width: 220px"
-        />
+
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
@@ -105,14 +107,15 @@
       <el-table-column
         label="纳税性质"
         align="center"
-        min-width="100"
+        width="100"
         prop="taxType"
       />
       <el-table-column label="人员信息" min-width="60" align="center">
         <template #default="scope">
           <el-button
-            v-if="scope.row.detail != null"
-            type="text"
+            v-show="scope.row.detail != null"
+            link
+            type="primary"
             size="small"
             @click="showMember(scope.row)"
             v-hasPermi="['business:tax:wageList']"
@@ -128,10 +131,11 @@
       >
         <template #default="scope">
           <el-button
-            type="text"
+            link
+            type="primary"
             size="small"
             @click="fillIn(scope.row)"
-            v-hasPermi="['business:individualIncomeTaxDetail:query']"
+            v-hasPermi="['business:individualIncomeTaxDetail:saveDetail']"
             >{{
               scope.row.detail == null
                 ? "填写"
@@ -151,7 +155,8 @@
         <template #default="scope">
           <el-button
             size="small"
-            type="text"
+            link
+            type="primary"
             v-hasPermi="['business:individualIncomeTaxDetail:query']"
             :disabled="
               scope.row.detail == null || scope.row.detail.evidenceFile === ''
@@ -215,13 +220,13 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="工单执行人"
+        label="执行人"
         align="center"
         min-width="100"
-        prop="currentEmployeeName"
+        prop="serviceName"
       />
       <el-table-column
-        label="划款退回"
+        label="操作"
         align="center"
         min-width="80"
         fixed="right"
@@ -230,12 +235,13 @@
         <template #default="scope">
           <el-button
             size="small"
-            type="text"
+            link
+            type="primary"
             :disabled="
               scope.row.detail == null || scope.row.detail.status !== 3
             "
             @click="turnBack(scope.row)"
-            v-hasPermi="['business:tax:saveDetail']"
+            v-hasPermi="['business:individualIncomeTaxDetail:saveDetail']"
             >退回</el-button
           >
         </template>
@@ -259,13 +265,14 @@
       title="更多搜索"
       v-model="moreSearch"
       width="620px"
+      size="small"
       append-to-body
       draggable
     >
-      <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
+      <el-form ref="dictRef" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="税所属期:" prop="year">
+            <el-form-item label="税所属期:" prop="year">
               <el-date-picker
                 size="small"
                 v-model="currentMonth"
@@ -282,7 +289,6 @@
                 v-model="queryParams.taxType"
                 placeholder="请选择纳税性质"
                 :clearable="true"
-                @change="taxTypeChange"
               >
                 <el-option
                   v-for="item in taxTypes"
@@ -296,10 +302,8 @@
               <el-select
                 size="small"
                 v-model="queryParams.status"
-                type="text"
                 placeholder="状态"
                 :clearable="true"
-                @clear="clearStatus"
               >
                 <el-option
                   v-for="item in selectStatus"
@@ -315,7 +319,6 @@
               <el-input
                 size="small"
                 v-model="queryParams.companyName"
-                type="text"
                 placeholder="请输入客户名称"
                 :clearable="true"
               />
@@ -324,7 +327,6 @@
               <el-input
                 v-model="queryParams.fromCompanyName"
                 size="small"
-                type="text"
                 placeholder="请输入客户来源"
                 :clearable="true"
               />
@@ -333,7 +335,6 @@
               <el-input
                 size="small"
                 v-model="queryParams.socialCreditCode"
-                type="text"
                 placeholder="请输入税号"
                 :clearable="true"
               />
@@ -359,7 +360,7 @@
   </div>
 </template>
 
-<script setup name="Detail">
+<script setup name="DetailZero">
 import {
   listDetail,
   delDetail,
@@ -367,8 +368,10 @@ import {
   exportDetail,
 } from "@/api/business/production/detailIsZero";
 import { selectMonths, taxTypes } from "@/utils/default";
+import useUserStore from "@/store/modules/user";
 import MemberDialog from "./MemberDialog.vue";
 import FormDialog from "./FormDialog";
+import { get } from "@vueuse/core";
 
 const { proxy } = getCurrentInstance();
 /** 字典数组区 */
@@ -378,6 +381,7 @@ const detailList = ref([]);
 const bizStandardCompanyList = ref([]);
 const loading = ref(false);
 const ids = ref([]);
+const oneself = ref(false);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
@@ -414,19 +418,9 @@ const queryParams = ref({
   companyId: null,
   year: null,
   month: null,
-  amount: null,
-  status: null,
-  evidenceFile: null,
-  content: null,
-  verifyContent: null,
-  reportFile: null,
-  companyName: null,
-  fromCompanyName: null,
-  evidenceFile: null,
-  socialCreditCode: null,
   taxType: null,
   currentEmployeeName: null,
-  year: proxy.moment().format("YYYY"),
+  year: proxy.moment().subtract(1, "month").format("YYYY"),
   month: proxy.moment().subtract(1, "month").format("MM"),
 });
 
@@ -447,11 +441,10 @@ function monthChangeHandler(arg) {
   const month = proxy.moment(arg).format("MM");
   queryParams.value.year = year;
   queryParams.value.month = month;
-  console.log(year, month);
+  handleQuery();
 }
 
 function getStatusStyle(row) {
-  console.log(row);
   if (row.detail == null) {
     return { color: getStatusColor(0), verticalAlign: "middle" };
   } else {
@@ -495,6 +488,16 @@ function fillIn(row) {
   }
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 打开弹窗 */
 function openByPermission(detailItem, row, item) {
   console.log(detailItem);
@@ -529,10 +532,8 @@ function turnBack(row) {
 /** 查询个税详情列表 */
 function getList() {
   loading.value = true;
-
   listDetail(queryParams.value).then((response) => {
     detailList.value = response.rows;
-    console.log(response);
     total.value = response.total;
     loading.value = false;
   });
@@ -552,19 +553,8 @@ function resetQuery() {
   queryParams.value = {
     pageNum: 1,
     pageSize: 10,
-    companyId: null,
     year: null,
     month: null,
-    amount: null,
-    status: null,
-    evidenceFile: null,
-    content: null,
-    verifyContent: null,
-    reportFile: null,
-    companyName: null,
-    fromCompanyName: null,
-    evidenceFile: null,
-    socialCreditCode: null,
     taxType: null,
     currentEmployeeName: null,
     year: proxy.moment().format("YYYY"),

+ 16 - 2
src/views/business/production/archiveTicket/index.vue

@@ -21,7 +21,7 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="78px"
     >
       <el-form-item label="客户名称:">
         <el-input
@@ -44,6 +44,9 @@
           :disabled-date="disabledDateHandler"
         />
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
@@ -98,7 +101,7 @@
             link
             size="small"
             type="primary"
-            v-hasPermi="['business:archiveReceiveTicket:view']"
+            v-hasPermi="['business:archiveReceiveTicket:query']"
             circle
             @click="viewHandle(scope.row)"
             >查看</el-button
@@ -227,6 +230,7 @@ const loading = ref(true);
 const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
+const oneself = ref(false);
 const total = ref(0);
 const prev = ref([]);
 const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
@@ -285,6 +289,16 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;

+ 35 - 163
src/views/business/production/deduction/index.vue

@@ -8,13 +8,8 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:deposit:export']"
-            >
-              导出</el-dropdown-item
-            >
+            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:deposit:export']">
+              导出</el-dropdown-item>
             <!-- <el-dropdown-item type="warning" size="small" icon="Download" @click="handleArea"
               v-hasPermi="['business:deposit:export']"> area</el-dropdown-item> -->
           </el-dropdown-menu>
@@ -25,62 +20,27 @@
       <!--<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      label-width="68px"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="68px">
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input
-          v-model="queryParams.companyName"
-          placeholder="请输入客户名称"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="orderList"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="orderList" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column
-        align="center"
-        type="index"
-        label="序号"
-        width="50"
-      ></el-table-column>
-      <el-table-column
-        label="日期"
-        align="center"
-        prop="depositDate"
-        width="200"
-      />
+      <el-table-column align="center" type="index" label="序号" width="50"></el-table-column>
+      <el-table-column label="日期" align="center" prop="depositDate" width="200" />
       <el-table-column label="金额" align="center" prop="amount" width="120" />
       <el-table-column label="附件" align="center" prop="files">
         <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            size="small"
-            @click="showFileList(scope.row)"
-            >查看</el-button
-          >
+          <el-button link type="primary" size="small" @click="showFileList(scope.row)">查看</el-button>
         </template>
       </el-table-column>
       <el-table-column label="审核状态" align="center" width="80" prop="remark">
@@ -88,125 +48,47 @@
           <dict-tag :options="verify_status" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column
-        label="操作"
-        align="center"
-        prop="verifyStatus"
-        width="200"
-      >
+      <el-table-column label="操作" align="center" prop="verifyStatus" width="200">
         <template #default="scope">
-          <el-button
-            v-if="scope.row.status === 0"
-            link
-            type="primary"
-            size="small"
-            @click="handleInfo(scope.row)"
-            v-hasPermi="['business:deposit:info']"
-            >编辑</el-button
-          >
-          <el-button
-            v-if="scope.row.status === 0"
-            link
-            type="primary"
-            size="small"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['business:deposit:remove']"
-            >删除</el-button
-          >
-          <el-button
-            v-if="scope.row.status !== 0"
-            link
-            type="primary"
-            size="small"
-            @click="handleInfo(scope.row)"
-            v-hasPermi="['business:deposit:info']"
-            >查看</el-button
-          >
+          <el-button v-show="scope.row.status === 0" link type="primary" size="small" @click="handleInfo(scope.row)"
+            v-hasPermi="['business:deposit:info']">编辑</el-button>
+          <el-button v-show="scope.row.status === 0" link type="primary" size="small" @click="handleDelete(scope.row)"
+            v-hasPermi="['business:deposit:remove']">删除</el-button>
+          <el-button v-show="scope.row.status !== 0" link type="primary" size="small" @click="handleInfo(scope.row)"
+            v-hasPermi="['business:deposit:info']">查看</el-button>
         </template>
       </el-table-column>
     </el-table>
     <!-- <Deposit-form ref="DepositRef" :get-list="getList" /> -->
-    <el-dialog
-      title="新增存款"
-      v-model="formOpen"
-      width="500px"
-      append-to-body
-      draggable
-      @close="formCancel"
-    >
+    <el-dialog title="新增存款" v-model="formOpen" width="500px" append-to-body draggable @close="formCancel">
       <el-form ref="dictRef" :model="form" label-width="100" size="small">
         <el-row :gutter="30">
           <el-col :span="24">
             <el-form-item label="存款金额:">
-              <el-input-number
-                v-if="form.status !== 1"
-                v-model="form.amount"
-                :precision="2"
-                :step="0.1"
-                :min="0"
-                :controls="false"
-              />
+              <el-input-number v-if="form.status !== 1" v-model="form.amount" :precision="2" :step="0.1" :min="0"
+                :controls="false" />
               <div v-else>{{ form.amount }}</div>
             </el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="凭证附件:">
               <div class="details-btns-container" style="display: flex">
-                <el-upload
-                  v-if="form.status !== 1"
-                  action="#"
-                  :http-request="upload"
-                  :with-credentials="true"
-                  :show-file-list="false"
-                  multiple
-                >
-                  <el-button size="small" type="primary" icon="Upload"
-                    >点击上传</el-button
-                  >
+                <el-upload v-if="form.status !== 1" action="#" :http-request="upload" :with-credentials="true"
+                  :show-file-list="false" multiple>
+                  <el-button size="small" type="primary" icon="Upload">点击上传</el-button>
                 </el-upload>
               </div>
-              <el-table
-                ref="filesTable"
-                :data="form.files"
-                size="small"
-                height="200px"
-                border
-                header-row-class-name="list-header-row"
-              >
-                <el-table-column
-                  v-if="form.status !== 1"
-                  label="操作"
-                  width="47"
-                  align="center"
-                >
+              <el-table ref="filesTable" :data="form.files" size="small" height="200px" border
+                header-row-class-name="list-header-row">
+                <el-table-column v-if="form.status !== 1" label="操作" width="47" align="center">
                   <template #default="scope">
-                    <el-button
-                      icon="Minus"
-                      size="small"
-                      circle
-                      type="danger"
-                      @click="handleDelFile(scope.$index)"
-                    />
+                    <el-button icon="Minus" size="small" circle type="danger" @click="handleDelFile(scope.$index)" />
                   </template>
                 </el-table-column>
-                <el-table-column
-                  type="index"
-                  label="序号"
-                  width="47"
-                  align="center"
-                />
-                <el-table-column
-                  label="文件名"
-                  prop="originalFileName"
-                  align="center"
-                >
+                <el-table-column type="index" label="序号" width="47" align="center" />
+                <el-table-column label="文件名" prop="originalFileName" align="center">
                   <template #default="scope">
-                    <el-link
-                      :href="`${baseUrl}${scope.row.fileUrl}`"
-                      :underline="false"
-                      target="_blank"
-                      type="primary"
-                    >
+                    <el-link :href="`${baseUrl}${scope.row.fileUrl}`" :underline="false" target="_blank" type="primary">
                       {{ scope.row.originalFileName }}
                     </el-link>
                   </template>
@@ -224,19 +106,9 @@
       </template>
     </el-dialog>
     <!-- 分页 -->
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      v-model:page="queryParams.pageNum"
-      v-model:limit="queryParams.pageSize"
-      @pagination="getList"
-    />
-    <el-image-viewer
-      v-if="showViewer"
-      :url-list="currentFileList"
-      @close="closeImages"
-      :initial-index="showIndex"
-    />
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
+      @pagination="getList" />
+    <el-image-viewer v-if="showViewer" :url-list="currentFileList" @close="closeImages" :initial-index="showIndex" />
   </div>
 </template>
 
@@ -365,7 +237,7 @@ function handleDelete(row) {
       getList();
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => {});
+    .catch(() => { });
 }
 
 /** 导出按钮操作 */

+ 1 - 0
src/views/business/production/feedbackDialog.vue

@@ -76,6 +76,7 @@ function cancel() {
 function open(options) {
   formOpen.value = true;
   form.value = options;
+  form.value.feedbackContent = "";
 }
 
 function reset() {

+ 36 - 68
src/views/business/production/financialReportTax/FormDialog.vue

@@ -58,7 +58,7 @@
               <el-form-item label="增值税">
                 <el-input-number
                   v-if="!isView"
-                  label="增值税"
+                  placeholder="增值税"
                   v-model="emptyForm.valueAddedTax"
                   style="
                     display: flex;
@@ -67,6 +67,7 @@
                   "
                   @change="taxChangeHandler"
                   :controls="false"
+                  :precision="2"
                 />
                 <div v-else>{{ emptyForm.valueAddedTax }}</div>
               </el-form-item>
@@ -76,7 +77,7 @@
               <el-form-item label="城建税">
                 <el-input-number
                   v-if="!isView"
-                  label="城建税"
+                  placeholder="城建税"
                   v-model="emptyForm.cityConstructTax"
                   style="
                     display: flex;
@@ -85,6 +86,7 @@
                   "
                   @change="taxChangeHandler"
                   :controls="false"
+                  :precision="2"
                 />
                 <div v-else>{{ emptyForm.cityConstructTax }}</div>
               </el-form-item>
@@ -94,7 +96,7 @@
               <el-form-item label="教育费附加">
                 <el-input-number
                   v-if="!isView"
-                  label="教育费附加"
+                  placeholder="教育费附加"
                   v-model="emptyForm.additionsTaxOfEducation"
                   style="
                     display: flex;
@@ -102,6 +104,7 @@
                     justify-content: center;
                   "
                   @change="taxChangeHandler"
+                  :precision="2"
                   :controls="false"
                 />
                 <div v-else>{{ emptyForm.additionsTaxOfEducation }}</div>
@@ -112,7 +115,7 @@
               <el-form-item label="地方教育费附加">
                 <el-input-number
                   v-if="!isView"
-                  label="地方教育费附加"
+                  placeholder="地方教育费附加"
                   v-model="emptyForm.ladditionsTaxOfEducation"
                   style="
                     display: flex;
@@ -120,6 +123,7 @@
                     justify-content: center;
                   "
                   @change="taxChangeHandler"
+                  :precision="2"
                   :controls="false"
                 />
                 <div v-else>{{ emptyForm.ladditionsTaxOfEducation }}</div>
@@ -130,7 +134,7 @@
               <el-form-item label="企业所得税">
                 <el-input-number
                   v-if="!isView"
-                  label="企业所得税"
+                  placeholder="企业所得税"
                   v-model="emptyForm.businessIncomeTax"
                   style="
                     display: flex;
@@ -138,6 +142,7 @@
                     justify-content: center;
                   "
                   @change="taxChangeHandler"
+                  :precision="2"
                   :controls="false"
                 />
                 <div v-else>{{ emptyForm.businessIncomeTax }}</div>
@@ -148,7 +153,7 @@
               <el-form-item label="印花税">
                 <el-input-number
                   v-if="!isView"
-                  label="印花税"
+                  placeholder="印花税"
                   v-model="emptyForm.stampTax"
                   style="
                     display: flex;
@@ -156,6 +161,7 @@
                     justify-content: center;
                   "
                   @change="taxChangeHandler"
+                  :precision="2"
                   :controls="false"
                 />
                 <div v-else>{{ emptyForm.stampTax }}</div>
@@ -166,7 +172,7 @@
               <el-form-item label="文化事业建设税">
                 <el-input-number
                   v-if="!isView"
-                  label="文化事业建设税"
+                  placeholder="文化事业建设税"
                   v-model="emptyForm.culturalConstructTax"
                   style="
                     display: flex;
@@ -174,6 +180,7 @@
                     justify-content: center;
                   "
                   @change="taxChangeHandler"
+                  :precision="2"
                   :controls="false"
                 />
                 <div v-else>{{ emptyForm.culturalConstructTax }}</div>
@@ -184,7 +191,7 @@
               <el-form-item label="消费税">
                 <el-input-number
                   v-if="!isView"
-                  label="消费税"
+                  placeholder="消费税"
                   v-model="emptyForm.excise"
                   style="
                     display: flex;
@@ -192,6 +199,7 @@
                     justify-content: center;
                   "
                   @change="taxChangeHandler"
+                  :precision="2"
                   :controls="false"
                 />
                 <div v-else>{{ emptyForm.excise }}</div>
@@ -200,18 +208,7 @@
 
             <el-col :span="12">
               <el-form-item label="合计">
-                <el-input-number
-                  v-if="!isView"
-                  label="合计"
-                  v-model="emptyForm.sumTax"
-                  style="
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                  "
-                  :controls="false"
-                />
-                <div v-else>{{ emptyForm.sumTax }}</div>
+                <div v-if="emptyForm.sumTax != 0">{{ emptyForm.sumTax }}</div>
               </el-form-item>
             </el-col>
 
@@ -224,6 +221,8 @@
                 <el-input
                   type="textarea"
                   rows="2"
+                  maxlength="200"
+                  show-word-limit
                   v-model="emptyForm.content"
                 />
               </el-form-item>
@@ -293,22 +292,6 @@
                   border
                   header-row-class-name="list-header-row"
                 >
-                  <el-table-column
-                    v-if="!isView"
-                    label="操作"
-                    width="47"
-                    align="center"
-                  >
-                    <template #default="scope">
-                      <el-button
-                        icon="Minus"
-                        size="small"
-                        circle
-                        type="danger"
-                        @click="handleDelFile(scope.$index)"
-                      />
-                    </template>
-                  </el-table-column>
                   <el-table-column
                     label="文件名"
                     prop="fileName"
@@ -337,6 +320,22 @@
                       </el-link>
                     </template>
                   </el-table-column>
+                  <el-table-column
+                    v-if="!isView"
+                    label="操作"
+                    width="50"
+                    align="center"
+                  >
+                    <template #default="scope">
+                      <el-button
+                        size="small"
+                        link
+                        type="danger"
+                        @click="handleDelFile(scope.$index)"
+                        >删除</el-button
+                      >
+                    </template>
+                  </el-table-column>
                 </el-table>
               </div>
             </el-col>
@@ -412,31 +411,6 @@ const emptyForm = ref({
   companyId: null,
   year: null,
   month: null,
-  taxType: null,
-  isZero: null,
-  valueAddedTax: 0,
-  cityConstructTax: 0,
-  additionsTaxOfEducation: 0,
-  ladditionsTaxOfEducation: 0,
-  individualIncomeTax: 0,
-  businessIncomeTax: 0,
-  stampTax: 0,
-  culturalConstructTax: 0,
-  excise: 0,
-  sumTax: 0,
-  previousAnnualLosses: null,
-  status: null,
-  content: null,
-  verifyContent: null,
-  createTime: null,
-  creatorId: null,
-  updateTime: null,
-  updaterId: null,
-  deleted: null,
-  version: null,
-  evidenceFile: null,
-  reportFile: null,
-  verifierId: null,
   files: [],
   reportFiles: [],
   workOrderId: null,
@@ -477,18 +451,14 @@ function open(id, mainRow, monthItem) {
   mainInfo.value = mainRow;
   monthInfo.value = monthItem;
   tenantId.value = mainRow.tenantId;
-  console.log("打开form", mainRow);
   if (id == 0) {
     isAdd.value = true;
-    console.log("新增");
     isView.value = false;
   } else if (id == null) {
     isView.value = true;
     emptyForm.value = mainRow.detail;
-    console.log("查看", emptyForm);
   } else {
     emptyForm.value = mainRow.detail;
-    console.log("修改");
     isView.value = false;
     isAdd.value = false;
   }
@@ -497,12 +467,11 @@ function open(id, mainRow, monthItem) {
 }
 
 function getTaxId(mainRow, id) {
-  console.log("获取", mainRow);
   if (mainRow.detail != null) {
     getTax(mainRow.detail.id).then((res) => {
       if (res.code === 200) {
-        console.log("查询成功");
         emptyForm.value = res.data;
+
         reportFiles.value = emptyForm.value.reportFiles;
         loadData(id);
       }
@@ -517,7 +486,6 @@ function openEvidience() {
 }
 
 function loadData(id) {
-  console.log("加载数据");
   month.value = monthInfo.value.month;
   currentMember.value = mainInfo.value.companyName;
   emptyForm.value.workOrderId = mainInfo.value.workOrderId;

+ 63 - 33
src/views/business/production/financialReportTax/index.vue

@@ -9,13 +9,23 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="77px"
     >
+      <el-form-item label="客户名称:">
+        <el-input
+          v-model="queryParams.companyName"
+          type="text"
+          placeholder="请输入客户名称"
+          :clearable="true"
+          style="width: 220px"
+        />
+      </el-form-item>
       <el-form-item label="报税所属期:" prop="year">
         <el-date-picker
           v-model="currentMonth"
           type="month"
           format="YYYY年MM月"
+          style="width: 120px"
           value-format="YYYY-MM-01"
           :disabled-date="disabledDateHandler"
           @change="monthChangeHandler"
@@ -28,7 +38,6 @@
           placeholder="状态"
           :clearable="true"
           style="width: 130px"
-          @clear="clearStatus"
         >
           <el-option
             v-for="item in selectStatus"
@@ -38,22 +47,14 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="关键字:">
-        <el-input
-          v-model="queryParams.companyName"
-          type="text"
-          placeholder="请输入客户名称"
-          :clearable="true"
-          style="width: 220px"
-        />
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
         >
-        <el-button type="Refresh" icon="operation" @click="moreSearch = true"
-          >更多</el-button
-        >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -89,7 +90,7 @@
       <el-table-column
         label="纳税性质"
         align="center"
-        min-width="100"
+        width="100"
         prop="taxType"
       />
       <el-table-column
@@ -111,13 +112,20 @@
         prop="evidenceFile"
       >
         <template #default="scope">
-          <el-button type="text" size="small" @click="fillIn(scope.row)">{{
-            scope.row.detail == null
-              ? "填写"
-              : scope.row.detail.status === 1
-              ? "进行中"
-              : "已填写"
-          }}</el-button>
+          <el-button
+            link
+            type="primary"
+            size="small"
+            @click="fillIn(scope.row)"
+            v-hasPermi="['business:financialReportTaxNonZero:saveDetail']"
+            >{{
+              scope.row.detail == null
+                ? "填写"
+                : scope.row.detail.status === 1
+                ? "进行中"
+                : "已填写"
+            }}</el-button
+          >
         </template>
       </el-table-column>
       <el-table-column
@@ -128,12 +136,14 @@
       >
         <template #default="scope">
           <el-button
-            type="text"
+            link
+            type="primary"
             :disabled="
               scope.row.detail == null || scope.row.detail.evidenceFile === ''
             "
             size="small"
             @click="showFiles(scope.row)"
+            v-hasPermi="['business:financialReportTaxNonZero:query']"
             >查看文件</el-button
           >
         </template>
@@ -197,13 +207,13 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="工单执行人"
+        label="执行人"
         align="center"
         min-width="100"
-        prop="currentEmployeeName"
+        prop="serviceName"
       />
       <el-table-column
-        label="划款退回"
+        label="操作"
         align="center"
         width="80"
         class-name="small-padding fixed-width"
@@ -211,7 +221,8 @@
         <template #default="scope">
           <el-button
             size="small"
-            type="text"
+            link
+            type="primary"
             :disabled="
               scope.row.detail == null || scope.row.detail.status !== 3
             "
@@ -241,9 +252,10 @@
       v-model="moreSearch"
       width="620px"
       append-to-body
+      size="small"
       draggable
     >
-      <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
+      <el-form ref="dictRef" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="报税所属期:" prop="year">
@@ -263,7 +275,6 @@
                 v-model="queryParams.taxType"
                 placeholder="请选择纳税性质"
                 :clearable="true"
-                @change="taxTypeChange"
               >
                 <el-option
                   v-for="item in taxTypes"
@@ -280,7 +291,6 @@
                 type="text"
                 placeholder="状态"
                 :clearable="true"
-                @clear="clearStatus"
               >
                 <el-option
                   v-for="item in selectStatus"
@@ -324,8 +334,16 @@
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button type="primary" @click="handleQuery">确 定</el-button>
-          <el-button @click="moreSearch = false">取 消</el-button>
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
         </div>
       </template>
     </el-dialog>
@@ -339,6 +357,7 @@ import {
   taxTypes,
   confirmDefault,
 } from "@/utils/default";
+import useUserStore from "@/store/modules/user";
 import { listTax, deductionTurnBack } from "@/api/business/production/tax";
 import FormDialog from "./FormDialog.vue";
 
@@ -350,6 +369,7 @@ const taxList = ref([]);
 const loading = ref(true);
 const moreSearch = ref(false);
 const ids = ref([]);
+const oneself = ref(false);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
@@ -367,7 +387,7 @@ const queryParams = ref({
   creatorId: null,
   workOrderId: null,
   isStop: null,
-  year: proxy.moment().format("YYYY"),
+  year: proxy.moment().subtract(1, "month").format("YYYY"),
   month: proxy.moment().subtract(1, "month").format("MM"),
 });
 
@@ -385,6 +405,16 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   moreSearch.value = false;
@@ -512,7 +542,7 @@ function monthChangeHandler(arg) {
   const month = proxy.moment(arg).format("MM");
   queryParams.value.year = year;
   queryParams.value.month = month;
-  console.log(year, month);
+  handleQuery();
 }
 
 getList();

+ 1 - 31
src/views/business/production/financialReportTaxIsZero/FormDialog.vue

@@ -136,7 +136,7 @@
                   <el-table-column
                     v-if="!isView"
                     label="操作"
-                    width="47"
+                    width="50"
                     align="center"
                   >
                     <template #default="scope">
@@ -169,7 +169,6 @@
         type="primary"
         style="float: right"
         icon="Finished"
-        v-hasPermi="['business:financialReportTaxNonZero:saveDetail']"
         @click="handleSave"
       >
         保存</el-button
@@ -220,35 +219,6 @@ const emptyForm = ref({
   id: null,
   originalFileName: "",
   fileName: "",
-  financialReportTaxId: null,
-  companyId: null,
-  year: null,
-  month: null,
-  taxType: null,
-  isZero: null,
-  valueAddedTax: 0,
-  cityConstructTax: 0,
-  additionsTaxOfEducation: 0,
-  lAdditionsTaxOfEducation: 0,
-  individualIncomeTax: 0,
-  businessIncomeTax: 0,
-  stampTax: 0,
-  culturalConstructTax: 0,
-  excise: 0,
-  sumTax: 0,
-  previousAnnualLosses: null,
-  status: null,
-  content: null,
-  verifyContent: null,
-  createTime: null,
-  creatorId: null,
-  updateTime: null,
-  updaterId: null,
-  deleted: null,
-  version: null,
-  evidenceFile: null,
-  reportFile: null,
-  verifierId: null,
   files: [],
   reportFiles: [],
 });

+ 45 - 25
src/views/business/production/financialReportTaxIsZero/index.vue

@@ -9,8 +9,17 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="78px"
     >
+      <el-form-item label="客户名称:">
+        <el-input
+          v-model="queryParams.companyName"
+          type="text"
+          placeholder="请输入客户名称"
+          :clearable="true"
+          style="width: 220px"
+        />
+      </el-form-item>
       <el-form-item label="报税所属期:" prop="year">
         <el-date-picker
           v-model="currentMonth"
@@ -18,6 +27,7 @@
           format="YYYY年MM月"
           value-format="YYYY-MM-01"
           :disabled-date="disabledDateHandler"
+          style="width: 120px"
           @change="monthChangeHandler"
         />
       </el-form-item>
@@ -28,7 +38,6 @@
           placeholder="状态"
           :clearable="true"
           style="width: 130px"
-          @clear="clearStatus"
         >
           <el-option
             v-for="item in selectStatus"
@@ -38,14 +47,9 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="关键字:">
-        <el-input
-          v-model="queryParams.companyName"
-          type="text"
-          placeholder="请输入客户名称"
-          :clearable="true"
-          style="width: 220px"
-        />
+
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
@@ -84,7 +88,12 @@
         prop="socialCreditCode"
         width="180"
       />
-      <el-table-column label="纳税性质" align="center" prop="taxType" />
+      <el-table-column
+        label="纳税性质"
+        align="center"
+        width="100"
+        prop="taxType"
+      />
       <el-table-column label="是否零申报" align="center" prop="isZero">
         <template #default="scope">
           {{
@@ -95,9 +104,10 @@
       <el-table-column label="报税填写" align="center" prop="evidenceFile">
         <template #default="scope">
           <el-button
-            type="text"
+            link
+            type="primary"
             size="small"
-            v-hasPermi="['business:financialReportTax:query']"
+            v-hasPermi="['business:financialReportTax:saveDetail']"
             @click="fillIn(scope.row)"
             >{{
               scope.row.detail == null
@@ -112,7 +122,8 @@
       <el-table-column label="报税附件" align="center" prop="content">
         <template #default="scope">
           <el-button
-            type="text"
+            link
+            type="primary"
             :disabled="
               scope.row.detail == null || scope.row.detail.evidenceFile === ''
             "
@@ -176,20 +187,17 @@
           </div>
         </template>
       </el-table-column>
+      <el-table-column label="执行人" align="center" prop="serviceName" />
       <el-table-column
-        label="执行人"
-        align="center"
-        prop="currentEmployeeName"
-      />
-      <el-table-column
-        label="划款退回"
+        label="操作"
         align="center"
         class-name="small-padding fixed-width"
       >
         <template #default="scope">
           <el-button
             size="small"
-            type="text"
+            link
+            type="primary"
             :disabled="
               scope.row.detail == null || scope.row.detail.status !== 3
             "
@@ -218,9 +226,10 @@
       v-model="moreSearch"
       width="620px"
       append-to-body
+      size="small"
       draggable
     >
-      <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
+      <el-form ref="dictRef" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="报税所属期:" prop="year">
@@ -240,7 +249,6 @@
                 v-model="queryParams.taxType"
                 placeholder="请选择纳税性质"
                 :clearable="true"
-                @change="taxTypeChange"
               >
                 <el-option
                   v-for="item in taxTypes"
@@ -257,7 +265,6 @@
                 type="text"
                 placeholder="状态"
                 :clearable="true"
-                @clear="clearStatus"
               >
                 <el-option
                   v-for="item in selectStatus"
@@ -328,6 +335,7 @@ import {
   listTax,
   deductionTurnBack,
 } from "@/api/business/production/taxIsZero";
+import useUserStore from "@/store/modules/user";
 import FormDialog from "./FormDialog.vue";
 
 const { proxy } = getCurrentInstance();
@@ -337,6 +345,7 @@ const { proxy } = getCurrentInstance();
 const taxList = ref([]);
 const moreSearch = ref(false);
 const loading = ref(true);
+const oneself = ref(false);
 const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
@@ -355,7 +364,7 @@ const queryParams = ref({
   creatorId: null,
   workOrderId: null,
   isStop: null,
-  year: proxy.moment().format("YYYY"),
+  year: proxy.moment().subtract(1, "month").format("YYYY"),
   month: proxy.moment().subtract(1, "month").format("MM"),
 });
 
@@ -380,6 +389,16 @@ function handleQuery() {
   getList();
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 重置按钮操作 */
 function resetQuery() {
   proxy.resetForm("queryRef");
@@ -500,6 +519,7 @@ function monthChangeHandler(arg) {
   queryParams.value.year = year;
   queryParams.value.month = month;
   console.log(year, month);
+  handleQuery();
 }
 
 getList();

+ 281 - 44
src/views/business/production/keepAccount/index.vue

@@ -8,46 +8,119 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:workOrder:export']">
-              导出</el-dropdown-item>
+            <el-dropdown-item
+              icon="Download"
+              @click="handleExport"
+              v-hasPermi="['business:workOrder:export']"
+            >
+              导出</el-dropdown-item
+            >
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
-      label-width="68px">
+    <el-form
+      class="list-search-container"
+      size="small"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      label-width="68px"
+    >
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" style="width: 150px" clearable
-          @keyup.enter="handleQuery" />
+        <el-input
+          v-model="queryParams.companyName"
+          placeholder="请输入客户名称"
+          style="width: 150px"
+          clearable
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="月份:">
-        <el-select v-model.trim="queryParams.month" size="small" placeholder="月份" :clearable="true" style="width: 130px"
-          @change="handleQuery">
-          <el-option v-for="item in selectMonths" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          v-model.trim="queryParams.month"
+          size="small"
+          placeholder="月份"
+          :clearable="true"
+          style="width: 130px"
+          @change="handleQuery"
+        >
+          <el-option
+            v-for="item in selectMonths"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="状态:">
-        <el-select v-model.trim="queryParams.status" prop="status" size="small" type="text" placeholder="状态"
-          :clearable="true" style="width: 130px" @clear="clearStatus">
-          <el-option v-for="item in selectStatus" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          v-model.trim="queryParams.status"
+          prop="status"
+          size="small"
+          type="text"
+          placeholder="状态"
+          :clearable="true"
+          style="width: 130px"
+          @clear="clearStatus"
+        >
+          <el-option
+            v-for="item in selectStatus"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
+
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="Search" @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table v-loading="loading" :data="list" size="small" border height="100%"
-      @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="list"
+      size="small"
+      border
+      height="100%"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="客户名称" align="center" prop="companyName" min-width="250" />
-      <el-table-column label="来源" align="center" prop="fromCompanyName" min-width="100" />
-      <el-table-column label="纳税性质" min-width="100" align="center" prop="taxType" />
-      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="200" />
-      <el-table-column label="当前期间" width="80" align="center">
+      <el-table-column
+        label="客户名称"
+        align="center"
+        prop="companyName"
+        min-width="250"
+      />
+      <el-table-column
+        label="来源"
+        align="center"
+        prop="fromCompanyName"
+        min-width="100"
+      />
+      <el-table-column
+        label="纳税性质"
+        min-width="100"
+        align="center"
+        prop="taxType"
+      />
+      <el-table-column
+        label="税号"
+        align="center"
+        prop="socialCreditCode"
+        min-width="200"
+      />
+      <el-table-column label="当前期间" width="90" align="center">
         <template #default="scope">
           <!-- {{ scope.row.currentDate != null && scope.row.currentDate > scope.row.checkoutDate ? scope.row.currentDate :
             scope.row.checkoutDate }} -->
@@ -56,60 +129,207 @@
       </el-table-column>
       <el-table-column align="center">
         <template #header>
-          <div style="
+          <div
+            style="
               display: flex;
               flex-direction: row;
               justify-content: space-between;
-            ">
+            "
+          >
             <div style="display: flex; flex-direction: row">
-              <el-button link type="primary" size="small" icon="ArrowLeft" @click="prevYear" />
+              <el-button
+                link
+                type="primary"
+                size="small"
+                icon="ArrowLeft"
+                @click="prevYear"
+              />
               <el-link style="margin: 0 40px" :underline="false">{{
                 queryParams.year
               }}</el-link>
-              <el-button link type="primary" icon="ArrowRight" size="small" @click="nextYear" />
+              <el-button
+                link
+                type="primary"
+                icon="ArrowRight"
+                size="small"
+                @click="nextYear"
+              />
             </div>
             <div style="display: flex; flex-direction: row; margin-right: 20px">
-              <div v-for="item in selectStatus" :key="item.value"
-                style="display: flex; flex-direction: row; margin-right: 10px">
-                <div :style="{
-                  backgroundColor: item.color,
-                  width: '14px',
-                  height: '14px',
-                  margin: 'auto',
-                  borderRadius: '50%',
-                  border: item.color === '#fff' ? '1px solid #ddd' : 'none',
-                }" />
-                <div style="
+              <div
+                v-for="item in selectStatus"
+                :key="item.value"
+                style="display: flex; flex-direction: row; margin-right: 10px"
+              >
+                <div
+                  :style="{
+                    backgroundColor: item.color,
+                    width: '14px',
+                    height: '14px',
+                    margin: 'auto',
+                    borderRadius: '50%',
+                    border: item.color === '#fff' ? '1px solid #ddd' : 'none',
+                  }"
+                />
+                <div
+                  style="
                     display: inline-block;
                     margin-left: 10px;
                     line-height: 36px;
-                  ">
+                  "
+                >
                   {{ item.label }}
                 </div>
               </div>
             </div>
           </div>
         </template>
-        <el-table-column v-for="item in selectMonths" :key="item.value" width="50" :label="item.label" align="center">
+        <el-table-column
+          v-for="item in selectMonths"
+          :key="item.value"
+          width="50"
+          :label="item.label"
+          align="center"
+        >
           <template #default="scope">
-            <el-button size="small" :style="monthStatusStyle(scope.row, item.value)" circle
-              @click="openDetail(scope.row, item)" style="width: 12px; height: 12px" />
+            <el-button
+              size="small"
+              :style="monthStatusStyle(scope.row, item.value)"
+              circle
+              @click="openDetail(scope.row, item)"
+              style="width: 12px; height: 12px"
+            />
           </template>
         </el-table-column>
       </el-table-column>
-      <el-table-column label="工单执行人" align="center" prop="serviceName" width="100">
+      <el-table-column
+        label="执行人"
+        align="center"
+        prop="serviceName"
+        width="100"
+      >
       </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"
+    />
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      append-to-body
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        :rules="rules"
+        size="small"
+        label-width="100"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input
+                v-model="queryParams.companyName"
+                placeholder="请输入客户名称"
+                clearable
+                @keyup.enter="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="月份:">
+              <el-select
+                v-model.trim="queryParams.month"
+                size="small"
+                placeholder="月份"
+                :clearable="true"
+                @change="handleQuery"
+              >
+                <el-option
+                  v-for="item in selectMonths"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="纳税性质:" prop="taxType">
+              <el-select
+                size="small"
+                v-model="queryParams.taxType"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+                @change="taxTypeChange"
+              >
+                <el-option
+                  v-for="item in taxTypes"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="状态:">
+              <el-select
+                v-model.trim="queryParams.status"
+                prop="status"
+                size="small"
+                type="text"
+                placeholder="状态"
+                :clearable="true"
+                @clear="clearStatus"
+              >
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="来源:" prop="fromCompanyName">
+              <el-input
+                size="small"
+                v-model="queryParams.fromCompanyName"
+                type="text"
+                placeholder="客户来源"
+                :clearable="true"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup name="Company">
 import useUserStore from "@/store/modules/user";
+import { taxTypes } from "@/utils/default";
 import { listKeepAccount } from "@/api/business/production/keepAccount";
 import { listCompany } from "@/api/business/crm/company";
 import { reactive, ref, toRefs } from "vue";
@@ -122,8 +342,10 @@ const { proxy } = getCurrentInstance();
 
 const list = ref([]);
 const loading = ref(true);
+const oneself = ref(false);
 const ids = ref([]);
 const single = ref(true);
+const moreSearch = ref(false);
 const multiple = ref(true);
 const total = ref(0);
 const prev = ref([]);
@@ -231,7 +453,7 @@ const queryParams = ref({
   pageNum: 1,
   pageSize: 10,
   orderByColumn: "create_time",
-  year: proxy.moment().format("yyyy"),
+  year: proxy.moment().subtract(1, "month").format("yyyy"),
   month: proxy.moment().subtract(1, "month").format("MM"),
   companyName: "",
 });
@@ -252,9 +474,20 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
+  moreSearch.value = false;
   getList();
 }
 
@@ -315,7 +548,11 @@ function directDialog(detail) {
     } else {
       proxy.$modal.msgError("没有权限");
     }
-  } else if (detail.status === 1 || detail.status === 2 || detail.status === 4) {
+  } else if (
+    detail.status === 1 ||
+    detail.status === 2 ||
+    detail.status === 4
+  ) {
     if (editable()) {
       formDialogRef.value.open(detail);
     } else if (viewable() || verifiable()) {

+ 19 - 4
src/views/business/production/onceWork/index.vue

@@ -26,7 +26,7 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="78px"
     >
       <el-form-item label="客户名称:" prop="companyName">
         <el-input
@@ -37,6 +37,9 @@
           @keyup.enter="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
@@ -70,14 +73,14 @@
       />
       <el-table-column label="工单类型" align="center" prop="amount" width="80">
         <template #default="scope">
-          {{ scope.row.type === 1 ? "循环工单" : "单次工单" }}
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
         </template>
       </el-table-column>
       <el-table-column
         label="项目"
         align="center"
         prop="taskTypeName"
-        width="140"
+        width="200"
       >
         <template #default="scope">
           {{ scope.row.noContract === 1 ? scope.row.remark : "" }}
@@ -154,7 +157,7 @@
       <el-table-column label="操作" width="80" align="center" prop="">
         <template #default="scope">
           <el-button
-            v-if="scope.row.record == null || scope.row.record.status !== 3"
+            v-show="scope.row.record == null || scope.row.record.status !== 3"
             size="small"
             type="primary"
             link
@@ -183,6 +186,7 @@ import {
   saveDetail,
 } from "@/api/business/production/onceWorkOrder";
 import { toRefs } from "vue";
+import useUserStore from "@/store/modules/user";
 const { proxy } = getCurrentInstance();
 
 const data = reactive({
@@ -209,6 +213,7 @@ const list = ref([]);
 const loading = ref(true);
 const ids = ref([]);
 const selections = ref([]);
+const oneself = ref(false);
 const single = ref(false);
 const multiple = ref(false);
 const total = ref(0);
@@ -243,6 +248,16 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;

+ 1 - 12
src/views/business/production/productionCompany/index.vue

@@ -62,8 +62,6 @@
       height="100%"
       @selection-change="handleSelectionChange"
     >
-      <el-table-column type="selection" width="55" align="center" />
-      <!-- <el-table-column label="序号" align="center" type="index" /> -->
       <el-table-column
         label="客户名称"
         min-width="230"
@@ -119,13 +117,6 @@
         min-width="110"
         prop="leaderName"
       />
-
-      <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-              <template #default="scope">
-                  <el-button link type="warning" size="small" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['business:company:edit']">修改</el-button>
-                  <el-button link type="danger" size="small" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['business:company:remove']">删除</el-button>
-              </template>
-          </el-table-column> -->
     </el-table>
 
     <!-- 分页 -->
@@ -138,7 +129,6 @@
     />
 
     <!-- 表单 -->
-    <company-form ref="companyRef" :get-list="getList"></company-form>
   </div>
 </template>
 
@@ -147,7 +137,6 @@ import {
   listProductionCompany,
   delCompany,
 } from "@/api/business/production/productionCompany";
-import companyForm from "./form";
 const { proxy } = getCurrentInstance();
 /** 字典数组区 */
 /** 查询 对象 */
@@ -229,7 +218,7 @@ function getList() {
     companyList.value = response.rows;
     total.value = response.total;
     loading.value = false;
-    console.log(companyList.value);
+    console.log(response);
   });
 }
 

+ 425 - 44
src/views/business/production/receiveTicket/index.vue

@@ -8,46 +8,118 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:workOrder:export']">
-              导出</el-dropdown-item>
+            <el-dropdown-item
+              icon="Download"
+              @click="handleExport"
+              v-hasPermi="['business:workOrder:export']"
+            >
+              导出</el-dropdown-item
+            >
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
-      label-width="68px">
+    <el-form
+      class="list-search-container"
+      size="small"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      label-width="77px"
+    >
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" style="width: 150px" clearable
-          @keyup.enter="handleQuery" />
+        <el-input
+          v-model="queryParams.companyName"
+          placeholder="请输入客户名称"
+          style="width: 150px"
+          clearable
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="月份:">
-        <el-select v-model.trim="queryParams.month" size="small" placeholder="月份" :clearable="true" style="width: 130px"
-          @change="handleQuery">
-          <el-option v-for="item in selectMonths" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          v-model.trim="queryParams.month"
+          size="small"
+          placeholder="月份"
+          :clearable="true"
+          style="width: 130px"
+          @change="handleQuery"
+        >
+          <el-option
+            v-for="item in selectMonths"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="状态:">
-        <el-select v-model.trim="queryParams.status" prop="status" size="small" type="text" placeholder="状态"
-          :clearable="true" style="width: 130px" @clear="clearStatus">
-          <el-option v-for="item in selectStatus" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          v-model.trim="queryParams.status"
+          prop="status"
+          size="small"
+          type="text"
+          placeholder="状态"
+          :clearable="true"
+          style="width: 130px"
+          @clear="clearStatus"
+        >
+          <el-option
+            v-for="item in selectStatus"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="Search" @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table v-loading="loading" :data="list" size="small" border height="100%"
-      @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="list"
+      size="small"
+      border
+      height="100%"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="客户名称" align="center" prop="companyName" min-width="250" />
-      <el-table-column label="来源" align="center" prop="fromCompanyName" min-width="90" />
-      <el-table-column label="纳税性质" min-width="90" align="center" prop="taxType" />
-      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="150" />
-      <el-table-column label="当前期间" width="80" align="center">
+      <el-table-column
+        label="客户名称"
+        align="center"
+        prop="companyName"
+        min-width="250"
+      />
+      <el-table-column
+        label="来源"
+        align="center"
+        prop="fromCompanyName"
+        min-width="90"
+      />
+      <el-table-column
+        label="纳税性质"
+        min-width="90"
+        align="center"
+        prop="taxType"
+      />
+      <el-table-column
+        label="税号"
+        align="center"
+        prop="socialCreditCode"
+        min-width="150"
+      />
+      <el-table-column label="当前期间" width="90" align="center">
         <template #default="scope">
           <!-- {{ scope.row.currentDate != null && scope.row.currentDate > scope.row.checkoutDate ? scope.row.currentDate :
             scope.row.checkoutDate }} -->
@@ -56,60 +128,347 @@
       </el-table-column>
       <el-table-column align="center">
         <template #header>
-          <div style="
+          <div
+            style="
               display: flex;
               flex-direction: row;
               justify-content: space-between;
-            ">
+            "
+          >
             <div style="display: flex; flex-direction: row">
-              <el-button link type="primary" size="small" icon="ArrowLeft" @click="prevYear" />
+              <el-button
+                link
+                type="primary"
+                size="small"
+                icon="ArrowLeft"
+                @click="prevYear"
+              />
               <el-link style="margin: 0 40px" :underline="false">{{
                 queryParams.year
               }}</el-link>
-              <el-button link type="primary" icon="ArrowRight" size="small" @click="nextYear" />
+              <el-button
+                link
+                type="primary"
+                icon="ArrowRight"
+                size="small"
+                @click="nextYear"
+              />
             </div>
             <div style="display: flex; flex-direction: row; margin-right: 20px">
-              <div v-for="item in selectStatus" :key="item.value"
-                style="display: flex; flex-direction: row; margin-right: 10px">
-                <div :style="{
-                  backgroundColor: item.color,
-                  width: '14px',
-                  height: '14px',
-                  margin: 'auto',
-                  borderRadius: '50%',
-                  border: item.color === '#fff' ? '1px solid #ddd' : 'none',
-                }" />
-                <div style="
+              <div
+                v-for="item in selectStatus"
+                :key="item.value"
+                style="display: flex; flex-direction: row; margin-right: 10px"
+              >
+                <div
+                  :style="{
+                    backgroundColor: item.color,
+                    width: '14px',
+                    height: '14px',
+                    margin: 'auto',
+                    borderRadius: '50%',
+                    border: item.color === '#fff' ? '1px solid #ddd' : 'none',
+                  }"
+                />
+                <div
+                  style="
                     display: inline-block;
                     margin-left: 10px;
                     line-height: 36px;
-                  ">
+                  "
+                >
                   {{ item.label }}
                 </div>
               </div>
             </div>
           </div>
         </template>
-        <el-table-column v-for="item in selectMonths" :key="item.value" min-width="50" :label="item.label" align="center">
+        <el-table-column
+          v-for="item in selectMonths"
+          :key="item.value"
+          min-width="50"
+          :label="item.label"
+          align="center"
+        >
           <template #default="scope">
-            <el-button size="small" :style="monthStatusStyle(scope.row, item.value)" circle
-              @click="openDetail(scope.row, item)" style="width: 12px; height: 12px" />
+            <el-button
+              size="small"
+              :style="monthStatusStyle(scope.row, item.value)"
+              circle
+              @click="openDetail(scope.row, item)"
+              style="width: 12px; height: 12px"
+            />
           </template>
         </el-table-column>
       </el-table-column>
-      <el-table-column label="工单执行人" align="center" prop="serviceName" min-width="100">
+      <el-table-column
+        label="执行人"
+        align="center"
+        prop="serviceName"
+        min-width="100"
+      >
       </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"
+    />
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      append-to-body
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        :rules="rules"
+        size="small"
+        label-width="100"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input
+                v-model="queryParams.companyName"
+                size="small"
+                placeholder="请输入客户名称"
+                clearable
+                @keyup.enter="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="月份:">
+              <el-select
+                v-model.trim="queryParams.month"
+                size="small"
+                placeholder="月份"
+              >
+                <el-option
+                  v-for="item in selectMonths"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="收票状态:">
+              <el-select
+                v-model.trim="queryParams.status"
+                prop="status"
+                size="small"
+                type="text"
+                placeholder="状态"
+                :clearable="true"
+                @clear="clearStatus"
+              >
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="收入票:">
+              <el-select
+                size="small"
+                v-model="queryParams.hasIncomeTicket"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="费用票:">
+              <el-select
+                size="small"
+                v-model="queryParams.feeTicket"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="银行回单:">
+              <el-select
+                size="small"
+                v-model="queryParams.bankSlips"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="社保公积金:">
+              <el-select
+                size="small"
+                v-model="queryParams.hasSsafTicket"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="有票据:">
+              <el-select
+                size="small"
+                v-model="queryParams.sumNumber"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="来源:">
+              <el-input
+                size="small"
+                v-model="queryParams.fromCompanyName"
+                type="text"
+                placeholder="客户来源"
+                :clearable="true"
+              />
+            </el-form-item>
+            <el-form-item label="纳税性质:">
+              <el-select
+                size="small"
+                v-model="queryParams.taxType"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+                @change="taxTypeChange"
+              >
+                <el-option
+                  v-for="item in taxTypes"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="送达方式:">
+              <el-select
+                size="small"
+                v-model="queryParams.saveStatus"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in delivery"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="成本票:">
+              <el-select
+                size="small"
+                v-model="queryParams.hasCostTicket"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="票工表:">
+              <el-select
+                size="small"
+                v-model="queryParams.payroll"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="银行对账单:">
+              <el-select
+                size="small"
+                v-model="queryParams.bankCopy"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="其它票:">
+              <el-select
+                size="small"
+                v-model="queryParams.others"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in haveOrNot"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup name="Company">
 import useUserStore from "@/store/modules/user";
+
 import { listReceiveTicket } from "@/api/business/production/receiveTicket";
 import { listCompany } from "@/api/business/crm/company";
 import { reactive, ref, toRefs } from "vue";
@@ -125,6 +484,8 @@ const loading = ref(true);
 const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
+const moreSearch = ref(false);
+const oneself = ref(false);
 const total = ref(0);
 const prev = ref([]);
 const permissions = useUserStore().permissions;
@@ -208,8 +569,17 @@ const data = reactive({
       color: "#E63E3E",
     },
   ],
+  delivery: [
+    { label: "无票据", value: 2 },
+    { label: "交接送达", value: 3 },
+    { label: "交接邮寄", value: 4 },
+  ],
+  haveOrNot: [
+    { label: "是", value: 1 },
+    { label: "否", value: 0 },
+  ],
 });
-const { selectStatus, selectMonths } = toRefs(data);
+const { selectStatus, selectMonths, delivery, haveOrNot } = toRefs(data);
 
 const formDialogRef = ref(null);
 const viewDialogRef = ref(null);
@@ -236,7 +606,7 @@ const queryParams = ref({
   pageNum: 1,
   pageSize: 10,
   orderByColumn: "create_time",
-  year: proxy.moment().format("yyyy"),
+  year: proxy.moment().subtract(1, "month").format("yyyy"),
   month: proxy.moment().subtract(1, "month").format("MM"),
   companyName: "",
 });
@@ -257,10 +627,21 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
   getList();
+  moreSearch.value = false;
 }
 
 /** 重置按钮操作 */

+ 1 - 9
src/views/business/production/receiveTicket/view.vue

@@ -233,15 +233,7 @@
           </el-col>
           <el-col v-if="showVerify()" :span="12">
             <el-form-item label="合计">
-              <el-input-number
-                v-model="form.sumNumber"
-                size="small"
-                placeholder="合计"
-                :step="1"
-                step-strictly
-                :controls="false"
-                style="width: 100%"
-              />
+              <span>{{ form.sumNumber }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="24">

+ 109 - 22
src/views/business/production/receiveTicketFeedback/index.vue

@@ -31,7 +31,7 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="78px"
     >
       <el-form-item>
         <el-radio-group
@@ -53,10 +53,14 @@
           @keyup.enter="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
         >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -126,14 +130,15 @@
       <el-table-column label="操作" fixed="right" width="80" align="center">
         <template #default="scope">
           <el-button
-            v-if="scope.row.status === 1"
+            v-show="scope.row.status === 1"
             link
             type="warning"
             size="small"
+            v-hasPermi="['business:archiveReceiveTicket:edit']"
             @click="handleInfo(scope.row)"
             >回复</el-button
           >
-          <span v-else>--</span>
+          <span v-if="scope.row.status !== 1">--</span>
         </template>
       </el-table-column>
     </el-table>
@@ -194,6 +199,78 @@
       @close="closeImages"
       :initial-index="showIndex"
     />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      size="small"
+      append-to-body
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        :rules="rules"
+        label-width="100"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="反馈月份:" prop="feedbackMonth">
+              <el-date-picker
+                v-model="feedbackMonth"
+                size="small"
+                :clearable="true"
+                value-format="YYYY-MM"
+                format="YYYY-MM"
+                type="month"
+              />
+            </el-form-item>
+            <el-form-item label="纳税性质:" prop="taxType">
+              <el-select
+                size="small"
+                v-model="queryParams.taxType"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+                @change="taxTypeChange"
+              >
+                <el-option
+                  v-for="item in taxTypes"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="来源:" prop="fromCompanyName">
+              <el-input
+                size="small"
+                v-model="queryParams.fromCompanyName"
+                type="text"
+                placeholder="客户来源"
+                :clearable="true"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -207,6 +284,8 @@ import {
   getReceiveTicketFeedback,
   updateReceiveTicketFeedback,
 } from "@/api/business/production/receiveTicketFeedback";
+import { taxTypes } from "@/utils/default";
+import useUserStore from "@/store/modules/user";
 // import ElImageViewer from 'element-plus/lib/components/image-viewer';
 import { uploadFile } from "@/api/tool/file";
 import { listCompany } from "@/api/business/crm/company";
@@ -218,9 +297,12 @@ const { proxy } = getCurrentInstance();
 
 const list = ref([]);
 const loading = ref(true);
+const oneself = ref(false);
 const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
+const moreSearch = ref(false);
+const feedbackMonth = ref(null);
 const total = ref(0);
 const prev = ref([]);
 const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
@@ -254,6 +336,7 @@ const { verify_status } = proxy.useDict("verify_status");
 const queryParams = ref({
   pageNum: 1,
   pageSize: 10,
+  fromCompanyName: "",
   orderByColumn: "create_time",
   companyName: "",
   noContract: 1,
@@ -272,15 +355,37 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
+  if (feedbackMonth.value != null) {
+    queryParams.value.year = feedbackMonth.value.substr(0, 4);
+    queryParams.value.month = feedbackMonth.value.substr(5);
+  }
   queryParams.value.pageNum = 1;
   getList();
+  moreSearch.value = false;
 }
 
 /** 重置按钮操作 */
 function resetQuery() {
-  proxy.resetForm("queryRef");
+  queryParams.value = {
+    pageNum: 1,
+    pageSize: 10,
+    orderByColumn: "create_time",
+    companyName: "",
+    noContract: 1,
+  };
+  feedbackMonth.value = null;
   handleQuery();
 }
 
@@ -323,27 +428,9 @@ function handleDelete(row) {
 
 /** 导出按钮操作 */
 function handleExport() {
-  // proxy.download(
-  //   "business/archive/order/export",
-  //   {
-  //     ...queryParams.value,
-  //   },
-  //   `合同导出_${new Date().getTime()}.xlsx`
-  // );
   exportReceiveTicketFeedback(queryParams.value);
 }
 
-function startDateChangeHandler(row, startDate) {
-  if (startDate) {
-    // console.log(startDate)
-    row.endMonth = proxy
-      .moment(startDate)
-      .add(row.monthNum - 1, "M")
-      .format("YYYY-MM-DD");
-  } else row.endMonth = null;
-  console.log(row);
-}
-
 function saveHandler() {
   if (form.value.feedbackContent == null || form.value.feedbackContent === "") {
     proxy.$modal.msgError("请输入回复信息");

+ 153 - 4
src/views/business/production/salary/index.vue

@@ -26,7 +26,7 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="77px"
     >
       <el-form-item label="客户名称:" prop="companyName">
         <el-input
@@ -73,9 +73,13 @@
         </el-select>
       </el-form-item>
       <el-form-item>
+        <el-form-item label="是否自己负责:">
+          <el-switch v-model="oneself" @change="handleOneself" />
+        </el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
         >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -201,7 +205,7 @@
         </el-table-column>
       </el-table-column>
       <el-table-column
-        label="工单执行人"
+        label="执行人"
         align="center"
         prop="serviceName"
         min-width="100"
@@ -218,11 +222,132 @@
     />
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      append-to-body
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        :rules="rules"
+        size="small"
+        label-width="100"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input
+                v-model="queryParams.companyName"
+                size="small"
+                placeholder="请输入客户名称"
+                clearable
+                @keyup.enter="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="月份:">
+              <el-select
+                v-model.trim="queryParams.month"
+                size="small"
+                placeholder="月份"
+                @change="handleQuery"
+              >
+                <el-option
+                  v-for="item in selectMonths"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="状态:">
+              <el-select
+                v-model.trim="queryParams.status"
+                prop="status"
+                size="small"
+                type="text"
+                placeholder="状态"
+                :clearable="true"
+                @clear="clearStatus"
+              >
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="来源:">
+              <el-input
+                size="small"
+                v-model="queryParams.fromCompanyName"
+                type="text"
+                placeholder="客户来源"
+                :clearable="true"
+              />
+            </el-form-item>
+            <el-form-item label="纳税性质:">
+              <el-select
+                size="small"
+                v-model="queryParams.taxType"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+                @change="taxTypeChange"
+              >
+                <el-option
+                  v-for="item in taxTypes"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="是否有个税:">
+              <el-select
+                v-model.trim="queryParams.hasIndividualIncomeTax"
+                placeholder="请选择"
+                size="small"
+                style="width: 100%"
+                @change="changeIndividual"
+              >
+                <el-option
+                  v-for="item in confirmChoices"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup name="Company">
 import useUserStore from "@/store/modules/user";
+import { taxTypes } from "@/utils/default";
 import { listSalary } from "@/api/business/production/salary";
 import { listCompany } from "@/api/business/crm/company";
 import { reactive, ref, toRefs } from "vue";
@@ -237,6 +362,8 @@ const list = ref([]);
 const loading = ref(true);
 const ids = ref([]);
 const single = ref(true);
+const moreSearch = ref(false);
+const oneself = ref(false);
 const multiple = ref(true);
 const total = ref(0);
 const prev = ref([]);
@@ -316,8 +443,19 @@ const data = reactive({
       color: "#E63E3E",
     },
   ],
+  confirmChoices: [
+    {
+      label: "是",
+      value: 1,
+    },
+    {
+      label: "否",
+      value: 0,
+    },
+  ],
 });
-const { selectStatus, selectMonths } = toRefs(data);
+
+const { selectStatus, selectMonths, confirmChoices } = toRefs(data);
 
 const formDialogRef = ref(null);
 const viewDialogRef = ref(null);
@@ -345,7 +483,7 @@ const queryParams = ref({
   pageNum: 1,
   pageSize: 10,
   orderByColumn: "create_time",
-  year: proxy.moment().format("yyyy"),
+  year: proxy.moment().subtract(1, "month").format("yyyy"),
   month: proxy.moment().subtract(1, "month").format("MM"),
   companyName: "",
 });
@@ -371,6 +509,17 @@ function getList() {
 function handleQuery() {
   queryParams.value.pageNum = 1;
   getList();
+  moreSearch.value = false;
+}
+
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
 }
 
 /** 重置按钮操作 */

+ 60 - 208
src/views/business/production/salary/view.vue

@@ -1,12 +1,5 @@
 <template>
-  <el-dialog
-    title="工资信息"
-    v-model="visible"
-    :width="width"
-    append-to-body
-    draggable
-    @close="close"
-  >
+  <el-dialog title="工资信息" v-model="visible" :width="width" append-to-body draggable @close="close">
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="100px" v-model="form">
@@ -25,47 +18,31 @@
             <div class="details-head">
               <div class="title">
                 <i class="fa fa-th-list" aria-hidden="true" /> 人员信息
+
+                <!-- <el-button size="small" @click="printSalary" icon="printer" type="primary">打印</el-button>
+                <el-button size="small" @click="exportSalary" icon="download" type="info">导出</el-button> -->
               </div>
               <!-- <el-button size="small" @click="printSalary">打印</el-button>
               <el-button size="small" @click="exportSalary">导出</el-button> -->
             </div>
             <div class="details-body">
               <div>
-                <el-table
-                  ref="sourceTable"
-                  :data="form.details"
-                  size="small"
-                  max-height="260px"
-                  border
-                  show-summary
-                  :summary-method="getSummaries"
-                  highlight-current-row
-                  header-row-class-name="list-header-row"
-                  row-class-name="list-row"
-                  @selection-change="handleCheckChange"
-                  @current-change="handleCurrentChange"
-                >
-                  <el-table-column
-                    type="index"
-                    label="序号"
-                    width="50"
-                    align="center"
-                  />
+                <el-table ref="sourceTable" :data="form.details" size="small" max-height="260px" border show-summary
+                  :summary-method="getSummaries" highlight-current-row header-row-class-name="list-header-row"
+                  row-class-name="list-row" @selection-change="handleCheckChange" @current-change="handleCurrentChange">
+                  <el-table-column type="index" label="序号" width="50" align="center" />
                   <el-table-column label="员工姓名" width="80" align="center">
                     <template #default="scope">
                       <div>
                         {{ scope.row.employeeName }}
                       </div>
-                      <span
-                        style="
+                      <span style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 6px;
-                        "
-                        >*</span
-                      >
+                        ">*</span>
                     </template>
                   </el-table-column>
                   <el-table-column label="身份证号" width="150" align="center">
@@ -73,48 +50,30 @@
                       <div>
                         {{ scope.row.idCode }}
                       </div>
-                      <span
-                        style="
+                      <span style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 6px;
-                        "
-                        >*</span
-                      >
+                        ">*</span>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="应发工资"
-                    width="70"
-                    align="center"
-                    prop="planSalary"
-                  >
+                  <el-table-column label="应发工资" width="70" align="center" prop="planSalary">
                     <template #default="scope">
                       <div>
                         {{ scope.row.planSalary }}
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="实发工资"
-                    width="70"
-                    align="center"
-                    prop="actuallySalary"
-                  >
+                  <el-table-column label="实发工资" width="70" align="center" prop="actuallySalary">
                     <template #default="scope">
                       <div>
                         {{ scope.row.actuallySalary }}
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="奖金及其他"
-                    width="95"
-                    align="center"
-                    prop="bonusAmount"
-                  >
+                  <el-table-column label="奖金及其他" width="95" align="center" prop="bonusAmount">
                     <template #default="scope">
                       <div>
                         {{ scope.row.bonusAmount }}
@@ -122,48 +81,28 @@
                     </template>
                   </el-table-column>
                   <el-table-column label="社保" align="center">
-                    <el-table-column
-                      label="养老保险"
-                      width="70"
-                      align="center"
-                      prop="endowmentInsurance"
-                    >
+                    <el-table-column label="养老保险" width="70" align="center" prop="endowmentInsurance">
                       <template #default="scope">
                         <div>
                           {{ scope.row.endowmentInsurance }}
                         </div>
                       </template>
                     </el-table-column>
-                    <el-table-column
-                      label="医疗保险"
-                      width="70"
-                      align="center"
-                      prop="medicalInsurance"
-                    >
+                    <el-table-column label="医疗保险" width="70" align="center" prop="medicalInsurance">
                       <template #default="scope">
                         <div>
                           {{ scope.row.medicalInsurance }}
                         </div>
                       </template>
                     </el-table-column>
-                    <el-table-column
-                      label="失业险"
-                      width="70"
-                      align="center"
-                      prop="unemploymentBenefit"
-                    >
+                    <el-table-column label="失业险" width="70" align="center" prop="unemploymentBenefit">
                       <template #default="scope">
                         <div>
                           {{ scope.row.unemploymentBenefit }}
                         </div>
                       </template>
                     </el-table-column>
-                    <el-table-column
-                      label="大病险"
-                      width="70"
-                      align="center"
-                      prop="seriousIllnessInsurance"
-                    >
+                    <el-table-column label="大病险" width="70" align="center" prop="seriousIllnessInsurance">
                       <template #default="scope">
                         <div>
                           {{ scope.row.seriousIllnessInsurance }}
@@ -171,54 +110,34 @@
                       </template>
                     </el-table-column>
                   </el-table-column>
-                  <el-table-column
-                    label="公积金"
-                    width="80"
-                    align="center"
-                    prop="housingFund"
-                  >
+                  <el-table-column label="公积金" width="80" align="center" prop="housingFund">
                     <template #default="scope">
                       <div>
                         {{ scope.row.housingFund }}
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="个税"
-                    align="center"
-                    :prop="
-                      form.status === 3 && form.hasIndividualIncomeTax
-                        ? 'individualIncomeTaxConfirm'
-                        : 'currentIndividualIncomeTax'
-                    "
-                  >
+                  <el-table-column label="个税" align="center" :prop="form.status === 3 && form.hasIndividualIncomeTax
+                    ? 'individualIncomeTaxConfirm'
+                    : 'currentIndividualIncomeTax'
+                    ">
                     <template #default="scope">
                       <div>
                         {{
                           form.status === 3 && form.hasIndividualIncomeTax
-                            ? scope.row.individualIncomeTaxConfirm
-                            : scope.row.currentIndividualIncomeTax
+                          ? scope.row.individualIncomeTaxConfirm
+                          : scope.row.currentIndividualIncomeTax
                         }}
                       </div>
-                    </template></el-table-column
-                  >
-                  <el-table-column
-                    label="其他扣款"
-                    width="70"
-                    align="center"
-                    prop="otherCut"
-                  >
+                    </template></el-table-column>
+                  <el-table-column label="其他扣款" width="70" align="center" prop="otherCut">
                     <template #default="scope">
                       <div>
                         {{ scope.row.otherCut }}
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="备注"
-                    width="100"
-                    header-align="center"
-                  >
+                  <el-table-column label="备注" width="100" header-align="center">
                     <template #default="scope">
                       <div>
                         {{ scope.row.remark }}
@@ -247,29 +166,15 @@
           <el-col v-if="showVerify()" :span="24">
             <el-divider />
           </el-col>
-          <el-col v-if="showVerify()" :span="12">
+          <el-col v-if="showVerify()" :span="24">
             <el-form-item label="是否有个税">
-              <el-select
-                v-model.trim="form.hasIndividualIncomeTax"
-                placeholder="请选择"
-                size="small"
-                style="width: 100%"
-                @change="changeIndividual"
-              >
-                <el-option
-                  v-for="item in confirmChoices"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                />
+              <el-select v-model.trim="form.hasIndividualIncomeTax" placeholder="请选择" size="small" style="width: 100%"
+                @change="changeIndividual">
+                <el-option v-for="item in confirmChoices" :key="item.value" :label="item.label" :value="item.value" />
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col
-            v-if="showVerify() && form.hasIndividualIncomeTax === 1"
-            :span="24"
-            class="details-container"
-          >
+          <el-col v-if="showVerify() && form.hasIndividualIncomeTax === 1" :span="24" class="details-container">
             <div class="details-head">
               <div class="title">
                 <i class="fa fa-th-list" aria-hidden="true" /> 人员信息
@@ -277,76 +182,41 @@
             </div>
             <div class="details-body">
               <div>
-                <el-table
-                  ref="sourceTable"
-                  :data="form.details"
-                  size="small"
-                  max-height="260px"
-                  border
-                  highlight-current-row
-                  header-row-class-name="list-header-row"
-                  row-class-name="list-row"
-                  @selection-change="handleCheckChange"
-                  @current-change="handleCurrentChange"
-                >
-                  <el-table-column type="selection" width="50" align="center" />
-                  <el-table-column
-                    type="index"
-                    label="序号"
-                    width="50"
-                    align="center"
-                  />
+                <el-table ref="sourceTable" :data="form.details" size="small" max-height="260px" border
+                  highlight-current-row header-row-class-name="list-header-row" row-class-name="list-row"
+                  @selection-change="handleCheckChange" @current-change="handleCurrentChange">
+                  <el-table-column type="index" label="序号" width="50" align="center" />
                   <el-table-column label="员工姓名" width="120" align="center">
                     <template #default="scope">
                       <div>
                         {{ scope.row.employeeName }}
                       </div>
-                      <span
-                        style="
+                      <span style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 6px;
-                        "
-                        >*</span
-                      >
+                        ">*</span>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="实际个税"
-                    align="center"
-                    width="120"
-                    prop="individualIncomeTaxConfirm"
-                  >
+                  <el-table-column label="实际个税" align="center" width="120" prop="individualIncomeTaxConfirm">
                     <template #default="scope">
                       <div>
-                        <el-input-number
-                          v-model="scope.row.individualIncomeTaxConfirm"
-                          size="small"
-                          placeholder="个税"
-                          :precision="2"
-                          :controls="false"
-                          style="width: 100%"
-                          @change="rowChangeSum(scope.row)"
-                        />
+                        <el-input-number v-model="scope.row.individualIncomeTaxConfirm" size="small" placeholder="个税"
+                          :precision="2" :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                       </div>
                     </template>
                   </el-table-column>
                 </el-table>
+                <br />
               </div>
             </div>
           </el-col>
           <el-col :span="24">
             <el-form-item label="审核备注">
-              <el-input
-                v-if="form.status === 2"
-                v-model.trim="form.verifyContent"
-                maxlength="200"
-                show-word-limit
-                type="textarea"
-                rows="2"
-              />
+              <el-input v-if="form.status === 2" v-model.trim="form.verifyContent" maxlength="200" show-word-limit
+                type="textarea" rows="2" />
               <span v-else> {{ form.verifyContent }}</span>
             </el-form-item>
           </el-col>
@@ -354,35 +224,14 @@
       </el-form>
     </div>
     <div class="form-btns-container" style="height: 40px">
-      <el-button
-        v-if="showVerify()"
-        type="danger"
-        size="small"
-        icon="back"
-        style="float: right; margin-left: 12px"
-        @click="handleVerify(4)"
-      >
-        驳回</el-button
-      >
-      <el-button
-        v-if="showVerify()"
-        type="primary"
-        icon="Finished"
-        size="small"
-        style="float: right; margin-left: 12px"
-        @click="handleVerify(3)"
-      >
-        审核通过</el-button
-      >
-      <el-button
-        v-if="verifiable() && form.status === 3"
-        type="warning"
-        size="small"
-        icon="back"
-        style="float: right; margin-left: 12px"
-        @click="returnStatus()"
-        >退回</el-button
-      >
+      <el-button v-if="showVerify()" type="danger" size="small" icon="back" style="float: right; margin-left: 12px"
+        @click="handleVerify(4)">
+        驳回</el-button>
+      <el-button v-if="showVerify()" type="primary" icon="check" size="small" style="float: right; margin-left: 12px"
+        @click="handleVerify(3)">
+        审核通过</el-button>
+      <el-button v-if="verifiable() && form.status === 3" type="warning" size="small" icon="back"
+        style="float: right; margin-left: 12px" @click="returnStatus()">退回</el-button>
     </div>
     <feedback-dialog ref="feedbackDialogView" :verify="verify" />
     <!-- <print-dialog ref="printDialog" /> -->
@@ -393,6 +242,7 @@ import {
   getDetail,
   verifyDetail,
   turnBackDetail,
+  exportSalaryEmployee
 } from "@/api/business/production/salary";
 import feedbackDialog from "../feedbackDialog.vue";
 import useUserStore from "@/store/modules/user";
@@ -422,7 +272,7 @@ const confirmChoices = ref([
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => {},
+    default: () => { },
   },
 });
 
@@ -500,8 +350,10 @@ function reset() {
   total.value = 0;
 }
 
-function printSalary() {}
-function exportSalary() {}
+function printSalary() { }
+function exportSalary() {
+  exportSalaryEmployee(form.value.id)
+}
 
 function showVerify() {
   if (

+ 1 - 1
src/views/business/production/salaryZero/form.vue

@@ -99,7 +99,7 @@
                       >
                     </template>
                   </el-table-column>
-                  <el-table-column label="身份证号" width="150" align="center">
+                  <el-table-column label="身份证号" width="160" align="center">
                     <template #default="scope">
                       <div>
                         <el-input

+ 130 - 15
src/views/business/production/salaryZero/index.vue

@@ -26,7 +26,7 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="78px"
     >
       <el-form-item label="客户名称:" prop="companyName">
         <el-input
@@ -72,10 +72,14 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
         >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -94,7 +98,7 @@
         label="客户名称"
         align="center"
         prop="companyName"
-        min-width="200"
+        min-width="250"
       />
       <el-table-column
         label="来源"
@@ -116,13 +120,6 @@
       />
       <el-table-column label="当前期间" min-width="90" align="center">
         <template>
-          <!-- {{
-             #default="scope"
-            scope.row.currentDate != null &&
-            scope.row.currentDate > scope.row.checkoutDate
-            ? scope.row.currentDate
-            : scope.row.checkoutDate
-          }} -->
           {{ moment().subtract(1, "month").format("YYYY年MM月") }}
         </template>
       </el-table-column>
@@ -202,7 +199,7 @@
         </el-table-column>
       </el-table-column>
       <el-table-column
-        label="工单执行人"
+        label="执行人"
         align="center"
         prop="serviceName"
         min-width="100"
@@ -219,14 +216,119 @@
     />
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      append-to-body
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        :rules="rules"
+        size="small"
+        label-width="100"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input
+                v-model="queryParams.companyName"
+                size="small"
+                placeholder="请输入客户名称"
+                clearable
+                @keyup.enter="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="月份:">
+              <el-select
+                v-model.trim="queryParams.month"
+                size="small"
+                placeholder="月份"
+                @change="handleQuery"
+              >
+                <el-option
+                  v-for="item in selectMonths"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="状态:">
+              <el-select
+                v-model.trim="queryParams.status"
+                prop="status"
+                size="small"
+                type="text"
+                placeholder="状态"
+                :clearable="true"
+                @clear="clearStatus"
+              >
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="来源:">
+              <el-input
+                size="small"
+                v-model="queryParams.fromCompanyName"
+                type="text"
+                placeholder="客户来源"
+                :clearable="true"
+              />
+            </el-form-item>
+            <el-form-item label="纳税性质:">
+              <el-select
+                size="small"
+                v-model="queryParams.taxType"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+                @change="taxTypeChange"
+              >
+                <el-option
+                  v-for="item in taxTypes"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup name="Company">
 import useUserStore from "@/store/modules/user";
+import { taxTypes } from "@/utils/default";
 import { listSalary } from "@/api/business/production/salaryZero";
 import { listCompany } from "@/api/business/crm/company";
-import { reactive, ref, toRefs } from "vue";
+import { compile, reactive, ref, toRefs } from "vue";
 import formDialog from "./form";
 import viewDialog from "./view";
 // import workorderForm from "./form"
@@ -235,10 +337,12 @@ const { proxy } = getCurrentInstance();
 /** 查询 对象 */
 
 const list = ref([]);
+const oneself = ref(false);
 const loading = ref(true);
 const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
+const moreSearch = ref(false);
 const total = ref(0);
 const prev = ref([]);
 const permissions = useUserStore().permissions;
@@ -345,7 +449,7 @@ const queryParams = ref({
   pageNum: 1,
   pageSize: 10,
   orderByColumn: "create_time",
-  year: proxy.moment().format("yyyy"),
+  year: proxy.moment().subtract(1, "month").format("yyyy"),
   month: proxy.moment().subtract(1, "month").format("MM"),
   companyName: "",
 });
@@ -367,10 +471,21 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
   getList();
+  moreSearch.value = false;
 }
 
 /** 重置按钮操作 */
@@ -449,14 +564,14 @@ function directDialog(detail) {
 function viewable() {
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:salary:view")
+    permissions.includes("business:salaryZero:view")
   );
 }
 
 function editable() {
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:salary:edit")
+    permissions.includes("business:salaryZero:edit")
   );
 }
 
@@ -464,7 +579,7 @@ function verifiable() {
   // console.log(permissions)
   return (
     permissions.includes(all_permission) ||
-    permissions.includes("business:salary:verify")
+    permissions.includes("business:salaryZero:verify")
   );
 }
 

+ 2 - 1
src/views/business/production/salaryZero/view.vue

@@ -68,7 +68,7 @@
                       >
                     </template>
                   </el-table-column>
-                  <el-table-column label="身份证号" width="130" align="center">
+                  <el-table-column label="身份证号" width="150" align="center">
                     <template #default="scope">
                       <div>
                         {{ scope.row.idCode }}
@@ -333,6 +333,7 @@
                     </template>
                   </el-table-column>
                 </el-table>
+                <br />
               </div>
             </div>
           </el-col>

+ 3 - 4
src/views/business/service/loop/housingFundForm.vue

@@ -272,8 +272,6 @@
                       <div>
                         <el-input
                           v-model="scope.row.remark"
-                          maxlength="200"
-                          show-word-limit
                           size="small"
                           placeholder="备注"
                         />
@@ -324,14 +322,15 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="合计:">
-              <el-input-number
+              <div>{{ form.housingFundDeclare.amount }}</div>
+              <!-- <el-input-number
                 v-model="form.housingFundDeclare.amount"
                 size="small"
                 placeholder="个人缴纳"
                 :precision="2"
                 :controls="false"
                 style="width: 100%"
-              />
+              /> -->
             </el-form-item>
           </el-col>
           <el-col :span="24">

+ 61 - 186
src/views/business/service/loop/index.vue

@@ -10,119 +10,49 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:customer:service:loop:export']"
-            >
-              导出</el-dropdown-item
-            >
-            <el-dropdown-item
-              icon="Operation"
-              @click="setServiceHandler"
-              v-hasPermi="['business:customer:service:loop:transactor']"
-            >
-              设置执行人</el-dropdown-item
-            >
+            <el-dropdown-item icon="Download" @click="handleExport"
+              v-hasPermi="['business:customer:service:loop:export']">
+              导出</el-dropdown-item>
+            <el-dropdown-item icon="Operation" @click="setServiceHandler"
+              v-hasPermi="['business:customer:service:loop:transactor']">
+              设置执行人</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      label-width="68px"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="68px">
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input
-          style="width: 150px"
-          v-model="queryParams.companyName"
-          placeholder="请输入客户名称"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input style="width: 150px" v-model="queryParams.companyName" placeholder="请输入客户名称" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
-      <el-form-item label="月份:">
-        <el-select
-          v-model.trim="queryParams.month"
-          size="small"
-          placeholder="月份"
-          :clearable="true"
-          style="width: 130px"
-          @change="handleQuery"
-        >
-          <el-option
-            v-for="item in selectMonths"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
+      <el-form-item label="月份:" prop="month">
+        <el-select v-model.trim="queryParams.month" size="small" placeholder="月份" :clearable="true" style="width: 130px"
+          @change="handleQuery">
+          <el-option v-for="item in selectMonths" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
-      <el-form-item label="状态:">
-        <el-select
-          v-model.trim="queryParams.status"
-          size="small"
-          type="text"
-          placeholder="状态"
-          :clearable="true"
-          style="width: 130px"
-          @clear="clearStatus"
-        >
-          <el-option
-            v-for="item in selectStatus"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
+      <el-form-item label="状态:" prop="status">
+        <el-select v-model.trim="queryParams.status" size="small" type="text" placeholder="状态" :clearable="true"
+          style="width: 130px" @clear="clearStatus">
+          <el-option v-for="item in selectStatus" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="serviceList"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="serviceList" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column
-        label="客户名称"
-        align="center"
-        min-width="250"
-        prop="companyName"
-      />
-      <el-table-column
-        label="纳税性质"
-        min-width="100"
-        align="center"
-        prop="taxType"
-      />
-      <el-table-column
-        label="税号"
-        align="center"
-        prop="socialCreditCode"
-        min-width="180"
-      />
-      <el-table-column
-        label="项目"
-        align="center"
-        prop="taskTypeName"
-        min-width="90"
-      >
+      <el-table-column label="客户名称" align="center" min-width="250" prop="companyName" />
+      <el-table-column label="纳税性质" min-width="100" align="center" prop="taxType" />
+      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="180" />
+      <el-table-column label="项目" align="center" prop="taskTypeName" min-width="90">
         <template #default="scope">
           {{ scope.row.taskTypeName }}
         </template>
@@ -134,82 +64,51 @@
 
           {{
             scope.row.taskTypeId === "1"
-              ? moment().subtract(1, "month").format("YYYY年MM月")
-              : moment().format("YYYY年MM月")
+            ? moment().subtract(1, "month").format("YYYY年MM月")
+            : moment().format("YYYY年MM月")
           }}
         </template>
       </el-table-column>
       <el-table-column align="center">
         <template #header>
-          <div
-            style="
+          <div style="
               display: flex;
               flex-direction: row;
               justify-content: space-between;
-            "
-          >
+            ">
             <div style="display: flex; flex-direction: row">
-              <el-button
-                link
-                type="primary"
-                size="small"
-                icon="ArrowLeft"
-                @click="prevYear"
-              />
+              <el-button link type="primary" size="small" icon="ArrowLeft" @click="prevYear" />
               <el-link style="margin: 0 40px" :underline="false">{{
                 queryParams.year
               }}</el-link>
-              <el-button
-                link
-                type="primary"
-                icon="ArrowRight"
-                size="small"
-                @click="nextYear"
-              />
+              <el-button link type="primary" icon="ArrowRight" size="small" @click="nextYear" />
             </div>
             <div style="display: flex; flex-direction: row; margin-right: 20px">
-              <div
-                v-for="item in selectStatus"
-                :key="item.value"
-                style="display: flex; flex-direction: row; margin-right: 10px"
-              >
-                <div
-                  :style="{
-                    backgroundColor: item.color,
-                    width: '14px',
-                    height: '14px',
-                    margin: 'auto',
-                    borderRadius: '50%',
-                    border: item.color === '#fff' ? '1px solid #ddd' : 'none',
-                  }"
-                />
-                <div
-                  style="
+              <div v-for="item in selectStatus" :key="item.value"
+                style="display: flex; flex-direction: row; margin-right: 10px">
+                <div :style="{
+                  backgroundColor: item.color,
+                  width: '14px',
+                  height: '14px',
+                  margin: 'auto',
+                  borderRadius: '50%',
+                  border: item.color === '#fff' ? '1px solid #ddd' : 'none',
+                }" />
+                <div style="
                     display: inline-block;
                     margin-left: 10px;
                     line-height: 36px;
-                  "
-                >
+                  ">
                   {{ item.label }}
                 </div>
               </div>
             </div>
           </div>
         </template>
-        <el-table-column
-          v-for="item in selectMonths"
-          :key="item.value"
-          min-width="50"
-          :label="item.label"
-          align="center"
-        >
+        <el-table-column v-for="item in selectMonths" :key="item.value" min-width="50" :label="item.label" align="center">
           <template #default="scope">
-            <el-button
-              size="small"
-              :style="monthStatusStyle(scope.row, item.value)"
-              circle
-              @click="handleByRow(scope.row, item.value)"
-            />
+            <el-button size="small" :style="monthStatusStyle(scope.row, item.value)" circle
+              @click="handleByRow(scope.row, item.value)" />
           </template>
         </el-table-column>
       </el-table-column>
@@ -220,33 +119,20 @@
     <!-- </div>
     </div> -->
     <!-- <workorder-form ref="workOrderRef" :get-list="getList" /> -->
-    <el-dialog
-      title="新增工单"
-      v-model="formOpen"
-      width="500px"
-      append-to-body
-      draggable
-    >
+    <el-dialog title="新增工单" v-model="formOpen" width="500px" append-to-body draggable>
       <el-form ref="dictRef" :model="form" label-width="100">
         <el-row :gutter="30">
           <el-col :span="24">
             <el-form-item label="客户名称" prop="companyName">
-              <el-autocomplete
-                :fetch-suggestions="querySearchCompanyAsync"
-                :trigger-on-focus="true"
-                v-model="form.companyName"
-                placeholder="请输入客户名称"
-                popper-class="my-autocomplete"
-                @select="handleSelectCompany"
-              >
+              <el-autocomplete :fetch-suggestions="querySearchCompanyAsync" :trigger-on-focus="true"
+                v-model="form.companyName" placeholder="请输入客户名称" popper-class="my-autocomplete"
+                @select="handleSelectCompany">
                 <template #default="{ item }">
-                  <div
-                    style="
+                  <div style="
                       display: flex;
                       flex-direction: row;
                       justify-content: space-between;
-                    "
-                  >
+                    ">
                     <div class="name" style="font-size: 12px">
                       {{ item.name }}
                     </div>
@@ -258,14 +144,8 @@
           </el-col>
           <el-col :span="24">
             <el-form-item label="备注:">
-              <el-input
-                v-model.trim="form.remark"
-                type="textarea"
-                width="100%"
-                size="small"
-                placeholder="备注"
-                :clearable="true"
-              />
+              <el-input v-model.trim="form.remark" type="textarea" width="100%" size="small" placeholder="备注"
+                :clearable="true" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -278,13 +158,8 @@
       </template>
     </el-dialog>
     <!-- 分页 -->
-    <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" />
     <service-form ref="serviceRef" :get-list="getList" />
     <housing-fund-form ref="housingFundFormRef" :get-list="getList" />
     <housing-fund-view ref="housingFundViewRef" :get-list="getList" />
@@ -505,11 +380,11 @@ function querySearchCompanyAsync(queryString, cb) {
   const query =
     queryString.length > 0
       ? {
-          keyword: queryString,
-          pageSize: 20,
-          pageNum: 1,
-          orderByColumn: "create_time",
-        }
+        keyword: queryString,
+        pageSize: 20,
+        pageNum: 1,
+        orderByColumn: "create_time",
+      }
       : { pageSize: 20, pageNum: 1, orderByColumn: "create_time" };
   listCompany(query).then((res) => {
     cb(res.rows);

+ 38 - 33
src/views/business/service/loop/keepAccountForm.vue

@@ -339,8 +339,6 @@
                       <div>
                         <el-input
                           v-model="scope.row.remark"
-                          maxlength="200"
-                          show-word-limit
                           size="small"
                           placeholder="备注"
                         />
@@ -485,7 +483,8 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="合计">
-              <el-input-number
+              <div>{{ form.ticket.sumNumber }}</div>
+              <!-- <el-input-number
                 v-model="form.ticket.sumNumber"
                 size="small"
                 placeholder="合计"
@@ -493,7 +492,7 @@
                 step-strictly
                 :controls="false"
                 style="width: 100%"
-              />
+              /> -->
             </el-form-item>
           </el-col>
           <el-col :span="24">
@@ -607,7 +606,7 @@
           <el-col :span="12">
             <el-form-item label="增值税">
               <el-input-number
-                label="增值税"
+                placeholder="增值税"
                 v-model="form.reportTax.valueAddedTax"
                 style="
                   display: flex;
@@ -624,7 +623,7 @@
           <el-col :span="12">
             <el-form-item label="城建税">
               <el-input-number
-                label="城建税"
+                placeholder="城建税"
                 v-model="form.reportTax.cityConstructTax"
                 style="
                   display: flex;
@@ -640,7 +639,7 @@
           <el-col :span="12">
             <el-form-item label="教育费附加">
               <el-input-number
-                label="教育费附加"
+                placeholder="教育费附加"
                 v-model="form.reportTax.additionsTaxOfEducation"
                 style="
                   display: flex;
@@ -656,7 +655,7 @@
           <el-col :span="12">
             <el-form-item label="地方教育费附加">
               <el-input-number
-                label="地方教育费附加"
+                placeholder="地方教育费附加"
                 v-model="form.reportTax.ladditionsTaxOfEducation"
                 style="
                   display: flex;
@@ -672,7 +671,7 @@
           <el-col :span="12">
             <el-form-item label="企业所得税">
               <el-input-number
-                label="企业所得税"
+                placeholder="企业所得税"
                 v-model="form.reportTax.businessIncomeTax"
                 style="
                   display: flex;
@@ -688,7 +687,7 @@
           <el-col :span="12">
             <el-form-item label="印花税">
               <el-input-number
-                label="印花税"
+                placeholder="印花税"
                 v-model="form.reportTax.stampTax"
                 style="
                   display: flex;
@@ -704,7 +703,7 @@
           <el-col :span="12">
             <el-form-item label="文化事业建设税">
               <el-input-number
-                label="文化事业建设税"
+                placeholder="文化事业建设税"
                 v-model="form.reportTax.culturalConstructTax"
                 style="
                   display: flex;
@@ -720,7 +719,7 @@
           <el-col :span="12">
             <el-form-item label="消费税">
               <el-input-number
-                label="消费税"
+                placeholder="消费税"
                 v-model="form.reportTax.excise"
                 style="
                   display: flex;
@@ -735,24 +734,14 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="合计">
-              <el-input-number
-                label="合计"
-                v-model="form.reportTax.sumTax"
-                style="
-                  display: flex;
-                  align-items: center;
-                  justify-content: center;
-                  width: 100%;
-                "
-                :controls="false"
-              />
+              <span>{{ form.reportTax.sumTax }}</span>
             </el-form-item>
           </el-col>
           <el-divider content-position="left">个税</el-divider>
           <el-col :span="12">
             <el-form-item label="个税金额">
               <el-input-number
-                label="个税金额"
+                placeholder="个税金额"
                 v-model="form.individual.amount"
                 style="
                   display: flex;
@@ -1018,16 +1007,32 @@ function handleSave() {
 
 function ticketNumberChange() {
   let amount = 0;
-  amount += form.value.ticket.incomeTicket;
-  amount += form.value.ticket.costTicket;
-  amount += form.value.ticket.feeTicketNumber;
-  amount += form.value.ticket.ssafTicket;
-  amount += form.value.ticket.salaryTicket;
-  amount += form.value.ticket.bankSlipsNumber;
-  amount += form.value.ticket.bankCopyNumber;
-  amount += form.value.ticket.bankCopy;
-  amount += form.value.ticket.otherTicket;
+  amount +=
+    form.value.ticket.incomeTicket == null ? 0 : form.value.ticket.incomeTicket;
+  amount +=
+    form.value.ticket.costTicket == null ? 0 : form.value.ticket.costTicket;
+  amount +=
+    form.value.ticket.feeTicketNumber == null
+      ? 0
+      : form.value.ticket.feeTicketNumber;
+  amount +=
+    form.value.ticket.ssafTicket == null ? 0 : form.value.ticket.ssafTicket;
+  amount +=
+    form.value.ticket.salaryTicket == null ? 0 : form.value.ticket.salaryTicket;
+  amount +=
+    form.value.ticket.bankSlipsNumber == null
+      ? 0
+      : form.value.ticket.bankSlipsNumber;
+  amount +=
+    form.value.ticket.bankCopyNumber == null
+      ? 0
+      : form.value.ticket.bankCopyNumber;
+  amount += form.value.ticket.bankCopy == null ? 0 : form.value.ticket.bankCopy;
+  amount +=
+    form.value.ticket.otherTicket == null ? 0 : form.value.ticket.otherTicket;
   form.value.ticket.sumNumber = amount;
+  console.log("合计", amount);
+  console.log("合计1", form.value.ticket.costTicket);
 }
 
 /** 计算税额 */

+ 342 - 91
src/views/business/service/loop/socialSecurityForm.vue

@@ -1,5 +1,13 @@
 <template>
-  <el-dialog title="社保信息" v-model="visible" :width="width" append-to-body draggable @close="close" class="dialog-form">
+  <el-dialog
+    title="社保信息"
+    v-model="visible"
+    :width="width"
+    append-to-body
+    draggable
+    @close="close"
+    class="dialog-form"
+  >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
@@ -21,7 +29,12 @@
           <el-col :span="12">
             <el-form-item label="服务状态">
               <el-select v-model="form.status" placeholder="请选择">
-                <el-option v-for="item in selectStatus" :key="item.value" :value="item.value" :label="item.label" />
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :value="item.value"
+                  :label="item.label"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -30,125 +43,223 @@
             <!--操作按钮 开始-->
             <div class="details-head">
               <!-- <div class="title"><i class="fa fa-th-list" aria-hidden="true" /> 人员信息</div> -->
-              <el-button type="primary" size="small" icon="plus" @click="handleEmployeeCreate">
-                新增</el-button>
-              <el-button v-if="selections.length > 0" type="danger" size="small" icon="delete"
-                @click="handleEmployeeBatchDelete">删除</el-button>
+              <el-button
+                type="primary"
+                size="small"
+                icon="plus"
+                @click="handleEmployeeCreate"
+              >
+                新增</el-button
+              >
+              <el-button
+                v-if="selections.length > 0"
+                type="danger"
+                size="small"
+                icon="delete"
+                @click="handleEmployeeBatchDelete"
+                >删除</el-button
+              >
             </div>
             <div class="details-body">
               <div>
-                <el-table ref="sourceTable" :data="form.socialSecurityConfirm.details" size="small" max-height="490px"
-                  border show-summary :summary-method="getSummaries" highlight-current-row
-                  header-row-class-name="list-header-row" row-class-name="list-row" class="salary-table"
-                  @selection-change="handleCheckChange" @current-change="handleCurrentChange">
+                <el-table
+                  ref="sourceTable"
+                  :data="form.socialSecurityConfirm.details"
+                  size="small"
+                  max-height="490px"
+                  border
+                  show-summary
+                  :summary-method="getSummaries"
+                  highlight-current-row
+                  header-row-class-name="list-header-row"
+                  row-class-name="list-row"
+                  class="salary-table"
+                  @selection-change="handleCheckChange"
+                  @current-change="handleCurrentChange"
+                >
                   <el-table-column type="selection" width="50" align="center" />
-                  <el-table-column type="index" label="序号" width="50" align="center" />
+                  <el-table-column
+                    type="index"
+                    label="序号"
+                    width="50"
+                    align="center"
+                  />
                   <el-table-column label="姓名" width="80" align="center">
                     <template #default="scope">
                       <div>
-                        <el-input v-model="scope.row.employeeName" size="small" placeholder="姓名" style="width: 100%" />
+                        <el-input
+                          v-model="scope.row.employeeName"
+                          size="small"
+                          placeholder="姓名"
+                          style="width: 100%"
+                        />
                       </div>
-                      <span style="
+                      <span
+                        style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 12px;
-                        ">*</span>
+                        "
+                        >*</span
+                      >
                     </template>
                   </el-table-column>
                   <el-table-column label="电话号" width="130" align="center">
                     <template #default="scope">
                       <div>
-                        <el-input v-model="scope.row.phone" size="small" placeholder="电话号码" style="width: 100%" />
+                        <el-input
+                          v-model="scope.row.phone"
+                          size="small"
+                          placeholder="电话号码"
+                          style="width: 100%"
+                        />
                       </div>
-                      <span style="
+                      <span
+                        style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 12px;
-                        ">*</span>
+                        "
+                        >*</span
+                      >
                     </template>
                   </el-table-column>
-                  <el-table-column label="身份证正面" width="120" align="center">
+                  <el-table-column
+                    label="身份证正面"
+                    width="120"
+                    align="center"
+                  >
                     <template #default="scope">
                       <div>
-                        <el-upload action="#" :http-request="(params) =>
-                          uploadIdImage(params, scope.row, 'idCardImage')
-                          " :with-credentials="true" :show-file-list="false">
+                        <el-upload
+                          action="#"
+                          :http-request="
+                            (params) =>
+                              uploadIdImage(params, scope.row, 'idCardImage')
+                          "
+                          :with-credentials="true"
+                          :show-file-list="false"
+                        >
                           <template v-if="scope.row.idCardImage === ''">
                             <div class="el-upload__text" style="color: blue">
                               点击上传
                             </div>
                           </template>
-                          <img v-else class="img" :src="baseUrl + '/' + scope.row.idCardImage" alt="" />
+                          <img
+                            v-else
+                            class="img"
+                            :src="baseUrl + '/' + scope.row.idCardImage"
+                            alt=""
+                          />
                         </el-upload>
                       </div>
-                      <span style="
+                      <span
+                        style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 12px;
-                        ">*</span>
+                        "
+                        >*</span
+                      >
                     </template>
                   </el-table-column>
-                  <el-table-column label="身份证反面" width="120" align="center">
+                  <el-table-column
+                    label="身份证反面"
+                    width="120"
+                    align="center"
+                  >
                     <template #default="scope">
                       <div>
-                        <el-upload action="#" :http-request="(params) =>
-                          uploadIdImage(
-                            params,
-                            scope.row,
-                            'idCardImageBack'
-                          )
-                          " :with-credentials="true" :show-file-list="false">
+                        <el-upload
+                          action="#"
+                          :http-request="
+                            (params) =>
+                              uploadIdImage(
+                                params,
+                                scope.row,
+                                'idCardImageBack'
+                              )
+                          "
+                          :with-credentials="true"
+                          :show-file-list="false"
+                        >
                           <template v-if="scope.row.idCardImageBack === ''">
                             <div class="el-upload__text" style="color: blue">
                               点击上传
                             </div>
                           </template>
-                          <img v-else class="img" :src="baseUrl + '/' + scope.row.idCardImageBack" alt="" />
+                          <img
+                            v-else
+                            class="img"
+                            :src="baseUrl + '/' + scope.row.idCardImageBack"
+                            alt=""
+                          />
                         </el-upload>
                       </div>
-                      <span style="
+                      <span
+                        style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 12px;
-                        ">*</span>
+                        "
+                        >*</span
+                      >
                     </template>
                   </el-table-column>
                   <el-table-column label="基数" width="100" align="center">
                     <template #default="scope">
                       <div>
-                        <el-input-number v-model="scope.row.cardinalNumber" :precision="2" :controls="false"
-                          style="width: 100%" size="small" placeholder="基数" />
+                        <el-input-number
+                          v-model="scope.row.cardinalNumber"
+                          :precision="2"
+                          :controls="false"
+                          style="width: 100%"
+                          size="small"
+                          placeholder="基数"
+                        />
                       </div>
-                      <span style="
+                      <span
+                        style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 12px;
-                        ">*</span>
+                        "
+                        >*</span
+                      >
                     </template>
                   </el-table-column>
                   <el-table-column label="医疗基数" width="100" align="center">
                     <template #default="scope">
                       <div>
-                        <el-input-number v-model="scope.row.medicalCardinalNumber" :precision="2" :controls="false"
-                          style="width: 100%" size="small" placeholder="基数" />
+                        <el-input-number
+                          v-model="scope.row.medicalCardinalNumber"
+                          :precision="2"
+                          :controls="false"
+                          style="width: 100%"
+                          size="small"
+                          placeholder="基数"
+                        />
                       </div>
-                      <span style="
+                      <span
+                        style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 12px;
-                        ">*</span>
+                        "
+                        >*</span
+                      >
                     </template>
                   </el-table-column>
                   <!-- <el-table-column label="签名" width="100" header-align="center" required>
@@ -156,8 +267,11 @@
                   <el-table-column label="备注" header-align="center">
                     <template #default="scope">
                       <div>
-                        <el-input maxlength="200" show-word-limit v-model="scope.row.remark" size="small"
-                          placeholder="备注" />
+                        <el-input
+                          v-model="scope.row.remark"
+                          size="small"
+                          placeholder="备注"
+                        />
                       </div>
                     </template>
                   </el-table-column>
@@ -167,81 +281,170 @@
           </el-col>
           <el-col :span="24">
             <el-form-item label="备注">
-              <el-input v-model.trim="form.socialSecurityConfirm.content" maxlength="200" show-word-limit type="textarea"
-                rows="2" />
+              <el-input
+                v-model.trim="form.socialSecurityConfirm.content"
+                maxlength="200"
+                show-word-limit
+                type="textarea"
+                rows="2"
+              />
             </el-form-item>
           </el-col>
           <el-divider content-position="left">社保申报信息</el-divider>
           <el-col :span="12">
             <el-form-item label="单位养老金:">
-              <el-input-number v-model="form.socialSecurityDeclare.unitPension" size="small" placeholder="单位养老金"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.unitPension"
+                size="small"
+                placeholder="单位养老金"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="单位医疗险:">
-              <el-input-number v-model="form.socialSecurityDeclare.unitMedical" size="small" placeholder="单位医疗险"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.unitMedical"
+                size="small"
+                placeholder="单位医疗险"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="单位工伤险:">
-              <el-input-number v-model="form.socialSecurityDeclare.unitInjury" size="small" placeholder="单位工伤险"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.unitInjury"
+                size="small"
+                placeholder="单位工伤险"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="单位失业金:">
-              <el-input-number v-model="form.socialSecurityDeclare.unitUnemployment" size="small" placeholder="单位失业金"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.unitUnemployment"
+                size="small"
+                placeholder="单位失业金"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="单位生育险:">
-              <el-input-number v-model="form.socialSecurityDeclare.unitProcreate" size="small" placeholder="单位生育险"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.unitProcreate"
+                size="small"
+                placeholder="单位生育险"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="单位大病险:">
-              <el-input-number v-model="form.socialSecurityDeclare.unitSeriousIllness" size="small" placeholder="单位大病险"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.unitSeriousIllness"
+                size="small"
+                placeholder="单位大病险"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="单位采暖费:">
-              <el-input-number v-model="form.socialSecurityDeclare.unitHeatingFee" size="small" placeholder="单位大病险"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.unitHeatingFee"
+                size="small"
+                placeholder="单位大病险"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="个人养老金:">
-              <el-input-number v-model="form.socialSecurityDeclare.individualPension" size="small" placeholder="个人养老金"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.individualPension"
+                size="small"
+                placeholder="个人养老金"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="个人医疗险:">
-              <el-input-number v-model="form.socialSecurityDeclare.individualMedical" size="small" placeholder="个人医疗险"
-                :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.individualMedical"
+                size="small"
+                placeholder="个人医疗险"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="个人失业金:">
-              <el-input-number v-model="form.socialSecurityDeclare.individualUnemployment" size="small"
-                placeholder="个人失业金" :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.individualUnemployment"
+                size="small"
+                placeholder="个人失业金"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="个人大病险:">
-              <el-input-number v-model="form.socialSecurityDeclare.individualSeriousIllness" size="small"
-                placeholder="个人大病险" :precision="2" :controls="false" style="width: 100%" @change="amountChangeHandler" />
+              <el-input-number
+                v-model="form.socialSecurityDeclare.individualSeriousIllness"
+                size="small"
+                placeholder="个人大病险"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+                @change="amountChangeHandler"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="合计:">
-              <el-input-number v-model="form.socialSecurityDeclare.amount" size="small" placeholder="合计" :precision="2"
-                :controls="false" style="width: 100%" />
+              <div>{{ form.socialSecurityDeclare.amount }}</div>
+              <!-- <el-input-number
+                v-model="form.socialSecurityDeclare.amount"
+                size="small"
+                placeholder="合计"
+                :precision="2"
+                :controls="false"
+                style="width: 100%"
+              /> -->
             </el-form-item>
           </el-col>
           <el-col :span="24">
@@ -249,24 +452,53 @@
           </el-col>
           <el-col :span="24">
             <el-form-item label="备注">
-              <el-input v-model.trim="form.socialSecurityDeclare.content" maxlength="200" show-word-limit type="textarea"
-                rows="2" />
+              <el-input
+                v-model.trim="form.socialSecurityDeclare.content"
+                maxlength="200"
+                show-word-limit
+                type="textarea"
+                rows="2"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="凭证" required>
-              <el-upload action="#" :http-request="upload" :with-credentials="true" :show-file-list="false" multiple>
-                <el-button size="small" type="primary" icon="Upload">点击上传</el-button>
+              <el-upload
+                action="#"
+                :http-request="upload"
+                :with-credentials="true"
+                :show-file-list="false"
+                multiple
+              >
+                <el-button size="small" type="primary" icon="Upload"
+                  >点击上传</el-button
+                >
               </el-upload>
-              <el-table ref="dbTable" :data="form.socialSecurityDeclare.evidenceFiles" size="small" border
-                header-row-class-name="list-header-row" row-class-name="list-row">
-                <el-table-column label="文件名" prop="originalFileName" align="center" show-overflow-tooltip>
+              <el-table
+                ref="dbTable"
+                :data="form.socialSecurityDeclare.evidenceFiles"
+                size="small"
+                border
+                header-row-class-name="list-header-row"
+                row-class-name="list-row"
+              >
+                <el-table-column
+                  label="文件名"
+                  prop="originalFileName"
+                  align="center"
+                  show-overflow-tooltip
+                >
                   <template #default="scope">
-                    <el-button size="small" type="text" @click="openFile(scope.row)">{{
-                      scope.row.originalFileName == ""
-                      ? "打开文件"
-                      : scope.row.originalFileName
-                    }}</el-button>
+                    <el-button
+                      size="small"
+                      type="text"
+                      @click="openFile(scope.row)"
+                      >{{
+                        scope.row.originalFileName == ""
+                          ? "打开文件"
+                          : scope.row.originalFileName
+                      }}</el-button
+                    >
                   </template>
                 </el-table-column>
                 <!-- <el-table-column
@@ -275,9 +507,20 @@
                   prop="fileType"
                   align="center"
                 /> -->
-                <el-table-column label="操作" width="80" prop="fileType" align="center">
+                <el-table-column
+                  label="操作"
+                  width="80"
+                  prop="fileType"
+                  align="center"
+                >
                   <template #default="scope">
-                    <el-button size="small" link type="danger" @click="handleDel(scope.row, scope.$index)">删除</el-button>
+                    <el-button
+                      size="small"
+                      link
+                      type="danger"
+                      @click="handleDel(scope.row, scope.$index)"
+                      >删除</el-button
+                    >
                   </template>
                 </el-table-column>
               </el-table>
@@ -287,9 +530,17 @@
       </el-form>
     </div>
     <div class="form-btns-container" style="height: 40px">
-      <el-button size="small" icon="close" style="float: right" @click="close">取消</el-button>
-      <el-button type="primary" size="small" icon="Finished" style="float: right; margin-left: 12px; margin-right: 12px"
-        @click="handleSave">保存</el-button>
+      <el-button size="small" icon="close" style="float: right" @click="close"
+        >取消</el-button
+      >
+      <el-button
+        type="primary"
+        size="small"
+        icon="Finished"
+        style="float: right; margin-left: 12px; margin-right: 12px"
+        @click="handleSave"
+        >保存</el-button
+      >
     </div>
     <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
     <print-dialog ref="printDialog" :parent="this" /> -->
@@ -314,7 +565,7 @@ const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { },
+    default: () => {},
   },
 });
 const selectStatus = ref([
@@ -379,8 +630,8 @@ function reset() {
   form.value = proxy.deepClone(emptyForm);
 }
 
-function printSalary() { }
-function exportSalary() { }
+function printSalary() {}
+function exportSalary() {}
 
 function handleCurrentChange(row) {
   currentSource.value = row;

+ 27 - 7
src/views/business/service/once/form.vue

@@ -1,5 +1,13 @@
 <template>
-  <el-dialog title="公积金信息" v-model="visible" :width="width" append-to-body draggable @close="close" class="dialog-form">
+  <el-dialog
+    title="公积金信息"
+    v-model="visible"
+    :width="width"
+    append-to-body
+    draggable
+    @close="close"
+    class="dialog-form"
+  >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="120px" v-model="form">
@@ -12,7 +20,12 @@
           <el-col :span="12">
             <el-form-item label="服务状态">
               <el-select v-model="form.status" placeholder="请选择">
-                <el-option v-for="item in selectStatus" :key="item.value" :value="item.value" :label="item.label" />
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :value="item.value"
+                  :label="item.label"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -20,10 +33,17 @@
       </el-form>
     </div>
     <div class="form-btns-container" style="height: 40px">
-      <el-button type="success" size="small" style="float: right; margin-left: 12px; margin-right: 12px"
-        @click="handleSave"><i class="fa fa-floppy-o" aria-hidden="true" /> 保存</el-button>
-      <el-button size="small" style="float: right" @click="close"><i class="fa fa-close" aria-hidden="true" f />
-        取消</el-button>
+      <el-button size="small" style="float: right" icon="close" @click="close"
+        >取消</el-button
+      >
+      <el-button
+        type="primary"
+        size="small"
+        icon="Finished"
+        style="float: right; margin-left: 12px; margin-right: 12px"
+        @click="handleSave"
+        >保存</el-button
+      >
     </div>
     <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
     <print-dialog ref="printDialog" :parent="this" /> -->
@@ -46,7 +66,7 @@ const currentSource = ref(null);
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { },
+    default: () => {},
   },
 });
 const selectStatus = ref([

+ 143 - 60
src/views/business/service/once/index.vue

@@ -13,52 +13,107 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item icon="Download" @click="handleExport"
-              v-hasPermi="['business:customer:service:once:export']">
-              导出</el-dropdown-item>
-            <el-dropdown-item icon="Operation" @click="setServiceHandler"
-              v-hasPermi="['business:customer:service:once:transactor']">
-              设置执行人</el-dropdown-item>
+            <el-dropdown-item
+              icon="Download"
+              @click="handleExport"
+              v-hasPermi="['business:customer:service:once:export']"
+            >
+              导出</el-dropdown-item
+            >
+            <el-dropdown-item
+              icon="Operation"
+              @click="setServiceHandler"
+              v-hasPermi="['business:customer:service:once:transactor']"
+            >
+              设置执行人</el-dropdown-item
+            >
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
-      label-width="68px">
+    <el-form
+      class="list-search-container"
+      size="small"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      label-width="68px"
+    >
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input style="width: 150px" v-model="queryParams.companyName" placeholder="请输入客户名称" clearable
-          @keyup.enter="handleQuery" />
+        <el-input
+          style="width: 150px"
+          v-model="queryParams.companyName"
+          placeholder="请输入客户名称"
+          clearable
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="状态:" prop="status">
-        <el-select v-model.trim="queryParams.status" size="small" type="text" placeholder="状态" :clearable="true"
-          style="width: 130px" @clear="clearStatus">
-          <el-option v-for="item in selectStatus" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          v-model.trim="queryParams.status"
+          size="small"
+          type="text"
+          placeholder="状态"
+          :clearable="true"
+          style="width: 130px"
+          @clear="clearStatus"
+        >
+          <el-option
+            v-for="item in selectStatus"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="Search" @click="handleQuery"
+          >搜索</el-button
+        >
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table v-loading="loading" :data="orderList" size="small" border height="100%"
-      @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="orderList"
+      size="small"
+      border
+      height="100%"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
       <!-- <el-table-column label="工单号" align="center" prop="workOrderNo" width="200" /> -->
-      <el-table-column label="客户名称" align="center" prop="companyName" min-width="250" />
-      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="180" />
-      <el-table-column label="服务内容" align="center" min-width="500" prop="remark">
+      <el-table-column
+        label="客户名称"
+        align="center"
+        prop="companyName"
+        min-width="250"
+      />
+      <el-table-column
+        label="税号"
+        align="center"
+        prop="socialCreditCode"
+        min-width="180"
+      />
+      <el-table-column
+        label="服务内容"
+        align="center"
+        min-width="500"
+        prop="remark"
+      >
         <template #default="scope">
           <div>
             {{
               scope.row.noContract === 1
-              ? scope.row.remark
-              : `${scope.row.taskTypeName}${scope.row.taskTypeDetailName
-                  ? `-${scope.row.taskTypeDetailName}`
-                  : ""
-                }`
+                ? scope.row.remark
+                : `${scope.row.taskTypeName}${
+                    scope.row.taskTypeDetailName
+                      ? `-${scope.row.taskTypeDetailName}`
+                      : ""
+                  }`
             }}
           </div>
         </template>
@@ -69,28 +124,36 @@
             {{ getStatusLabel(scope.row) }}
             <el-popover placement="top-start" width="250" trigger="hover">
               <div style="display: flex; flex-direction: row">
-                <div v-for="item in selectStatus" :key="item.value"
-                  style="display: flex; flex-direction: row; margin-right: 10px">
-                  <div :style="{
-                    backgroundColor: item.color,
-                    width: '14px',
-                    height: '14px',
-                    margin: 'auto',
-                    borderRadius: '50%',
-                    border: item.color === '#fff' ? '1px solid #ddd' : 'none',
-                  }" />
-                  <div style="
+                <div
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  style="display: flex; flex-direction: row; margin-right: 10px"
+                >
+                  <div
+                    :style="{
+                      backgroundColor: item.color,
+                      width: '14px',
+                      height: '14px',
+                      margin: 'auto',
+                      borderRadius: '50%',
+                      border: item.color === '#fff' ? '1px solid #ddd' : 'none',
+                    }"
+                  />
+                  <div
+                    style="
                       display: inline-block;
                       margin-left: 10px;
                       line-height: 36px;
                       font-size: 10px;
-                    ">
+                    "
+                  >
                     {{ item.label }}
                   </div>
                 </div>
               </div>
               <template #reference>
-                <span style="
+                <span
+                  style="
                     color: #fff;
                     font-size: 12px;
                     text-align: center;
@@ -100,7 +163,9 @@
                     height: 14px;
                     background-color: #ccc;
                     border-radius: 50%;
-                  ">?</span>
+                  "
+                  >?</span
+                >
               </template>
             </el-popover>
           </div>
@@ -108,7 +173,17 @@
       </el-table-column>
       <el-table-column label="操作" align="center" min-width="80">
         <template #default="scope">
-          <el-button size="small" link type="primary" @click="handleByRow(scope.row)">查看</el-button>
+          <el-button
+            size="small"
+            link
+            type="primary"
+            v-hasPermi="[
+              'business:customer:service:once:view',
+              'business:customer:service:once:edit',
+            ]"
+            @click="handleByRow(scope.row)"
+            >查看</el-button
+          >
         </template>
       </el-table-column>
       <el-table-column label="工单执行人" align="center" width="110">
@@ -121,8 +196,13 @@
       </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"
+    />
     <service-form ref="serviceRef" :get-list="getList" />
     <form-dialog ref="formRef" :get-list="getList" />
     <view-dialog ref="viewRef" :get-list="getList" />
@@ -137,8 +217,8 @@ import useUserStore from "@/store/modules/user";
 const permissions = useUserStore().permissions;
 const all_permission = "*:*:*";
 
-import formDialog from './form'
-import viewDialog from './view'
+import formDialog from "./form";
+import viewDialog from "./view";
 import serviceForm from "../serviceForm";
 import { ref, toRef } from "vue";
 // import workorderForm from "./form"
@@ -280,7 +360,7 @@ function handleDelete(row) {
       getList();
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => { });
+    .catch(() => {});
 }
 
 /** 导出按钮操作 */
@@ -348,45 +428,48 @@ function getStatusLabel(row) {
 }
 
 function handleByRow(row) {
-  const record = row.records.find(
-    (v) =>
-      v.fromId === "0"
-  );
-  const editable = permissions.includes(all_permission) || permissions.includes("business:customer:service:loop:edit") >= 0
-  const viewable = permissions.includes(all_permission) || permissions.includes("business:customer:service:loop:view") >= 0
+  const record = row.records.find((v) => v.fromId === "0");
+  const editable =
+    permissions.includes(all_permission) ||
+    permissions.includes("business:customer:service:loop:edit") >= 0;
+  const viewable =
+    permissions.includes(all_permission) ||
+    permissions.includes("business:customer:service:loop:view") >= 0;
   // console.log(record);
   if (record != null && record.status === 3 && (editable || viewable)) {
     viewRef.value.open({
       workOrderId: row.id,
       companyId: row.companyId,
       companyName: row.companyName,
-    })
-  } else if (row.entrusts != null && row.entrusts.length > 0 && (editable || viewable)) {
-    if (
-      row.entrusts.length >= 0
-    ) {
+    });
+  } else if (
+    row.entrusts != null &&
+    row.entrusts.length > 0 &&
+    (editable || viewable)
+  ) {
+    if (row.entrusts.length >= 0) {
       viewRef.value.open({
         workOrderId: row.id,
         companyId: row.companyId,
         companyName: row.companyName,
-      })
+      });
     } else if (editable) {
       formRef.value.open({
         workOrderId: row.id,
         companyId: row.companyId,
         companyName: row.companyName,
-      })
+      });
     } else {
-      proxy.$modal.msg('没有编辑权限')
+      proxy.$modal.msg("没有编辑权限");
     }
   } else if (editable) {
     formRef.value.open({
       workOrderId: row.id,
       companyId: row.companyId,
       companyName: row.companyName,
-    })
+    });
   } else {
-    proxy.$modal.msg('没有编辑权限')
+    proxy.$modal.msg("没有编辑权限");
   }
 }
 

+ 37 - 19
src/views/business/service/once/view.vue

@@ -1,5 +1,13 @@
 <template>
-  <el-dialog title="公积金信息" v-model="visible" :width="width" append-to-body draggable @close="close" class="dialog-form">
+  <el-dialog
+    title="公积金信息"
+    v-model="visible"
+    :width="width"
+    append-to-body
+    draggable
+    @close="close"
+    class="dialog-form"
+  >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
@@ -16,7 +24,12 @@
           <el-col :span="12">
             <el-form-item label="服务状态">
               <el-select v-model="form.status" placeholder="请选择">
-                <el-option v-for="item in selectStatus" :key="item.value" :value="item.value" :label="item.label" />
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :value="item.value"
+                  :label="item.label"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -24,10 +37,16 @@
       </el-form>
     </div>
     <div class="form-btns-container" style="height: 40px">
-      <el-button size="small" style="float: right" @click="close"><i class="fa fa-close" aria-hidden="true" f />
-        取消</el-button>
+      <el-button size="small" style="float: right" icon="close" @click="close">
+        取消</el-button
+      >
     </div>
-    <el-image-viewer v-if="showViewer" :url-list="currentFileList" @close="closeImages" :initial-index="showIndex" />
+    <el-image-viewer
+      v-if="showViewer"
+      :url-list="currentFileList"
+      @close="closeImages"
+      :initial-index="showIndex"
+    />
     <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
     <print-dialog ref="printDialog" :parent="this" /> -->
   </el-dialog>
@@ -44,12 +63,12 @@ const visible = ref(false);
 const width = ref(800);
 const selections = ref([]);
 const currentSource = ref(null);
-const showViewer = ref(false)
+const showViewer = ref(false);
 
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { },
+    default: () => {},
   },
 });
 const selectStatus = ref([
@@ -68,28 +87,28 @@ const selectStatus = ref([
     value: 3,
     color: "#2FCB81",
   },
-])
+]);
 const { getList } = toRefs(props);
 const total = ref(0);
 
 const employeeEmptyData = {
   id: null,
-  title: '',
-  remark: '',
-  employeeName: '',
-  departmentName: '',
-  idCardImage: '',
-  idCardImageBack: '',
-  idiograph: '',
+  title: "",
+  remark: "",
+  employeeName: "",
+  departmentName: "",
+  idCardImage: "",
+  idCardImageBack: "",
+  idiograph: "",
   details: [],
-  editStatus: true
+  editStatus: true,
 };
 
 const form = ref({});
 
 const emptyForm = {
   housingFundConfirm: {},
-  housingFundDeclare: {}
+  housingFundDeclare: {},
 };
 
 function open(detail) {
@@ -113,12 +132,11 @@ function reset() {
   form.value = proxy.deepClone(emptyForm);
 }
 
-
 function handleSave() {
   proxy.$modal
     .confirm("确认保存么?")
     .then(() => {
-      const saveValue = proxy.deepClone(form.value)
+      const saveValue = proxy.deepClone(form.value);
       saveOnceDetail(saveValue).then((res) => {
         proxy.$modal.msgSuccess("保存成功");
         reset();

+ 55 - 36
src/views/business/service/serviceForm.vue

@@ -1,15 +1,30 @@
 <template>
-  <el-dialog :title="title" v-model="formOpen" width="500px" append-to-body draggable @close="cancel">
+  <el-dialog
+    :title="title"
+    v-model="formOpen"
+    width="500px"
+    append-to-body
+    draggable
+    @close="cancel"
+  >
     <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
       <el-form-item :label="title" :prop="content">
-        <el-autocomplete :fetch-suggestions="querySearchAsync" :trigger-on-focus="true" v-model="selectionName"
-          :placeholder="content" popper-class="my-autocomplete" @select="handleSelectEmployee">
+        <el-autocomplete
+          :fetch-suggestions="querySearchAsync"
+          :trigger-on-focus="true"
+          v-model="selectionName"
+          :placeholder="content"
+          popper-class="my-autocomplete"
+          @select="handleSelectEmployee"
+        >
           <template #default="{ item }">
-            <div style="
-                  display: flex;
-                  flex-direction: row;
-                  justify-content: space-between;
-                ">
+            <div
+              style="
+                display: flex;
+                flex-direction: row;
+                justify-content: space-between;
+              "
+            >
               <div class="name" style="font-size: 12px">
                 {{ item.nickName }}
               </div>
@@ -23,37 +38,42 @@
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
+        <el-button
+          type="primary"
+          icon="Finished"
+          size="small"
+          @click="submitForm"
+          >确 定</el-button
+        >
+        <el-button icon="close" size="small" @click="cancel">取 消</el-button>
       </div>
     </template>
   </el-dialog>
 </template>
 <script setup>
-import { ref } from 'vue';
+import { ref } from "vue";
 
-const title = ref('')
-const selectionName = ref('')
-const selectionUser = ref(null)
+const title = ref("");
+const selectionName = ref("");
+const selectionUser = ref(null);
 
 import { listUser } from "@/api/system/user";
-import { setWorkOrderService } from '@/api/business/crm/workOrder';
+import { setWorkOrderService } from "@/api/business/crm/workOrder";
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { },
+    default: () => {},
   },
 });
 
 const { getList } = toRefs(props);
 
-const formOpen = ref(false)
-const form = ref({
-})
-const rules = ref({})
-const content = ref('请输入员工姓名')
-const { proxy } = getCurrentInstance()
-const ids = ref([])
+const formOpen = ref(false);
+const form = ref({});
+const rules = ref({});
+const content = ref("请输入员工姓名");
+const { proxy } = getCurrentInstance();
+const ids = ref([]);
 
 /** 输入框输出建议 */
 const querySearchAsync = (queryString, cb) => {
@@ -82,32 +102,31 @@ function submitForm() {
   }).then((response) => {
     proxy.$modal.msgSuccess("设置完成!");
     formOpen.value = false;
-    cancel()
+    cancel();
     getList.value();
   });
 }
 
 function cancel() {
-  formOpen.value = false
-  reset()
+  formOpen.value = false;
+  reset();
 }
 
 function open(options) {
-  const { dialogTitle, dialogContent, values } = options
-  title.value = dialogTitle
-  content.value = dialogContent
-  formOpen.value = true
-  ids.value = values
+  const { dialogTitle, dialogContent, values } = options;
+  title.value = dialogTitle;
+  content.value = dialogContent;
+  formOpen.value = true;
+  ids.value = values;
 }
 
 function reset() {
-  selectionName.value = ''
-  selectionUser.value = null
+  selectionName.value = "";
+  selectionUser.value = null;
 }
 
-
 // 暴露给父组件的方法
 defineExpose({
-  open
-})
+  open,
+});
 </script>

+ 44 - 142
src/views/business/setting/account/index.vue

@@ -2,193 +2,95 @@
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button
-        type="primary"
-        size="small"
-        icon="Plus"
-        @click="handleAdd"
-        v-hasPermi="['business:account:add']"
-        >新增</el-button
-      >
-      <el-button
-        type="danger"
-        size="small"
-        icon="Delete"
-        :disabled="multiple"
-        @click="handleDelete"
-        v-hasPermi="['business:account:remove']"
-        >删除</el-button
-      >
+      <el-button type="primary" size="small" icon="Plus" @click="handleAdd"
+        v-hasPermi="['business:account:add']">新增</el-button>
+      <el-button type="danger" size="small" icon="Delete" :disabled="multiple" @click="handleDelete"
+        v-hasPermi="['business:account:remove']">删除</el-button>
       <el-dropdown>
         <el-button type="primary" size="small">
           其它<el-icon class="el-icon--right"><arrow-down /></el-icon>
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item
-              icon="Download"
-              @click="handleExport"
-              v-hasPermi="['business:account:export']"
-            >
-              导出</el-dropdown-item
-            >
+            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:account:export']">
+              导出</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      size="small"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      label-width="68px"
-    >
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="68px">
       <el-form-item label="账户名称:" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入账户名称"
-          style="width: 150px"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.name" placeholder="请输入账户名称" style="width: 150px" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item label="账号:" prop="accountNum">
-        <el-input
-          v-model="queryParams.accountNum"
-          placeholder="请输入账号"
-          style="width: 150px"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.accountNum" placeholder="请输入账号" style="width: 150px" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item label="开户行:" prop="accountOpen">
-        <el-input
-          v-model="queryParams.accountOpen"
-          placeholder="请输入开户行"
-          style="width: 150px"
-          clearable
-          @keyup.enter="handleQuery"
-        />
+        <el-input v-model="queryParams.accountOpen" placeholder="请输入开户行" style="width: 150px" clearable
+          @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >搜索</el-button
-        >
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table
-      v-loading="loading"
-      :data="accountList"
-      size="small"
-      border
-      height="100%"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="accountList" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="账户名称" align="center" prop="name">
         <template #default="scope">
-          <el-input
-            v-if="scope.row.isAdd || scope.row.isEdit"
-            v-model="scope.row.name"
-            size="small"
-            placeholder="请输入内容"
-          ></el-input>
+          <el-input v-if="scope.row.isAdd || scope.row.isEdit" v-model="scope.row.name" size="small"
+            placeholder="请输入内容"></el-input>
           <span v-else>{{ scope.row.name }}</span>
         </template>
       </el-table-column>
       <el-table-column label="账号" align="center" prop="accountNum">
         <template #default="scope">
-          <el-input
-            v-if="scope.row.isAdd || scope.row.isEdit"
-            size="small"
-            v-model="scope.row.accountNum"
-            placeholder="请输入内容"
-          ></el-input>
+          <el-input v-if="scope.row.isAdd || scope.row.isEdit" size="small" v-model="scope.row.accountNum"
+            placeholder="请输入内容"></el-input>
           <span v-else>{{ scope.row.accountNum }}</span>
         </template>
       </el-table-column>
       <el-table-column label="开户行" align="center" prop="accountOpen">
         <template #default="scope">
-          <el-input
-            v-if="scope.row.isAdd || scope.row.isEdit"
-            size="small"
-            v-model="scope.row.accountOpen"
-            placeholder="请输入内容"
-          ></el-input>
+          <el-input v-if="scope.row.isAdd || scope.row.isEdit" size="small" v-model="scope.row.accountOpen"
+            placeholder="请输入内容"></el-input>
           <span v-else>{{ scope.row.accountOpen }}</span>
         </template>
       </el-table-column>
 
-      <el-table-column
-        label="操作"
-        align="center"
-        class-name="small-padding fixed-width"
-      >
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template #default="scope">
-          <el-button
-            v-if="
-              !scope.row.isAdd &&
-              !scope.row.isEdit &&
-              scope.row.referrerDataSource == isReferrerDataSource
-            "
-            link
-            type="warning"
-            size="small"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['business:account:save']"
-            >修改</el-button
-          >
-          <el-button
-            v-if="
-              !scope.row.isAdd &&
-              !scope.row.isEdit &&
-              scope.row.referrerDataSource == isReferrerDataSource
-            "
-            link
-            type="danger"
-            size="small"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['business:account:remove']"
-            >删除</el-button
-          >
-          <el-button
-            v-if="
-              scope.row.isAdd ||
-              (scope.row.isEdit &&
-                scope.row.referrerDataSource == isReferrerDataSource)
-            "
-            link
-            type="primary"
-            size="small"
-            @click="handleSave(scope.row)"
-            v-hasPermi="['business:account:save']"
-            >保存</el-button
-          >
-          <el-button
-            v-if="scope.row.isEdit || scope.row.isAdd"
-            link
-            type="danger"
-            size="small"
-            @click="handCancel(scope.row)"
-            >取消</el-button
-          >
+          <el-button v-show="!scope.row.isAdd &&
+            !scope.row.isEdit &&
+            scope.row.referrerDataSource == isReferrerDataSource
+            " link type="warning" size="small" @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:account:edit']">修改</el-button>
+          <el-button v-show="!scope.row.isAdd &&
+            !scope.row.isEdit &&
+            scope.row.referrerDataSource == isReferrerDataSource
+            " link type="danger" size="small" @click="handleDelete(scope.row)"
+            v-hasPermi="['business:account:remove']">删除</el-button>
+          <el-button v-show="scope.row.isAdd ||
+            (scope.row.isEdit &&
+              scope.row.referrerDataSource == isReferrerDataSource)
+            " link type="primary" size="small" v-hasPermi="['business:account:edit', 'business:account:add']"
+            @click="handleSave(scope.row)">保存</el-button>
+          <el-button v-if="scope.row.isEdit || scope.row.isAdd" link size="small"
+            @click="handCancel(scope.row)">取消</el-button>
         </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" />
 
     <!-- 表单 -->
     <account-form ref="accountRef" :get-list="getList"></account-form>
@@ -335,7 +237,7 @@ function handleDelete(row) {
       getList();
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => {});
+    .catch(() => { });
 }
 
 /** 导出按钮操作 */

+ 12 - 2
src/views/business/socialSecurity/confirm/form.vue

@@ -214,14 +214,17 @@
                       >
                     </template>
                   </el-table-column>
-                  <el-table-column label="电话号" width="130" align="center">
+                  <el-table-column label="电话号" width="130" align="center">
                     <template #default="scope">
                       <div>
                         <el-input
                           v-model="scope.row.phone"
                           size="small"
+                          minlength="1"
+                          maxlength="11"
                           placeholder="电话号码"
                           style="width: 100%"
+                          oninput="value=value.replace(/[^\d]/g, '')"
                         />
                       </div>
                       <span
@@ -324,7 +327,7 @@
                           v-model="scope.row.cardinalNumber"
                           :precision="2"
                           :controls="false"
-                          style="width: 100%"
+                          style="width: 100%; align: left"
                           size="small"
                           placeholder="基数"
                         />
@@ -734,6 +737,13 @@ function upload(param, row, field) {
   uploadFile(formData).then((res) => {
     if (res.code === 200) {
       const file = {};
+
+      file.fileType =
+        res.newFileName.split(".")[res.newFileName.split(".").length - 1];
+      if (file.fileType !== "png" && file.fileType !== "jpg") {
+        proxy.$modal.msgError("文件类型错误,只能上传png,jpg格式");
+        return;
+      }
       file.fileName = res.newFileName;
       file.url = res.url;
       file.originalFileName = res.originalFilename;

+ 125 - 3
src/views/business/socialSecurity/confirm/index.vue

@@ -26,7 +26,7 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="78px"
     >
       <el-form-item label="客户名称:" prop="companyName">
         <el-input
@@ -72,10 +72,14 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
         >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -197,7 +201,7 @@
         </el-table-column>
       </el-table-column>
       <el-table-column
-        label="工单执行人"
+        label="执行人"
         align="center"
         prop="serviceName"
         min-width="100"
@@ -214,6 +218,110 @@
     />
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      append-to-body
+      size="small"
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        :rules="rules"
+        size="small"
+        label-width="100"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input
+                v-model="queryParams.companyName"
+                placeholder="请输入客户名称"
+                clearable
+                @keyup.enter="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="月份:">
+              <el-select
+                v-model.trim="queryParams.month"
+                size="small"
+                placeholder="月份"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in selectMonths"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="纳税性质:" prop="taxType">
+              <el-select
+                size="small"
+                v-model="queryParams.taxType"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+                @change="taxTypeChange"
+              >
+                <el-option
+                  v-for="item in taxTypes"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="状态:">
+              <el-select
+                v-model.trim="queryParams.status"
+                prop="status"
+                size="small"
+                type="text"
+                placeholder="状态"
+                :clearable="true"
+                @clear="clearStatus"
+              >
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="来源:" prop="fromCompanyName">
+              <el-input
+                size="small"
+                v-model="queryParams.fromCompanyName"
+                type="text"
+                placeholder="客户来源"
+                :clearable="true"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -221,6 +329,7 @@
 import useUserStore from "@/store/modules/user";
 import { listSocialSecurityConfirm } from "@/api/business/production/socialSecurityConfirm";
 import { listCompany } from "@/api/business/crm/company";
+import { taxTypes } from "@/utils/default";
 import { reactive, ref, toRefs } from "vue";
 import formDialog from "./form";
 import viewDialog from "./view";
@@ -232,6 +341,8 @@ const { proxy } = getCurrentInstance();
 const list = ref([]);
 const loading = ref(true);
 const ids = ref([]);
+const oneself = ref(false);
+const moreSearch = ref(false);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
@@ -362,9 +473,20 @@ function getList() {
   });
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
+  moreSearch.value = false;
   getList();
 }
 
@@ -375,7 +497,7 @@ function resetQuery() {
     pageNum: 1,
     pageSize: 10,
     year: proxy.moment().format("yyyy"),
-    month: proxy.moment().subtract(1, "month").format("MM"),
+    month: proxy.moment().format("MM"),
     companyName: "",
   };
   handleQuery();

+ 1 - 1
src/views/business/socialSecurity/confirm/view.vue

@@ -117,7 +117,7 @@
                   @selection-change="handleCheckChange"
                   @current-change="handleCurrentChange"
                 >
-                  <el-table-column type="selection" width="40" align="center" />
+                  <!-- <el-table-column type="selection" width="40" align="center" /> -->
                   <el-table-column
                     type="index"
                     label="序号"

+ 125 - 4
src/views/business/socialSecurity/declare/index.vue

@@ -15,8 +15,6 @@
             >
               导出</el-dropdown-item
             >
-            <!-- <el-dropdown-item type="warning" size="small" icon="Download" @click="handleArea"
-              v-hasPermi="['business:deposit:export']"> area</el-dropdown-item> -->
           </el-dropdown-menu>
         </template>
       </el-dropdown>
@@ -28,7 +26,7 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      label-width="68px"
+      label-width="78px"
     >
       <el-form-item label="客户名称:" prop="companyName">
         <el-input
@@ -69,10 +67,14 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item label="是否自己负责:">
+        <el-switch v-model="oneself" @change="handleOneself" />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
         >
+        <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -199,7 +201,12 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column label="执行人" width="80" align="center" prop="" />
+      <el-table-column
+        label="执行人"
+        width="80"
+        align="center"
+        prop="serviceName"
+      />
       <el-table-column label="操作" width="80" align="center" prop="">
         <template #default="scope">
           <el-button
@@ -227,6 +234,106 @@
     <view-dialog ref="viewDialogRef" :get-list="getList" />
     <member-dialog ref="memeberDialogRef" :get-list="getList" />
     <FileListDialog ref="fileListDialogRef" :get-list="getList" />
+    <!-- 更多搜索弹窗 -->
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      append-to-body
+      size="small"
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        size="small"
+        :rules="rules"
+        label-width="100"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" prop="companyName">
+              <el-input
+                v-model="queryParams.companyName"
+                placeholder="请输入客户名称"
+                clearable
+                @keyup.enter="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="所属月:">
+              <el-date-picker
+                v-model="currentMonth"
+                type="month"
+                format="YYYY年MM月"
+                :clearable="false"
+                value-format="YYYY-MM-01"
+                @change="currentMonthChange"
+                :disabled-date="disabledDateHandler"
+              />
+            </el-form-item>
+            <el-form-item label="纳税性质:" prop="taxType">
+              <el-select
+                size="small"
+                v-model="queryParams.taxType"
+                placeholder="请选择纳税性质"
+                :clearable="true"
+                @change="taxTypeChange"
+              >
+                <el-option
+                  v-for="item in taxTypes"
+                  :key="item.label"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="状态:">
+              <el-select
+                v-model.trim="queryParams.status"
+                prop="status"
+                size="small"
+                type="text"
+                placeholder="状态"
+                :clearable="true"
+                @clear="clearStatus"
+              >
+                <el-option
+                  v-for="item in selectStatus"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="来源:" prop="fromCompanyName">
+              <el-input
+                size="small"
+                v-model="queryParams.fromCompanyName"
+                type="text"
+                placeholder="客户来源"
+                :clearable="true"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -241,6 +348,7 @@ import { listCompany } from "@/api/business/crm/company";
 import { ref } from "vue";
 import formDialog from "./form";
 import viewDialog from "./view";
+import { taxTypes } from "@/utils/default";
 import memberDialog from "../memberDialog";
 import FileListDialog from "../fileListDialog.vue";
 const { proxy } = getCurrentInstance();
@@ -249,8 +357,10 @@ const { proxy } = getCurrentInstance();
 
 const orderList = ref([]);
 const loading = ref(true);
+const oneself = ref(false);
 const ids = ref([]);
 const single = ref(true);
+const moreSearch = ref(false);
 const multiple = ref(true);
 const total = ref(0);
 const prev = ref([]);
@@ -336,6 +446,7 @@ function getList() {
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
+  moreSearch.value = false;
   getList();
 }
 
@@ -351,6 +462,16 @@ function resetQuery() {
   handleQuery();
 }
 
+/** 是否为自己负责 */
+function handleOneself() {
+  if (oneself.value) {
+    queryParams.value.principal = useUserStore().user.userId;
+  } else {
+    queryParams.value.principal = null;
+  }
+  getList();
+}
+
 // 多选框选中数据
 function handleSelectionChange(selection) {
   ids.value = selection.map((item) => item.id);

+ 24 - 5
src/views/business/socialSecurity/feedbackDialog.vue

@@ -1,13 +1,32 @@
 <template>
-  <el-dialog title="反馈信息" v-model="formOpen" width="500px" append-to-body draggable @close="cancel">
+  <el-dialog
+    title="反馈信息"
+    v-model="formOpen"
+    width="500px"
+    append-to-body
+    draggable
+    @close="cancel"
+  >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="驳回原因:">
-        <el-input v-model="form.feedbackContent" type="textarea" maxlength="200" show-word-limit style="width: 100%" />
+        <el-input
+          v-model="form.feedbackContent"
+          type="textarea"
+          maxlength="200"
+          show-word-limit
+          style="width: 100%"
+        />
       </el-form-item>
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button type="primary" icon="Finished" size="small" @click="submitForm">确 定</el-button>
+        <el-button
+          type="primary"
+          icon="Finished"
+          size="small"
+          @click="submitForm"
+          >确 定</el-button
+        >
         <el-button @click="cancel" icon="close">取 消</el-button>
       </div>
     </template>
@@ -21,7 +40,7 @@ const { proxy } = getCurrentInstance();
 const props = defineProps({
   verify: {
     type: Function,
-    default: () => { },
+    default: () => {},
   },
 });
 
@@ -33,7 +52,7 @@ const form = ref({});
 
 function submitForm() {
   if (form.value.feedbackContent === "" || form.value.feedbackContent == null) {
-    proxy.$modal.msg("请填写驳回原因");
+    proxy.$modal.msgError("请填写驳回原因");
     return;
   }
   proxy.$modal

+ 38 - 34
src/views/business/source/channel/index.vue

@@ -71,6 +71,7 @@
           ></el-input>
           <el-input
             v-else-if="scope.row.isEdit"
+            size="small"
             v-model="scope.row.name"
           ></el-input>
           <span v-else>{{ scope.row.name }}</span>
@@ -114,40 +115,43 @@
         width="120"
       >
         <template #default="scope">
-          <el-button
-            v-if="!scope.row.isEdit && !scope.row.isAdd"
-            link
-            type="warning"
-            size="small"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['business:channel:edit']"
-            >修改</el-button
-          >
-          <el-button
-            v-if="!scope.row.isEdit && !scope.row.isAdd"
-            link
-            type="danger"
-            size="small"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['business:channel:remove']"
-            >删除</el-button
-          >
-          <el-button
-            v-if="scope.row.isEdit || scope.row.isAdd"
-            link
-            type="primary"
-            size="small"
-            @click="handleSave(scope.row)"
-            v-hasAnyPermi="['business:channel:add', 'business:channel:edit']"
-            >保存</el-button
-          >
-          <el-button
-            v-if="scope.row.isEdit || scope.row.isAdd"
-            link
-            size="small"
-            @click="handCancel(scope.row)"
-            >取消</el-button
-          >
+          <template v-if="!scope.row.isEdit && !scope.row.isAdd">
+            <el-button
+              v-show="!scope.row.isEdit && !scope.row.isAdd"
+              link
+              type="warning"
+              size="small"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['business:channel:edit']"
+              >修改</el-button
+            >
+            <el-button
+              v-show="!scope.row.isEdit && !scope.row.isAdd"
+              link
+              type="danger"
+              size="small"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['business:channel:remove']"
+              >删除</el-button
+            >
+          </template>
+          <template v-if="scope.row.isEdit || scope.row.isAdd">
+            <el-button
+              v-show="scope.row.isEdit || scope.row.isAdd"
+              link
+              type="primary"
+              size="small"
+              @click="handleSave(scope.row)"
+              >保存</el-button
+            >
+            <el-button
+              v-show="scope.row.isEdit || scope.row.isAdd"
+              link
+              size="small"
+              @click="handCancel(scope.row)"
+              >取消</el-button
+            >
+          </template>
         </template>
       </el-table-column>
     </el-table>

+ 40 - 35
src/views/business/source/index.vue

@@ -94,53 +94,58 @@
         class-name="small-padding fixed-width"
       >
         <template #default="scope">
-          <el-button
+          <template
             v-if="
               !scope.row.isAdd &&
               !scope.row.isEdit &&
               scope.row.referrerDataSource == isReferrerDataSource
             "
-            link
-            type="warning"
-            size="small"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['settings:source:edit']"
-            >修改</el-button
           >
-          <el-button
-            v-if="
-              !scope.row.isAdd &&
-              !scope.row.isEdit &&
-              scope.row.referrerDataSource == isReferrerDataSource
-            "
-            link
-            type="danger"
-            size="small"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['settings:source:remove']"
-            >删除</el-button
-          >
-          <el-button
+            <el-button
+              link
+              type="warning"
+              size="small"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['settings:source:edit']"
+              >修改</el-button
+            >
+            <el-button
+              link
+              type="danger"
+              size="small"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['settings:source:remove']"
+              >删除</el-button
+            >
+          </template>
+          <template
             v-if="
               scope.row.isAdd ||
               (scope.row.isEdit &&
                 scope.row.referrerDataSource == isReferrerDataSource)
             "
-            link
-            type="primary"
-            size="small"
-            @click="handleSave(scope.row)"
-            v-hasAnyPermi="['settings:source:add', 'settings:source:edit']"
-            >保存</el-button
-          >
-          <el-button
-            v-if="scope.row.isEdit || scope.row.isAdd"
-            link
-            type="infeo"
-            size="small"
-            @click="handCancel(scope.row)"
-            >取消</el-button
           >
+            <el-button
+              v-show="
+                scope.row.isAdd ||
+                (scope.row.isEdit &&
+                  scope.row.referrerDataSource == isReferrerDataSource)
+              "
+              link
+              type="primary"
+              size="small"
+              @click="handleSave(scope.row)"
+              >保存</el-button
+            >
+            <el-button
+              v-show="scope.row.isEdit || scope.row.isAdd"
+              link
+              type="infeo"
+              size="small"
+              @click="handCancel(scope.row)"
+              >取消</el-button
+            >
+          </template>
         </template>
       </el-table-column>
     </el-table>

+ 1 - 0
src/views/business/tenant/form.vue

@@ -215,6 +215,7 @@ function submitForm() {
         addTenant(form.value).then(response => {
           proxy.$modal.msgSuccess("新增成功")
           editStatus.value = false
+          form.value.id = response.data.id
           getForm()
           getList.value()
         })

+ 1 - 1
src/views/business/tenant/index.vue

@@ -77,7 +77,7 @@
         label="操作"
         align="center"
         class-name="small-padding fixed-width"
-        width="180"
+        width="200"
       >
         <template #default="scope">
           <el-button

+ 1 - 1
src/views/business/tenant/init.vue

@@ -137,7 +137,7 @@
 import { checkTenantInit, initTenant } from "@/api/business/tenant"
 import { ref } from "vue";
 const { proxy } = getCurrentInstance()
-const { sys_user_sex } = proxy.useDict('sys_normal_disable')
+const { sys_user_sex } = proxy.useDict('sys_user_sex')
 /** 父组件传参 */
 const props = defineProps({
   getList: {

+ 4 - 12
src/views/dialog/DialogContractChoice.vue

@@ -2,7 +2,7 @@
   <el-dialog v-model="visible" width="680px" append-to-body draggable>
     <template #header>
       <div class="dialog-title-container">
-        <span class="title-label"><i class="el-icon-document" /> 合同选择</span>
+        <span class="title-label" style="color: white"><i class="el-icon-document" style="color: white" /> 合同选择</span>
         <i class="el-icon-close" @click="close" />
       </div>
     </template>
@@ -21,14 +21,14 @@
         <el-table-column label="备注" prop="remark" header-align="center" />
         <el-table-column v-if="!multiple" label="操作" width="50" align="center">
           <template #default="scope">
-            <el-button type="success" size="small" icon="Finished" circle @click="handleSimpleSelected(scope.row)" />
+            <el-button link type="success" size="small" @click="handleSimpleSelected(scope.row)">选择</el-button>
           </template>
         </el-table-column>
       </el-table>
     </div>
     <!-- <div class="pagination-container"> -->
-    <pagination v-show="query.total > 0" :total="query.total" v-model:page="query.pageNum"
-      v-model:limit="queryParams.pageSize" @pagination="getList" style="background-color: rgba(0, 0, 0, 0);" />
+    <pagination v-show="query.total > 0" :total="query.total" v-model:page="query.pageNum" v-model:limit="query.pageSize"
+      @pagination="getList" style="background-color: rgba(0, 0, 0, 0);" />
     <!-- </div> -->
   </el-dialog>
 </template>
@@ -69,14 +69,6 @@ function open(input) {
 function close() {
   visible.value = false;
 }
-const handlePageChange = (val) => {
-  query.value.pn = val;
-  getList();
-}
-const handlesizeChange = (val) => {
-  query.value.size = val;
-  getList();
-}
 const getList = () => {
   listContract({ ...query.value, ...options.value })
     .then(res => {

+ 146 - 0
src/views/dialog/DialogHistoryChoice.vue

@@ -0,0 +1,146 @@
+<template>
+  <el-dialog v-model="visible" width="680px" append-to-body draggable>
+    <template #header>
+      <div class="dialog-title-container">
+        <span class="title-label" style="color: #fff"><i class="el-icon-document" /> 版本选择</span>
+        <i class="el-icon-close" @click="close" />
+      </div>
+    </template>
+    <!-- <el-form
+      class="list-search-container"
+      size="small"
+      :model="query"
+      ref="queryRef"
+      :inline="true"
+      label-width="68px"
+    >
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form> -->
+    <!-- 功能按钮 -->
+    <!-- <div v-if="multiple" class="form-btns-container">
+      <el-button type="success" size="small" @click="handleMultipleSelected"
+        ><i class="fa fa-floppy-o" aria-hidden="true" /> 确定选择</el-button
+      >
+    </div> -->
+    <div class="dialog-list-container">
+      <el-table :data="list" size="small" border height="400px" header-row-class-name="list-header-row"
+        row-class-name="list-row" @selection-change="handleSelectionChange">
+        <!-- <el-table-column
+          v-if="multiple"
+          type="selection"
+          width="40"
+          align="center"
+        /> -->
+        <el-table-column type="index" label="序号" width="46" align="center" />
+        <el-table-column label="变更日期" prop="createTime" width="150" align="center" />
+        <el-table-column label="备注" prop="remark" header-align="center" />
+        <el-table-column v-if="!multiple" label="操作" width="50" align="center">
+          <template #default="scope">
+            <el-button type="primary" size="small" link @click="handleSimpleSelected(scope.row)">查看</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <!-- <div class="pagination-container"> -->
+    <pagination v-show="query.total > 0" :total="query.total" v-model:page="query.pageNum" v-model:limit="query.pageSize"
+      @pagination="getList" style="background-color: rgba(0, 0, 0, 0)" />
+    <!-- </div> -->
+  </el-dialog>
+</template>
+<script setup>
+import { toRef } from "vue";
+import { listOrder } from "@/api/business/crm/contract";
+const props = defineProps({
+  width: {
+    type: String,
+    default: "800px",
+  },
+  multiple: {
+    type: Boolean,
+    default: () => false,
+  },
+});
+
+const emit = defineEmits(["choice"]);
+const { width, multiple } = toRefs(props);
+const data = reactive({
+  visible: false,
+  query: {
+    pn: 1,
+    size: 15,
+    total: 0,
+  },
+  list: [],
+  selections: [],
+});
+const { visible, query, list, selections } = toRefs(data);
+const fromId = ref(null)
+
+function open(id) {
+  visible.value = true;
+  fromId.value = id
+  getList();
+}
+function close() {
+  visible.value = false;
+  fromId.value = null
+}
+const handlePageChange = (val) => {
+  query.value.pn = val;
+  getList();
+};
+const handlesizeChange = (val) => {
+  query.value.size = val;
+  getList();
+};
+const getList = () => {
+  query.value.fromId = fromId.value
+  listOrder(query.value)
+    .then((res) => {
+      query.value.total = res.total;
+      list.value = res.rows;
+    })
+    .catch((err) => {
+      console.log(err);
+    });
+};
+
+const handleMultipleSelected = () => {
+  emit("choice", selections.value);
+  close();
+};
+
+const handleSimpleSelected = (row) => {
+  emit("choice", row);
+  close();
+};
+const handleSelectionChange = (choiceSelections) => {
+  selections.value = choiceSelections;
+};
+
+const resetQuery = () => {
+  query.value = {
+    pn: 1,
+    size: 15,
+    total: 0,
+  };
+  getList();
+};
+
+const handleQuery = () => {
+  query.value.pageNum = 1;
+  getList();
+};
+
+// getList()
+defineExpose({
+  open,
+  close,
+});
+</script>
+  

+ 159 - 260
src/views/index.vue

@@ -1,281 +1,180 @@
 <template>
-  <div
-    class="page-container"
-    style="padding: 24px; height: 100%; overflow: auto"
-  >
-    <!-- <el-row :gutter="24"> -->
-    <!-- <el-col :span="12">
-        <div class="dashboard-total-item">
-          <img :src="totalIcon2" />
-          <div class="dashboard-total-item-label">
-            <span>企业注册总量</span>
-            <span>
-              <span>本月注册量</span>
-              <span>{{ monthTotalCompanies }} 家</span>
-            </span>
-          </div>
-          <div class="number-label">{{ totalCompanies }} 家</div>
+  <div class="page-container list-container">
+    <div>
+      <span style="
+          display: inline-block;
+          height: 20px;
+          line-height: 18px;
+          font-size: 15px;
+          padding: 10px 20px 0 8px;
+          margin-top: 5px;
+          font-weight: 700;
+          border-left: 3px;
+        ">待完成任务</span>
+      <el-button type="success" icon="link" :disabled="multiple" size="small" @click="handleTyransfer"
+        v-hasPermi="['business:workOrder:tyransfer']">转交</el-button>
+    </div>
+    <!-- v-hasPermi="['business:workOrder:transfer']" -->
+
+    <!-- 搜索区 -->
+    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
+      label-width="68px" @selection-change="handleSelectionChange">
+      <el-form-item label="客户名称:" prop="companyName">
+        <el-input style="width: 150px" v-model="queryParams.companyName" placeholder="请输入客户名称" clearable
+          @keyup.enter="handleQuery" />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <!-- 列表区 -->
+    <el-table v-loading="loading" :data="orderList" size="small" border height="100%"
+      @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="客户名称" align="center" prop="companyName" width="250" />
+      <el-table-column label="类型" align="center" width="150">
+        <template #default="scope">
+          {{ scope.row.type === 1 ? "循环工单" : "代办工单" }}
+        </template>
+      </el-table-column>
+      <el-table-column label="项目" align="center" prop="taskTypeName">
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
+      @pagination="getList" />
+    <el-dialog title="转交执行人" v-model="formOpen" width="500px" append-to-body draggable @close="cancel">
+      <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
+        <el-form-item label="转交执行人:" :prop="content">
+          <el-autocomplete :fetch-suggestions="querySearchAsync" :trigger-on-focus="true" v-model="selectionName"
+            placeholder="输入执行人" popper-class="my-autocomplete" @select="handleSelectEmployee">
+            <template #default="{ item }">
+              <div style="
+                  display: flex;
+                  flex-direction: row;
+                  justify-content: space-between;
+                ">
+                <div class="name" style="font-size: 12px">
+                  {{ item.nickName }}
+                </div>
+                <span class="code" style="font-size: 10px; color: darkgrey">{{
+                  item.userName
+                }}</span>
+              </div>
+            </template>
+          </el-autocomplete>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" icon="Finished" size="small" @click="submitForm">确 定</el-button>
+          <el-button icon="close" size="small" @click="formOpen = false">取 消</el-button>
         </div>
-      </el-col> -->
-    <!-- <el-col :span="12">
-        <div class="dashboard-total-item">
-          <img :src="totalIcon3" />
-          <div class="dashboard-total-item-label">
-            <span>标识注册总量</span>
-            <span>
-              <span>本月注册量</span>
-              <span>{{ identityMonthTotal }} 万</span>
-            </span>
-          </div>
-          <div class="number-label">{{ identityTotal }} 万</div>
-        </div>
-      </el-col> -->
-    <!-- </el-row> -->
-    <!-- <div class="statistic-container">
-      <el-row :gutter="16">
-        <el-col :span="12">
-          <div class="item-statistic-container" id="information-statistic"></div>
-        </el-col>
-        <el-col :span="12">
-          <div class="item-statistic-container" id="appointment-statistic"></div>
-        </el-col>
-      </el-row>
-    </div> -->
-    <!-- <div class="statistic-container"> -->
-    <!-- <el-row :gutter="16">
-        <el-col :span="24"> -->
-    <div class="item-statistic-container" id="statistic"></div>
-    <!-- <div class="month-picker">
-        <span style="font-size: 14px">当前月份:2023-09</span> -->
-    <!-- <el-date-picker
-          v-model="currentMonth"
-          type="month"
-          size="small"
-          placeholder="请选择"
-          style="width: 100px;"
-        /> -->
-    <!-- </div> -->
-    <!-- 
-          @change="handleChangeMonth"</el-col>
-      </el-row> -->
-    <!-- </div> -->
+      </template>
+    </el-dialog>
   </div>
 </template>
-<script setup>
-// import totalIcon2 from "@/assets/images/dashboard-total-icon-2.png";
-// import totalIcon3 from "@/assets/images/dashboard-total-icon-3.png";
-// import { parseTime } from "@/utils/tools.js";
-//import { getDashboardStatistics } from '@/api/ss/visitor/general.js'
-//import { getTenant } from '@/utils/auth'
-
-// import * as echarts from "echarts";
-// const statisticOption = reactive({
-//   title: {
-//     text: "企业与标识每日注册统计",
-//     left: 8,
-//   },
-//   tooltip: {
-//     trigger: "axis",
-//   },
-//   legend: {
-//     data: ["企业", "标识"],
-//   },
-//   grid: {
-//     left: "16px",
-//     right: "48px",
-//     bottom: "48px",
-//     containLabel: true,
-//   },
-//   xAxis: {
-//     type: "category",
-//     boundaryGap: false,
-//     // x 坐标轴对应的值
-//     data: [],
-//   },
-//   yAxis: {
-//     type: "value",
-//   },
-//   // 缩放
-//   dataZoom: [
-//     {
-//       type: "slider",
-//       xAxisIndex: 0,
-//       filterMode: "none",
-//     },
-//     {
-//       type: "slider",
-//       yAxisIndex: 0,
-//       filterMode: "none",
-//     },
-//     {
-//       type: "inside",
-//       xAxisIndex: 0,
-//       filterMode: "none",
-//     },
-//     {
-//       type: "inside",
-//       yAxisIndex: 0,
-//       filterMode: "none",
-//     },
-//   ],
-//   // y 坐标轴对应的值
-//   series: [
-//     {
-//       name: "企业",
-//       type: "line",
-//       data: [
-//         11, 0, 0, 22, 38, 32, 20, 12, 0, 0, 14, 9, 17, 18, 35, 0, 0, 16, 20, 12,
-//         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-//       ],
-//     },
-//     {
-//       name: "标识",
-//       type: "line",
-//       data: [
-//         173, 101, 120, 240, 182, 123, 255, 198, 156, 110, 155, 121, 120, 128,
-//         209, 127, 140, 205, 142, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-//       ],
-//     },
-//   ],
-// });
-
-// let totalCompanies = ref(0);
-// let monthTotalCompanies = ref(0);
-// let identityTotal = ref(0);
-// let identityMonthTotal = ref(0);
-
-// let currentMonth = ref("");
-// let statisticDom, statistic;
-
-// onMounted(() => {
-//   currentMonth.value = parseTime(new Date(), "{y}-{m}");
-//   statisticDom = document.getElementById("statistic");
-//   statistic = echarts.init(statisticDom);
-//   getCurrentMonthDayArr();
-// });
 
-const getCurrentMonthDayArr = (dateStr) => {
-  // 获取当前日期
-  var currentDate = dateStr ? new Date(dateStr) : new Date();
-  // 获取当前月份
-  var currentMonth = currentDate.getMonth();
-  // 获取下个月的第一天
-  var nextMonth = new Date(currentDate.getFullYear(), currentMonth + 1, 1);
-  // 设置日期为当前月份的最后一天
-  nextMonth.setDate(nextMonth.getDate() - 1);
-  // 根据当前月最后一天的日期,判断每个月有多少天
-  var days = nextMonth.getDate();
-
-  // 创建一个空数组来存储日期
-  const dateArray = [];
-  // 循环遍历天数
-  for (var day = 1; day <= days; ++day) {
-    // 使用padStart函数将日期补齐到两位数,不足的地方用0填充
-    var formattedDay = String(day).padStart(2, "0");
-    // 将格式化后的日期添加到数组中
-    dateArray.push(formattedDay);
-  }
-  statisticOption.xAxis.data = dateArray;
-  totalCompanies.value = 523;
-  monthTotalCompanies.value = 276;
-  identityTotal.value = 5133;
-  identityMonthTotal.value = 3015;
-  /*
-  getDashboardStatistics({
-    year: currentDate.getFullYear(),
-    month: currentMonth + 1,
-    days,
-    tenantId: getTenant()
-  }).then((res) => {
-    // 到访
-    statisticOption.series[0].data = res.dailyInformationCount
-    // 申请
-    statisticOption.series[1].data = res.dailyAppointmentCount
-
-    visitorCount.value = res.visitorCount
-    visitorMonthCount.value = res.visitorMonthCount
-    informationTotal.value = res.informationTotal
-    informationMonthTotal.value = res.informationMonthTotal
-    appointmentTotal.value = res.appointmentTotal
-    appointmentMonthTotal.value = res.appointmentMonthTotal
-
-    statisticOption && statistic.setOption(statisticOption)
-  })
-  */
-  statisticOption && statistic.setOption(statisticOption);
-};
-const handleChangeMonth = (val) => {
-  getCurrentMonthDayArr(val);
+<script setup name="index">
+import { indexList } from "@/api/business/crm/workOrder";
+import { setWorkOrderService } from "@/api/business/crm/workOrder";
+import { listUser } from "@/api/system/user";
+const { proxy } = getCurrentInstance();
+/** 字典数组区 */
+/** 查询对象 */
+const loading = ref(true);
+const orderList = ref([]);
+const multiple = ref(true);
+const selectionName = ref("");
+const formOpen = ref(false);
+const selectionUser = ref(null);
+const prev = ref([]);
+const ids = ref([]);
+const total = ref(0);
+/** 查询对象 */
+const queryParams = ref({
+  pageNum: 1,
+  pageSize: 10,
+  companyName: "",
+  orderByColumn: "create_time",
+});
+
+const editStatus = {
+  startMonth: false,
 };
-</script>
-
-<style scoped>
-.dashboard-total-item {
-  display: flex;
-  align-items: center;
-  padding: 0 24px;
-  height: 152px;
-  background-color: #fff;
-  font-size: 16px;
-  justify-content: space-between;
-}
-
-.dashboard-total-item > .dashboard-total-item-label {
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-  line-height: 32px;
-  padding: 0 16px;
-}
 
-.dashboard-total-item > .dashboard-total-item-label > span:first-child {
-  font-weight: bold;
-  font-size: 18px;
+/***********************  方法区  ****************************/
+
+/** 查询company列表 */
+function getList() {
+  loading.value = true;
+  formOpen.value = false;
+  indexList(queryParams.value).then((response) => {
+    orderList.value = response.rows.map((l) => ({
+      ...l,
+      editStatus: proxy.deepClone(editStatus),
+    }));
+
+    total.value = response.total;
+    loading.value = false;
+    console.log("查询", response);
+  });
 }
 
-.dashboard-total-item > .dashboard-total-item-label > span:last-child {
-  color: #6b6b6b;
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
 }
 
-.dashboard-total-item
-  > .dashboard-total-item-label
-  > span:last-child
-  > span:first-child {
-  margin-right: 8px;
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
 }
 
-.dashboard-total-item
-  > .dashboard-total-item-label
-  > span:last-child
-  > span:last-child {
-  color: #4367df;
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map((item) => item.id);
+  multiple.value = !selection.length;
 }
 
-.dashboard-total-item > .number-label {
-  font-size: 40px;
-  margin-left: 16px;
-  font-weight: bold;
-  color: #5a6ac3;
+// 转交按钮操作
+function handleTyransfer() {
+  formOpen.value = true;
 }
 
-.statistic-container {
-  position: relative;
-  margin-top: 24px;
-  background-color: #fff;
-  padding-top: 16px;
-  padding-right: 12px;
-  padding-bottom: 8px;
-  padding-left: 4px;
+//转交弹框确定按钮操作
+function submitForm() {
+  if (selectionUser.value == null || selectionUser.value.userId == null) {
+    proxy.$modal.msgError("请选择用户!");
+    return;
+  }
+  setWorkOrderService({
+    ids: ids.value,
+    serviceId: selectionUser.value.userId,
+  }).then((response) => {
+    proxy.$modal.msgSuccess("设置完成!");
+    formOpen.value = false;
+    getList();
+  });
 }
 
-.statistic-container > .month-picker {
-  position: absolute;
-  top: 16px;
-  left: 240px;
-  line-height: 24px;
-}
+/** 输入框输出建议 */
+const querySearchAsync = (queryString, cb) => {
+  const query = { keyword: queryString };
+  listUser(query).then((res) => {
+    cb(res.rows);
+  });
+};
 
-.item-statistic-container {
-  height: 560px;
+//转交搜索框输入
+function handleSelectEmployee(item) {
+  console.log(item);
+  selectionName.value = item.nickName;
+  selectionUser.value = item;
 }
-</style>
+getList();
+</script>

+ 39 - 159
src/views/system/dept/index.vue

@@ -3,60 +3,22 @@
     <div :gutter="10" class="list-btns-container">
       <!--<el-button size="small" type="primary" icon="Plus" @click="handleAdd()"
         v-hasPermi="['system:dept:add']">新增</el-button>-->
-      <el-button size="small" type="info" icon="Sort" @click="toggleExpandAll"
-        >展开/折叠</el-button
-      >
+      <el-button size="small" type="info" icon="Sort" @click="toggleExpandAll">展开/折叠</el-button>
     </div>
-    <el-form
-      class="list-search-container"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      v-show="showSearch"
-    >
+    <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
       <el-form-item :label="dept + '名称:'" prop="deptName">
-        <el-input
-          size="small"
-          v-model="queryParams.deptName"
-          :placeholder="'请输入' + dept + '名称'"
-          clearable
-          style="width: 200px"
-          @keyup.enter="handleQuery"
-        />
+        <el-input size="small" v-model="queryParams.deptName" :placeholder="'请输入' + dept + '名称'" clearable
+          style="width: 200px" @keyup.enter="handleQuery" />
       </el-form-item>
       <el-form-item>
-        <el-button
-          size="small"
-          type="primary"
-          icon="Search"
-          @click="handleQuery"
-          >搜索</el-button
-        >
-        <el-button size="small" icon="Refresh" @click="resetQuery"
-          >重置</el-button
-        >
+        <el-button size="small" type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button size="small" icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-    <el-table
-      size="small"
-      v-if="refreshTable"
-      v-loading="loading"
-      :data="deptList"
-      height="100%"
-      row-key="deptId"
-      :default-expand-all="isExpandAll"
-      :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
-    >
-      <el-table-column
-        prop="deptName"
-        :label="dept + '名称'"
-        width="260"
-      ></el-table-column>
-      <el-table-column
-        prop="orderNum"
-        label="排序"
-        width="200"
-      ></el-table-column>
+    <el-table size="small" v-if="refreshTable" v-loading="loading" :data="deptList" height="100%" row-key="deptId"
+      :default-expand-all="isExpandAll" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+      <el-table-column prop="deptName" :label="dept + '名称'" width="260"></el-table-column>
+      <el-table-column prop="orderNum" label="排序" width="200"></el-table-column>
       <el-table-column prop="type" label="类别" width="100">
         <template #default="scope">
           <dict-tag :options="company_dept" :value="scope.row.type" />
@@ -64,162 +26,80 @@
       </el-table-column>
       <el-table-column prop="auditStatus" label="审核状态" width="100">
         <template #default="scope">
-          <dict-tag
-            :options="sys_audit_status"
-            :value="scope.row.auditStatus"
-          />
+          <dict-tag :options="sys_audit_status" :value="scope.row.auditStatus" />
         </template>
       </el-table-column>
-      <el-table-column
-        label="审核信息"
-        align="center"
-        :show-overflow-tooltip="true"
-      >
+      <el-table-column label="审核信息" align="center" :show-overflow-tooltip="true">
         <template #default="scope">
-          <router-link
-            v-if="scope.row.type === '1'"
-            :to="{
-              path: '/aduit/company/form',
-              query: { deptId: scope.row.deptId },
-            }"
-            class="link-type"
-          >
+          <router-link v-if="scope.row.type === '1'" :to="{
+            path: '/aduit/company/form',
+            query: { deptId: scope.row.deptId },
+          }" class="link-type">
             <span>查看详情</span>
           </router-link>
         </template>
       </el-table-column>
-      <el-table-column
-        label="创建时间"
-        align="center"
-        prop="createTime"
-        width="200"
-      >
+      <el-table-column label="创建时间" align="center" prop="createTime" width="200">
         <template #default="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
 
-      <el-table-column
-        label="操作"
-        align="center"
-        class-name="small-padding fixed-width"
-      >
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            size="small"
-            @click="handleAdd(scope.row)"
-            v-hasPermi="['system:dept:add']"
-            >新增</el-button
-          >
-          <el-button
-            v-if="scope.row.parentId != 0"
-            link
-            type="warning"
-            size="small"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:dept:edit']"
-            >编辑</el-button
-          >
-          <el-button
-            v-if="scope.row.parentId != 0"
-            size="small"
-            link
-            type="danger"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:dept:remove']"
-            >删除</el-button
-          >
+          <el-button link type="primary" size="small" @click="handleAdd(scope.row)"
+            v-hasPermi="['system:dept:add']">新增</el-button>
+          <el-button v-show="scope.row.parentId != 0" link type="warning" size="small" @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:dept:edit']">编辑</el-button>
+          <el-button v-show="scope.row.parentId != 0" size="small" link type="danger" @click="handleDelete(scope.row)"
+            v-hasPermi="['system:dept:remove']">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
 
     <!-- 添加或修改企业对话框 -->
-    <el-dialog
-      :title="title"
-      v-model="open"
-      width="600px"
-      append-to-body
-      draggable
-    >
+    <el-dialog :title="title" v-model="open" width="600px" append-to-body draggable>
       <el-form ref="deptRef" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="24" v-if="form.type === '0'">
             <el-form-item label="上级单位" prop="parentId">
-              <el-tree-select
-                v-model="form.parentId"
-                :data="deptOptions"
-                :props="{
-                  value: 'deptId',
-                  label: 'deptName',
-                  children: 'children',
-                }"
-                value-key="deptId"
-                placeholder="选择上级单位"
-                check-strictly
-                :render-after-expand="false"
-              />
+              <el-tree-select v-model="form.parentId" :data="deptOptions" :props="{
+                value: 'deptId',
+                label: 'deptName',
+                children: 'children',
+              }" value-key="deptId" placeholder="选择上级单位" check-strictly :render-after-expand="false" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item
-              :label="form.type === '1' ? '企业名称' : '部门名称'"
-              prop="deptName"
-            >
-              <el-input
-                v-model="form.deptName"
-                :placeholder="
-                  form.type === '1' ? '请输入企业名称' : '请输入部门名称'
-                "
-              />
+            <el-form-item :label="form.type === '1' ? '企业名称' : '部门名称'" prop="deptName">
+              <el-input v-model="form.deptName" :placeholder="form.type === '1' ? '请输入企业名称' : '请输入部门名称'
+                " />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="显示排序" prop="orderNum">
-              <el-input-number
-                v-model="form.orderNum"
-                controls-position="right"
-                :min="0"
-              />
+              <el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="负责人" prop="leader">
-              <el-input
-                v-model="form.leader"
-                placeholder="请输入负责人"
-                maxlength="20"
-              />
+              <el-input v-model="form.leader" placeholder="请输入负责人" maxlength="20" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="联系电话" prop="phone">
-              <el-input
-                v-model="form.phone"
-                placeholder="请输入联系电话"
-                maxlength="11"
-              />
+              <el-input v-model="form.phone" 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-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="类别">
               <el-radio-group v-model="form.type" :disabled="disabled">
-                <el-radio
-                  v-for="dict in company_dept"
-                  :key="dict.value"
-                  :label="dict.value"
-                  >{{ dict.label }}</el-radio
-                >
+                <el-radio v-for="dict in company_dept" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -414,7 +294,7 @@ function handleDelete(row) {
       getList();
       proxy.$modal.msgSuccess("删除成功");
     })
-    .catch(() => {});
+    .catch(() => { });
 }
 
 getList();

+ 248 - 110
src/views/system/dict/index.vue

@@ -1,55 +1,133 @@
 <template>
   <div class="page-btns-container list-container">
     <div :gutter="10" class="list-btns-container">
-
-      <el-button type="primary" size="small" icon="Plus" @click="handleAdd"
-        v-hasPermi="['system:dict:add']">新增</el-button>
+      <el-button
+        type="primary"
+        size="small"
+        icon="Plus"
+        @click="handleAdd"
+        v-hasPermi="['system:dict:add']"
+        >新增</el-button
+      >
       <!-- 
       <el-button type="success" size="small" icon="Edit" :disabled="single" @click="handleUpdate" v-hasPermi="['system:dict:edit']">修改</el-button> -->
 
-      <el-button type="danger" size="small" icon="Delete" :disabled="multiple" @click="handleDelete"
-        v-hasPermi="['system:dict:remove']">删除</el-button>
+      <el-button
+        type="danger"
+        size="small"
+        icon="Delete"
+        :disabled="multiple"
+        @click="handleDelete"
+        v-hasPermi="['system:dict:remove']"
+        >删除</el-button
+      >
       <!-- 
       <el-button type="warning" size="small" icon="Download" @click="handleExport" v-hasPermi="['system:dict:export']">导出</el-button> -->
 
-      <el-button type="danger" size="small" icon="Refresh" @click="handleRefreshCache"
-        v-hasPermi="['system:dict:remove']">刷新缓存</el-button>
+      <el-button
+        type="danger"
+        size="small"
+        icon="Refresh"
+        @click="handleRefreshCache"
+        v-hasPermi="['system:dict:remove']"
+        >刷新缓存</el-button
+      >
 
       <!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> -->
     </div>
 
-    <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch"
-      label-width="68px">
+    <el-form
+      class="list-search-container"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <el-form-item label="字典名称:" prop="dictName" style="width: 220px">
-        <el-input size="small" v-model="queryParams.dictName" placeholder="请输入字典名称" clearable
-          @keyup.enter="handleQuery" />
+        <el-input
+          size="small"
+          v-model="queryParams.dictName"
+          placeholder="请输入字典名称"
+          clearable
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="字典类型:" prop="dictType" style="width: 220px">
-        <el-input size="small" v-model="queryParams.dictType" placeholder="请输入字典类型" clearable
-          @keyup.enter="handleQuery" />
+        <el-input
+          size="small"
+          v-model="queryParams.dictType"
+          placeholder="请输入字典类型"
+          clearable
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="状态:" prop="status" style="width: 220px">
-        <el-select size="small" v-model="queryParams.status" placeholder="字典状态" clearable>
-          <el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
+        <el-select
+          size="small"
+          v-model="queryParams.status"
+          placeholder="字典状态"
+          clearable
+        >
+          <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: 260px">
-        <el-date-picker size="small" v-model="dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
-          start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+        <el-date-picker
+          size="small"
+          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 size="small" type="primary" icon="Search" @click="handleQuery">搜索</el-button>
-        <el-button size="small" icon="Refresh" @click="resetQuery">重置</el-button>
+        <el-button
+          size="small"
+          type="primary"
+          icon="Search"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button size="small" icon="Refresh" @click="resetQuery"
+          >重置</el-button
+        >
       </el-form-item>
     </el-form>
 
-    <el-table size="small" height="100%" v-loading="loading" :data="typeList" @selection-change="handleSelectionChange">
+    <el-table
+      size="small"
+      border
+      height="100%"
+      v-loading="loading"
+      :data="typeList"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="字典编号" align="center" prop="dictId" />
-      <el-table-column label="字典名称" align="center" prop="dictName" :show-overflow-tooltip="true" />
-      <el-table-column label="字典类型" align="center" :show-overflow-tooltip="true">
+      <el-table-column
+        label="字典名称"
+        align="center"
+        prop="dictName"
+        :show-overflow-tooltip="true"
+      />
+      <el-table-column
+        label="字典类型"
+        align="center"
+        :show-overflow-tooltip="true"
+      >
         <template #default="scope">
-          <router-link :to="'/system/dict-data/index/' + scope.row.dictId" class="link-type">
+          <router-link
+            :to="'/system/dict-data/index/' + scope.row.dictId"
+            class="link-type"
+          >
             <span>{{ scope.row.dictType }}</span>
           </router-link>
         </template>
@@ -60,27 +138,65 @@
         </template>
       </el-table-column>
 
-      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column
+        label="备注"
+        align="center"
+        prop="remark"
+        :show-overflow-tooltip="true"
+      />
+      <el-table-column
+        label="创建时间"
+        align="center"
+        prop="createTime"
+        width="180"
+      >
         <template #default="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        width="160"
+        class-name="small-padding fixed-width"
+      >
         <template #default="scope">
-          <el-button link type="warning" size="small" icon="Edit" @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:dict:edit']">修改</el-button>
-          <el-button link type="danger" size="small" icon="Delete" @click="handleDelete(scope.row)"
-            v-hasPermi="['system:dict:remove']">删除</el-button>
+          <el-button
+            link
+            type="warning"
+            size="small"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:dict:edit']"
+            >修改</el-button
+          >
+          <el-button
+            link
+            type="danger"
+            size="small"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:dict:remove']"
+            >删除</el-button
+          >
         </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-dialog :title="title" v-model="open" width="500px" append-to-body draggable>
+    <el-dialog
+      :title="title"
+      v-model="open"
+      width="500px"
+      append-to-body
+      draggable
+    >
       <el-form ref="dictRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="字典名称" prop="dictName">
           <el-input v-model="form.dictName" placeholder="请输入字典名称" />
@@ -90,11 +206,20 @@
         </el-form-item>
         <el-form-item label="状态" prop="status">
           <el-radio-group v-model="form.status">
-            <el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
+            <el-radio
+              v-for="dict in sys_normal_disable"
+              :key="dict.value"
+              :label="dict.value"
+              >{{ dict.label }}</el-radio
+            >
           </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
+          <el-input
+            v-model="form.remark"
+            type="textarea"
+            placeholder="请输入内容"
+          ></el-input>
         </el-form-item>
       </el-form>
       <template #footer>
@@ -108,55 +233,68 @@
 </template>
 
 <script setup name="Dict">
-import useDictStore from '@/store/modules/dict'
-import { listType, getType, delType, addType, updateType, refreshCache } from '@/api/system/dict/type'
+import useDictStore from "@/store/modules/dict";
+import {
+  listType,
+  getType,
+  delType,
+  addType,
+  updateType,
+  refreshCache,
+} from "@/api/system/dict/type";
 
-const { proxy } = getCurrentInstance()
-const { sys_normal_disable } = proxy.useDict('sys_normal_disable')
+const { proxy } = getCurrentInstance();
+const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
 
-const typeList = ref([])
-const open = ref(false)
-const loading = ref(true)
-const showSearch = ref(true)
-const ids = ref([])
-const single = ref(true)
-const multiple = ref(true)
-const total = ref(0)
-const title = ref('')
-const dateRange = ref([])
-const webHost = import.meta.env.VITE_APP_BASE_API
+const typeList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+const dateRange = ref([]);
+const webHost = import.meta.env.VITE_APP_BASE_API;
 
 const data = reactive({
   form: {},
   queryParams: {
     pageNum: 1,
-    module: 'system',
+    module: "system",
     pageSize: 10,
     dictName: undefined,
     dictType: undefined,
-    status: undefined
+    status: undefined,
   },
   rules: {
-    dictName: [{ required: true, message: '字典名称不能为空', trigger: 'blur' }],
-    dictType: [{ required: true, message: '字典类型不能为空', trigger: 'blur' }]
-  }
-})
+    dictName: [
+      { required: true, message: "字典名称不能为空", trigger: "blur" },
+    ],
+    dictType: [
+      { required: true, message: "字典类型不能为空", trigger: "blur" },
+    ],
+  },
+});
 
-const { queryParams, form, rules } = toRefs(data)
+const { queryParams, form, rules } = toRefs(data);
 
 /** 查询字典类型列表 */
 function getList() {
-  loading.value = true
-  listType(proxy.addDateRange(queryParams.value, dateRange.value)).then((response) => {
-    typeList.value = response.rows
-    total.value = response.total
-    loading.value = false
-  })
+  loading.value = true;
+  listType(proxy.addDateRange(queryParams.value, dateRange.value)).then(
+    (response) => {
+      typeList.value = response.rows;
+      total.value = response.total;
+      loading.value = false;
+    }
+  );
 }
 /** 取消按钮 */
 function cancel() {
-  open.value = false
-  reset()
+  open.value = false;
+  reset();
 }
 /** 表单重置 */
 function reset() {
@@ -164,96 +302,96 @@ function reset() {
     dictId: undefined,
     dictName: undefined,
     dictType: undefined,
-    status: '0',
-    remark: undefined
-  }
-  proxy.resetForm('dictRef')
+    status: "0",
+    remark: undefined,
+  };
+  proxy.resetForm("dictRef");
 }
 /** 搜索按钮操作 */
 function handleQuery() {
-  queryParams.value.pageNum = 1
-  getList()
+  queryParams.value.pageNum = 1;
+  getList();
 }
 /** 重置按钮操作 */
 function resetQuery() {
-  dateRange.value = []
-  proxy.resetForm('queryRef')
-  handleQuery()
+  dateRange.value = [];
+  proxy.resetForm("queryRef");
+  handleQuery();
 }
 /** 新增按钮操作 */
 function handleAdd() {
-  reset()
-  open.value = true
-  title.value = '添加字典类型'
+  reset();
+  open.value = true;
+  title.value = "添加字典类型";
 }
 /** 多选框选中数据 */
 function handleSelectionChange(selection) {
-  ids.value = selection.map((item) => item.dictId)
-  single.value = selection.length != 1
-  multiple.value = !selection.length
+  ids.value = selection.map((item) => item.dictId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
 }
 /** 修改按钮操作 */
 function handleUpdate(row) {
-  reset()
-  const dictId = row.dictId || ids.value
+  reset();
+  const dictId = row.dictId || ids.value;
   getType(dictId).then((response) => {
-    form.value = response.data
-    open.value = true
-    title.value = '修改字典类型'
-  })
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改字典类型";
+  });
 }
 /** 提交按钮 */
 function submitForm() {
-  proxy.$refs['dictRef'].validate((valid) => {
+  proxy.$refs["dictRef"].validate((valid) => {
     if (valid) {
       if (form.value.dictId != undefined) {
         updateType(form.value).then((response) => {
-          proxy.$modal.msgSuccess('修改成功')
-          open.value = false
-          getList()
-        })
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
       } else {
         addType(form.value).then((response) => {
-          proxy.$modal.msgSuccess('新增成功')
-          open.value = false
-          getList()
-        })
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
       }
     }
-  })
+  });
 }
 /** 删除按钮操作 */
 function handleDelete(row) {
-  const dictIds = row.dictId || ids.value
+  const dictIds = row.dictId || ids.value;
   proxy.$modal
-    .confirm('是否确认删除?')
+    .confirm("是否确认删除?")
     .then(function () {
-      return delType(dictIds)
+      return delType(dictIds);
     })
     .then(() => {
-      getList()
-      proxy.$modal.msgSuccess('删除成功')
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
     })
-    .catch(() => { })
+    .catch(() => {});
 }
 /** 导出按钮操作 */
 function handleExport() {
-  queryParams.value.ids = ids.value
+  queryParams.value.ids = ids.value;
   proxy.download(
-    'system/dict/type/export',
+    "system/dict/type/export",
     {
-      ...queryParams.value
+      ...queryParams.value,
     },
     `dict_${new Date().getTime()}.xlsx`
-  )
+  );
 }
 /** 刷新缓存按钮操作 */
 function handleRefreshCache() {
   refreshCache().then(() => {
-    proxy.$modal.msgSuccess('刷新成功')
-    useDictStore().cleanDict()
-  })
+    proxy.$modal.msgSuccess("刷新成功");
+    useDictStore().cleanDict();
+  });
 }
 
-getList()
+getList();
 </script>

+ 225 - 100
src/views/system/post/index.vue

@@ -3,41 +3,108 @@
 <template>
   <div class="page-container list-container">
     <div :gutter="10" class="list-btns-container">
-      <el-button type="primary" size="small" icon="Plus" @click="handleAdd"
-        v-hasPermi="['system:post:add']">新增</el-button>
-      <el-button type="success" size="small" icon="Edit" :disabled="single" @click="handleUpdate"
-        v-hasPermi="['system:post:edit']">修改</el-button>
-      <el-button type="danger" size="small" icon="Delete" :disabled="multiple" @click="handleDelete"
-        v-hasPermi="['system:post:remove']">删除</el-button>
-      <el-button type="warning" size="small" icon="Download" @click="handleExport"
-        v-hasPermi="['system:post:export']">导出</el-button>
+      <el-button
+        type="primary"
+        size="small"
+        icon="Plus"
+        @click="handleAdd"
+        v-hasPermi="['system:post:add']"
+        >新增</el-button
+      >
+      <el-button
+        type="success"
+        size="small"
+        icon="Edit"
+        :disabled="single"
+        @click="handleUpdate"
+        v-hasPermi="['system:post:edit']"
+        >修改</el-button
+      >
+      <el-button
+        type="danger"
+        size="small"
+        icon="Delete"
+        :disabled="multiple"
+        @click="handleDelete"
+        v-hasPermi="['system:post:remove']"
+        >删除</el-button
+      >
+      <el-button
+        type="warning"
+        size="small"
+        icon="Download"
+        @click="handleExport"
+        v-hasPermi="['system:post:export']"
+        >导出</el-button
+      >
       <!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> -->
     </div>
 
-
-    <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
+    <el-form
+      class="list-search-container"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      v-show="showSearch"
+    >
       <el-form-item label="岗位编码:" prop="postCode">
-        <el-input size="small" v-model="queryParams.postCode" placeholder="请输入岗位编码" clearable style="width: 200px"
-          @keyup.enter="handleQuery" />
+        <el-input
+          size="small"
+          v-model="queryParams.postCode"
+          placeholder="请输入岗位编码"
+          clearable
+          style="width: 200px"
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="岗位名称:" prop="postName">
-        <el-input size="small" v-model="queryParams.postName" placeholder="请输入岗位名称" clearable style="width: 200px"
-          @keyup.enter="handleQuery" />
+        <el-input
+          size="small"
+          v-model="queryParams.postName"
+          placeholder="请输入岗位名称"
+          clearable
+          style="width: 200px"
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="状态:" prop="status">
-        <el-select size="small" v-model="queryParams.status" placeholder="岗位状态" clearable style="width: 200px">
-          <el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
+        <el-select
+          size="small"
+          v-model="queryParams.status"
+          placeholder="岗位状态"
+          clearable
+          style="width: 200px"
+        >
+          <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>
-        <el-button size="small" type="primary" icon="Search" @click="handleQuery">搜索</el-button>
-        <el-button size="small" icon="Refresh" @click="resetQuery">重置</el-button>
+        <el-button
+          size="small"
+          type="primary"
+          icon="Search"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button size="small" icon="Refresh" @click="resetQuery"
+          >重置</el-button
+        >
       </el-form-item>
     </el-form>
 
-
-
-    <el-table size="small" v-loading="loading" :data="postList" height="100%" @selection-change="handleSelectionChange">
+    <el-table
+      size="small"
+      border
+      v-loading="loading"
+      :data="postList"
+      height="100%"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="岗位编号" align="center" prop="postId" />
       <el-table-column label="岗位编码" align="center" prop="postCode" />
@@ -48,26 +115,59 @@
           <dict-tag :options="sys_normal_disable" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column
+        label="创建时间"
+        align="center"
+        prop="createTime"
+        width="180"
+      >
         <template #default="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        width="180"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template #default="scope">
-          <el-button link type="warning" size="small" icon="Edit" @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:post:edit']">修改</el-button>
-          <el-button link type="danger" size="small" icon="Delete" @click="handleDelete(scope.row)"
-            v-hasPermi="['system:post:remove']">删除</el-button>
+          <el-button
+            link
+            type="warning"
+            size="small"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:post:edit']"
+            >修改</el-button
+          >
+          <el-button
+            link
+            type="danger"
+            size="small"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:post:remove']"
+            >删除</el-button
+          >
         </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-dialog :title="title" v-model="open" width="500px" append-to-body draggable>
+    <el-dialog
+      :title="title"
+      v-model="open"
+      width="500px"
+      append-to-body
+      draggable
+    >
       <el-form ref="postRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="岗位名称" prop="postName">
           <el-input v-model="form.postName" placeholder="请输入岗位名称" />
@@ -76,15 +176,28 @@
           <el-input v-model="form.postCode" placeholder="请输入编码名称" />
         </el-form-item>
         <el-form-item label="岗位顺序" prop="postSort">
-          <el-input-number v-model="form.postSort" controls-position="right" :min="0" />
+          <el-input-number
+            v-model="form.postSort"
+            controls-position="right"
+            :min="0"
+          />
         </el-form-item>
         <el-form-item label="岗位状态" prop="status">
           <el-radio-group v-model="form.status">
-            <el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
+            <el-radio
+              v-for="dict in sys_normal_disable"
+              :key="dict.value"
+              :label="dict.value"
+              >{{ dict.label }}</el-radio
+            >
           </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+          <el-input
+            v-model="form.remark"
+            type="textarea"
+            placeholder="请输入内容"
+          />
         </el-form-item>
       </el-form>
       <template #footer>
@@ -98,20 +211,26 @@
 </template>
 
 <script setup name="Post">
-import { listPost, addPost, delPost, getPost, updatePost } from '@/api/system/post'
+import {
+  listPost,
+  addPost,
+  delPost,
+  getPost,
+  updatePost,
+} from "@/api/system/post";
 
-const { proxy } = getCurrentInstance()
-const { sys_normal_disable } = proxy.useDict('sys_normal_disable')
+const { proxy } = getCurrentInstance();
+const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
 
-const postList = ref([])
-const open = ref(false)
-const loading = ref(true)
-const showSearch = ref(true)
-const ids = ref([])
-const single = ref(true)
-const multiple = ref(true)
-const total = ref(0)
-const title = ref('')
+const postList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
 
 const data = reactive({
   form: {},
@@ -120,30 +239,36 @@ const data = reactive({
     pageSize: 10,
     postCode: undefined,
     postName: undefined,
-    status: undefined
+    status: undefined,
   },
   rules: {
-    postName: [{ required: true, message: '岗位名称不能为空', trigger: 'blur' }],
-    postCode: [{ required: true, message: '岗位编码不能为空', trigger: 'blur' }],
-    postSort: [{ required: true, message: '岗位顺序不能为空', trigger: 'blur' }]
-  }
-})
+    postName: [
+      { required: true, message: "岗位名称不能为空", trigger: "blur" },
+    ],
+    postCode: [
+      { required: true, message: "岗位编码不能为空", trigger: "blur" },
+    ],
+    postSort: [
+      { required: true, message: "岗位顺序不能为空", trigger: "blur" },
+    ],
+  },
+});
 
-const { queryParams, form, rules } = toRefs(data)
+const { queryParams, form, rules } = toRefs(data);
 
 /** 查询岗位列表 */
 function getList() {
-  loading.value = true
+  loading.value = true;
   listPost(queryParams.value).then((response) => {
-    postList.value = response.rows
-    total.value = response.total
-    loading.value = false
-  })
+    postList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
 }
 /** 取消按钮 */
 function cancel() {
-  open.value = false
-  reset()
+  open.value = false;
+  reset();
 }
 /** 表单重置 */
 function reset() {
@@ -152,88 +277,88 @@ function reset() {
     postCode: undefined,
     postName: undefined,
     postSort: 0,
-    status: '0',
-    remark: undefined
-  }
-  proxy.resetForm('postRef')
+    status: "0",
+    remark: undefined,
+  };
+  proxy.resetForm("postRef");
 }
 /** 搜索按钮操作 */
 function handleQuery() {
-  queryParams.value.pageNum = 1
-  getList()
+  queryParams.value.pageNum = 1;
+  getList();
 }
 /** 重置按钮操作 */
 function resetQuery() {
-  proxy.resetForm('queryRef')
-  handleQuery()
+  proxy.resetForm("queryRef");
+  handleQuery();
 }
 /** 多选框选中数据 */
 function handleSelectionChange(selection) {
-  ids.value = selection.map((item) => item.postId)
-  single.value = selection.length != 1
-  multiple.value = !selection.length
+  ids.value = selection.map((item) => item.postId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
 }
 /** 新增按钮操作 */
 function handleAdd() {
-  reset()
-  open.value = true
-  title.value = '添加岗位'
+  reset();
+  open.value = true;
+  title.value = "添加岗位";
 }
 /** 修改按钮操作 */
 function handleUpdate(row) {
-  reset()
-  const postId = row.postId || ids.value
+  reset();
+  const postId = row.postId || ids.value;
   getPost(postId).then((response) => {
-    form.value = response.data
-    open.value = true
-    title.value = '修改岗位'
-  })
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改岗位";
+  });
 }
 /** 提交按钮 */
 function submitForm() {
-  proxy.$refs['postRef'].validate((valid) => {
+  proxy.$refs["postRef"].validate((valid) => {
     if (valid) {
       if (form.value.postId != undefined) {
         updatePost(form.value).then((response) => {
-          proxy.$modal.msgSuccess('修改成功')
-          open.value = false
-          getList()
-        })
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
       } else {
         addPost(form.value).then((response) => {
-          proxy.$modal.msgSuccess('新增成功')
-          open.value = false
-          getList()
-        })
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
       }
     }
-  })
+  });
 }
 /** 删除按钮操作 */
 function handleDelete(row) {
-  const postIds = row.postId || ids.value
+  const postIds = row.postId || ids.value;
   proxy.$modal
-    .confirm('是否确认删除?')
+    .confirm("是否确认删除?")
     .then(function () {
-      return delPost(postIds)
+      return delPost(postIds);
     })
     .then(() => {
-      getList()
-      proxy.$modal.msgSuccess('删除成功')
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
     })
-    .catch(() => { })
+    .catch(() => {});
 }
 /** 导出按钮操作 */
 function handleExport() {
-  queryParams.value.ids = ids.value
+  queryParams.value.ids = ids.value;
   proxy.download(
-    'system/post/export',
+    "system/post/export",
     {
-      ...queryParams.value
+      ...queryParams.value,
     },
     `post_${new Date().getTime()}.xlsx`
-  )
+  );
 }
 
-getList()
+getList();
 </script>

+ 3 - 1
src/views/system/reconciliation/oncePrice/formDialog.vue

@@ -151,10 +151,12 @@
         <el-button
           type="primary"
           @click="submitForm"
+          icon="Finished"
+          size="small"
           v-hasPermi="['priceList:oncePrice:save']"
           >确 定</el-button
         >
-        <el-button @click="cancel">取 消</el-button>
+        <el-button icon="close" size="small" @click="cancel">取 消</el-button>
       </div>
     </template>
   </el-dialog>

+ 5 - 5
src/views/system/reconciliation/oncePrice/index.vue

@@ -7,7 +7,7 @@
         size="small"
         icon="Plus"
         @click="handleAdd"
-        v-hasPermi="['priceList:oncePrice:save']"
+        v-hasPermi="['oncePrice:oncePrice:save']"
         >新增</el-button
       >
 
@@ -17,7 +17,7 @@
         icon="Delete"
         :disabled="multiple"
         @click="handleDelete"
-        v-hasPermi="['priceList:oncePrice:remove']"
+        v-hasPermi="['oncePrice:oncePrice:remove']"
         >删除</el-button
       >
 
@@ -26,7 +26,7 @@
         size="small"
         icon="Download"
         @click="handleExport"
-        v-hasPermi="['priceList:oncePrice:export']"
+        v-hasPermi="['oncePrice:oncePrice:export']"
         >导出</el-button
       >
     </div>
@@ -195,7 +195,7 @@
             type="warning"
             size="small"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['priceList:oncePrice:save']"
+            v-hasPermi="['oncePrice:oncePrice:save']"
             >修改</el-button
           >
           <el-button
@@ -203,7 +203,7 @@
             type="danger"
             size="small"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['priceList:oncePrice:remove']"
+            v-hasPermi="['oncePrice:oncePrice:remove']"
             >删除</el-button
           >
         </template>

部分文件因文件數量過多而無法顯示