From b83976b5d1731c27ae7996f30244fdea74e1cb58 Mon Sep 17 00:00:00 2001 From: ihzero Date: Tue, 23 Apr 2024 07:40:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/mescroll-api/more.vue | 134 +++++++++++++ src/components/mescroll-api/one.vue | 65 +++++++ src/pages.json | 7 + src/pages/expense-account/index.vue | 101 +++++++--- src/pages/expense-account/submit.vue | 182 +++++++++++++----- .../home/components/store-drop-down/index.vue | 2 +- src/pages/task/components/item.vue | 50 +++++ src/pages/task/index copy.vue | 74 +++++++ src/pages/task/index.vue | 58 +++++- src/pages/task/task_hygienes_submit.vue | 154 +++++++++++++++ src/pages/user/components/item.vue | 40 ++++ src/pages/user/detail.vue | 47 ++++- src/pages/user/index copy.vue | 128 ++++++++++++ src/pages/user/index.vue | 122 +++--------- src/pages/user/update.vue | 8 +- src/utils/request.js | 12 +- src/utils/status.js | 79 ++++++++ 17 files changed, 1086 insertions(+), 177 deletions(-) create mode 100644 src/components/mescroll-api/more.vue create mode 100644 src/components/mescroll-api/one.vue create mode 100644 src/pages/task/components/item.vue create mode 100644 src/pages/task/index copy.vue create mode 100644 src/pages/task/task_hygienes_submit.vue create mode 100644 src/pages/user/components/item.vue create mode 100644 src/pages/user/index copy.vue create mode 100644 src/utils/status.js diff --git a/src/components/mescroll-api/more.vue b/src/components/mescroll-api/more.vue new file mode 100644 index 0000000..9cb5e27 --- /dev/null +++ b/src/components/mescroll-api/more.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/components/mescroll-api/one.vue b/src/components/mescroll-api/one.vue new file mode 100644 index 0000000..ed283ff --- /dev/null +++ b/src/components/mescroll-api/one.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/pages.json b/src/pages.json index 0eeabd1..eff52a7 100644 --- a/src/pages.json +++ b/src/pages.json @@ -121,6 +121,12 @@ "navigationBarTitleText": "任务提交" } }, + { + "path": "task_hygienes_submit", + "style": { + "navigationBarTitleText": "清洁任务提交" + } + }, { "path": "detail", "style": { @@ -161,6 +167,7 @@ "navigationBarBackgroundColor": "#FFFFFF", "backgroundColor": "#FFFFFF", "navigationStyle": "custom", + "backgroundColorTop":"#FFFFFF", "app-plus": { "bounce": "none", "scrollIndicator": "none" diff --git a/src/pages/expense-account/index.vue b/src/pages/expense-account/index.vue index 1e3613b..cda2230 100644 --- a/src/pages/expense-account/index.vue +++ b/src/pages/expense-account/index.vue @@ -2,7 +2,11 @@ @@ -13,36 +17,63 @@ :list="tabList" > - - - - 报销申请 - 待完成 - - - 报销金额 - 12313 - - - 报销时间 - 2022-01-01 - - - - 报销原因: - 报销原因报销原因报销原因报销原因报销原因报销原因报销原因报销原因报销原因报销原因 + + + + + {{ item.type.name }} + {{ item.workflow_check.check_status_text }} + + + 报销金额 + {{ item.expense }} + + + 报销时间 + {{ timeFormat(item.created_at) }} + + + + 报销原因: + {{ item.reason }} + - + diff --git a/src/pages/expense-account/submit.vue b/src/pages/expense-account/submit.vue index 9ce2b6e..6013d65 100644 --- a/src/pages/expense-account/submit.vue +++ b/src/pages/expense-account/submit.vue @@ -11,40 +11,37 @@ ref="formRef" labelPosition="left" > - - + + + {{ type.name }} + + - + + + @@ -55,7 +52,14 @@ required > - + @@ -65,11 +69,18 @@ 提交 + + @@ -79,42 +90,125 @@ import CuNavbar from '@/components/cu-navbar/index' import Cell from '@/components/cell/index' import { ref, reactive } from 'vue' import { http } from '@/utils/request' +import { onLoad } from '@dcloudio/uni-app' +const typeRef = ref(null) +const typeList = ref([]) +const type = ref({}) const modalRef = ref(null) const formRef = ref(null) +const loading = ref(false) const form = reactive({ - content: '', + reimbursement_type_id: '', + expense: '', + reason: '', photos: [], }) const rules = reactive({ - content: [ - { required: true, message: '请输入投诉内容' }, - { min: 20, message: '至少20字' }, - { max: 200, message: '最多200字' }, + reimbursement_type_id: [ + { + required: true, + message: '请选择报销分类', + }, ], + expense: [{ required: true, message: '请输入报销金额' }], + reason: [{ required: true, message: '请输入报销原因' }], photos: { type: 'array', + required: true, + message: '请上传报销凭证', }, }) +onLoad(() => { + getTypes() +}) + const submit = () => { formRef.value.validate().then((res) => { modalRef.value.open() }) } +const onSubmit = async () => { + if (loading.value) return + loading.value = true + try { + const resData = await http.post('/reimbursements', { + reimbursement_type_id: form.reimbursement_type_id, + expense: form.expense, + reason: form.reason, + photos: form.photos.map((item) => item.url), + }) + uni.showToast({ + title: '提交成功', + icon: 'none', + }) + formRef.value.resetFields() + uni.$emit('ex:submit', resData) + uni.navigateBack() + } catch (error) { + } finally { + loading.value = false + } +} -const changePassword = () => { - // http - // .post('/auth/profile', { - // password: form.password, - // password_confirmation: form.password2, - // }) - // .then((ress) => { - // uni.showToast({ - // title: '修改成功', - // duration: 2000, - // icon: 'none', - // }) - // formRef.value.resetFields() - // }) +const afterRead = async (event) => { + let lists = [].concat(event.file) + let fileListLen = form[event.name].length + + lists.map((item) => { + form[event.name].push({ + ...item, + status: 'uploading', + message: '上传中', + }) + }) + for (let i = 0; i < lists.length; i++) { + const result = await uploadFilePromise(lists[i].url) + let item = form[event.name][fileListLen] + form[event.name].splice( + fileListLen, + 1, + Object.assign(item, { + status: 'success', + message: '', + url: result, + }) + ) + fileListLen++ + } +} + +const uploadFilePromise = (url) => { + return new Promise((resolve, reject) => { + http + .upload('/fileupload', { + filePath: url, + name: 'file', + }) + .then((res) => { + resolve(res.url) + }) + .catch((err) => { + reject(err) + }) + }) +} + +const deletePic = (event) => { + form[event.name].splice(event.index, 1) +} +const getTypes = () => { + http.get('/keyword?parent_key=reimbursement_type').then((res) => { + typeList.value = res + }) +} + +const typeConfirm = ({ value }) => { + type.value = value[0] + form.reimbursement_type_id = type.value.id +} + +const openType = () => { + typeRef.value.open() } diff --git a/src/pages/home/components/store-drop-down/index.vue b/src/pages/home/components/store-drop-down/index.vue index b823119..3f27438 100644 --- a/src/pages/home/components/store-drop-down/index.vue +++ b/src/pages/home/components/store-drop-down/index.vue @@ -1,7 +1,7 @@ + diff --git a/src/pages/task/index copy.vue b/src/pages/task/index copy.vue new file mode 100644 index 0000000..d9cdff6 --- /dev/null +++ b/src/pages/task/index copy.vue @@ -0,0 +1,74 @@ + + diff --git a/src/pages/task/index.vue b/src/pages/task/index.vue index 8eeedb5..64a472c 100644 --- a/src/pages/task/index.vue +++ b/src/pages/task/index.vue @@ -3,32 +3,72 @@ - - - 月度清洁任务 - - 任务时间:2022年03月01号 - 2022年03月31号 + + + + + diff --git a/src/pages/task/task_hygienes_submit.vue b/src/pages/task/task_hygienes_submit.vue new file mode 100644 index 0000000..2abdc04 --- /dev/null +++ b/src/pages/task/task_hygienes_submit.vue @@ -0,0 +1,154 @@ + + diff --git a/src/pages/user/components/item.vue b/src/pages/user/components/item.vue new file mode 100644 index 0000000..81e9fec --- /dev/null +++ b/src/pages/user/components/item.vue @@ -0,0 +1,40 @@ + + diff --git a/src/pages/user/detail.vue b/src/pages/user/detail.vue index f4c298f..827a9d9 100644 --- a/src/pages/user/detail.vue +++ b/src/pages/user/detail.vue @@ -38,13 +38,27 @@ cancelText="取消" > + + diff --git a/src/pages/user/index copy.vue b/src/pages/user/index copy.vue new file mode 100644 index 0000000..52cbb9b --- /dev/null +++ b/src/pages/user/index copy.vue @@ -0,0 +1,128 @@ + + diff --git a/src/pages/user/index.vue b/src/pages/user/index.vue index 36491ee..f835e45 100644 --- a/src/pages/user/index.vue +++ b/src/pages/user/index.vue @@ -8,110 +8,44 @@ - - - - - - - - - - - - - - {{ item.name }} - - - - {{ - item.phone - }} - {{ item.store.address }} - - - - + + +