Ver Fonte

经销商授权管理-联调列表查询、新增、删除、编辑接口

002390 há 2 anos atrás
pai
commit
2283f8e1e1

+ 34 - 14
src/api/marketing/dealer-authorization.js

@@ -4,46 +4,66 @@ import request from '@/utils/request';
 
 
 // 经销商授权信息列表
-const dealerList = (params, page) => {
-
+const list = (params) => {
   return request({
-    url: `dealer/list?pageSize=${page.pageSize}&pageNum=${page.pageNum}`,
+    url: `/dealer/list`,
     method: 'get',
     params,
   })
 }
 
 // 经销商授权信息新增接口
-const dealerInsert = (data) => {
+const insert = (data) => {
   return request({
-    url: `dealer/insert`,
+    url: `/dealer/insert`,
     method: 'post',
     data,
   })
 }
 
 // 经销商授权信息列表
-const dealerDelete = (params) => {
-
+const remove = (params) => {
+// ?id=${params.id}
   return request({
-    url: `dealer/delete?id=${params.id}`,
+    url: `/dealer/delete`,
     method: 'get',
     params,
   })
 }
 
 // 经销商授权信息新增接口
-const dealerUpdate = (data) => {
+const update = (data) => {
+  return request({
+    url: `/dealer/update`,
+    method: 'post',
+    data,
+  })
+}
+
+// 提交OA
+const submitOA = (data) => {
   return request({
-    url: `dealer/update`,
+    url: `/dealer/OA`,
     method: 'post',
     data,
   })
 }
 
+// 下载授权书
+const download = (data) => {
+  return request({
+    url: `/dealer/download`,
+    method: 'post',
+    data,
+  })
+}
+
+
 export default {
-  dealerList,
-  dealerInsert,
-  dealerDelete,
-  dealerUpdate,
+  list,
+  insert,
+  remove,
+  update,
+  submitOA,
+  download,
 }

+ 3 - 0
src/main.js

@@ -14,6 +14,9 @@ import directive from './directive' // directive
 import plugins from './plugins' // plugins
 import { download } from '@/utils/request'
 
+// 时间格式化方法挂载
+import '@/views/marketing/utils/date';
+
 import './assets/icons' // icon
 import './permission' // permission control
 import { getDicts } from "@/api/system/dict/data";

+ 54 - 54
src/views/marketing/dealer-authorization/authprivAdd.vue

@@ -1,7 +1,7 @@
 <!-- 经销商授权信息 编辑新增-->
 <template>
   <el-dialog :title="isAdd ? '新增' : '编辑'" :visible.sync="visible" :close-on-click-modal="false"
-    :close-on-press-escape="false" :before-close="beforeClose">
+    :close-on-press-escape="false" :before-close="beforeClose" @close="$emit('close')">
     <el-form :model="formData" ref="authprivAdd" label-position="left" label-width="120px" v-loading="loading">
 
       <el-form-item v-for="column in formColumns" :label="column.title" :prop="column.key"
@@ -27,43 +27,30 @@
 </template>
 
 <script>
-import dealerApi from '@/api/marketing/dealer-authorization'
+import dealerApi from '@/api/marketing/dealer-authorization';
+import { FormColumns } from './column';
+import { initParams } from '../utils/init'
+
+const initFormColumns = () =>
+  FormColumns.map((column) => {
+    const clearable = column.clearable || true;
+    return {
+      ...column,
+      clearable,
+    };
+  });
 
 export default {
 
   name: 'authprivAdd',
 
   data() {
-    const arr2Obj = function (data, keyName, valueName) {
-      return Object.fromEntries(
-        data.map((item) => [item[keyName], item[valueName]])
-      );
-    };
-
-    const formColumns = [
-      { title: '经销商名称', key: 'dealerName', type: 'Input' },
-      { title: '授权区/医院', key: 'authorizedAreaName', type: 'Input' },
-      { title: '授权产品', key: 'authorizedProductsName', type: 'Input' },
-      { title: '授权期限', key: 'time', type: 'DateRange' },
-      { title: '授权书开具时间', key: 'issueTime', type: 'Date' },
-    ];
-
-    const initFormColumns = () =>
-      formColumns.map((column) => {
-        const clearable = column.clearable || true;
-        return {
-          ...column,
-          clearable,
-        };
-      });
-
-    const initFormData = () => arr2Obj(initFormColumns(), "key", "value")
 
     return {
       visible: false,
       isAdd: true,
       loading: false,
-      formData: { ...initFormData() },
+      formData: { ...initParams(initFormColumns()) },
       formColumns: initFormColumns(),
 
     }
@@ -71,41 +58,41 @@ export default {
   methods: {
     // 控制弹窗展示
     setVisible(val) {
-
       this.visible = val;
-
     },
     setFormData(data) {
 
-      this.loading = true;
       if (data.id) {
 
+        this.loading = true;
+
+        this.isAdd = false;
+
         let objData = { ...data };
 
         objData['time'] = [objData.startTime, objData.endTime];
 
-        // delete data.startTime
-        // delete data.endTime
         this.formData = objData;
 
+        setTimeout(() => {
+          this.loading = false;
+        }, 250);
+
+        return
       }
 
-      setTimeout(() => {
-        this.loading = false;
-      }, 250);
-      
+      this.isAdd = true;
     },
     // 重置表单数据
     handleResetData() {
-      for (const key in this.formData) {
-        this.formData[key] = '';
+      this.formData = {
+        ...initParams(initFormColumns())
       }
-
       this.$refs['authprivAdd'].clearValidate();
     },
     // 取消
     handleCancel() {
-        this.handleResetData();
+      this.handleResetData();
       this.setVisible(false);
     },
     // 确定
@@ -113,35 +100,48 @@ export default {
 
       console.log(this.formData, 'this.formData');
 
-      this.$refs[formName].validate((valid) => {
+      this.$refs[formName].validate(async (valid) => {
+
         if (valid) {
           // 校验通过
           let isTime = this.formData.time && this.formData.time != '' && this.formData.time.length;
+
+          const { name, id, } = this.$store.state.user;
+
           let params = {
             ...this.formData,
             startTime: isTime ? this.formData.time[0] : '',
             endTime: isTime ? this.formData.time[1] : '',
+            updatePerson: name,
+            updateTime: new Date().Format('yyyy-MM-dd HH:mm:ss'),
+            ...(
+              this.isAdd ? {
+                status: '0',
+                createPerson: name,
+                createTime: new Date().Format('yyyy-MM-dd HH:mm:ss'),
+              } : {}
+            )
+
           }
           delete params['time']
           console.log(params, 'params--------');
 
-          if (this.isAdd) {
-            // 新增
-            dealerApi.dealerInsert(params).then(res => {
-
-            }).catch(error => {
-
-            })
-          } else {
-            // 编辑
-            dealerApi.dealerUpdate(params).then(res => {
+          try {
+            this.loading = true;
+            let { code, msg } = await (this.isAdd ?
+              dealerApi.insert(params) :
+              dealerApi.update(params))
 
-            }).catch(error => {
+            if (code === 200) {
+              this.handleCancel();
+            }
 
-            })
+          } catch (error) {
+            console.log(error, 'error');
+          } finally {
+            this.loading = false;
           }
 
-          // this.setVisible(false);
         } else {
           console.log('error submit!!');
           return false;

+ 56 - 0
src/views/marketing/dealer-authorization/column.js

@@ -0,0 +1,56 @@
+export const TableColumns = [
+  { key: "authorizedProductsCode", title: "授权产品 编码", show: true, width: 160 },
+  { key: "dealerName", title: "经销商名称", show: true, width: 200 },
+  { key: "authorizedAreaCode", title: "授权区域/医院 编码", show: false, },
+  { key: "authorizedAreaName", title: "授权区域/医院 名称", show: true, width: 200 },
+  { key: "authorizedProductsName", title: "授权产品 名称", show: true, width: 200 },
+  { key: "status", title: "状态", show: true },
+  { key: "createPerson", title: "创建人", show: true },
+  { key: "createTime", title: "创建时间", show: true, width: 160 },
+  { key: "updatePerson", title: "最后修改人", show: true },
+  { key: "updateTime", title: "最后修改时间", show: true, width: 160 },
+  { key: "id", title: "主键id----该值不显示", show: false },
+  { key: "startTime", title: "开始时间", show: false },
+  { key: "endTime", title: "结束时间", show: false },
+  { key: "issueTime", title: "授权书开具时间", show: false },
+]
+
+export const SearchColumns = [
+  { key: "dealerName", title: "经销商名称", type: "Input" },
+  { key: "authorizedAreaName", title: "授权区域/医院", type: "Input" },
+  { key: "authorizedProductsName", title: "授权产品", type: "Input" },
+  // 单据状态0=自由态,1=审批中,2=已审核,3=已驳回
+  {
+    key: "status", title: "状态", type: "Select", options: [
+      { value: 0, label: '自由态' },
+      { value: 1, label: '审批中' },
+      { value: 2, label: '已审核' },
+      { value: 3, label: '已驳回' },
+    ]
+  },
+  // { title: "授权时间", key: "time", type: "DateRange" },
+  {
+    title: "授权时间",
+    key: "startTime",
+    type: "Date",
+    config: {
+      placeholder: '开始时间'
+    }
+  },
+  {
+    title: "至",
+    key: "endTime",
+    type: "Date",
+    config: {
+      placeholder: '结束时间'
+    }
+  },
+]
+
+export const FormColumns = [
+  { title: '经销商名称', key: 'dealerName', type: 'Input' },
+  { title: '授权区/医院', key: 'authorizedAreaName', type: 'Input' },
+  { title: '授权产品', key: 'authorizedProductsName', type: 'Input' },
+  { title: '授权期限', key: 'time', type: 'DateRange' },
+  { title: '授权书开具时间', key: 'issueTime', type: 'Date' },
+]

+ 86 - 105
src/views/marketing/dealer-authorization/index.vue

@@ -2,7 +2,7 @@
 <template>
   <el-card class="dealerAuthorization" v-loading="loading" :body-style="{ padding: 0 }">
 
-    <authprivAdd ref="addDialogRef"></authprivAdd>
+    <authprivAdd ref="addDialogRef" @close="handleRefresh"></authprivAdd>
     <authprivSee ref="seeDialogRef"></authprivSee>
 
     <!-- 检索区 -->
@@ -13,14 +13,18 @@
 
         <el-input v-if="column.type == 'Input'" v-model="searchParams[column.key]" clearable></el-input>
 
-        <el-select v-if="column.type == 'Select'" v-model="searchParams[column.key]" clearable>
+        <el-select v-else-if="column.type == 'Select'" v-model="searchParams[column.key]" clearable>
           <el-option v-for="op in column.options" :label="op.label" :value="op.value"></el-option>
         </el-select>
 
-        <el-date-picker v-if="column.type == 'DateRange'" v-model="searchParams[column.key]" clearable type="daterange"
-          format="yyyy-MM-dd " value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期"
+        <el-date-picker v-else-if="column.type == 'DateRange'" v-model="searchParams[column.key]" clearable
+          type="daterange" format="yyyy-MM-dd " value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期"
           end-placeholder="结束日期">
         </el-date-picker>
+
+        <el-date-picker v-else-if="column.type == 'Date'" v-model="searchParams[column.key]" format="yyyy-MM-dd "
+          clearable value-format="yyyy-MM-dd" type="date" :placeholder="column.config.placeholder" style="width: 192px;">
+        </el-date-picker>
       </el-form-item>
 
       <el-form-item>
@@ -36,7 +40,7 @@
       <el-col :span="24" style="text-align: right">
         <el-button size="mini" type="primary" @click="handleOpenAddDialog"
           v-hasPermi="['pu:authorization:add']">新增</el-button>
-        <el-button size="mini" @click="handleSubmit">提交</el-button>
+        <!-- <el-button size="mini" @click="handleSubmit">提交</el-button> -->
         <el-button size="mini" @click="handleDownload">下载授权书</el-button>
       </el-col>
     </el-row>
@@ -44,147 +48,102 @@
     <!-- 数据展示 -->
     <el-table class="da-table" @row-dblclick="handleOpenSeeDialog" @select="handleSelect" :data="tableData"
       highlight-current-row max-height="500">
-      <el-table-column type="selection" width="35"></el-table-column>
+      <el-table-column type="selection" width="45"></el-table-column>
       <el-table-column type="index" width="55" label="序号"></el-table-column>
       <el-table-column v-for="column in tableColumns" :label="column.title" v-if="column.show"
-        :width="column.width || 180">
+        :width="column.width || 120" show-overflow-tooltip>
         <template slot-scope="scope">
           {{ column.key == 'status' ? judgeStatus(scope.row[column.key]) : scope.row[column.key] }}
         </template>
       </el-table-column>
       <el-table-column fixed="right" label="操作" width="120">
         <template slot-scope="scope">
-          <el-button type="text" size="small" @click="handleOpenAddDialog(scope.row)"
+          <el-button type="text" size="mini" @click="handleOpenAddDialog(scope.row)"
             v-hasPermi="['pu:authorization:edit']">编辑</el-button>
-          <el-button type="text" size="small" @click="handleDelDialog(scope.row)"
+          <el-button type="text" size="mini" @click="handleDelDialog(scope.row)"
+            v-if="scope.row.status == '0' || scope.row.status == '3'"
             v-hasPermi="['pu:authorization:remove']">删除</el-button>
-          <el-button @click="handleOpenSeeDialog(scope.row)" type="text" size="small">查看</el-button>
+          <!-- <el-button @click="handleOpenSeeDialog(scope.row)" type="text" size="small">查看</el-button> -->
+          <el-button type="text" size="mini" v-if="scope.row.status == '0' || scope.row.status == '3'"
+            @click="handleSubmit(scope.row)">提交</el-button>
         </template>
       </el-table-column>
     </el-table>
 
-    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :total="total"
+    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :total="page.total"
       :page-sizes="pageSizes" :page-size="page.pageSize" :current-page="page.pageNum" hide-on-single-page
-      layout="total, prev, pager, next, sizes, jumper">
+      :layout="layout">
     </el-pagination>
 
   </el-card>
 </template>
 
 <script>
-import authprivAdd from './authprivAdd.vue';
-import authprivSee from './authprivSee.vue';
-import dealerApi from '@/api/marketing/dealer-authorization'
+import dealerApi from '@/api/marketing/dealer-authorization';
+import { TableColumns, SearchColumns } from './column';
+import { initParams } from '../utils/init';
 
 export default {
 
   name: 'dealerAuthorization',
   components: {
-    authprivAdd,
-    authprivSee,
+    authprivAdd: () => import('./authprivAdd.vue'),
+    authprivSee: () => import('./authprivSee.vue'),
   },
 
   data() {
-    const arr2Obj = function (data, keyName, valueName) {
-      return Object.fromEntries(
-        data.map((item) => [item[keyName], item[valueName]])
-      );
-    };
-    // 查询条件列
-    const searchColumns = [
-      { key: "dealerName", title: "经销商名称", type: "Input" },
-      { key: "authorizedAreaName", title: "授权区域/医院", type: "Input" },
-      { key: "authorizedProductsName", title: "授权产品", type: "Input" },
-      // 单据状态0=自由态,1=审批中,2=已审核,3=已驳回
-      {
-        key: "status", title: "状态", type: "Select", options: [
-          { value: 0, label: '自由态' },
-          { value: 1, label: '审批中' },
-          { value: 2, label: '已审核' },
-          { value: 3, label: '已驳回' },
-        ]
-      },
-      { title: "授权时间", key: "time", type: "DateRange" },
-    ];
-
-    // 表列
-    const tableColumns = [
-      { key: "authorizedProductsCode", title: "授权产品 编码", show: true },
-      { key: "dealerName", title: "经销商名称", show: true },
-      { key: "authorizedAreaCode", title: "授权区域/医院 编码", show: false },
-      { key: "authorizedAreaName", title: "授权区域/医院 名称", show: true },
-      { key: "authorizedProductsName", title: "授权产品 名称", show: true },
-      { key: "status", title: "状态", show: true },
-      { key: "createPerson", title: "创建人", show: true },
-      { key: "createTime", title: "创建时间", show: true },
-      { key: "updatePerson", title: "最后修改人", show: true },
-      { key: "updateTime", title: "最后修改时间", show: true },
-      { key: "id", title: "主键id----该值不显示", show: false },
-      { key: "startTime", title: "开始时间", show: false },
-      { key: "endTime", title: "结束时间", show: false },
-      { key: "issueTime", title: "授权书开具时间", show: false },
-    ];
-
-    const initTableColumns = () => tableColumns;
-    const initSearchColumns = () => searchColumns;
-    const initSearchParams = () => arr2Obj(initSearchColumns(), "key", "value");
+    const initTableColumns = () => TableColumns;
+    const initSearchColumns = () => SearchColumns;
     return {
       loading: false,
       searchColumns: initSearchColumns(),
       searchParams: {
-        // isAsc: "desc",
-        // reasonable: "",
-        // orderByColumn: "",
-        ...initSearchParams(),
+        ...initParams(initSearchColumns()),
       },
       tableColumns: initTableColumns(),
-      tableData: [
-        {
-          authorizedProductsCode: "授权产品 编码",
-          dealerName: "经销商名称",
-          authorizedAreaCode: "授权区域/医院 编码",
-          authorizedAreaName: "授权区域/医院 名称",
-          authorizedProductsName: "授权产品 名称",
-          status: "0",
-          createPerson: "创建人",
-          createTime: "创建时间",
-          updatePerson: "最后修改人",
-          updateTime: "最后修改时间",
-          id: "主键id----该值不显示",
-          startTime: "2023-01-02",
-          endTime: "2025-01-01",
-          issueTime: "2023-01-02",
-        }
-      ],
+      tableData: [],
       checkedList: [],
-      page: { pageNum: 1, pageSize: 25 },
-      total: 0,
+      page: {
+        pageNum: 1,
+        pageSize: 25,
+        total: 0
+      },
       pageSizes: [10, 20, 50, 100],
+      layout: 'total, prev, pager, next, sizes, jumper',
     }
   },
   methods: {
     // 查询---列表查询
-    handelSearch() {
+    async handelSearch() {
       this.loading = true;
       console.log(this.searchParams, '查询');
-      let isTime = this.searchParams.time && this.searchParams.time != '' && this.searchParams.time.length;
+      // let isTime = this.searchParams.time && this.searchParams.time != '' && this.searchParams.time.length;
+      let { pageNum, pageSize } = this.page;
       let params = {
         ...this.searchParams,
-        startTime: isTime ? this.searchParams.time[0] : '',
-        endTime: isTime ? this.searchParams.time[1] : '',
+        // startTime: isTime ? this.searchParams.time[0] : '',
+        // endTime: isTime ? this.searchParams.time[1] : '',
+        pageNum: pageNum,
+        pageSize: pageSize,
       }
       delete params['time']
       console.log(params, 'params--------');
 
-      dealerApi.dealerList(params, this.page).then(res => {
+      await dealerApi.list(params).then(res => {
         console.log(res, '获取列表');
+        let { code, rows, total } = res;
         this.loading = false;
+        if (code == 200) {
+          this.tableData = rows;
+          this.page.total = total;
+        }
       }).catch(error => {
         this.loading = false;
       })
     },
     // 重置
     handelResetSearch() {
+
       console.log('重置');
 
       for (const key in this.searchParams) {
@@ -217,7 +176,7 @@ export default {
     },
     // 刷新
     handleRefresh() {
-
+      this.handelSearch();
     },
     handleSizeChange(e) {
       this.page.pageSize = e;
@@ -249,38 +208,60 @@ export default {
       setVisible(true);
     },
     // 删除
-    handleDelDialog(rows) {
+    async handleDelDialog(rows) {
       console.log(rows, '删除');
-
-      // dealerApi.dealerDelete().then(res => {
-      //   console.log(res, '删除');
-      // }).catch(error => {
-
-      // })
+      let { id } = rows;
+      try {
+        this.loading = true;
+        let { code, msg } = await dealerApi.remove({ id });
+        if (code == 200) {
+          this.handleRefresh();
+        }
+      } catch (error) {
+        console.log(error);
+      } finally {
+        this.loading = false;
+      }
     },
     // 提交
-    handleSubmit() {
-      console.log('批量提交');
+    handleSubmit(row) {
+
+      console.log(row, '提交');
       let params = {
         id: '',
         status: ''
       }
-      // 编辑
-      // dealerApi.dealerUpdate(params).then(res => {
-      //   console.log(res, '编辑');
+      // try {
+      //   this.loading = true;
+      //   let { code, msg } = await dealerApi.submitOA();
+      //   if (code == 200) {
+      //     this.handleRefresh();
+      //   }
+      // } catch (error) {
+      //   console.log(error);
+      // } finally {
+      //   this.loading = false;
+
+      // }
+
 
-      // }).catch(error => {
 
-      // })
     },
     // 下载
     handleDownload() {
       console.log('下载');
+      // try {
+      //   let { code, msg } = await dealerApi.download();
+      //   if (code == 200) {
+      //   }
+      // } catch (error) {
+      //   console.log(error);
+      // } finally {}
     },
 
   },
   created() {
-
+    this.handelSearch();
   }
 
 }

+ 22 - 0
src/views/marketing/utils/date.js

@@ -0,0 +1,22 @@
+// 对Date的扩展,将 Date 转化为指定格式的String
+// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
+// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
+// 例子: 
+// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
+// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
+
+Date.prototype.Format = function (fmt) {
+  var o = {
+      "M+": this.getMonth() + 1, //月份 
+      "d+": this.getDate(), //日 
+      "H+": this.getHours(), //小时 
+      "m+": this.getMinutes(), //分 
+      "s+": this.getSeconds(), //秒 
+      "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
+      "S": this.getMilliseconds() //毫秒 
+  };
+  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+  for (var k in o)
+  if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+  return fmt;
+}

+ 11 - 0
src/views/marketing/utils/init.js

@@ -0,0 +1,11 @@
+export  const arr2Obj = function (data, keyName, valueName) {
+  return Object.fromEntries(
+    data.map((item) => [item[keyName], item[valueName]])
+  );
+};
+
+export const initParams = (params) =>{
+
+  return arr2Obj(params, "key", "value")
+
+}

+ 2 - 2
vue.config.js

@@ -37,14 +37,14 @@ module.exports = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         // target: `http://172.16.100.107:8080/drp-admin`, //测试
-        target: `http://test-sy.derom.com/drp-admin`, //测试
+        // target: `http://test-sy.derom.com/drp-admin`, //测试
         // target: `http://release-sy.derom.com/drp-admin`, //预发
         // target: `http://sy.derom.com/drp-admin`, //生产
         // target: `http://172.16.63.202:8000/drp-admin`, // D本地
         // target: `http://172.16.62.241:8000/drp-admin`, //笑寒本地
         // target: `http://172.16.13.152:8000/drp-admin`, //豪哥本地
         // target: `http://172.16.13.47:8000/drp-admin`, //石杨本地
-        // target: `http://172.16.13.113:8000/drp-admin`, //DWT本地
+        target: `http://172.16.13.113:8000/drp-admin`, //DWT本地
         // target: `http://172.16.13.77:8000/drp-admin`, //TQ本地
         changeOrigin: true,
         pathRewrite: {