hml2020 1 год назад
Родитель
Сommit
827f52e411

+ 85 - 5
src/api/procure.ts

@@ -15,7 +15,9 @@ import UserInfo from '@/model/UserInfo';
 export default class DemoApi {
   // 采购管理  表单配置信息
   static getConfig(data): Promise<BaseResponse<Chanel[]>> {
-    return http.server().get('visual-api/paas/visualdev/OnlineDev/' + data + '/Config')
+    return http
+      .server()
+      .get('visual-api/paas/visualdev/OnlineDev/' + data + '/Config')
       .then((res) => {
         return res;
       });
@@ -23,18 +25,35 @@ export default class DemoApi {
 
   // 采购管理-项目列表
   static getProjectList(): Promise<BaseResponse<Chanel[]>> {
-    return http.server().get('bi-api/report/dataapi/project_info').then((res) => {
+    return http
+      .server()
+      .get('bi-api/report/dataapi/project_info')
+      .then((res) => {
         return res;
       });
   }
 
   // 采购管理-表单数据列表
   static getFormList(data): Promise<BaseResponse<Chanel[]>> {
-    return http.server().post('bi-api/cube/browser/'+ data.dbLinkId,data.form).then((res) => {
+    return http
+      .server()
+      .post('bi-api/cube/browser/' + data.dbLinkId, data.form)
+      .then((res) => {
+        return res.data;
+      });
+  }
+
+  // 打款回款-账户列表
+  static getAccountList(data): Promise<BaseResponse<Chanel[]>> {
+    return http
+      .server()
+      .get('bi-api/report/dataapi/payment_api?ppid=' + data)
+      .then((res) => {
         return res.data;
       });
   }
- //编辑数据
+
+  //编辑数据
   static editData(data): Promise<BaseResponse<Chanel[]>> {
     return http
       .server()
@@ -47,6 +66,67 @@ export default class DemoApi {
       )
       .then((res) => {
         return res.data;
-      })
+      });
+  }
+
+  // 新增数据
+  static addData(data): Promise<BaseResponse<Chanel[]>> {
+    return http
+      .server()
+      .post('visual-api/paas/visualdev/OnlineDev/v2/' + data.formKey, data.data)
+      .then((res) => {
+        return res.data;
+      });
+  }
+
+  // 删除数据
+  static deleteData(data): Promise<BaseResponse<Chanel[]>> {
+    return http
+      .server()
+      .delete(
+        'visual-api/paas/visualdev/OnlineDev/' +
+          data.formKey +
+          data.id +
+          '?dataJson=' +
+          data.jsonData
+      )
+      .then((res) => {
+        return res.data;
+      });
+  }
+
+  // 获取油品信息
+  static getOilInfo(data): Promise<BaseResponse<Chanel[]>> {
+    return http
+      .server()
+      .get(
+        'bi-api/report/dataapi/project_oil_info?projectid=' +
+          data.projectid +
+          '&ypmc=' +
+          data.ypmc
+      )
+      .then((res) => {
+        return res.data;
+      });
+  }
+
+  // 获取收款账户
+  static getAccountInfo(data): Promise<BaseResponse<Chanel[]>> {
+    return http
+      .server()
+      .get('bi-api/report/dataapi/collection_api?projectid=' + data)
+      .then((res) => {
+        return res.data;
+      });
+  }
+
+  // 获取付款账户
+  static getPayAccountInfo(data): Promise<BaseResponse<Chanel[]>> {
+    return http
+      .server()
+      .get('bi-api/report/dataapi/payment_api?ppid=' + data)
+      .then((res) => {
+        return res.data;
+      });
   }
 }

+ 0 - 6
src/manifest.json

@@ -47,12 +47,6 @@
       "urlCheck": false
     },
     "usingComponents": true,
-    "permission": {
-      "scope.userFuzzyLocation": {
-        "desc": "你的位置信息将用于小程序位置接口的效果展示"
-      }
-    },
-    "requiredPrivateInfos": ["getFuzzyLocation"],
     "libVersion": "latest"
   },
   "mp-alipay": {

+ 1 - 1
src/pages/login/Login.vue

@@ -172,7 +172,7 @@ const openPrivacyContract = () => {
   background-size: 100% 100%;
 
   &-main {
-    padding: 75rpx;
+    padding: 75rpx 40rpx;
     position: relative;
     display: flex;
     flex-direction: column;

+ 140 - 46
src/pages/payment/edit.vue

@@ -1,12 +1,17 @@
 <template>
   <view class="edit">
-    <wd-cell-group custom-class="group" border>
+    <wd-cell-group v-if="isEdit == '1'" custom-class="group" border>
       <wd-calendar
         v-model="detail['收款日期']"
         label="收款日期"
         @confirm="handleConfirm($event, 1)"
       />
-      <wd-picker :columns="columns" label="项目名称" v-model="detail['项目名称']" />
+      <wd-picker
+        :columns="columns"
+        label="项目名称"
+        @confirm="project($event, 1)"
+        v-model="detail['项目名称']"
+      />
       <wd-input type="number" label="金额" v-model="detail['金额']" />
       <wd-picker :columns="payList" label="回款方式" v-model="detail['回款方式']" />
       <wd-input type="number" label="贴息费" v-model="detail['贴息费']" />
@@ -14,8 +19,13 @@
       <wd-input type="number" label="余额" v-model="detail['余额']" />
       <wd-input label="汇款单位名称" v-model="detail['汇款单位名称']" />
       <wd-input label="汇款单位账号" v-model="detail['汇款单位账号']" />
-      <wd-input label="账户名称" v-model="detail['账户名称']" />
-      <wd-input label="收款银行账号" readonly v-model="detail['收款银行账号']" />
+      <wd-picker
+        :columns="accounts"
+        label="账户名称"
+        @confirm="clickAccount($event, 1)"
+        v-model="detail['账户名称']"
+      />
+      <wd-input label="收款银行账号" readonly v-model="detail['银行账号']" />
       <wd-cell title="汇款类型">
         <template #default>
           <wd-radio-group v-model="detail['汇款类型']" shape="button">
@@ -25,47 +35,43 @@
         </template>
       </wd-cell>
       <wd-input label="财务姓名" v-model="detail['财务姓名']" />
-      <!-- <wd-input label="采购单名称" v-model="detail['采购单名称']" />
-      <wd-input label="采购单号" v-model="detail['采购单号']" />
-      <wd-calendar
-        v-model="detail['提交日期']"
-        label="提交日期"
-        @confirm="handleConfirm($event, 1)"
+      <view class="btn">
+        <wd-button block type="primary" @click="formSubmit">提交</wd-button>
+      </view>
+    </wd-cell-group>
+    <wd-cell-group v-else custom-class="group" border>
+      <wd-calendar v-model="fields[554]" label="收款日期" @confirm="handleConfirm($event, 3)" />
+      <wd-picker
+        :columns="columns"
+        @confirm="project($event, 2)"
+        label="项目名称"
+        v-model="fields[561]"
       />
-      <wd-input type="number" label="采购单价(元)" v-model="detail['采购单价(元)']" />
-      <wd-input type="number" label="采购金额(元)" v-model="detail['采购金额(元)']" />
-      <wd-input label="采购人" v-model="detail['采购人']" />
-      <wd-input label="采购名称" v-model="detail['采购名称']" />
-      <wd-input
-        :label="'采购数量(' + detail['单位吨或者升'] + ')'"
-        v-model="detail['采购数量(吨)']"
+      <wd-input type="number" label="金额" v-model="fields[566]" />
+      <wd-picker :columns="payList" label="回款方式" v-model="fields[555]" />
+      <wd-input type="number" label="贴息费" v-model="fields[567]" />
+      <wd-input type="number" label="净额" v-model="fields[568]" />
+      <wd-input type="number" label="余额" v-model="fields[569]" />
+      <wd-input label="汇款单位名称" v-model="fields[558]" />
+      <wd-input label="汇款单位账号" v-model="fields[559]" />
+      <wd-picker
+        :columns="accounts"
+        label="账户名称"
+        @confirm="clickAccount($event, 2)"
+        v-model="fields[556]"
       />
-      <wd-cell title="单位吨或者升">
+      <wd-input label="收款银行账号" readonly v-model="fields[557]" />
+      <wd-cell title="汇款类型">
         <template #default>
-          <wd-radio-group v-model="detail['单位吨或者升']" shape="button">
-            <wd-radio :value="'吨'">吨</wd-radio>
-            <wd-radio :value="'升'">升</wd-radio>
+          <wd-radio-group v-model="fields[562]" shape="button">
+            <wd-radio :value="'打款'">打款</wd-radio>
+            <wd-radio :value="'回款'">回款</wd-radio>
           </wd-radio-group>
         </template>
       </wd-cell>
-      <wd-input label="油品名称" v-model="detail['油品名称']" />
-      <wd-input label="型号" v-model="detail['型号']" />
-      <wd-input label="市场价" v-model="detail['市场价']" />
-      <wd-input label="销售价格" v-model="detail['销售价格']" />
-      <wd-input label="折吨价" v-model="detail['折吨价']" />
-      <wd-input label="下浮价" v-model="detail['下浮价']" />
-      <wd-input label="价差" v-model="detail['价差']" />
-      <wd-input label="付款名称" v-model="detail['付款名称']" />
-      <wd-calendar
-        v-model="detail['付款日期']"
-        label="付款日期"
-        @confirm="handleConfirm($event, 2)"
-      />
-      <wd-input label="收款名称" v-model="detail['收款名称']" />
-      <wd-picker :columns="columns" label="项目名称" v-model="detail['项目名称']" />
-      <wd-input label="项目编号" v-model="detail['项目编号']" /> -->
+      <wd-input label="财务姓名" v-model="fields[665]" />
       <view class="btn">
-        <wd-button block type="primary" @click="formSubmit">提交</wd-button>
+        <wd-button block type="primary" @click="formAdd">提交</wd-button>
       </view>
     </wd-cell-group>
     <wd-toast />
@@ -77,9 +83,13 @@ import dataService from '@/api/procure';
 import { useToast } from 'wot-design-uni';
 import { ref } from 'vue';
 import moment from 'moment';
+import { on } from 'events';
 const toast = useToast();
 const detail = ref({});
+const fields = ref({});
 const columns = ref([]);
+const projectArr = ref([]);
+const accountsList = ref([]);
 const payList = ref([
   '银行转账',
   '微信',
@@ -91,36 +101,120 @@ const payList = ref([
   '简单汇',
 ]);
 const formId = ref('');
+const isEdit = ref('');
 const oldValues = ref({});
+const accounts = ref([]);
 onLoad((options) => {
-  const item = JSON.parse(options.item);
+  isEdit.value = options.isEdit;
   formId.value = options.formId;
-  const obj = {};
-  item.forEach((child) => {
-    obj[child.text] = child.value;
-  });
-  detail.value = obj;
+  if (options.isEdit == '1') {
+    const item = JSON.parse(options.item);
+    const obj = {};
+    item.forEach((child) => {
+      obj[child.text] = child.value;
+    });
+    detail.value = obj;
+    console.log(detail.value);
+    oldValues.value = JSON.parse(options.item);
+  } else {
+    fields.value = JSON.parse(options.fields);
+  }
 
-  oldValues.value = JSON.parse(options.item);
   projectList();
+  // getAccounts();
 });
 
+// 选择项目
+function project(e, num) {
+  if (num == 1) {
+    detail.value['项目编号'] = projectArr.value.find((child) => child['项目名称'] === e.value)[
+      '项目编号'
+    ];
+  } else {
+    fields.value[560] = projectArr.value.find((child) => child['项目名称'] === e.value)['项目编号'];
+  }
+  getAccounts();
+}
+
+// 选择账户
+function clickAccount(e, num) {
+  if (num === 1) {
+    detail.value['银行账号'] = accountsList.value.find(
+      (child) => child['付款单位名称'] === e.value
+    )['银行账户'];
+  } else {
+    fields.value[557] = accountsList.value.find((child) => child['付款单位名称'] === e.value)[
+      '银行账户'
+    ];
+  }
+}
+
+// 获取账户列表
+function getAccounts() {
+  let data = '';
+  if (isEdit.value == '1') {
+    data = detail.value['项目编号'];
+  } else {
+    data = fields.value[560];
+  }
+  dataService.getAccountList(data).then((res) => {
+    if (res.code === 200) {
+      accountsList.value = res.data;
+      accounts.value = res.data.map((child) => child['付款单位名称']);
+    } else {
+      accounts.value = [];
+    }
+  });
+}
+
 // 获取采购管理-项目列表
 function projectList() {
   dataService.getProjectList().then((res) => {
     if (res.data.code === 200) {
+      projectArr.value = res.data.data;
       columns.value = res.data.data.map((child) => child['项目名称']);
     } else {
       columns.value = [];
     }
   });
 }
+// 新增
+function formAdd() {
+  const date = new Date();
+  fields.value[563] = moment(date).valueOf();
+  fields.value[564] = moment(date).valueOf();
+  const params = {
+    formKey: formId.value,
+    data: [
+      {
+        data: JSON.stringify(fields.value),
+        id: '',
+        oldData: '',
+      },
+    ],
+  };
+  dataService.addData(params).then((res) => {
+    if (res.code === 200) {
+      toast.success('提交成功');
+      setTimeout(() => {
+        uni.$emit('refresh', { refresh: true });
+        uni.navigateBack({
+          delta: 1,
+        });
+      }, 1000);
+    } else {
+      toast.error('提交失败');
+    }
+  });
+}
 
 function handleConfirm(e, num) {
   if (num === 1) {
     detail.value['收款日期'] = e.value;
-  } else {
+  } else if (num == 2) {
     detail.value['付款日期'] = e.value;
+  } else {
+    fields.value[554] = e.value;
   }
 }
 function formSubmit() {

+ 78 - 3
src/pages/payment/list.vue

@@ -29,6 +29,15 @@
         </view>
         <template #footer>
           <wd-button size="small" plain @click="editClick(item)">编辑</wd-button>
+          <wd-button
+            style="margin-left: 10px"
+            size="small"
+            type="error"
+            plain
+            @click="deleteItem(item)"
+          >
+            删除
+          </wd-button>
         </template>
       </wd-card>
       <wd-loadmore custom-class="loadmore" :state="loadState" />
@@ -36,6 +45,9 @@
     <view v-else>
       <wd-loadmore custom-class="loadmore" state="finished" />
     </view>
+    <view class="addbtn">
+      <wd-button block type="primary" @click="addData">新增</wd-button>
+    </view>
   </view>
   <wd-action-sheet
     v-model="sheetShow"
@@ -45,15 +57,22 @@
     @select="onSelect"
     cancel-text="取消"
   ></wd-action-sheet>
+  <wd-message-box />
+  <wd-toast />
 </template>
 <script setup>
 import { onLoad, onReachBottom, onShow, onUnload } from '@dcloudio/uni-app';
 import dataService from '@/api/procure';
 import { ref, onMounted } from 'vue';
+import { useMessage, useToast } from 'wot-design-uni';
+import config from '@/http/config';
+const message = useMessage();
+const toast = useToast();
 const value = ref('');
 const searchType = ref('汇款单位名称');
 const loadState = ref('loading');
 const columns = ref([]);
+const columnDict = ref({});
 const show = ref(false);
 const sheetShow = ref(false);
 const menu = ref([
@@ -111,6 +130,49 @@ onReachBottom(() => {
   }
 });
 
+// 删除
+function deleteItem(item) {
+  message
+    .confirm({
+      msg: '提示文案',
+      title: '是否删除该条数据?',
+    })
+    .then(() => {
+      const id = item.find((val) => val.text === 'idKey').value;
+      const jsonData = {};
+      item.forEach((val) => {
+        jsonData[val.valueKey] = val.value;
+      });
+      const formKey = '9317b42e0d9a4a54706a5fcf9ab05158';
+      let urlParams = `dataJson=${jsonData}`;
+      uni.request({
+        url: config.baseURL + '/visual-api/paas/visualdev/OnlineDev/' + formKey + '/' + id,
+        method: 'DELETE',
+        data: urlParams,
+        header: {
+          'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
+          'Blade-Auth': 'bearer ' + uni.getStorageSync('token'),
+        },
+        success: (res) => {
+          toast.success('删除成功');
+          onSearch();
+        },
+      });
+    })
+    .catch(() => {
+      console.log('点击了取消按钮');
+    });
+}
+
+// 新增
+function addData() {
+  uni.navigateTo({
+    url:
+      '/pages/payment/edit?formId=9317b42e0d9a4a54706a5fcf9ab05158&isEdit=0&fields=' +
+      JSON.stringify(columnDict.value),
+  });
+}
+
 // 获取采购管理-项目列表
 function projectList() {
   dataService.getProjectList().then((res) => {
@@ -131,6 +193,10 @@ function getFormConfig() {
   dataService.getConfig('9317b42e0d9a4a54706a5fcf9ab05158').then((res) => {
     const { code, data } = res.data;
     if (code === 200) {
+      let fields = JSON.parse(data.formData).fields;
+      fields.forEach((val) => {
+        columnDict.value[val.__vModel__] = '';
+      });
       idKey.value = String(data.idKey);
       formData.value = JSON.parse(data.formData);
       dbLinkId.value = data.dbLinkId;
@@ -145,7 +211,8 @@ function editClick(item) {
     url:
       '/pages/payment/edit?item=' +
       JSON.stringify(item) +
-      '&formId=9317b42e0d9a4a54706a5fcf9ab05158',
+      '&formId=9317b42e0d9a4a54706a5fcf9ab05158' +
+      '&isEdit=1',
   });
 }
 
@@ -239,10 +306,12 @@ function changeSearchType(e) {
         values: [],
       },
     ];
+    getFormList();
   }
 }
 
 function onSelect({ item, rowIndex, colIndex }) {
+  value.value = item.name;
   form.value.paramList = [
     {
       cubeColumnId: 561,
@@ -254,9 +323,7 @@ function onSelect({ item, rowIndex, colIndex }) {
 }
 // 关闭项目选项
 function close() {
-  searchType.value = '采购单号';
   sheetShow.value = false;
-  value.value = '';
   oldData.value = [];
   form.value.pageQuery.current = 1;
 }
@@ -315,5 +382,13 @@ function close() {
       text-align: right;
     }
   }
+  .addbtn {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    padding: 20px;
+    box-sizing: border-box;
+  }
 }
 </style>

+ 222 - 21
src/pages/procure/edit.vue

@@ -1,21 +1,35 @@
 <template>
   <view class="edit">
-    <wd-cell-group custom-class="group" border>
+    <wd-cell-group v-if="isEdit == '1'" custom-class="group" border>
       <wd-input label="采购单名称" v-model="detail['采购单名称']" />
-      <wd-input label="采购单号" v-model="detail['采购单号']" />
-      <wd-calendar
+      <wd-input label="采购单号" readonly v-model="detail['采购单号']" />
+      <!-- <wd-calendar
         v-model="detail['提交日期']"
         label="提交日期"
         @confirm="handleConfirm($event, 1)"
-      />
+      /> -->
       <wd-input type="number" label="采购单价(元)" v-model="detail['采购单价(元)']" />
       <wd-input type="number" label="采购金额(元)" v-model="detail['采购金额(元)']" />
       <wd-input label="采购人" v-model="detail['采购人']" />
-      <wd-input label="采购名称" v-model="detail['采购名称']" />
+      <!-- <wd-input label="采购名称" v-model="detail['采购名称']" /> -->
       <wd-input
         :label="'采购数量(' + detail['单位吨或者升'] + ')'"
         v-model="detail['采购数量(吨)']"
       />
+      <wd-picker
+        :columns="columns"
+        @confirm="projectClick($event, 1)"
+        label="项目名称"
+        v-model="detail['项目名称']"
+      />
+      <wd-input label="项目编号" v-model="detail['项目编号']" />
+      <wd-picker
+        :columns="oilList"
+        label="油品名称"
+        @confirm="oilClick($event, 1)"
+        v-model="detail['油品名称']"
+      />
+      <wd-picker :columns="oilInfo" label="型号" v-model="detail['型号']" />
       <wd-cell title="单位吨或者升">
         <template #default>
           <wd-radio-group v-model="detail['单位吨或者升']" shape="button">
@@ -24,26 +38,63 @@
           </wd-radio-group>
         </template>
       </wd-cell>
-      <wd-input label="油品名称" v-model="detail['油品名称']" />
-      <wd-input label="型号" v-model="detail['型号']" />
       <wd-input label="市场价" v-model="detail['市场价']" />
       <wd-input label="销售价格" v-model="detail['销售价格']" />
       <wd-input label="折吨价" v-model="detail['折吨价']" />
       <wd-input label="下浮价" v-model="detail['下浮价']" />
       <wd-input label="价差" v-model="detail['价差']" />
-      <wd-input label="付款名称" v-model="detail['付款名称']" />
+      <wd-picker :columns="payList" label="付款名称" v-model="detail['付款名称']" />
       <wd-calendar
         v-model="detail['付款日期']"
         label="付款日期"
-        @confirm="handleConfirm($event, 2)"
+        @confirm="handleConfirm($event, 1)"
       />
-      <wd-input label="收款名称" v-model="detail['收款名称']" />
-      <wd-picker :columns="columns" label="项目名称" v-model="detail['项目名称']" />
-      <wd-input label="项目编号" v-model="detail['项目编号']" />
+      <wd-picker :columns="collectionList" label="收款名称" v-model="detail['收款名称']" />
       <view class="btn">
         <wd-button block type="primary" @click="formSubmit">提交</wd-button>
       </view>
     </wd-cell-group>
+    <wd-cell-group v-else custom-class="group" border>
+      <wd-calendar v-model="fields[571]" label="付款日期" @confirm="handleConfirm($event, 2)" />
+      <wd-input label="采购单号" placeholder="自动生成" readonly v-model="fields[875]" />
+      <wd-input label="采购单名称" v-model="fields[572]" />
+      <wd-picker
+        :columns="columns"
+        @confirm="projectClick($event, 2)"
+        label="项目名称"
+        v-model="fields[578]"
+      />
+      <wd-picker
+        v-if="fields[578] != ''"
+        :columns="oilList"
+        label="油品名称"
+        @confirm="oilClick($event, 2)"
+        v-model="fields[573]"
+      />
+      <wd-picker v-if="fields[573] != ''" :columns="oilInfo" label="型号" v-model="fields[574]" />
+      <wd-cell title="单位吨或者升">
+        <template #default>
+          <wd-radio-group v-model="fields[864]" shape="button">
+            <wd-radio :value="'吨'">吨</wd-radio>
+            <wd-radio :value="'升'">升</wd-radio>
+          </wd-radio-group>
+        </template>
+      </wd-cell>
+      <wd-input :label="'采购数量:'" v-model="fields[584]" />
+      <wd-input type="number" label="采购单价(元)" v-model="fields[585]" />
+      <wd-input type="number" label="采购金额(元)" v-model="fields[586]" />
+      <wd-input label="市场价" v-model="fields[587]" />
+      <wd-input label="折吨价" v-model="fields[588]" />
+      <wd-input label="下浮价" v-model="fields[589]" />
+      <wd-input label="销售价格" v-model="fields[590]" />
+      <wd-input label="价差" v-model="fields[591]" />
+      <wd-picker :columns="collectionList" label="收款名称" v-model="fields[575]" />
+      <wd-picker :columns="payList" label="付款名称" v-model="fields[576]" />
+      <wd-input label="采购人" v-model="fields[580]" />
+      <view class="btn">
+        <wd-button block type="primary" @click="formAdd">提交</wd-button>
+      </view>
+    </wd-cell-group>
 
     <wd-toast />
   </view>
@@ -56,25 +107,171 @@ import { ref } from 'vue';
 import moment from 'moment';
 const toast = useToast();
 const detail = ref({});
+const fields = ref({});
 const columns = ref([]);
+const projectArr = ref([]);
+const oilInfo = ref([]);
+const collectionList = ref([]);
+const payList = ref([]);
+const oilList = ref(['汽油', '柴油']);
 const formId = ref('');
+const isEdit = ref('');
 const oldValues = ref({});
 onLoad((options) => {
-  const item = JSON.parse(options.item);
+  isEdit.value = options.isEdit;
   formId.value = options.formId;
-  const obj = {};
-  item.forEach((child) => {
-    obj[child.text] = child.value;
-  });
-  detail.value = obj;
-  oldValues.value = JSON.parse(options.item);
+  if (options.isEdit == '1') {
+    const item = JSON.parse(options.item);
+    const obj = {};
+    item.forEach((child) => {
+      obj[child.text] = child.value;
+    });
+    detail.value = obj;
+    oldValues.value = JSON.parse(options.item);
+    console.log(detail.value);
+  } else {
+    fields.value = JSON.parse(options.fields);
+  }
   projectList();
+  getOilList();
+  getCollection();
+  getPayment();
 });
 
+// 获取收款列表
+function getCollection() {
+  let projectId = '';
+  if (isEdit.value == '1') {
+    projectId = detail.value['项目编号'];
+  } else {
+    projectId = fields.value[577];
+  }
+  dataService.getAccountInfo(projectId).then((res) => {
+    if (res.data.length > 0) {
+      collectionList.value = res.data.map((child) => child['收款单位名称']);
+    } else {
+      collectionList.value = [];
+    }
+  });
+}
+
+// 获取付款列表
+function getPayment() {
+  let projectId = '';
+  if (isEdit.value == '1') {
+    projectId = detail.value['项目编号'];
+  } else {
+    projectId = fields.value[577];
+  }
+  dataService.getPayAccountInfo(projectId).then((res) => {
+    if (res.data.length > 0) {
+      payList.value = res.data.map((child) => child['付款单位名称']);
+    } else {
+      payList.value = [];
+    }
+  });
+}
+
+// 选择油品
+function oilClick(e, num) {
+  if (num == 1) {
+    detail.value['油品名称'] = e.value;
+  } else {
+    fields.value[573] = e.value;
+    getOilList();
+  }
+}
+
+// 新增
+function formAdd() {
+  const date = new Date();
+  fields.value[581] = moment(date).valueOf();
+  fields.value[582] = moment(date).valueOf();
+  const params = {
+    formKey: formId.value,
+    data: [
+      {
+        data: JSON.stringify(fields.value),
+        id: '',
+        oldData: '',
+        _serialNumber: 875,
+        _serialNumberConfig: [
+          {
+            type: 'fixedChars',
+            chars: 'CG',
+          },
+          {
+            type: 'createTime',
+            formatType: 'preset',
+            format: 'yyyy',
+            chars: '2024',
+          },
+          {
+            type: 'incNumber',
+            digitsNum: 6,
+            fixedLength: true,
+            resetCycle: 1,
+            startValue: 1,
+          },
+        ],
+      },
+    ],
+  };
+  dataService.addData(params).then((res) => {
+    if (res.code === 200) {
+      toast.success('提交成功');
+      setTimeout(() => {
+        uni.$emit('refresh', { refresh: true });
+        uni.navigateBack({
+          delta: 1,
+        });
+      }, 1000);
+    } else {
+      toast.error('提交失败');
+    }
+  });
+}
+
+// 获取油品信息
+function getOilList() {
+  const params = {};
+  if (isEdit.value == '1') {
+    params.projectid = detail.value['项目编号'];
+    params.ypmc = detail.value['油品名称'];
+  } else {
+    params.projectid = fields.value[577];
+    params.ypmc = fields.value[573];
+  }
+  dataService.getOilInfo(params).then((res) => {
+    if (res.code === 200) {
+      oilInfo.value = res.data.map((child) => child['油品型号']);
+    } else {
+      oilInfo.value = [];
+    }
+  });
+}
+
+// 选择项目
+function projectClick(e, num) {
+  if (num == 1) {
+    detail.value['项目名称'] = e.value;
+    detail.value['项目编号'] = projectArr.value.find((child) => child['项目名称'] === e.value)[
+      '项目编号'
+    ];
+    getOilList();
+  } else {
+    fields.value[578] = e.value;
+    fields.value[577] = projectArr.value.find((child) => child['项目名称'] === e.value)['项目编号'];
+  }
+  getCollection();
+  getPayment();
+}
+
 // 获取采购管理-项目列表
 function projectList() {
   dataService.getProjectList().then((res) => {
     if (res.data.code === 200) {
+      projectArr.value = res.data.data;
       columns.value = res.data.data.map((child) => child['项目名称']);
     } else {
       columns.value = [];
@@ -84,12 +281,14 @@ function projectList() {
 
 function handleConfirm(e, num) {
   if (num === 1) {
-    detail.value['提交日期'] = e.value;
-  } else {
     detail.value['付款日期'] = e.value;
+    detail.value['提交日期'] = moment(new Date()).valueOf();
+  } else {
+    fields.value[571] = e.value;
   }
 }
 function formSubmit() {
+  const date = new Date();
   const old = {};
   const dataObj = {};
   oldValues.value.forEach((child) => {
@@ -104,6 +303,8 @@ function formSubmit() {
   old['571'] = moment(old['571']).valueOf();
   dataObj['581'] = moment(dataObj['581']).valueOf();
   old['581'] = moment(old['581']).valueOf();
+  dataObj['582'] = moment(date).valueOf();
+  old['582'] = moment(old['582']).valueOf();
   const data = [
     {
       data: JSON.stringify(dataObj),

+ 87 - 32
src/pages/procure/list.vue

@@ -6,7 +6,7 @@
         v-model="value"
         cancel-txt="搜索"
         @cancel="onSearch"
-        :disabled="searchType === '项目名称'"
+        :disabled="searchType == '项目名称'"
       >
         <template #prefix>
           <wd-popover v-model="show" mode="menu" :content="menu" @menuclick="changeSearchType">
@@ -22,40 +22,27 @@
     <view v-if="listData.length > 0">
       <wd-card v-for="(item, index) in oldData" :key="index">
         <view v-for="(child, childIndex) in item" :key="childIndex">
-          <view class="flex">
+          <view
+            v-if="
+              child.text != '最后修改日期' && child.text != '创建人ID' && child.text != '提交日期'
+            "
+            class="flex"
+          >
             <view class="left">{{ child.text }}:</view>
             <view class="right">{{ child.value }}</view>
           </view>
         </view>
-        <!-- <view class="flex">
-            <view>采购数量:</view>
-            <view>
-              {{ item['采购数量(吨)'] ? item['采购数量(吨)'] : item['采购数量(升)'] }}
-              {{ item['单位吨或者升'] }}
-            </view>
-          </view>
-          <view class="flex">
-            <view>采购金额(元):</view>
-            <view>{{ item['采购金额(元)'] }}</view>
-          </view>
-          <view class="flex">
-            <view>采购单号:</view>
-            <view>{{ item['采购单号'] }}</view>
-          </view>
-          <view class="flex">
-            <view>项目名称:</view>
-            <view>{{ item['项目名称'] }}</view>
-          </view>
-          <view class="flex">
-            <view>价差:</view>
-            <view>{{ item['价差'] }}</view>
-          </view>
-          <view class="flex">
-            <view>销售价格:</view>
-            <view>{{ item['销售价格'] }}</view>
-          </view> -->
         <template #footer>
           <wd-button size="small" plain @click="editClick(item)">编辑</wd-button>
+          <wd-button
+            style="margin-left: 10px"
+            size="small"
+            type="error"
+            plain
+            @click="deleteItem(item)"
+          >
+            删除
+          </wd-button>
         </template>
       </wd-card>
       <wd-loadmore custom-class="loadmore" :state="loadState" />
@@ -63,6 +50,9 @@
     <view v-else>
       <wd-loadmore custom-class="loadmore" state="finished" />
     </view>
+    <view class="addbtn">
+      <wd-button block type="primary" @click="addData">新增</wd-button>
+    </view>
   </view>
   <wd-action-sheet
     v-model="sheetShow"
@@ -72,11 +62,18 @@
     @select="onSelect"
     cancel-text="取消"
   ></wd-action-sheet>
+  <wd-message-box />
+  <wd-toast />
 </template>
 <script setup>
 import { onLoad, onReachBottom, onShow, onUnload } from '@dcloudio/uni-app';
+import { useMessage, useToast } from 'wot-design-uni';
+import config from '@/http/config';
+const message = useMessage();
+const toast = useToast();
 import dataService from '@/api/procure';
 import { ref, onMounted } from 'vue';
+import { on } from 'events';
 const value = ref('');
 const searchType = ref('采购单号');
 const loadState = ref('loading');
@@ -100,6 +97,7 @@ const menu = ref([
 const listData = ref([]);
 const dbLinkId = ref('');
 const tableColumns = ref([]);
+const columnDict = ref({});
 const isMore = ref(true);
 const idKey = ref('');
 const form = ref({
@@ -142,6 +140,40 @@ onReachBottom(() => {
   }
 });
 
+// 删除
+function deleteItem(item) {
+  message
+    .confirm({
+      msg: '提示文案',
+      title: '是否删除该条数据?',
+    })
+    .then(() => {
+      const id = item.find((val) => val.text === 'idKey').value;
+      const jsonData = {};
+      item.forEach((val) => {
+        jsonData[val.valueKey] = val.value;
+      });
+      const formKey = 'f7436dcb6bbd469b1d154511ab74dd0f';
+      let urlParams = `dataJson=${jsonData}`;
+      uni.request({
+        url: config.baseURL + '/visual-api/paas/visualdev/OnlineDev/' + formKey + '/' + id,
+        method: 'DELETE',
+        data: urlParams,
+        header: {
+          'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
+          'Blade-Auth': 'bearer ' + uni.getStorageSync('token'),
+        },
+        success: (res) => {
+          toast.success('删除成功');
+          onSearch();
+        },
+      });
+    })
+    .catch(() => {
+      console.log('点击了取消按钮');
+    });
+}
+
 // 获取采购管理-项目列表
 function projectList() {
   dataService.getProjectList().then((res) => {
@@ -162,6 +194,10 @@ function getFormConfig() {
     const { code, data } = res.data;
     if (code === 200) {
       idKey.value = String(data.idKey);
+      let fields = JSON.parse(data.formData).fields;
+      fields.forEach((val) => {
+        columnDict.value[val.__vModel__] = '';
+      });
       formData.value = JSON.parse(data.formData);
       dbLinkId.value = data.dbLinkId;
       tableColumns.value = JSON.parse(data.tables);
@@ -175,7 +211,16 @@ function editClick(item) {
     url:
       '/pages/procure/edit?item=' +
       JSON.stringify(item) +
-      '&formId=f7436dcb6bbd469b1d154511ab74dd0f',
+      '&formId=f7436dcb6bbd469b1d154511ab74dd0f&isEdit=1',
+  });
+}
+
+// 新增
+function addData() {
+  uni.navigateTo({
+    url:
+      '/pages/procure/edit?formId=f7436dcb6bbd469b1d154511ab74dd0f&isEdit=0&fields=' +
+      JSON.stringify(columnDict.value),
   });
 }
 
@@ -281,6 +326,7 @@ function changeSearchType(e) {
 }
 
 function onSelect({ item, rowIndex, colIndex }) {
+  value.value = item.name;
   form.value.paramList = [
     {
       cubeColumnId: 572,
@@ -294,9 +340,9 @@ function onSelect({ item, rowIndex, colIndex }) {
 function close() {
   searchType.value = '采购单号';
   sheetShow.value = false;
-  value.value = '';
   oldData.value = [];
   form.value.pageQuery.current = 1;
+  onSearch();
 }
 </script>
 
@@ -346,7 +392,7 @@ function close() {
     align-items: center;
 
     .left {
-      width: 30%;
+      width: 40%;
       margin-right: 10px;
     }
     .right {
@@ -354,5 +400,14 @@ function close() {
       text-align: right;
     }
   }
+
+  .addbtn {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    padding: 20px;
+    box-sizing: border-box;
+  }
 }
 </style>

+ 97 - 97
src/pages/publish/publish.vue

@@ -75,16 +75,16 @@
 </template>
 
 <script setup>
-import dayjs from 'dayjs'
+import dayjs from 'dayjs';
 
-const { userInfo } = storeToRefs(useAuthStore())
+const { userInfo } = storeToRefs(useAuthStore());
 
-import { useMessage } from 'wot-design-uni'
-import { useToast } from 'wot-design-uni'
+import { useMessage } from 'wot-design-uni';
+import { useToast } from 'wot-design-uni';
 
-const toast = useToast()
-const messageBox = useMessage()
-import { ref } from 'vue'
+const toast = useToast();
+const messageBox = useMessage();
+import { ref } from 'vue';
 
 const formData = ref({
   COL_0: {
@@ -276,16 +276,16 @@ const formData = ref({
     tableName: 'ods_oildelivery',
     value: '',
   },
-})
+});
 
-let id = ''
+let id = '';
 onLoad((options) => {
   if (options.query) {
     // 正在加载
-    toast.loading({ loadingType: 'ring', msg: '加载中' })
-    const item = JSON.parse(decodeURIComponent(options.query))
-    console.log(item)
-    id = item.ID
+    toast.loading({ loadingType: 'ring', msg: '加载中' });
+    const item = JSON.parse(decodeURIComponent(options.query));
+    console.log(item);
+    id = item.ID;
     uni.request({
       url: 'https://miniapp.zhangmushiye.com/bi-api/report/dataapi/driverXiangmu',
       method: 'GET',
@@ -293,28 +293,28 @@ onLoad((options) => {
         phone: userInfo.value.COL_1,
       },
       success: (res) => {
-        xiangmuList.value = res.data.data
+        xiangmuList.value = res.data.data;
       },
-    })
+    });
     DemoApi.projectList(userInfo.value).then((res) => {
-      oldColumns.value = res.data
+      oldColumns.value = res.data;
       // 排重
       columns.value = res.data.filter((item, index, arr) => {
-        return arr.findIndex((item2) => item2.COL_1 === item.COL_1) === index
+        return arr.findIndex((item2) => item2.COL_1 === item.COL_1) === index;
       });
       oilList.value = res.data.filter((item, index, arr) => {
-        return arr.findIndex((item2) => item2.COL_5 === item.COL_5) === index
+        return arr.findIndex((item2) => item2.COL_5 === item.COL_5) === index;
       });
       Object.values(formData.value).forEach((item2) => {
-        item2.value = item[item2.field]
+        item2.value = item[item2.field];
       });
       fileList.value = item.COL_19.map((item) => {
         return {
           name: item.name,
           url: 'https://miniapp.zhangmushiye.com/' + item.url,
-        }
+        };
       });
-      toast.close()
+      toast.close();
     });
   } else {
     uni.request({
@@ -324,9 +324,9 @@ onLoad((options) => {
         phone: userInfo.value.COL_1,
       },
       success: (res) => {
-        xiangmuList.value = res.data.data
+        xiangmuList.value = res.data.data;
       },
-    })
+    });
 
     // DemoApi.projectList(userInfo.value).then((res) => {
     //   oldColumns.value = res.data
@@ -340,62 +340,62 @@ onLoad((options) => {
     //   toast.close()
     // })
   }
-})
+});
 const formSubmit = () => {
   if (!formData.value.COL_9.value) {
-    toast.show('请选择项目名称')
+    toast.show('请选择项目名称');
     return;
   }
   if (!formData.value.COL_8.value) {
-    toast.show('请选择客户名称')
+    toast.show('请选择客户名称');
     return;
   }
   if (!formData.value.COL_3.value) {
-    toast.show('请输入加油数量')
+    toast.show('请输入加油数量');
     return;
   }
   // 单位
   if (!formData.value.unit_type.value) {
-    toast.show('请选择单位')
+    toast.show('请选择单位');
     return;
   }
   if (!formData.value.COL_19.value) {
-    toast.show('请上传加油票据')
+    toast.show('请上传加油票据');
     return;
   }
-  let params = {}
+  let params = {};
   Object.values(formData.value).forEach((item) => {
-    const value = item.value
-    params[item.fieldId] = value
+    const value = item.value;
+    params[item.fieldId] = value;
   });
-  params[615] = dayjs(params[615]).valueOf()
-  console.log(id)
+  params[615] = dayjs(params[615]).valueOf();
+  console.log(id);
   if (id) {
-    params[629] = dayjs(params[629]).valueOf()
-    params[630] = dayjs().valueOf()
+    params[629] = dayjs(params[629]).valueOf();
+    params[630] = dayjs().valueOf();
   }
   params[631] = params[631].map((item) => {
     if (item.url.msg.includes('miniapp.zhangmushiye.com')) {
-      item.url.msg = item.url.msg.replace('https://miniapp.zhangmushiye.com/', '')
+      item.url.msg = item.url.msg.replace('https://miniapp.zhangmushiye.com/', '');
     }
     return {
       url: item.url.msg,
-    }
+    };
   });
-  console.log(params)
+  console.log(params);
   // return;
-  params = JSON.stringify(params)
+  params = JSON.stringify(params);
   messageBox
     .confirm({
       title: '提示',
       msg: '确认提交吗?',
     })
     .then(() => {
-      toast.loading({ loadingType: 'ring', msg: '提交中' })
+      toast.loading({ loadingType: 'ring', msg: '提交中' });
       let url =
-        'https://miniapp.zhangmushiye.com/visual-api/paas/visualdev/OnlineDev/7164c3e7895f49fd0c4e2742e81cb726'
+        'https://miniapp.zhangmushiye.com/visual-api/paas/visualdev/OnlineDev/7164c3e7895f49fd0c4e2742e81cb726';
       if (id) {
-        url = url + '/' + id
+        url = url + '/' + id;
         // PUT 提交
         uni.request({
           url,
@@ -405,13 +405,13 @@ const formSubmit = () => {
             id,
           },
           success: (res) => {
-            toast.success('提交成功')
-            uni.navigateBack()
+            toast.success('提交成功');
+            uni.navigateBack();
           },
           fail: (err) => {
-            toast.error('提交失败')
+            toast.error('提交失败');
           },
-        })
+        });
       } else {
         uni.request({
           url,
@@ -420,64 +420,64 @@ const formSubmit = () => {
             data: params,
           },
           success: (res) => {
-            toast.success('提交成功')
-            uni.navigateBack()
+            toast.success('提交成功');
+            uni.navigateBack();
           },
           fail: (err) => {
-            toast.error('提交失败')
+            toast.error('提交失败');
           },
-        })
+        });
       }
     })
     .catch((error) => {
-      console.log(error)
+      console.log(error);
     });
-}
+};
 
-// 获取gps
-uni.getFuzzyLocation({
-  type: 'gcj02',
-  success: function (res) {
-    console.log(res)
-    formData.value.COL_13.value = res.longitude
-    formData.value.COL_14.value = res.latitude
-  },
-})
-import DemoApi from '@/api/DemoApi'
+// // 获取gps
+// uni.getFuzzyLocation({
+//   type: 'gcj02',
+//   success: function (res) {
+//     console.log(res)
+//     formData.value.COL_13.value = res.longitude
+//     formData.value.COL_14.value = res.latitude
+//   },
+// })
+import DemoApi from '@/api/DemoApi';
 
-const fileList = ref([])
+const fileList = ref([]);
 
 function handleChange(files) {
-  const file = []
+  const file = [];
   files.fileList.forEach((item) => {
-    const response = {}
+    const response = {};
     try {
-      response.msg = JSON.parse(item.response)
+      response.msg = JSON.parse(item.response);
     } catch (e) {
-      response.msg = item.response
+      response.msg = item.response;
     }
     if (!item.response) {
       response.msg = {
         msg: item.url,
-      }
+      };
     }
     file.push({
       name: '收据图片',
       url: response.msg,
-    })
+    });
   });
-  formData.value.COL_19.value = file
+  formData.value.COL_19.value = file;
 }
 
 // 项目列表
-const oldColumns = ref([])
-const columns = ref([])
-const xiangmuList = ref([])
+const oldColumns = ref([]);
+const columns = ref([]);
+const xiangmuList = ref([]);
 // 油品列表
-const oilList = ref([])
+const oilList = ref([]);
 
 // 客户列表
-const kehuList = ref([])
+const kehuList = ref([]);
 watch(
   () => formData.value.COL_9.value,
   (val) => {
@@ -488,32 +488,32 @@ watch(
         xiangmu_id: val,
       },
       success: (res) => {
-        kehuList.value = res.data.data
+        kehuList.value = res.data.data;
       },
-    })
+    });
 
     DemoApi.projectList({ COL_4: val }).then((res) => {
-      oldColumns.value = res.data
+      oldColumns.value = res.data;
       columns.value = res.data.filter((item, index, arr) => {
-        return arr.findIndex((item2) => item2.COL_1 === item.COL_1) === index
+        return arr.findIndex((item2) => item2.COL_1 === item.COL_1) === index;
       });
       oilList.value = res.data.filter((item, index, arr) => {
-        return arr.findIndex((item2) => item2.COL_5 === item.COL_5) === index
+        return arr.findIndex((item2) => item2.COL_5 === item.COL_5) === index;
       });
-    })
+    });
   }
-)
+);
 const kehuChange = (e) => {
   // formData.value.COL_9.value = e.selectedItems.COL_9
-}
+};
 // 油品型号
-const oilModelList = ref([])
+const oilModelList = ref([]);
 watch(
   () => formData.value.COL_1.value,
   (val) => {
-    oilModelList.value = oilList.value.filter((item) => item.COL_4 === val)
+    oilModelList.value = oilList.value.filter((item) => item.COL_4 === val);
   }
-)
+);
 
 watch(
   formData.value,
@@ -523,30 +523,30 @@ watch(
         item.COL_0 === formData.value.COL_9.value &&
         item.COL_4 === formData.value.COL_1.value &&
         item.COL_5 === formData.value.COL_2.value
-    )
+    );
     if (!find) {
-      return 0
+      return 0;
     }
     // 油品密度
-    formData.value.COL_4.value = find.COL_6
+    formData.value.COL_4.value = find.COL_6;
     // 送油单价
-    formData.value.COL_6.value = find.COL_7
+    formData.value.COL_6.value = find.COL_7;
     // 吨数
-    const ton = ((formData.value.COL_3.value * +find.COL_6) / 1000).toFixed(3)
-    formData.value.COL_5.value = ton
+    const ton = ((formData.value.COL_3.value * +find.COL_6) / 1000).toFixed(3);
+    formData.value.COL_5.value = ton;
     // 送油金额
-    const price = (ton * +find.COL_7).toFixed(3)
-    formData.value.COL_7.value = price
+    const price = (ton * +find.COL_7).toFixed(3);
+    formData.value.COL_7.value = price;
 
     // 项目编号
     // formData.value.COL_9.value = find.COL_0
     // 项目名称
     formData.value.COL_10.value = xiangmuList.value.find(
       (item) => item.COL_4 === formData.value.COL_9.value
-    ).COL_3
+    ).COL_3;
   },
   { deep: true }
-)
+);
 </script>
 
 <style lang="scss">

+ 3 - 2
src/pages/settlement/form.vue

@@ -226,6 +226,7 @@ function init() {
       }
     });
     dataForm.value = obj;
+    console.log(dataForm.value);
     oldFormData.value = JSON.stringify(obj);
     initProjectList();
   });
@@ -458,8 +459,8 @@ function handleSubmit() {
               // 如果res.data是数组则提示新增成功
               setTimeout(() => {
                 uni.redirectTo({
-                    url: '/pages/settlement/list',
-                  });
+                  url: '/pages/settlement/list',
+                });
               }, 3000);
             } else {
               toast.error('提交失败');