From 044947ec060eec689ba0add220af0d6817e405c7 Mon Sep 17 00:00:00 2001 From: sa0ChunLuyu Date: Sun, 13 Oct 2024 00:22:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E9=97=AE=E5=8D=B7?= =?UTF-8?q?=E8=B0=83=E6=9F=A5=20=E5=90=8E=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Admin/QuestionItemController.php | 12 +- .../API/Admin/QuestionQuestionController.php | 10 +- .../API/Admin/QuestionnaireController.php | 2 +- Laravel/routes/api.php | 2 + admin/src/api/api.js | 51 +++ admin/src/views/Question/Question.vue | 324 ++++++++++++++++ admin/src/views/Question/QuestionItem.vue | 263 ++++++++++++- admin/src/views/Question/QuestionQuestion.vue | 361 ++++++++++++++++++ 8 files changed, 1019 insertions(+), 6 deletions(-) diff --git a/Laravel/app/Http/Controllers/API/Admin/QuestionItemController.php b/Laravel/app/Http/Controllers/API/Admin/QuestionItemController.php index 122a3a2..779f14a 100644 --- a/Laravel/app/Http/Controllers/API/Admin/QuestionItemController.php +++ b/Laravel/app/Http/Controllers/API/Admin/QuestionItemController.php @@ -10,10 +10,8 @@ class QuestionItemController extends Controller { public function item(Request $request) { - $hospital_id = $request->post('hospital_id'); $items = DB::table('items') ->select(['item_id', 'name', 'pinyin', 'sex']) - ->where(['hospital_id' => $hospital_id]) ->get(); return \Yz::Return(true, '操作完成', [ 'list' => $items @@ -90,7 +88,15 @@ class QuestionItemController extends Controller if (!!$search) { $db->where('name', $search); } - $list = $db->paginate(20); + $list = $db->orderBy('id', 'desc')->paginate(20); + return \Yz::Return(true, '操作完成', [ + 'list' => $list + ]); + } + + public function select(Request $request) + { + $list = DB::table('question_items')->select(['id', 'name'])->get(); return \Yz::Return(true, '操作完成', [ 'list' => $list ]); diff --git a/Laravel/app/Http/Controllers/API/Admin/QuestionQuestionController.php b/Laravel/app/Http/Controllers/API/Admin/QuestionQuestionController.php index ead8514..c53b753 100644 --- a/Laravel/app/Http/Controllers/API/Admin/QuestionQuestionController.php +++ b/Laravel/app/Http/Controllers/API/Admin/QuestionQuestionController.php @@ -72,7 +72,15 @@ class QuestionQuestionController extends Controller if (!!$search) { $db->where('question', 'like', "%$search%"); } - $list = $db->paginate(20); + $list = $db->orderBy('id', 'desc')->paginate(20); + return \Yz::Return(true, '操作完成', [ + 'list' => $list + ]); + } + + public function select(Request $request) + { + $list = DB::table('question_questions')->select(['id', 'question'])->get(); return \Yz::Return(true, '操作完成', [ 'list' => $list ]); diff --git a/Laravel/app/Http/Controllers/API/Admin/QuestionnaireController.php b/Laravel/app/Http/Controllers/API/Admin/QuestionnaireController.php index 373725e..385f0ef 100644 --- a/Laravel/app/Http/Controllers/API/Admin/QuestionnaireController.php +++ b/Laravel/app/Http/Controllers/API/Admin/QuestionnaireController.php @@ -80,7 +80,7 @@ class QuestionnaireController extends Controller if (!!$type) { $db->where('type', $type); } - $list = $db->paginate(20); + $list = $db->orderBy('id', 'desc')->paginate(20); return \Yz::Return(true, '操作完成', [ 'list' => $list ]); diff --git a/Laravel/routes/api.php b/Laravel/routes/api.php index 77147f5..a60e93d 100644 --- a/Laravel/routes/api.php +++ b/Laravel/routes/api.php @@ -29,11 +29,13 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function Route::post('admin/question/delete', 'App\Http\Controllers\API\Admin\QuestionnaireController@delete'); Route::post('admin/question/list', 'App\Http\Controllers\API\Admin\QuestionnaireController@list'); + Route::post('admin/questionQuestion/select', 'App\Http\Controllers\API\Admin\QuestionQuestionController@select'); Route::post('admin/questionQuestion/create', 'App\Http\Controllers\API\Admin\QuestionQuestionController@create'); Route::post('admin/questionQuestion/update', 'App\Http\Controllers\API\Admin\QuestionQuestionController@update'); Route::post('admin/questionQuestion/delete', 'App\Http\Controllers\API\Admin\QuestionQuestionController@delete'); Route::post('admin/questionQuestion/list', 'App\Http\Controllers\API\Admin\QuestionQuestionController@list'); + Route::post('admin/questionItem/select', 'App\Http\Controllers\API\Admin\QuestionItemController@select'); Route::post('admin/questionItem/item', 'App\Http\Controllers\API\Admin\QuestionItemController@item'); Route::post('admin/questionItem/create', 'App\Http\Controllers\API\Admin\QuestionItemController@create'); Route::post('admin/questionItem/update', 'App\Http\Controllers\API\Admin\QuestionItemController@update'); diff --git a/admin/src/api/api.js b/admin/src/api/api.js index 27428d3..72715f8 100644 --- a/admin/src/api/api.js +++ b/admin/src/api/api.js @@ -248,4 +248,55 @@ export const ArticleGetDetail = (data={}) => { //删除文章 export const ArticleGetDel = (data={}) => { return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ArticleGetDel',data:data}) +} +// 问卷调查 +export const QuestionCreateAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/question/create', data: data}) +} +export const QuestionUpdateAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/question/update', data: data}) +} +export const QuestionDeleteAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/question/delete', data: data}) +} +export const QuestionListAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + `v1/admin/question/list?page=${data.page}`, data: data}) +} + +export const QuestionQuestionCreateAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/questionQuestion/create', data: data}) +} +export const QuestionQuestionUpdateAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/questionQuestion/update', data: data}) +} +export const QuestionQuestionDeleteAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/questionQuestion/delete', data: data}) +} +export const QuestionQuestionListAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + `v1/admin/questionQuestion/list?page=${data.page}`, data: data}) +} +// 题目列表[全部] +export const QuestionQuestionSelectAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + `v1/admin/questionQuestion/select`, data: data}) +} + +export const QuestionItemCreateAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/questionItem/create', data: data}) +} +export const QuestionItemUpdateAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/questionItem/update', data: data}) +} +export const QuestionItemDeleteAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + 'v1/admin/questionItem/delete', data: data}) +} +export const QuestionItemListAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + `v1/admin/questionItem/list?page=${data.page}`, data: data}) +} +// 问卷调查 获取 检测项目列表 +export const QuestionItemItemAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + `v1/admin/questionItem/item`, data: data}) +} +// 项目列表[全部] +export const QuestionItemSelectAction = (data = {}) => { + return axios({url: import.meta.env.VITE_APP_API + `v1/admin/questionItem/select`, data: data}) } \ No newline at end of file diff --git a/admin/src/views/Question/Question.vue b/admin/src/views/Question/Question.vue index 59c8579..e1190ba 100644 --- a/admin/src/views/Question/Question.vue +++ b/admin/src/views/Question/Question.vue @@ -4,12 +4,336 @@ * user:sa0ChunLuyu * date:2024年10月12日 16:29:26 */ +import {ref, onMounted, computed} from 'vue'; +import $router from '@/router' +import {onBeforeRouteUpdate} from "vue-router"; +import {ElMessage, ElMessageBox} from 'element-plus' +import { + QuestionCreateAction, + QuestionUpdateAction, + QuestionDeleteAction, + QuestionListAction, + QuestionItemItemAction, + QuestionQuestionSelectAction +} from '@/api/api.js' + +const default_page_options = { + search: '', + type: '', + page: 1, +} +const page_options = ref(JSON.parse(JSON.stringify(default_page_options))) +onBeforeRouteUpdate((to) => { + routerChange(to.query) +}) +const item_list = ref([]) +const QuestionItemItem = async () => { + const response = await QuestionItemItemAction({}) + if (response.status) { + item_list.value = response.data.list.map((item) => { + return { + ...item, + name: item.sex !== 0 ? `${item.name}(${item.sex === 1 ? '男' : '女'})` : item.name + } + }) + } else { + ElMessage.error(response.msg) + } +} +const question_list = ref([]) +const QuestionQuestionSelect = async () => { + const response = await QuestionQuestionSelectAction({}) + if (response.status) { + question_list.value = response.data.list + } else { + ElMessage.error(response.msg) + } +} +const table_list = ref([]) +const last_page = ref(0) +const QuestionList = async () => { + const response = await QuestionListAction(page_options.value) + if (response.status) { + table_list.value = response.data.list.data.map((item) => { + return { + ...item, + items: JSON.parse(item.items), + questions: JSON.parse(item.questions) + } + }) + last_page.value = response.data.list.last_page + } else { + ElMessage.error(response.msg) + } +} + +const routerChange = (query) => { + page_options.value = { + search: query.search || default_page_options.search, + type: query.type || default_page_options.type, + page: Number(query.page) || default_page_options.page, + } + QuestionList() +} + +const searchClick = (page = 1) => { + page_options.value.page = page + $router.push({ + query: JSON.parse(JSON.stringify(page_options.value)) + }) +} + +const itemNameShow = (items) => { + let names = [] + for (let i in item_list.value) { + if (items.includes(String(item_list.value[i].item_id))) { + names.push(item_list.value[i].name) + } + } + return names.join('、') +} +const edit_data_default = { + id: 0, + type: '问卷调查', + name: '', + items: [], + questions: [] +} +const edit_data = ref(JSON.parse(JSON.stringify(edit_data_default))) +const edit_show = ref(false) +const createClick = () => { + updateClick(edit_data_default) +} +const updateClick = (row) => { + edit_data.value = JSON.parse(JSON.stringify(row)) + edit_show.value = true +} +const editDoneClick = async () => { + const $func = edit_data.value.id !== 0 ? QuestionUpdateAction : QuestionCreateAction + const response = await $func({ + ...edit_data.value, + items: JSON.stringify(edit_data.value.items), + questions: JSON.stringify(edit_data.value.questions), + }) + if (response.status) { + edit_show.value = false + await QuestionList() + } else { + ElMessage.error(response.msg) + } +} + +const QuestionDelete = async (id) => { + const response = await QuestionDeleteAction({id}) + if (response.status) { + await QuestionList() + } else { + ElMessage.error(response.msg) + } +} + +const deleteClick = (id) => { + ElMessageBox.confirm( + '是否确认删除该问卷?', + '提示', + { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + QuestionDelete(id) + }).catch(() => { + }) +} +const edit_item_data = ref([]) +const edit_item_show = ref(false) +const editItemClick = () => { + edit_item_data.value = JSON.parse(JSON.stringify(edit_data.value.items)) + edit_item_show.value = true +} +const editItemDoneClick = () => { + edit_data.value.items = JSON.parse(JSON.stringify(edit_item_data.value)) + edit_item_show.value = false +} +const filterMethod = (query, item) => { + return item.name.toLowerCase().includes(query.toLowerCase()) || item.pinyin.toLowerCase().includes(query.toLowerCase()) +} +const moveQuestionClick = (index, type) => { + if (edit_data.value.questions.length - 1 >= index + type) { + const question = edit_data.value.questions[index] + edit_data.value.questions[index] = JSON.parse(JSON.stringify(edit_data.value.questions[index + type])) + edit_data.value.questions[index + type] = JSON.parse(JSON.stringify(question)) + } +} +const delQuestionClick = (index) => { + edit_data.value.questions.splice(index, 1) +} + +const question_edit_list = computed(() => { + return edit_data.value.questions.map((item) => { + return { + id: item, + question: question_list.value.find((i) => i.id === Number(item)).question + } + }) +}) +const edit_question_active = ref(null) +const addQuestionClick = () => { + if (edit_question_active.value) { + edit_data.value.questions.push(String(edit_question_active.value)) + } +} + +onMounted(() => { + routerChange($router.currentRoute.value.query) + QuestionItemItem() + QuestionQuestionSelect() +}) + diff --git a/admin/src/views/Question/QuestionItem.vue b/admin/src/views/Question/QuestionItem.vue index 59c8579..a58b25c 100644 --- a/admin/src/views/Question/QuestionItem.vue +++ b/admin/src/views/Question/QuestionItem.vue @@ -4,12 +4,273 @@ * user:sa0ChunLuyu * date:2024年10月12日 16:29:26 */ +import {ref, onMounted} from 'vue'; +import $router from '@/router' +import {onBeforeRouteUpdate} from "vue-router"; +import {ElMessage, ElMessageBox} from 'element-plus' +import { + QuestionItemCreateAction, + QuestionItemUpdateAction, + QuestionItemDeleteAction, + QuestionItemListAction, + QuestionItemItemAction +} from '@/api/api.js' + +const default_page_options = { + search: '', + page: 1, +} +const page_options = ref(JSON.parse(JSON.stringify(default_page_options))) +onBeforeRouteUpdate((to) => { + routerChange(to.query) +}) +const item_list = ref([]) +const QuestionItemItem = async () => { + const response = await QuestionItemItemAction({}) + if (response.status) { + item_list.value = response.data.list.map((item) => { + return { + ...item, + name: item.sex !== 0 ? `${item.name}(${item.sex === 1 ? '男' : '女'})` : item.name + } + }) + } else { + ElMessage.error(response.msg) + } +} +const table_list = ref([]) +const last_page = ref(0) +const QuestionItemList = async () => { + const response = await QuestionItemListAction(page_options.value) + if (response.status) { + table_list.value = response.data.list.data.map((item) => { + return { + ...item, + jichu: JSON.parse(item.jichu), + tuijian: JSON.parse(item.tuijian), + gaoduan: JSON.parse(item.gaoduan), + } + }) + last_page.value = response.data.list.last_page + } else { + ElMessage.error(response.msg) + } +} + +const routerChange = (query) => { + page_options.value = { + search: query.search || default_page_options.search, + page: Number(query.page) || default_page_options.page, + } + QuestionItemList() +} + +const searchClick = (page = 1) => { + page_options.value.page = page + $router.push({ + query: JSON.parse(JSON.stringify(page_options.value)) + }) +} + +const itemNameShow = (items) => { + let names = [] + for (let i in item_list.value) { + if (items.includes(String(item_list.value[i].item_id))) { + names.push(item_list.value[i].name) + } + } + return names.join('、') +} +const edit_data_default = { + id: 0, + name: '', + desc: '', + jichu: [], + tuijian: [], + gaoduan: [], +} +const edit_data = ref(JSON.parse(JSON.stringify(edit_data_default))) +const edit_show = ref(false) +const createClick = () => { + updateClick(edit_data_default) +} +const updateClick = (row) => { + edit_data.value = JSON.parse(JSON.stringify(row)) + edit_show.value = true +} +const editDoneClick = async () => { + const $func = edit_data.value.id !== 0 ? QuestionItemUpdateAction : QuestionItemCreateAction + const response = await $func({ + ...edit_data.value, + jichu: JSON.stringify(edit_data.value.jichu), + tuijian: JSON.stringify(edit_data.value.tuijian), + gaoduan: JSON.stringify(edit_data.value.gaoduan), + }) + if (response.status) { + edit_show.value = false + await QuestionItemList() + } else { + ElMessage.error(response.msg) + } +} + +const QuestionItemDelete = async (id) => { + const response = await QuestionItemDeleteAction({id}) + if (response.status) { + await QuestionItemList() + } else { + ElMessage.error(response.msg) + } +} + +const deleteClick = (id) => { + ElMessageBox.confirm( + '是否确认删除该项目?', + '提示', + { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + QuestionItemDelete(id) + }).catch(() => { + }) +} +const edit_item_data = ref({ + active: 'jichu', + items: [] +}) +const edit_item_show = ref(false) +const editItemClick = (type) => { + edit_item_data.value = { + active: type, + items: JSON.parse(JSON.stringify(edit_data.value[type])) + } + edit_item_show.value = true +} +const editItemDoneClick = () => { + edit_data.value[edit_item_data.value.active] = JSON.parse(JSON.stringify(edit_item_data.value.items)) + edit_item_show.value = false +} +const filterMethod = (query, item) => { + return item.name.toLowerCase().includes(query.toLowerCase()) || item.pinyin.toLowerCase().includes(query.toLowerCase()) +} +onMounted(() => { + routerChange($router.currentRoute.value.query) + QuestionItemItem() +}) + diff --git a/admin/src/views/Question/QuestionQuestion.vue b/admin/src/views/Question/QuestionQuestion.vue index 59c8579..a976e99 100644 --- a/admin/src/views/Question/QuestionQuestion.vue +++ b/admin/src/views/Question/QuestionQuestion.vue @@ -4,12 +4,373 @@ * user:sa0ChunLuyu * date:2024年10月12日 16:29:26 */ +import {ref, onMounted, nextTick} from 'vue'; +import $router from '@/router' +import {onBeforeRouteUpdate} from "vue-router"; +import {ElMessage, ElMessageBox} from 'element-plus' +import { + QuestionQuestionSelectAction, + QuestionItemSelectAction, + QuestionQuestionCreateAction, + QuestionQuestionUpdateAction, + QuestionQuestionDeleteAction, + QuestionQuestionListAction +} from '@/api/api.js' + +const default_page_options = { + search: '', + page: 1, +} +const page_options = ref(JSON.parse(JSON.stringify(default_page_options))) +onBeforeRouteUpdate((to) => { + routerChange(to.query) +}) +const table_list = ref([]) +const last_page = ref(0) +const QuestionQuestionList = async () => { + const response = await QuestionQuestionListAction(page_options.value) + if (response.status) { + table_list.value = response.data.list.data.map((item) => { + return { + ...item, + option: JSON.parse(item.option) + } + }) + last_page.value = response.data.list.last_page + } else { + ElMessage.error(response.msg) + } +} + +const routerChange = (query) => { + page_options.value = { + search: query.search || default_page_options.search, + page: Number(query.page) || default_page_options.page, + } + QuestionQuestionList() +} + +const searchClick = (page = 1) => { + page_options.value.page = page + $router.push({ + query: JSON.parse(JSON.stringify(page_options.value)) + }) +} +const select_option = { + value: [ + {content: 'A. ', type: 'items', items: [], questions: []}, + {content: 'B. ', type: 'items', items: [], questions: []}, + {content: 'C. ', type: 'items', items: [], questions: []}, + ] +} +const input_option = { + value: '', + placeholder: '请输入选项内容' +} +const edit_data_default = { + id: 0, + question: '', + type: 'input', + option: { + input: JSON.parse(JSON.stringify(input_option)), + select: JSON.parse(JSON.stringify(select_option)), + }, +} +const edit_data = ref(JSON.parse(JSON.stringify(edit_data_default))) +const edit_show = ref(false) +const createClick = () => { + updateClick(edit_data_default) +} +const updateClick = (row) => { + edit_data.value = JSON.parse(JSON.stringify(row)) + edit_show.value = true +} +const editDoneClick = async () => { + const $func = edit_data.value.id !== 0 ? QuestionQuestionUpdateAction : QuestionQuestionCreateAction + const response = await $func({ + ...edit_data.value, + option: JSON.stringify(edit_data.value.option), + }) + if (response.status) { + edit_show.value = false + await QuestionQuestionList() + } else { + ElMessage.error(response.msg) + } +} + +const QuestionQuestionDelete = async (id) => { + const response = await QuestionQuestionDeleteAction({id}) + if (response.status) { + await QuestionQuestionList() + } else { + ElMessage.error(response.msg) + } +} + +const deleteClick = (id) => { + ElMessageBox.confirm( + '是否确认删除该题目?', + '提示', + { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + QuestionQuestionDelete(id) + }).catch(() => { + }) +} +const edit_item_data = ref({ + active: 0, + items: [] +}) +const edit_item_show = ref(false) +const question_list = ref([]) +const QuestionQuestionSelect = async () => { + const response = await QuestionQuestionSelectAction() + if (response.status) { + question_list.value = response.data.list + } else { + ElMessage.error(response.msg) + } +} +const editItemClick = async (index) => { + const type = edit_data.value.option.select.value[index].type + if (type === 'questions') { + await QuestionQuestionSelect() + } + await nextTick(() => { + edit_item_data.value = { + active: index, + items: JSON.parse(JSON.stringify(edit_data.value.option.select.value[index][type])) + } + edit_item_show.value = true + }) +} +const editItemDoneClick = () => { + const type = edit_data.value.option.select.value[edit_item_data.value.active].type + edit_data.value.option.select.value[edit_item_data.value.active][type] = JSON.parse(JSON.stringify(edit_item_data.value.items)) + edit_item_show.value = false +} +const filterMethod = (query, item) => { + const type = edit_data.value.option.select.value[edit_item_data.value.active].type + if (type === 'items') { + return item.name.toLowerCase().includes(query.toLowerCase()) + } else { + return item.question.toLowerCase().includes(query.toLowerCase()) + } +} +const item_list = ref([]) +const QuestionItemSelect = async () => { + const response = await QuestionItemSelectAction() + if (response.status) { + item_list.value = response.data.list + } else { + ElMessage.error(response.msg) + } +} +const moveQuestionClick = (index, type) => { + if (edit_data.value.option.select.value.length - 1 >= index + type) { + const question = edit_data.value.option.select.value[index] + edit_data.value.option.select.value[index] = JSON.parse(JSON.stringify(edit_data.value.option.select.value[index + type])) + edit_data.value.option.select.value[index + type] = JSON.parse(JSON.stringify(question)) + } +} +const delQuestionClick = (index) => { + edit_data.value.option.select.value.splice(index, 1) +} +const addQuestionClick = () => { + edit_data.value.option.select.value.push({content: '', type: 'items', items: [], questions: []}) +} +const question_type_map = { + select: '选择题', + input: '输入框' +} +onMounted(() => { + routerChange($router.currentRoute.value.query) + QuestionItemSelect() +}) + From b6212774ef4af52d64ef2c802bb1448b52974811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E4=BD=B3=E5=AE=87?= <17601616548@163.com> Date: Sun, 13 Oct 2024 00:28:07 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8C=BB=E7=94=9F=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- h5/pages/main/tjyy/tjyy.vue | 1 + h5/pages/main/yytjsj/yytjsj.vue | 30 ------------------------------ 2 files changed, 1 insertion(+), 30 deletions(-) diff --git a/h5/pages/main/tjyy/tjyy.vue b/h5/pages/main/tjyy/tjyy.vue index ee5df0c..4c7d4ee 100755 --- a/h5/pages/main/tjyy/tjyy.vue +++ b/h5/pages/main/tjyy/tjyy.vue @@ -189,6 +189,7 @@ const comfrimyy = async () => { item_ids: buyInfo.value.item_ids, plan_id: plan_id, plan_nmr_id: plan_nmr_id, + doctor: yytjInfo.value?.doctor_name || "", }; console.log(obj); diff --git a/h5/pages/main/yytjsj/yytjsj.vue b/h5/pages/main/yytjsj/yytjsj.vue index 2ab2d98..6e46998 100755 --- a/h5/pages/main/yytjsj/yytjsj.vue +++ b/h5/pages/main/yytjsj/yytjsj.vue @@ -27,7 +27,6 @@ let timeIndex = ref(null); // 当前选中时间索引 let status = ref(0); // 1:点了确定 2:未点确定 let calendarShow = ref(false); // 日历显示 const rl_list = ref(false); //日历插槽 -let calendar = ref(null); let isClickDoctor = ref(0); // 是否点击了医生 const mountedAction = async () => { @@ -352,25 +351,6 @@ const clickDoctor = () => { }); }; -const confirm = (e) => { - console.log(e); - if (new Date(e.fulldate).getTime() < new Date(getToday()).getTime()) { - uni.$lu.toast("不能选择过去时间"); - let time = setTimeout(() => { - calendar.value.open(); - clearTimeout(time); - }, 500); - return; - } - status.value = 0; - yytjInfo.value.nmr_list[yytjInfo.value.nmr_list.length - 1].time = e.fulldate; - yytjInfo.value.doctor_date = e.fulldate; - $store.setYytjInfo(yytjInfo.value); - uni.navigateTo({ - url: `/pages/main/selectDoctor/selectDoctor?date=${e.fulldate}`, - }); -}; - const comfrimyy = () => { console.log(yytjInfo.value); status.value = 1; @@ -534,16 +514,6 @@ onShow(() => { - - - Date: Sun, 13 Oct 2024 05:18:37 +0800 Subject: [PATCH 3/3] =?UTF-8?q?1.=E5=A5=97=E9=A4=90=E4=B8=AD=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=A4=9A=E9=80=89=202.=E4=BC=98=E5=8C=96=E4=BD=93?= =?UTF-8?q?=E6=A3=80=E6=97=B6=E9=97=B4=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- h5/pages/main/combo/combo.vue | 89 ++++++++++++++++++++++++++++++++- h5/pages/main/tj/choose.vue | 18 +++---- h5/pages/main/yytjsj/yytjsj.vue | 10 ++-- 3 files changed, 102 insertions(+), 15 deletions(-) diff --git a/h5/pages/main/combo/combo.vue b/h5/pages/main/combo/combo.vue index 6d96fe6..12ba2c0 100644 --- a/h5/pages/main/combo/combo.vue +++ b/h5/pages/main/combo/combo.vue @@ -30,7 +30,12 @@ let projectIds = ref([]); // 项目id集合 let screenObj = ref({}); // 筛选条件 let combo_select = ref({}); // 套餐筛选条件 let comboIds = ref([]); // 套餐对比列表 -let status = ref(false); // 筛选弹窗控制 +let popupMultiple = ref(false); // 多选弹窗 +let multipleList = ref([]); // 多选列表 +let multipleIndex = ref(0); // 多选索引 +let itemIds = ref([]); // 项目id集合 +let itemId = ref(""); // 项目id +let comboId = ref(""); // 套餐id const selectItemClick = async (index, key) => { // 选择套餐条件 @@ -266,13 +271,45 @@ onShow(() => { }); const buyClick = async (item) => { - let query = "?comboId=" + item.combo_id; + comboId.value = item.combo_id; + if (item.duo_xuan_yi.length > 0) { + popupMultiple.value.open("center"); + multipleIndex.value = 0; + itemIds.value = []; + itemId.value = ""; + multipleList.value = item.duo_xuan_yi; + return; + } + toDetail(); +}; + +const nextItemClick = () => { + if (!itemId.value) { + uni.$lu.toast("请选择项目"); + return; + } + itemIds.value.push(itemId.value); + if (multipleIndex.value == multipleList.value.length - 1) { + toDetail(); + return; + } + itemId.value = ""; + multipleIndex.value = multipleIndex.value + 1; +}; + +const toDetail = () => { + // 跳转到套餐详情 + let query = "?comboId=" + comboId.value; if ($props.groupId) { // 团检把团检ID加上 query += "&groupId=" + $props.groupId; } + if (itemIds.value.length) { + query += "&itemIds=" + itemIds.value.join(","); + } // 个检只要套餐ID // 预约 跳转到个检/团检套餐详情 + popupMultiple.value.close(); uni.navigateTo({ url: "/pages/main/tj/tjxq" + query, }); @@ -440,6 +477,54 @@ const toRouter = () => { + + + + 请选择 + + + + + {{ item.item_name }} + + ¥ + {{ item.price }} + + + + + 当前套餐包含一个可自由{{ + multipleList[multipleIndex].length + }}选1的体检项目,请
根据您的实际情况自行选择。
+ {{ + multipleIndex == multipleList.length - 1 ? "确定" : "下一项" + }} +
+
diff --git a/h5/pages/main/tj/choose.vue b/h5/pages/main/tj/choose.vue index 52d2b06..803ebea 100644 --- a/h5/pages/main/tj/choose.vue +++ b/h5/pages/main/tj/choose.vue @@ -15,9 +15,9 @@ const person_list = ref([]); let popup = ref(null); let unitList = ref([]); // 单位列表 const getPersonList = async () => { - uni.showLoading() + uni.showLoading(); const response = await $api("GetPersonList"); - uni.hideLoading() + uni.hideLoading(); $response(response, () => { person_list.value = response.data.list; }); @@ -50,13 +50,13 @@ const choosePersonClick = async (info) => { }; const getGroupCombo = async (info) => { - uni.showLoading() + uni.showLoading(); // 获取团检套餐 const response = await $api("GetGroupCombo", { hospital_id: $store.save.hospital, group_id: info.group_id, }); - uni.hideLoading() + uni.hideLoading(); $response(response, () => { console.log(response); if (response.data.unit.length) { @@ -64,19 +64,17 @@ const getGroupCombo = async (info) => { data.sex = info.sex; data.phone = info.phone; data.phone = info.married; - $store.setGroupInfo(data); + $store.setGroupInfo(data); popup.value.close(); if (!data.items.length && data.tongshou_xiane > 0) { - // 跳转到选择类似上 + // 跳转到选择类似上 uni.navigateTo({ - url: "/pages/main/tj/selectType" + url: "/pages/main/tj/selectType", }); } else { // 跳转到团检自选 uni.navigateTo({ - url: - "/pages/main/tj/tjxq?groupId=" + - info.group_id + url: "/pages/main/tj/tjxq?groupId=" + info.group_id, }); } } diff --git a/h5/pages/main/yytjsj/yytjsj.vue b/h5/pages/main/yytjsj/yytjsj.vue index 6e46998..1e0f8b3 100755 --- a/h5/pages/main/yytjsj/yytjsj.vue +++ b/h5/pages/main/yytjsj/yytjsj.vue @@ -295,7 +295,10 @@ const getCurrentTime = (item, index) => { status.value = 0; $store.setYytjInfo(yytjInfo.value); }; -const xmmcClick = (val, index) => { +const xmmcClick = (val, index, status) => { + if (nmrIndex.value == index && status) { + return; + } // 选择项目 if ( yytjInfo.value.nmr_list.length > 1 && @@ -312,7 +315,8 @@ const xmmcClick = (val, index) => { currentDate.value = val.time.split(" ")[0]; } else { if ( - ((yytjInfo.value.nmr_list.length > 1 && index == 1) || + ((yytjInfo.value.nmr_list.length > 1 && + index == yytjInfo.value.nmr_list.length - 1) || (yytjInfo.value.nmr_list.length == 1 && index == 0)) && yytjInfo.value.doctor_date ) { @@ -624,7 +628,7 @@ onShow(() => {