diff --git a/admin/src/addon/zhjw/api/common.ts b/admin/src/addon/zhjw/api/common.ts new file mode 100644 index 00000000..33d71efa --- /dev/null +++ b/admin/src/addon/zhjw/api/common.ts @@ -0,0 +1,11 @@ + +import request from '@/utils/request' + +/** + * 公共通用接口 + */ + +// 获取地区树形结构 +export function getAreaTree() { + return request.get(`zhjw/common/getAreaTree`) +} \ No newline at end of file diff --git a/admin/src/addon/zhjw/views/sales/sales_edit.vue b/admin/src/addon/zhjw/views/sales/sales_edit.vue index a6d02d75..31a01b85 100644 --- a/admin/src/addon/zhjw/views/sales/sales_edit.vue +++ b/admin/src/addon/zhjw/views/sales/sales_edit.vue @@ -108,42 +108,17 @@ class="input-width"/> - - - - - - - - - - - - - - - - - - - + + @@ -180,6 +155,7 @@ import {t} from '@/lang' import {useDictionary} from '@/app/api/dict' import type {FormInstance} from 'element-plus' import {getSalesInfo, addSales, editSales, getWithStaffList, getWithSysAreaList} from '@/addon/zhjw/api/sales'; +import {getAreaTree} from '@/addon/zhjw/api/common'; import {useRoute} from 'vue-router' const route = useRoute() @@ -210,10 +186,54 @@ const initialFormData = { district_id: '', community_name: '', customer_tags: '', + full_address: '', + full_address_id: [],//选中后的值 格式=[130000,130300,130304] } const formData: Record = reactive({...initialFormData}) + +//地址下拉三级联动 +const options_area = ref([]);//地址选择树形结构 +//获取地址树形结构 +const getAreaTreeArr = async () => { + options_area.value = await (await getAreaTree()).data +} +getAreaTreeArr() +//监听地址选择 +const changeArea = (selectedValues: any[]) => { + console.log('用户选择的地址值:', selectedValues); + + // 将选中的地址信息存储到 formData 中 + if (selectedValues.length >= 1) { + formData.province_id = selectedValues[0]; // 省级 ID + } + if (selectedValues.length >= 2) { + formData.city_id = selectedValues[1]; // 市级 ID + } + if (selectedValues.length >= 3) { + formData.district_id = selectedValues[2]; // 区级 ID + } + + // 查找省、市、区的中文名称 + const province = options_area.value.find((item: any) => item.id == selectedValues[0]); + const city = province?.children?.find((item: any) => item.id == selectedValues[1]); + const district = city?.children?.find((item: any) => item.id == selectedValues[2]); + + // 拼接省-市-区中文名称 + let full_address = `${province?.name || ''}-${city?.name || ''}-${district?.name || ''}`; + formData.full_address = full_address; + + console.log('更新后的 formData:', formData,formData.full_address_id); + + + + + + +}; + + const setFormData = async (id: number = 0) => { Object.assign(formData, initialFormData) const data = await (await getSalesInfo(id)).data @@ -269,21 +289,8 @@ const setGetStaffIdList = async () => { getStaffIdList.value = await (await getWithStaffList({})).data } setGetStaffIdList() -const provinceIdList = ref([] as any[]) -const setProvinceIdList = async () => { - provinceIdList.value = await (await getWithSysAreaList({})).data -} -setProvinceIdList() -const cityIdList = ref([] as any[]) -const setCityIdList = async () => { - cityIdList.value = await (await getWithSysAreaList({})).data -} -setCityIdList() -const districtIdList = ref([] as any[]) -const setDistrictIdList = async () => { - districtIdList.value = await (await getWithSysAreaList({})).data -} -setDistrictIdList() + + // 表单验证规则 const formRules = computed(() => { return { diff --git a/niucloud/addon/zhjw/app/adminapi/controller/common/Common.php b/niucloud/addon/zhjw/app/adminapi/controller/common/Common.php new file mode 100644 index 00000000..5a823bf8 --- /dev/null +++ b/niucloud/addon/zhjw/app/adminapi/controller/common/Common.php @@ -0,0 +1,47 @@ +order('sort', 'asc') + ->select() + ->toArray(); + + // 构建树形结构 + $tree = (new CommonService())->areaBuildTree($areas); + + return success($tree); + + } + + +} diff --git a/niucloud/addon/zhjw/app/adminapi/controller/orders/Orders.php b/niucloud/addon/zhjw/app/adminapi/controller/orders/Orders.php index 8395c581..87579ec1 100644 --- a/niucloud/addon/zhjw/app/adminapi/controller/orders/Orders.php +++ b/niucloud/addon/zhjw/app/adminapi/controller/orders/Orders.php @@ -12,7 +12,7 @@ namespace addon\zhjw\app\adminapi\controller\orders; use core\base\BaseAdminController; -use addon\zhjw\app\service\admin\orders\OrdersService; +use addon\zhjw\app\service\admin\orders\CommonService; /** @@ -37,7 +37,7 @@ class Orders extends BaseAdminController ["payment_time",["",""]], ["create_time",["",""]] ]); - return success((new OrdersService())->getPage($data)); + return success((new CommonService())->getPage($data)); } /** @@ -46,7 +46,7 @@ class Orders extends BaseAdminController * @return \think\Response */ public function info(int $id){ - return success((new OrdersService())->getInfo($id)); + return success((new CommonService())->getInfo($id)); } /** @@ -65,7 +65,7 @@ class Orders extends BaseAdminController ]); $this->validate($data, 'addon\zhjw\app\validate\orders\Orders.add'); - $id = (new OrdersService())->add($data); + $id = (new CommonService())->add($data); return success('ADD_SUCCESS', ['id' => $id]); } @@ -86,7 +86,7 @@ class Orders extends BaseAdminController ]); $this->validate($data, 'addon\zhjw\app\validate\orders\Orders.edit'); - (new OrdersService())->edit($id, $data); + (new CommonService())->edit($id, $data); return success('EDIT_SUCCESS'); } @@ -96,17 +96,17 @@ class Orders extends BaseAdminController * @return \think\Response */ public function del(int $id){ - (new OrdersService())->del($id); + (new CommonService())->del($id); return success('DELETE_SUCCESS'); } public function getStudentsAll(){ - return success(( new OrdersService())->getStudentsAll()); + return success(( new CommonService())->getStudentsAll()); } public function getContractsAll(){ - return success(( new OrdersService())->getContractsAll()); + return success(( new CommonService())->getContractsAll()); } } diff --git a/niucloud/addon/zhjw/app/adminapi/route/route.php b/niucloud/addon/zhjw/app/adminapi/route/route.php index afac5e9b..b27ff7a1 100644 --- a/niucloud/addon/zhjw/app/adminapi/route/route.php +++ b/niucloud/addon/zhjw/app/adminapi/route/route.php @@ -29,6 +29,21 @@ Route::group('zhjw', function () { AdminLog::class ]); +// USER_CODE_BEGIN -- 公共控制器 + +Route::group('zhjw/common', function () { + + //班级管理列表 + Route::get('getAreaTree', 'addon\zhjw\app\adminapi\controller\common\Common@getAreaTree'); + + +})->middleware([ + AdminCheckToken::class, + AdminCheckRole::class, + AdminLog::class +]); +// USER_CODE_END -- 公共控制器 + diff --git a/niucloud/addon/zhjw/app/service/admin/common/CommonService.php b/niucloud/addon/zhjw/app/service/admin/common/CommonService.php new file mode 100644 index 00000000..f6b18610 --- /dev/null +++ b/niucloud/addon/zhjw/app/service/admin/common/CommonService.php @@ -0,0 +1,71 @@ +model->withSearch(["student_id","contract_id","amount","order_type","pay_type","payment_status","payment_time","create_time"], $where)->with(['students','contracts'])->field($field)->order($order); + $list = $this->pageQuery($search_model); + return $list; + } + + /** + * 构建树形结构 + * @param array $areas 所有地址数据 + * @param int $pid 父级ID + * @return array + */ + public function areaBuildTree(array $areas, int $pid = 0) + { + $tree = []; + foreach ($areas as $area) { + if ($area['pid'] == $pid) { + $children = $this->areaBuildTree($areas, $area['id']); + if ($children) { + $area['children'] = $children; + } + $tree[] = $area; + } + } + return $tree; + } + + + +}