diff --git a/.env.development b/.env.development
index 00c0ba4..8798391 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
NODE_ENV= development
VITE_HTTP_BASE_URL = http://10.39.13.78:8002/api/
-# VITE_HTTP_BASE_URL = https://test-weapp-api.linyikj.com.cn/api/
+# VITE_HTTP_BASE_URL = http://test-weapp-api.linyikj.com.cn/api/
# VITE_HTTP_BASE_URL = https://weapp-api.linyikj.com.cn/api/
VITE_ACCESS_TOKEN_KEY= 'ACCESS_TOKEN_CUSTOMER'
\ No newline at end of file
diff --git a/ci/project.config.json b/ci/project.config.json
index 9689888..2954887 100644
--- a/ci/project.config.json
+++ b/ci/project.config.json
@@ -1,3 +1,3 @@
{
- "version": "0.0.95"
+ "version": "0.0.108"
}
\ No newline at end of file
diff --git a/gencode.json b/gencode.json
index 5e4739f..cc33bc3 100644
--- a/gencode.json
+++ b/gencode.json
@@ -1,5 +1,5 @@
{
- "url": "http://10.39.13.78:8001/api/docs/openapi",
+ "url": "http://10.39.13.78:8002/api/docs/openapi",
"module": "Customer",
"outPath": "./src/gen/",
"apis": {
diff --git a/src/App.vue b/src/App.vue
index 99bc363..08a990a 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -8,6 +8,7 @@ const auth = useWeAppAuthStore()
const globalData = {
//全局变量
selectProject: {},
+ address_city:"",
//当前默认角色
selectedOrg: {},
selectedIndex: 0,
@@ -17,12 +18,16 @@ const globalData = {
onLaunch(async () => {
const app = getCurrentInstance()
await auth.login(app)
+ auth.SetAddressCity()
console.log('App Launch')
// 检查更新
// #ifdef MP-WEIXIN
CheckUpdate()
// #endif
})
+
+
+
onShow(() => {})
onHide(() => {
console.log('App Hide')
diff --git a/src/INDEX/address_city/index.vue b/src/INDEX/address_city/index.vue
new file mode 100644
index 0000000..128e9cf
--- /dev/null
+++ b/src/INDEX/address_city/index.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ city.city }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当前定位
+
+
+ {{ useModel.currentCity.value.name }}
+
+
+
+
+
+ 已开通城市
+
+
+ {{ city.city }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/INDEX/address_city/method.ts b/src/INDEX/address_city/method.ts
new file mode 100644
index 0000000..ba6c9ea
--- /dev/null
+++ b/src/INDEX/address_city/method.ts
@@ -0,0 +1,85 @@
+import useModel, { City } from './model'
+import { Apis } from '@/gen/Apis'
+import { getApiLoading } from '@/common/libraries/apiLoading'
+import { useWeAppAuthStore } from '@/common'
+import config from '@/common/libraries/config'
+const auth = useWeAppAuthStore()
+/**
+ * 搜索输入处理
+ */
+const onSearchInput = (e: any) => {
+ useModel.searchKeyword.value = e.detail.value
+}
+
+/**
+ * 清空搜索
+ */
+const clearSearch = () => {
+ useModel.searchKeyword.value = ''
+}
+
+/**
+ * 选择城市
+ */
+const selectCity = (city: City) => {
+ console.log('选择城市:', city)
+ // TODO: 返回上一页并传递选中的城市
+ // 可以通过事件总线或 uni.$emit 传递数据
+ auth.data.address_city = {city: city?.name || '',...city}
+// uni.$emit('citySelected', city)
+ uni.navigateBack({
+ delta: 1
+ })
+}
+
+/**
+ * 滚动到指定字母区域
+ */
+const scrollToSection = (letter: string) => {
+ useModel.scrollToId.value = `section_${letter}`
+}
+
+/**
+ * 获取定位
+ */
+const getLocation = () => {
+ // TODO: 实际项目中调用定位API
+ uni.getLocation({
+ type: 'wgs84',
+ success: (res) => {
+ console.log('当前位置:', res)
+ // 根据经纬度获取城市名称
+ // 可以调用逆地理编码API获取城市信息
+ // currentCity.value = { name: '深圳', pinyin: 'shenzhen', code: '440300' }
+ },
+ fail: (err) => {
+ console.log('获取定位失败:', err)
+ uni.showToast({
+ title: '获取定位失败',
+ icon: 'none'
+ })
+ }
+ })
+}
+
+/**
+ * 获取城市列表(从接口获取)
+ */
+const getCityList = () => {
+ // TODO: 调用接口获取城市列表
+ // const res = await Apis.City.List()
+ // useModel.allCities.value = res.data
+ getApiLoading(Apis.Asset.AssetHouses.GetCities, {app_id: config?.WxAppId}).then(res => {
+ useModel.openCities.value = res.data || []
+ console.log(res)
+ })
+}
+
+export default {
+ onSearchInput,
+ clearSearch,
+ selectCity,
+ scrollToSection,
+ getLocation,
+ getCityList
+}
diff --git a/src/INDEX/address_city/model.ts b/src/INDEX/address_city/model.ts
new file mode 100644
index 0000000..f228dce
--- /dev/null
+++ b/src/INDEX/address_city/model.ts
@@ -0,0 +1,144 @@
+import { ref, computed } from 'vue'
+
+// 城市数据类型
+export interface City {
+ name?: string
+ pinyin?: string
+ code?: string
+ city?: string
+ city_id?: number
+}
+
+// 搜索关键词
+export const searchKeyword = ref('')
+
+// 当前定位城市
+export const currentCity = ref(null)
+
+// 滚动定位ID
+export const scrollToId = ref('')
+
+// 热门城市列表
+export const hotCities = ref([
+ { name: '北京', pinyin: 'beijing', code: '110000' },
+ { name: '上海', pinyin: 'shanghai', code: '310000' },
+ { name: '广州', pinyin: 'guangzhou', code: '440100' },
+ { name: '深圳', pinyin: 'shenzhen', code: '440300' },
+ { name: '杭州', pinyin: 'hangzhou', code: '330100' },
+ { name: '成都', pinyin: 'chengdu', code: '510100' },
+ { name: '重庆', pinyin: 'chongqing', code: '500000' },
+ { name: '武汉', pinyin: 'wuhan', code: '420100' }
+])
+
+//已开通城市
+export const openCities = ref([])
+
+
+// 所有城市数据(示例数据,实际应从接口获取)
+export const allCities = ref([
+ // A-G
+ { name: '安庆', pinyin: 'anqing' },
+ { name: '蚌埠', pinyin: 'bengbu' },
+ { name: '包头', pinyin: 'baotou' },
+ { name: '北京', pinyin: 'beijing', code: '110000' },
+ { name: '常州', pinyin: 'changzhou' },
+ { name: '成都', pinyin: 'chengdu', code: '510100' },
+ { name: '重庆', pinyin: 'chongqing', code: '500000' },
+ { name: '大连', pinyin: 'dalian' },
+ { name: '东莞', pinyin: 'dongguan' },
+ // F
+ { name: '佛山', pinyin: 'foshan' },
+ { name: '福州', pinyin: 'fuzhou' },
+ // G
+ { name: '广州', pinyin: 'guangzhou', code: '440100' },
+ { name: '贵阳', pinyin: 'guiyang' },
+ // H
+ { name: '杭州', pinyin: 'hangzhou', code: '330100' },
+ { name: '哈尔滨', pinyin: 'haerbin' },
+ { name: '合肥', pinyin: 'hefei' },
+ { name: '湖州', pinyin: 'huzhou' },
+ // J
+ { name: '嘉兴', pinyin: 'jiaxing' },
+ { name: '金华', pinyin: 'jinhua' },
+ { name: '济南', pinyin: 'jinan' },
+ // K
+ { name: '昆明', pinyin: 'kunming' },
+ // L
+ { name: '兰州', pinyin: 'lanzhou' },
+ // N
+ { name: '南昌', pinyin: 'nanchang' },
+ { name: '南京', pinyin: 'nanjing' },
+ { name: '南宁', pinyin: 'nanning' },
+ { name: '宁波', pinyin: 'ningbo' },
+ // Q
+ { name: '青岛', pinyin: 'qingdao' },
+ // S
+ { name: '上海', pinyin: 'shanghai', code: '310000' },
+ { name: '深圳', pinyin: 'shenzhen', code: '440300' },
+ { name: '沈阳', pinyin: 'shenyang' },
+ { name: '石家庄', pinyin: 'shijiazhuang' },
+ { name: '苏州', pinyin: 'suzhou' },
+ // T
+ { name: '唐山', pinyin: 'tangshan' },
+ { name: '天津', pinyin: 'tianjin' },
+ // W
+ { name: '潍坊', pinyin: 'weifang' },
+ { name: '温州', pinyin: 'wenzhou' },
+ { name: '武汉', pinyin: 'wuhan', code: '420100' },
+ { name: '无锡', pinyin: 'wuxi' },
+ // X
+ { name: '厦门', pinyin: 'xiamen' },
+ { name: '西安', pinyin: 'xian' },
+ // Y
+ { name: '烟台', pinyin: 'yantai' },
+ { name: '扬州', pinyin: 'yangzhou' },
+ { name: '宜昌', pinyin: 'yichang' },
+ // Z
+ { name: '郑州', pinyin: 'zhengzhou' },
+ { name: '珠海', pinyin: 'zhuhai' }
+])
+
+// 搜索结果
+export const searchResults = computed(() => {
+ if (!searchKeyword.value) return []
+ const keyword = searchKeyword.value.toLowerCase()
+ return openCities.value.filter((city:any) => {
+ return city.city?.includes(keyword)
+ })
+})
+
+// 索引字母列表
+export const indexLetters = computed(() => {
+ return Object.keys(cityGroups.value).sort()
+})
+
+// 城市按首字母分组
+export const cityGroups = computed(() => {
+ const groups: Record = {}
+ allCities.value.forEach((city:any) => {
+ const letter = getPinyinFirstLetter(city?.pinyin || city?.name)
+ if (!groups[letter]) {
+ groups[letter] = []
+ }
+ groups[letter].push(city)
+ })
+ return groups
+})
+
+// 获取拼音首字母(简化版,实际应使用拼音库)
+const getPinyinFirstLetter = (str: string) => {
+ const firstChar = str.charAt(0).toUpperCase()
+ return firstChar
+}
+
+export default {
+ searchKeyword,
+ currentCity,
+ scrollToId,
+ hotCities,
+ allCities,
+ searchResults,
+ indexLetters,
+ cityGroups,
+ openCities
+}
diff --git a/src/INDEX/address_city/style.scss b/src/INDEX/address_city/style.scss
new file mode 100644
index 0000000..08ee0cf
--- /dev/null
+++ b/src/INDEX/address_city/style.scss
@@ -0,0 +1,202 @@
+.city-selector {
+ width: 100%;
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ background-color: #f5f5f5;
+
+ // 搜索栏
+ .search-bar {
+ background-color: #fff;
+ padding: 20rpx 30rpx;
+ position: sticky;
+ top: 0;
+ z-index: 100;
+ box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
+
+ .search-input-wrapper {
+ display: flex;
+ align-items: center;
+ .search-icon {
+ width: 32rpx;
+ height: 32rpx;
+ margin-right: 16rpx;
+ }
+
+ .search-input {
+ flex: 1;
+ font-size: 28rpx;
+ color: #333;
+ height: 100%;
+ }
+
+ .search-placeholder {
+ color: #999;
+ }
+
+ .clear-icon {
+ width: 32rpx;
+ height: 32rpx;
+ margin-left: 16rpx;
+ }
+ }
+ }
+
+ // 搜索结果
+ .search-results {
+ flex: 1;
+ overflow: hidden;
+ background-color: #fff;
+
+ .results-scroll {
+ height: 100%;
+ }
+ }
+
+ // 空状态
+ .empty-result {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 60rpx 0;
+
+ .empty-icon {
+ width: 200rpx;
+ height: 200rpx;
+ margin-bottom: 30rpx;
+ opacity: 0.5;
+ }
+
+ .empty-text {
+ font-size: 28rpx;
+ color: #999;
+ }
+ }
+
+ // 城市列表容器
+ .city-list-container {
+ flex: 1;
+ display: flex;
+ position: relative;
+ overflow: hidden;
+
+ .city-scroll {
+ flex: 1;
+ height: 100%;
+ }
+
+ // 右侧字母索引
+ .index-bar {
+ position: absolute;
+ right: 10rpx;
+ top: 50%;
+ transform: translateY(-50%);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ background-color: rgba(255, 255, 255, 0.9);
+ border-radius: 40rpx;
+ padding: 20rpx 10rpx;
+ box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
+
+ .index-item {
+ font-size: 22rpx;
+ color: #666;
+ padding: 6rpx 10rpx;
+ font-weight: 500;
+ }
+ }
+ }
+
+ // 城市分组
+ .city-section {
+ background-color: #fff;
+ margin-bottom: 20rpx;
+
+ .section-title {
+ padding: 20rpx 30rpx;
+ font-size: 26rpx;
+ color: #999;
+ background-color: #f5f5f5;
+ font-weight: 500;
+ }
+ }
+
+ // 当前定位城市
+ .current-city {
+ display: flex;
+ align-items: center;
+ padding: 30rpx;
+
+ .location-icon {
+ width: 32rpx;
+ height: 32rpx;
+ margin-right: 16rpx;
+ }
+
+ .city-name {
+ color: #0082FA;
+ padding-left:5rpx;
+ }
+ }
+
+ // 热门城市网格
+ .hot-cities-grid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 20rpx;
+ padding: 20rpx 30rpx 30rpx;
+
+ .hot-city-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 72rpx;
+ background-color: #f5f5f5;
+ border-radius: 12rpx;
+ font-size: 28rpx;
+ color: #333;
+ text-align: center;
+ padding: 0 10rpx;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ &:active {
+ background-color: #e8e8e8;
+ }
+ }
+ }
+
+ // 城市列表项
+ .city-item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 30rpx;
+ border-bottom: 1rpx solid #f0f0f0;
+ transition: background-color 0.2s;
+
+ &:last-child {
+ border-bottom: none;
+ }
+
+ &:active {
+ background-color: #f8f8f8;
+ }
+
+ .city-name {
+ font-size: 30rpx;
+ color: #333;
+ flex: 1;
+ }
+
+ .city-pinyin {
+ font-size: 24rpx;
+ color: #999;
+ margin-left: 20rpx;
+ }
+ }
+}
diff --git a/src/ME/decoration/add/index.vue b/src/ME/decoration/add/index.vue
new file mode 100644
index 0000000..b8ca422
--- /dev/null
+++ b/src/ME/decoration/add/index.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/add/method.ts b/src/ME/decoration/add/method.ts
new file mode 100644
index 0000000..09ca6c8
--- /dev/null
+++ b/src/ME/decoration/add/method.ts
@@ -0,0 +1,71 @@
+import { Apis } from '@/gen/Apis'
+import { getApiLoading } from '@/common/libraries/apiLoading'
+import userLoginStatus from '@/common/libraries/userUserLogin'
+import { showToastBack, showToast } from '@/common/libraries/naviHelper'
+import { useWeAppAuthStore, useWorkStore } from '@/common'
+import useModel from './model'
+const work = useWorkStore()
+const auth = useWeAppAuthStore()
+const getList = () => {
+ getApiLoading(Apis.Activity.ActivityEnrolls.List, useModel?.formData?.value).then(res => {
+ useModel.listData.value = [...useModel.listData.value, ...res.data]
+ useModel.metaData.value = res.meta
+ console.log(res)
+ })
+}
+
+export default {
+ getList,
+ init() {
+ if (work?.selectWorkHouse?.asset_house) {
+ useModel.formData.value = {
+ ...useModel.formData.value,
+ asset_houses_id: work?.selectWorkHouse?.asset_house?.id,
+ full_name: work?.selectWorkHouse?.asset_house?.full_name
+ }
+ } else {
+ useModel.formData.value = {
+ ...useModel.formData.value,
+ asset_houses_id: auth?.data?.selected_house?.id,
+ full_name: auth?.data?.selected_house?.full_name
+ }
+ }
+ },
+ loadMore(page: number) {
+ useModel.formData.value.page = page
+ this.getList()
+ },
+ handleTabsChange(idx: number, res: any) {
+ useModel.currentTabs.value = idx
+ useModel.formData.value = {
+ page: 1,
+ status: res?.value
+ }
+ useModel.listData.value = []
+ getList()
+ console.log(idx, 'e')
+ },
+ handleToSelectHouse() {
+ uni.navigateTo({
+ url: '/INDEX/asset_houses/index?type=work_add'
+ })
+ },
+ handleSubmit() {
+ let data = useModel?.formData?.value
+ if (!data?.asset_houses_id) {
+ return showToast('请选择房屋!')
+ }
+ if (!data?.type) {
+ return showToast('请选择装修类型!')
+ }
+ if (!data?.process_type) {
+ return showToast('请选择办理类型!')
+ }
+ getApiLoading(Apis.Renovation.RenovationApplies.Store, useModel?.formData?.value).then(res => {
+ uni.redirectTo({
+ url: `/ME/decoration/update/index?id=${res.data.id}`
+ })
+ console.log(res)
+ })
+ }
+}
diff --git a/src/ME/decoration/add/model.ts b/src/ME/decoration/add/model.ts
new file mode 100644
index 0000000..12c044f
--- /dev/null
+++ b/src/ME/decoration/add/model.ts
@@ -0,0 +1,7 @@
+import { reactive, ref } from 'vue'
+export default {
+ listData: ref([]),
+ formData: ref({}),
+ metaData: ref({}),
+ currentTabs: ref(0)
+}
diff --git a/src/ME/decoration/add/style.scss b/src/ME/decoration/add/style.scss
new file mode 100644
index 0000000..0493562
--- /dev/null
+++ b/src/ME/decoration/add/style.scss
@@ -0,0 +1,3 @@
+page {
+ background-color: #f8f8f8;
+}
diff --git a/src/ME/decoration/add_worker/index.vue b/src/ME/decoration/add_worker/index.vue
new file mode 100644
index 0000000..50b0738
--- /dev/null
+++ b/src/ME/decoration/add_worker/index.vue
@@ -0,0 +1,84 @@
+
+
+
+ 申请人信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/add_worker/method.ts b/src/ME/decoration/add_worker/method.ts
new file mode 100644
index 0000000..c31ee4f
--- /dev/null
+++ b/src/ME/decoration/add_worker/method.ts
@@ -0,0 +1,57 @@
+import { Apis } from '@/gen/Apis'
+import { getApiLoading } from '@/common/libraries/apiLoading'
+import userLoginStatus from '@/common/libraries/userUserLogin'
+import { showToastBack, showToast } from '@/common/libraries/naviHelper'
+import { useWeAppAuthStore, useWorkStore } from '@/common'
+import useModel from './model'
+const work = useWorkStore()
+const auth = useWeAppAuthStore()
+
+export default {
+ init() {
+ useModel.formData.value = {
+ ...useModel.formData.value,
+ // worker_phone: auth?.data?.user?.phone || useModel.formData.value?.worker_phone || '',
+ worker_name: auth?.data?.user?.name || useModel.formData.value?.worker_name || ''
+ }
+ },
+ handleSubmit() {
+ let data = useModel?.formData?.value
+ if (!userLoginStatus?.onBindPhone()) {
+ return false
+ }
+ if (!data?.worker_name) {
+ return showToast('请设置工人姓名!')
+ }
+ if (!data?.worker_phone) {
+ return showToast('请设置工人手机号!')
+ }
+ if (!data?.card_type) {
+ return showToast('请选择工人证件类型!')
+ }
+ if (!data?.id_card) {
+ return showToast('请设置工人证件号!')
+ }
+ if (!data?.card_front?.length || !data?.card_back?.length) {
+ return showToast('请上传工人证件照片!')
+ }
+ if (!data?.worker_photo?.length) {
+ return showToast('请上传工人照片!')
+ }
+ if (!data?.valid_from || !data?.valid_to) {
+ return showToast('请设置通行有效期!')
+ }
+ getApiLoading(Apis.Renovation.RenovationWorkers.Store, useModel?.formData?.value).then(res => {
+ if (useModel?.formData?.value?.type === 'share') {
+ showToast('提交成功!', () => {
+ uni.switchTab({
+ url: '/pages/index/index'
+ })
+ })
+ } else {
+ showToastBack('提交成功!', 1, true)
+ }
+ console.log(res)
+ })
+ }
+}
diff --git a/src/ME/decoration/add_worker/model.ts b/src/ME/decoration/add_worker/model.ts
new file mode 100644
index 0000000..12c044f
--- /dev/null
+++ b/src/ME/decoration/add_worker/model.ts
@@ -0,0 +1,7 @@
+import { reactive, ref } from 'vue'
+export default {
+ listData: ref([]),
+ formData: ref({}),
+ metaData: ref({}),
+ currentTabs: ref(0)
+}
diff --git a/src/ME/decoration/add_worker/style.scss b/src/ME/decoration/add_worker/style.scss
new file mode 100644
index 0000000..5e40394
--- /dev/null
+++ b/src/ME/decoration/add_worker/style.scss
@@ -0,0 +1,7 @@
+page {
+ background-color: #f8f8f8;
+}
+.add_worker_container {
+ padding-bottom: calc(130rpx + constant(safe-area-inset-bottom));
+ padding-bottom: calc(130rpx + env(safe-area-inset-bottom));
+}
diff --git a/src/ME/decoration/components/PopupAcceptance.vue b/src/ME/decoration/components/PopupAcceptance.vue
new file mode 100644
index 0000000..eee4e38
--- /dev/null
+++ b/src/ME/decoration/components/PopupAcceptance.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/components/PopupDelayedEntryExit.vue b/src/ME/decoration/components/PopupDelayedEntryExit.vue
new file mode 100644
index 0000000..9982966
--- /dev/null
+++ b/src/ME/decoration/components/PopupDelayedEntryExit.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/components/PopupExtension.vue b/src/ME/decoration/components/PopupExtension.vue
new file mode 100644
index 0000000..1c5642b
--- /dev/null
+++ b/src/ME/decoration/components/PopupExtension.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/components/PopupFilingList.vue b/src/ME/decoration/components/PopupFilingList.vue
new file mode 100644
index 0000000..6cf5240
--- /dev/null
+++ b/src/ME/decoration/components/PopupFilingList.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/components/PopupSelectWorker.vue b/src/ME/decoration/components/PopupSelectWorker.vue
new file mode 100644
index 0000000..1c21f3c
--- /dev/null
+++ b/src/ME/decoration/components/PopupSelectWorker.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/decoration_share/index.vue b/src/ME/decoration/decoration_share/index.vue
new file mode 100644
index 0000000..6762788
--- /dev/null
+++ b/src/ME/decoration/decoration_share/index.vue
@@ -0,0 +1,168 @@
+
+
+
+
+ 施工方负责人信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 施工公司信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 施工内容
+
+
+
+
+
+
+
+ 装修内容说明
+
+
+
+
+
+
+ 其他资料
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/decoration_share/method.ts b/src/ME/decoration/decoration_share/method.ts
new file mode 100644
index 0000000..292da14
--- /dev/null
+++ b/src/ME/decoration/decoration_share/method.ts
@@ -0,0 +1,117 @@
+import { Apis } from '@/gen/Apis'
+import { getApiLoading } from '@/common/libraries/apiLoading'
+import userLoginStatus from '@/common/libraries/userUserLogin'
+import { showToastBack, showToast } from '@/common/libraries/naviHelper'
+import { useWeAppAuthStore, useWorkStore } from '@/common'
+import useModel from './model'
+const work = useWorkStore()
+const auth = useWeAppAuthStore()
+const handleSave = (type?: number) => {
+ // 暂存
+ getApiLoading(Apis.Renovation.RenovationApplies.Update, {
+ ...useModel?.formData?.value,
+ is_deposit: useModel?.formData?.value?.is_deposit ? 1 : 0,
+ status: 'Draft'
+ }).then(res => {
+ if (type) {
+ showToast('提交成功!', () => {
+ uni.switchTab({
+ url: '/pages/index/index'
+ })
+ })
+ } else {
+ showToast('暂存成功!')
+ }
+ console.log(res)
+ })
+}
+
+export default {
+ init() {
+ if (work?.selectWorkHouse?.asset_house) {
+ useModel.formData.value = {
+ ...useModel.formData.value,
+ asset_houses_id: work?.selectWorkHouse?.asset_house?.id,
+ full_name: work?.selectWorkHouse?.asset_house?.full_name
+ }
+ } else {
+ useModel.formData.value = {
+ ...useModel.formData.value,
+ asset_houses_id: auth?.data?.selected_house?.id,
+ full_name: auth?.data?.selected_house?.full_name
+ }
+ }
+ },
+ getShow(res: { id: number }) {
+ getApiLoading(Apis.Renovation.RenovationApplies.Show, { id: res?.id }).then(res => {
+ useModel.showData.value = res?.data
+ useModel.formData.value = {
+ ...res?.data,
+ is_deposit: res?.data?.is_deposit ? true : false
+ }
+ if (res?.data?.status !== 'Draft') {
+ showToast('当前装修申请已完成!', () => {
+ uni.switchTab({
+ url: '/pages/index/index'
+ })
+ })
+ }
+ console.log(res)
+ })
+ },
+ handleToSelectHouse() {
+ uni.navigateTo({
+ url: '/INDEX/asset_houses/index?type=work_add'
+ })
+ },
+ handleNextSubmit() {
+ let data = useModel?.formData?.value
+ if (!data?.construction_principal_name) {
+ return showToast('请输入施工负责人名称!')
+ }
+ if (!data?.construction_principal_phone) {
+ return showToast('请输入施工负责人手机号!')
+ }
+ if (!data?.construction_principal_card_type) {
+ return showToast('请选择施工负责人证件类型!')
+ }
+ if (!data?.construction_principal_id_card) {
+ return showToast('请输入施工负责人证件号!')
+ }
+ if (
+ !data?.construction_principal_id_card_front?.length ||
+ !data?.construction_principal_id_card_back?.length
+ ) {
+ return showToast('请上传施工负责人证件!')
+ }
+ if (useModel?.formData?.value?.type === 'RenovationCompany') {
+ // if (!data?.company_principal_name || !data?.company_principal_phone) {
+ // return showToast('请输入装修公司负责人名称/手机号!')
+ // }
+ if (!data?.company_name) {
+ return showToast('请设置装修公司全称!')
+ }
+ if (!data?.company_business_license_num) {
+ return showToast('请输入社会统一信用代码!')
+ }
+ if (!data?.company_business_license?.length) {
+ return showToast('请上传装修公司营业执照!')
+ }
+ if (!data?.company_asset_certificate?.length) {
+ return showToast('请上传装修公司资质证明!')
+ }
+ if (!data?.company_power_attorney?.length) {
+ return showToast('请上传装修授权书!')
+ }
+ }
+
+ if (!data?.construction_start_date || !data?.construction_end_date) {
+ return showToast('请选择施工时间!')
+ }
+ if (!data?.renovation_content) {
+ return showToast('请选择装修内容!')
+ }
+ handleSave(1)
+ },
+ handleSave
+}
diff --git a/src/ME/decoration/decoration_share/model.ts b/src/ME/decoration/decoration_share/model.ts
new file mode 100644
index 0000000..a797d15
--- /dev/null
+++ b/src/ME/decoration/decoration_share/model.ts
@@ -0,0 +1,8 @@
+import { reactive, ref } from 'vue'
+export default {
+ listData: ref([]),
+ formData: ref({}),
+ metaData: ref({}),
+ current: ref(0),
+ showData: ref({})
+}
diff --git a/src/ME/decoration/decoration_share/style.scss b/src/ME/decoration/decoration_share/style.scss
new file mode 100644
index 0000000..1878572
--- /dev/null
+++ b/src/ME/decoration/decoration_share/style.scss
@@ -0,0 +1,77 @@
+page {
+ background-color: #f8f8f8;
+}
+.share_card {
+ background: linear-gradient(180deg, #fff8f1 0%, #fff3e5 100%);
+ padding: 20rpx 30rpx;
+ color: #3d3d3d;
+ font-size: 26rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .share_btn {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ background-color: #ff8f26;
+ color: #fff;
+ padding: 6rpx 25rpx;
+ border-radius: 100rpx;
+ }
+}
+
+.update_header {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ background-color: #fff;
+ border-top: 1rpx solid #eee;
+ z-index: 100;
+}
+
+.update_form_content {
+ padding-bottom: calc(130rpx + constant(safe-area-inset-bottom));
+ padding-bottom: calc(130rpx + env(safe-area-inset-bottom));
+}
+
+.refund_info {
+ border-top: 1rpx solid #eee;
+ background-color: #fff;
+ padding: 30rpx 0;
+ .label {
+ font-size: 28rpx;
+ }
+ text {
+ color: #f00;
+ }
+ .refund_reason {
+ padding: 20rpx 0 0 0;
+ }
+}
+
+.footer_page {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .previous_btn {
+ padding-right: 30rpx;
+ .label {
+ font-size: 20rpx;
+ color: #3d3d3d;
+ }
+ }
+ .group_btn_content {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex: 1;
+
+ .next_btn {
+ flex: 1;
+ &:first-child {
+ padding-right: 30rpx;
+ }
+ }
+ }
+}
diff --git a/src/ME/decoration/list/index.vue b/src/ME/decoration/list/index.vue
new file mode 100644
index 0000000..fcdadcb
--- /dev/null
+++ b/src/ME/decoration/list/index.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+ {{ i?.asset_house?.full_name }}
+
+
+ 装修类型
+
+ {{
+ RenovationAppliesTypeEnum[i?.type as keyof typeof RenovationAppliesTypeEnum]?.text
+ }}
+
+
+
+ 创建时间
+
+ {{ i?.created_at }}
+
+
+
+ 施工时间
+
+ {{ i?.construction_start_date || '-' }}至{{ i?.construction_end_date || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/list/method.ts b/src/ME/decoration/list/method.ts
new file mode 100644
index 0000000..c166cae
--- /dev/null
+++ b/src/ME/decoration/list/method.ts
@@ -0,0 +1,93 @@
+import { Apis } from '@/gen/Apis'
+import useModel from './model'
+import { useWeAppAuthStore } from '@/common'
+import { getApiLoading } from '@/common/libraries/apiLoading'
+import userLoginStatus from '@/common/libraries/userUserLogin'
+import { showToastBack, showToast } from '@/common/libraries/naviHelper'
+const auth = useWeAppAuthStore()
+
+const getList = () => {
+ getApiLoading(Apis.Renovation.RenovationApplies.List, useModel?.formData?.value).then(res => {
+ useModel.listData.value = [...useModel.listData.value, ...res.data]
+ useModel.metaData.value = res.meta
+ useModel.loadMore.value = true
+ console.log(res)
+ })
+}
+
+const handleLoadList = () => {
+ useModel.formData.value.page = 1
+ useModel.listData.value = []
+ getList()
+}
+
+export default {
+ getList,
+ loadMore(page: number) {
+ useModel.formData.value.page = page
+ this.getList()
+ },
+ headleToGoShow(e: { id: string; status: string }) {
+ if (e?.status === 'Approved') {
+ uni.navigateTo({
+ url: `/ME/decoration/show/index?id=${e?.id}`
+ })
+ }
+ },
+ toPageAdd() {
+ uni.navigateTo({
+ url: '/ME/decoration/add/index'
+ })
+ },
+ handleToPage(url: string) {
+ uni.navigateTo({
+ url: url
+ })
+ },
+ handleAcceptanceSubmit(data?: any) {
+ getApiLoading(Apis.Renovation.RenovationApplies.ApplyAccept, data).then(res => {
+ showToast('提交成功!', () => {
+ useModel.showPopupAcceptance.value = false
+ handleLoadList()
+ })
+ console.log(res)
+ })
+ },
+ handleExtensionSubmit(data?: any) {
+ getApiLoading(Apis.Renovation.RenovationApplies.ApplyExtension, data).then(res => {
+ showToast('提交成功!', () => {
+ useModel.showPopupExtension.value = false
+ handleLoadList()
+ })
+ console.log(res)
+ })
+ },
+ handleAcceptance(res: any) {
+ useModel.popupFormData.value = { id: res?.id }
+ useModel.showPopupAcceptance.value = true
+ },
+ handleExtension(res: any) {
+ useModel.popupFormData.value = res
+ useModel.showPopupExtension.value = true
+ console.log(res)
+ },
+ handleDelete(data: { id: string }) {
+ uni.showModal({
+ title: '提示',
+ content: '确定要删除?不可恢复!',
+ success: function (res) {
+ if (res.confirm) {
+ getApiLoading(Apis.Renovation.RenovationApplies.SoftDelete, data).then(res => {
+ showToast('删除成功!', () => {
+ handleLoadList()
+ })
+ console.log(res)
+ })
+ console.log('用户点击确定')
+ } else if (res.cancel) {
+ console.log('用户点击取消')
+ }
+ }
+ })
+ }
+}
diff --git a/src/ME/decoration/list/model.ts b/src/ME/decoration/list/model.ts
new file mode 100644
index 0000000..c462328
--- /dev/null
+++ b/src/ME/decoration/list/model.ts
@@ -0,0 +1,13 @@
+import { reactive, ref } from 'vue'
+export default {
+ listData: ref([]),
+ formData: ref({ page: 1 }),
+ metaData: ref({}),
+ currentTabs: ref(0),
+ popupFormData: ref({}),
+ showPopup: ref(false),
+ showPopupExtension: ref(false),
+ showPopupAcceptance: ref(false),
+ showFiling: ref(false),
+ loadMore: ref(false)
+}
diff --git a/src/ME/decoration/list/style.scss b/src/ME/decoration/list/style.scss
new file mode 100644
index 0000000..c1ff67e
--- /dev/null
+++ b/src/ME/decoration/list/style.scss
@@ -0,0 +1,112 @@
+page {
+ background-color: #f8f8f8;
+}
+.decoration_list_page {
+ padding-bottom: calc(130rpx + constant(safe-area-inset-bottom));
+ padding-bottom: calc(130rpx + env(safe-area-inset-bottom));
+}
+.items {
+ background-color: #fff;
+ margin: 30rpx 30rpx 0 30rpx;
+ padding: 0 30rpx;
+ border-radius: 20rpx;
+
+ .header_items {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 30rpx 0;
+ .status_group {
+ display: flex;
+ align-items: center;
+ }
+ .items_status {
+ padding: 7rpx 17rpx;
+ border-radius: 100rpx;
+ font-size: 24rpx;
+ background-color: #f3f3f4;
+ color: #909399;
+ }
+ .delete_btn {
+ color: #666666;
+ font-size: 28rpx;
+ display: flex;
+ align-items: center;
+ }
+ .status_Draft {
+ background-color: #edf4ff;
+ border: 1rpx solid #edf4ff;
+ color: #0082fa;
+ }
+ .status_Pending {
+ background-color: #fff7ed;
+ border: 1rpx solid #fff7ed;
+ color: #f97316;
+ }
+ .status_Approved {
+ background-color: #f0fdf4;
+ border: 1rpx solid #f0fdf4;
+ color: #22c55e;
+ }
+ .status_default {
+ border-radius: 100rpx;
+ border: 1rpx solid #c3c3c3;
+ color: #666666;
+ margin-left: 20rpx;
+ background-color: #fff;
+ }
+ }
+ .name {
+ color: #3d3d3d;
+ font-size: 32rpx;
+ font-weight: 500;
+ padding: 0 0 10rpx 0;
+ }
+ .decoration_info {
+ padding: 10rpx 0 30rpx 0;
+ &_cell {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ color: #666;
+ font-size: 28rpx;
+ padding-bottom: 20rpx;
+ .value {
+ color: #000;
+ }
+ &:last-child {
+ padding-bottom: 0;
+ }
+ }
+ }
+ .footer_items {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ border-top: 1rpx solid #eee;
+ padding: 30rpx 0;
+ .nth_btn {
+ padding-left: 30rpx;
+ }
+ }
+}
+
+.footer_page {
+ display: flex;
+ align-items: center;
+ .filing_btn {
+ .icon {
+ display: flex;
+ justify-content: center;
+ width: 100%;
+ }
+ }
+ .label {
+ color: #3d3d3d;
+ font-size: 20rpx;
+ }
+ .footer_group_btn {
+ padding-left: 30rpx;
+ flex: 1;
+ }
+}
diff --git a/src/ME/decoration/show/index.vue b/src/ME/decoration/show/index.vue
new file mode 100644
index 0000000..12a8edf
--- /dev/null
+++ b/src/ME/decoration/show/index.vue
@@ -0,0 +1,237 @@
+
+
+
+
+
+ 工人管理
+
+ 新增工人
+
+
+
+
+
+ 有效期:{{ i?.valid_from }}至{{ i?.valid_to }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/show/method.ts b/src/ME/decoration/show/method.ts
new file mode 100644
index 0000000..6202dae
--- /dev/null
+++ b/src/ME/decoration/show/method.ts
@@ -0,0 +1,104 @@
+import { Apis } from '@/gen/Apis'
+import { getApiLoading } from '@/common/libraries/apiLoading'
+import userLoginStatus from '@/common/libraries/userUserLogin'
+import { showToastBack, showToast } from '@/common/libraries/naviHelper'
+import { useWeAppAuthStore, useWorkStore } from '@/common'
+import useModel from './model'
+const work = useWorkStore()
+const auth = useWeAppAuthStore()
+const getList = () => {
+ getApiLoading(Apis.Renovation.RenovationWorkers.List, useModel?.formListData?.value).then(res => {
+ useModel.listData.value = [...useModel.listData.value, ...res.data]
+ useModel.metaData.value = res.meta
+ console.log(res)
+ })
+}
+
+const getShow = (res: { id: number }) => {
+ getApiLoading(Apis.Renovation.RenovationApplies.Show, { id: res?.id }).then(res => {
+ useModel.showData.value = res?.data
+ useModel.formListData.value.renovation_applies_id = res?.data?.id
+ handleLoadList()
+ console.log(res)
+ })
+}
+
+const handleLoadList = () => {
+ useModel.formListData.value.page = 1
+ useModel.listData.value = []
+ getList()
+}
+
+export default {
+ loadMore(page: number) {
+ useModel.formListData.value.page = page
+ getList()
+ },
+ getShow,
+ handleToPage(i: { url?: string }) {
+ uni.navigateTo({
+ url: `${i?.url || ''}?id=${useModel?.showData?.value?.id}`
+ })
+ },
+ handleAcceptanceSubmit(data?: any) {
+ //申请验收
+ getApiLoading(Apis.Renovation.RenovationApplies.ApplyAccept, data).then(res => {
+ useModel.showPopupAcceptance.value = false
+ getShow(useModel?.showData?.value)
+ console.log(res)
+ })
+ },
+ handleExtensionSubmit(data?: any) {
+ //延期
+ getApiLoading(Apis.Renovation.RenovationApplies.ApplyExtension, data).then(res => {
+ useModel.showPopupExtension.value = false
+ getShow(useModel?.showData?.value)
+ console.log(res)
+ })
+ },
+ handleAcceptance(res: any) {
+ useModel.showPopupAcceptance.value = true
+ },
+ handleExtension(res: any) {
+ useModel.showPopupExtension.value = true
+ console.log(res)
+ },
+ handleStopVisitor(data: { id: string }, type: number) {
+ uni.showModal({
+ title: '提示',
+ content: type ? '确定启用通行证?' : '确定要停用通行证?',
+ success: function (res) {
+ if (res.confirm) {
+ if (type) {
+ getApiLoading(Apis.Renovation.RenovationWorkers.EnableVisitor, data).then(res => {
+ handleLoadList()
+ console.log(res)
+ })
+ } else {
+ getApiLoading(Apis.Renovation.RenovationWorkers.StopVisitor, data).then(res => {
+ handleLoadList()
+ console.log(res)
+ })
+ }
+
+ console.log('用户点击确定')
+ } else if (res.cancel) {
+ console.log('用户点击取消')
+ }
+ }
+ })
+ },
+ handleOpenDelayedEntryExit(i: any) {
+ useModel.showPopupDelayedEntryExit.value = true
+ useModel.dataPopupDelayedEntryExit.value = i
+ },
+ handleDelayedEntryExitSubmit(data: any) {
+ getApiLoading(Apis.Renovation.RenovationWorkers.UpdateVisitorTime, data).then(res => {
+ showToast('提交成功!', () => {
+ useModel.showPopupDelayedEntryExit.value = false
+ handleLoadList()
+ })
+ console.log(res)
+ })
+ }
+}
diff --git a/src/ME/decoration/show/model.ts b/src/ME/decoration/show/model.ts
new file mode 100644
index 0000000..5183761
--- /dev/null
+++ b/src/ME/decoration/show/model.ts
@@ -0,0 +1,14 @@
+import { reactive, ref } from 'vue'
+export default {
+ listData: ref([]),
+ formData: ref({}),
+ metaData: ref({}),
+ current: ref(1),
+ showData: ref({}),
+ formListData: ref({ page: 1, renovation_applies_id: '' }),
+ showPopupExtension: ref(false),
+ showPopupAcceptance: ref(false),
+ showPopupAddWorker: ref(false),
+ showPopupDelayedEntryExit: ref(false),
+ dataPopupDelayedEntryExit: ref({})
+}
diff --git a/src/ME/decoration/show/style.scss b/src/ME/decoration/show/style.scss
new file mode 100644
index 0000000..7b73bd2
--- /dev/null
+++ b/src/ME/decoration/show/style.scss
@@ -0,0 +1,149 @@
+page {
+ background-color: #f8f8f8;
+}
+.show_page {
+ padding-bottom: calc(130rpx + constant(safe-area-inset-bottom));
+ padding-bottom: calc(130rpx + env(safe-area-inset-bottom));
+}
+
+.show_header_card {
+ padding: 0 30rpx;
+ background-color: #fff;
+
+ .show_header_status {
+ display: flex;
+ align-items: center;
+ border-bottom: 1rpx solid #eee;
+ padding: 30rpx 0;
+ justify-content: space-between;
+ color: #3d3d3d;
+ font-size: 32rpx;
+ font-weight: 500;
+ }
+ .show_header_cell_info {
+ padding-top: 30rpx;
+ }
+}
+
+.items_status {
+ padding: 7rpx 17rpx;
+ border-radius: 100rpx;
+ font-size: 24rpx;
+ background-color: #f3f3f4;
+ color: #909399;
+}
+.delete_btn {
+ color: #666666;
+ font-size: 28rpx;
+}
+.status_Draft {
+ background-color: #edf4ff;
+ color: #0082fa;
+}
+.status_Pending {
+ background-color: #fff7ed;
+ color: #f97316;
+}
+.status_Approved {
+ background-color: #f0fdf4;
+ color: #22c55e;
+}
+
+.worker_contents {
+ background-color: #fff;
+ margin-top: 30rpx;
+ padding: 30rpx 0 0 0;
+}
+.worker_contents_title {
+ border-left: 6rpx solid #2a7efb;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin: 0 30rpx;
+ .title {
+ padding-left: 10rpx;
+ }
+ .add_worker_btn {
+ font-size: 28rpx;
+ color: #2a7efb;
+ display: flex;
+ align-items: center;
+ }
+}
+.worker_items {
+ margin: 30rpx 30rpx 0 30rpx;
+ border: 1rpx solid #e5e5e5;
+ border-radius: 20rpx;
+ padding: 0 30rpx;
+
+ .worker_header {
+ display: flex;
+ align-items: center;
+ padding: 30rpx 0;
+ .avatar {
+ width: 100rpx;
+ height: 100rpx;
+ background-color: #f8f8f8;
+ border-radius: 100rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ border-radius: 100rpx;
+ }
+ }
+ .worker_info {
+ flex: 1;
+ padding: 0 20rpx;
+ color: #3d3d3d;
+ font-size: 28rpx;
+ .phone {
+ padding-top: 5rpx;
+ }
+ }
+ .status {
+ font-size: 24rpx;
+ font-weight: 500;
+ padding: 7rpx 17rpx;
+ border-radius: 100rpx;
+ background-color: #f3f3f4;
+ color: #909399;
+ }
+ .status_Approved {
+ background-color: #f0fdf4;
+ color: #22c55e;
+ }
+ .status_Pending {
+ background-color: #fff7ed;
+ color: #f97316;
+ }
+ }
+ .worker_date {
+ font-size: 28rpx;
+ color: #666666;
+ }
+ .worker_footer {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 25rpx 0;
+ text-align: center;
+ font-size: 27rpx;
+ border-top: 1rpx solid #eee;
+ margin-top: 30rpx;
+ .btn {
+ flex: 1;
+ color: #2a7efb;
+ &:first-child {
+ height: 30rpx;
+ line-height: 30rpx;
+ border-right: 1rpx solid #eee;
+ }
+ &:last-child {
+ border-right: none;
+ }
+ }
+ .btn_stop {
+ color: #cf1322;
+ }
+ }
+}
diff --git a/src/ME/decoration/update/index.vue b/src/ME/decoration/update/index.vue
new file mode 100644
index 0000000..ba2f80e
--- /dev/null
+++ b/src/ME/decoration/update/index.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+ 产权人信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 代理人信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 为保证信息正确,您可分享至施工方填写
+
+
+
+
+
+
+ 施工方负责人信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 施工公司信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 施工内容
+
+
+
+
+
+
+
+ 装修内容说明
+
+
+
+
+
+
+ 其他资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ME/decoration/update/method.ts b/src/ME/decoration/update/method.ts
new file mode 100644
index 0000000..8ca1d73
--- /dev/null
+++ b/src/ME/decoration/update/method.ts
@@ -0,0 +1,158 @@
+import { Apis } from '@/gen/Apis'
+import { getApiLoading } from '@/common/libraries/apiLoading'
+import userLoginStatus from '@/common/libraries/userUserLogin'
+import { showToastBack, showToast } from '@/common/libraries/naviHelper'
+import { useWeAppAuthStore, useWorkStore } from '@/common'
+import useModel from './model'
+const work = useWorkStore()
+const auth = useWeAppAuthStore()
+const handleSave = (type?: number) => {
+ console.log(useModel?.current?.value,type, 'useModel?.current?.value')
+ // 暂存
+ getApiLoading(Apis.Renovation.RenovationApplies.Update, {
+ ...useModel?.formData?.value,
+ status: type && useModel?.current?.value ? 'Pending' : 'Draft'
+ }).then(res => {
+ if (type) {
+ if (useModel?.current?.value) {
+ showToast('提交成功!', () => {
+ uni.navigateBack({
+ delta: 1
+ })
+ })
+ } else {
+ useModel.current.value += 1
+ }
+ uni.pageScrollTo({
+ scrollTop: 0, // 滚动到页面的目标位置(单位px)
+ duration: 300 // 滚动动画的时长,单位ms
+ })
+ } else {
+ showToast('暂存成功!')
+ }
+ console.log(res)
+ })
+}
+
+export default {
+ init() {
+ if (work?.selectWorkHouse?.asset_house) {
+ useModel.formData.value = {
+ ...useModel.formData.value,
+ asset_houses_id: work?.selectWorkHouse?.asset_house?.id,
+ full_name: work?.selectWorkHouse?.asset_house?.full_name
+ }
+ } else {
+ useModel.formData.value = {
+ ...useModel.formData.value,
+ asset_houses_id: auth?.data?.selected_house?.id,
+ full_name: auth?.data?.selected_house?.full_name
+ }
+ }
+ },
+ getShow(res: { id: number }) {
+ getApiLoading(Apis.Renovation.RenovationApplies.Show, { id: res?.id }).then(res => {
+ useModel.showData.value = res?.data
+ useModel.formData.value = {
+ ...res?.data,
+ is_deposit: res?.data?.is_deposit ? true : false
+ }
+ console.log(res)
+ })
+ },
+ handleToSelectHouse() {
+ uni.navigateTo({
+ url: '/INDEX/asset_houses/index?type=work_add'
+ })
+ },
+ handleNextSubmit() {
+ let data = useModel?.formData?.value
+ if (useModel?.current?.value === 0) {
+ if (!data?.owner_name || !data?.owner_phone) {
+ return showToast('请输入产权人姓名/手机号!')
+ }
+ if (!data?.card_type) {
+ return showToast('请选择产权人证件类型!')
+ }
+ if (!data?.owner_id_card) {
+ return showToast('请输入产权人证件号!')
+ }
+ if (!data?.id_card_front?.length || !data?.id_card_back?.length) {
+ return showToast('请上传产权人证件!')
+ }
+ if (!data?.property_certificate?.length) {
+ return showToast('请上传房产证书!')
+ }
+ // if (data.is_deposit && !data?.deposit_amount) {
+ // return showToast('请输入保证金金额!')
+ // }
+ if (useModel?.showData?.value?.process_type === 'AgentProcess') {
+ if (!data?.agent_name || !data?.agent_phone) {
+ return showToast('请输入代理人姓名/手机号!')
+ }
+ if (!data?.agent_card_type) {
+ return showToast('请选择代理人证件类型!')
+ }
+ if (!data?.agent_id_card) {
+ return showToast('请输入代理人证件号!')
+ }
+ if (!data?.agent_id_card_front?.length || !data?.agent_id_card_back?.length) {
+ return showToast('请上传代理人证件!')
+ }
+ if (!data?.power_attorney?.length) {
+ return showToast('请上传代理人授权书!')
+ }
+ }
+ } else {
+ if (!data?.construction_principal_name) {
+ return showToast('请输入施工负责人名称!')
+ }
+ if (!data?.construction_principal_phone) {
+ return showToast('请输入施工负责人手机号!')
+ }
+ if (!data?.construction_principal_card_type) {
+ return showToast('请选择施工负责人证件类型!')
+ }
+ if (!data?.construction_principal_id_card) {
+ return showToast('请输入施工负责人证件号!')
+ }
+ if (
+ !data?.construction_principal_id_card_front?.length ||
+ !data?.construction_principal_id_card_back?.length
+ ) {
+ return showToast('请上传施工负责人证件!')
+ }
+ if (useModel?.formData?.value?.type === 'RenovationCompany') {
+ // if (!data?.company_principal_name || !data?.company_principal_phone) {
+ // return showToast('请输入装修公司负责人名称/手机号!')
+ // }
+ if (!data?.company_name) {
+ return showToast('请设置装修公司全称!')
+ }
+ if (!data?.company_business_license_num) {
+ return showToast('请输入社会统一信用代码!')
+ }
+ if (!data?.company_business_license?.length) {
+ return showToast('请上传装修公司营业执照!')
+ }
+ if (!data?.company_asset_certificate?.length) {
+ return showToast('请上传装修公司资质证明!')
+ }
+ if (!data?.company_power_attorney?.length) {
+ return showToast('请上传装修授权书!')
+ }
+ }
+ if (!data?.construction_start_date || !data?.construction_end_date) {
+ return showToast('请选择施工时间!')
+ }
+ if (!data?.renovation_content) {
+ return showToast('请选择装修内容!')
+ }
+ }
+ handleSave(1)
+ },
+ handleSave,
+ handlePrev() {
+ useModel.current.value -= 1
+ }
+}
diff --git a/src/ME/decoration/update/model.ts b/src/ME/decoration/update/model.ts
new file mode 100644
index 0000000..a797d15
--- /dev/null
+++ b/src/ME/decoration/update/model.ts
@@ -0,0 +1,8 @@
+import { reactive, ref } from 'vue'
+export default {
+ listData: ref([]),
+ formData: ref({}),
+ metaData: ref({}),
+ current: ref(0),
+ showData: ref({})
+}
diff --git a/src/ME/decoration/update/style.scss b/src/ME/decoration/update/style.scss
new file mode 100644
index 0000000..3b5f51b
--- /dev/null
+++ b/src/ME/decoration/update/style.scss
@@ -0,0 +1,94 @@
+page {
+ background-color: #f8f8f8;
+}
+.share_card {
+ background: linear-gradient(180deg, #fff8f1 0%, #fff3e5 100%);
+ padding: 20rpx 30rpx;
+ color: #3d3d3d;
+ font-size: 26rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .share_btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: #ff8f26;
+ border-radius: 100rpx;
+ button {
+ padding: 0;
+ margin: 0;
+ font-size: 26rpx;
+ height: 55rpx;
+ line-height: 55rpx;
+ padding: 0 13rpx 0 20rpx;
+ background-color: transparent;
+ color: #fff;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+ }
+}
+
+.update_header {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ background-color: #fff;
+ border-top: 1rpx solid #eee;
+ z-index: 100;
+}
+
+.update_form_content {
+ padding-top: 124rpx;
+ padding-bottom: calc(130rpx + constant(safe-area-inset-bottom));
+ padding-bottom: calc(130rpx + env(safe-area-inset-bottom));
+}
+.form_card_owner {
+ margin-top: 30rpx;
+}
+.refund_info {
+ border-top: 1rpx solid #eee;
+ background-color: #fff;
+ padding: 30rpx 0;
+ .label {
+ font-size: 28rpx;
+ }
+ text {
+ color: #f00;
+ }
+ .refund_reason {
+ padding: 20rpx 0 0 0;
+ }
+}
+
+.footer_page {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .previous_btn {
+ padding-right: 30rpx;
+ .label {
+ font-size: 20rpx;
+ color: #3d3d3d;
+ }
+ }
+ .group_btn_content {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex: 1;
+
+ .next_btn {
+ flex: 1;
+ &:first-child {
+ padding-right: 30rpx;
+ }
+ }
+ }
+}
+button:after {
+ border: none !important; /* 去掉边框 */
+}
diff --git a/src/ME/surveys/index.vue b/src/ME/surveys/index.vue
new file mode 100644
index 0000000..b2fb826
--- /dev/null
+++ b/src/ME/surveys/index.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+ {{ index + 1 }}.题目:{{ i?.title }}*
+ 提示:{{ i?.placeholder }}
+
+ {{ k?.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ME/surveys/method.ts b/src/ME/surveys/method.ts
new file mode 100644
index 0000000..7f0c264
--- /dev/null
+++ b/src/ME/surveys/method.ts
@@ -0,0 +1,55 @@
+import { Apis } from '@/gen/Apis'
+import { getApiLoading } from '@/common/libraries/apiLoading'
+import useModel from './model'
+export default {
+ getShow(id: string) {
+ getApiLoading(Apis.Survey.Surveys.Questions, { release_id: id }).then(res => {
+ useModel.showData.value = res?.data || {}
+ })
+ },
+ handleSubmit() {
+ let data = useModel?.showData?.value?.questions || []
+ let formAnswers: any = []
+ console.log(data, 'data')
+ if (data?.length) {
+ let isError = false
+ data?.map((res: any, index: number) => {
+ if (isError) return
+ if (res?.required && res?.type === 'Score' && !res?.score) {
+ uni.showToast({ title: `第${index + 1}题请选择!`, icon: 'none' })
+ isError = true
+ return
+ }
+ if (res?.required && res?.type === 'Fill' && !res?.answer_content) {
+ uni.showToast({ title: `第${index + 1}题请填写!`, icon: 'none' })
+ isError = true
+ return
+ }
+ formAnswers.push({
+ question_id: res?.id,
+ answer_content: res?.answer_content,
+ score: res?.score
+ })
+ })
+ if (isError) {
+ return
+ }
+ getApiLoading(Apis.Survey.Surveys.SubmitResponse, {
+ answers: formAnswers,
+ surveyId: useModel?.showData?.value?.survey?.id,
+ release_id: useModel?.showData?.value?.survey?.release_id
+ }).then(res => {
+ uni.showToast({ title: '提交成功!', icon: 'none' })
+ setTimeout(() => {
+ uni.navigateBack({ delta: 1, fail: () => {
+ uni.switchTab({ url: '/pages/index/index' })
+ } })
+ }, 1000)
+ console.log(res)
+ })
+ }
+ },
+ setAnswer(index: number, score: number) {
+ useModel.showData.value.questions[index].score = score
+ }
+}
diff --git a/src/ME/surveys/model.ts b/src/ME/surveys/model.ts
new file mode 100644
index 0000000..92ede1e
--- /dev/null
+++ b/src/ME/surveys/model.ts
@@ -0,0 +1,27 @@
+import { reactive, ref } from 'vue'
+export default {
+ formData: ref({}),
+ showData: ref({}),
+ radioList: [
+ {
+ label: '非常不满意',
+ value: 1
+ },
+ {
+ label: '比较不满意',
+ value: 2
+ },
+ {
+ label: '满意',
+ value: 3
+ },
+ {
+ label: '比较满意',
+ value: 4
+ },
+ {
+ label: '非常满意',
+ value: 5
+ }
+ ]
+}
diff --git a/src/ME/surveys/style.scss b/src/ME/surveys/style.scss
new file mode 100644
index 0000000..b4b1dec
--- /dev/null
+++ b/src/ME/surveys/style.scss
@@ -0,0 +1,69 @@
+page {
+ background-color: #f8f8f8;
+}
+.surveys_content {
+ padding-bottom: calc(130rpx + constant(safe-area-inset-bottom));
+ padding-bottom: calc(130rpx + env(safe-area-inset-bottom));
+}
+.surveys_banner {
+ height: 161px;
+ overflow: hidden;
+ image {
+ width: 100%;
+ height: 161px;
+ }
+}
+.surveys_body {
+ margin-top: -80rpx;
+ position: relative;
+ z-index: 100;
+}
+.item_card {
+ background-color: #fff;
+ margin: 30rpx;
+ border-radius: 15rpx;
+ padding: 30rpx;
+ .title {
+ color: #333333;
+ font-size: 30rpx;
+ font-weight: 500;
+ padding: 0 0 0 0;
+ text {
+ color: #f00;
+ }
+ }
+ .p_t {
+ padding-top: 10rpx;
+ }
+ .placeholder {
+ font-size: 22rpx;
+ color: #999;
+ padding: 5rpx 0 10rpx 0;
+ }
+ .score_item_btn_group {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+ .score_item_btn {
+ border: 1px solid #d8d8d8;
+ border-radius: 10rpx;
+ padding: 12rpx 17rpx;
+ color: #666;
+ font-size: 23rpx;
+ }
+ .score_item_btn_active {
+ background-color: #007aff;
+ color: #fff;
+ border: 1px solid #007aff;
+ }
+ .textarea_item {
+ // border: 1rpx solid #eee;
+ // border-radius: 15rpx;
+ // padding: 20rpx;
+ }
+}
+
+.textarea_placeholder {
+ font-size: 26rpx;
+}
diff --git a/src/colorconfig.scss b/src/colorconfig.scss
index 794e947..c1e22a6 100644
--- a/src/colorconfig.scss
+++ b/src/colorconfig.scss
@@ -93,4 +93,10 @@ wx-swiper .wx-swiper-dot {
.refund_reason {
padding: 20rpx 0 0 0;
}
+}
+
+.card_form {
+ background-color: #fff;
+ padding: 0 30rpx;
+ margin-bottom: 30rpx;
}
\ No newline at end of file
diff --git a/src/common/libraries/config.ts b/src/common/libraries/config.ts
new file mode 100644
index 0000000..a63668b
--- /dev/null
+++ b/src/common/libraries/config.ts
@@ -0,0 +1,3 @@
+export default {
+ WxAppId: 'wx31500e871924b903' //小程序id
+}
\ No newline at end of file
diff --git a/src/common/libraries/naviHelper.ts b/src/common/libraries/naviHelper.ts
index 8fef07a..0b79352 100644
--- a/src/common/libraries/naviHelper.ts
+++ b/src/common/libraries/naviHelper.ts
@@ -38,10 +38,15 @@ export function showToastBack(label?: string, delta = 1, back = true) {
})
}
-export function showToast(label?: string) {
+export function showToast(label?: string, fun?: (res: boolean) => void) {
uni.showToast({
title: label || '提交成功!',
duration: 1000,
- icon: 'none'
+ icon: 'none',
+ success() {
+ setTimeout(() => {
+ return fun?.(true)
+ }, 1000)
+ }
})
}
diff --git a/src/common/store/useWeAppAuthStore.ts b/src/common/store/useWeAppAuthStore.ts
index 7c18ce5..6f251a4 100644
--- a/src/common/store/useWeAppAuthStore.ts
+++ b/src/common/store/useWeAppAuthStore.ts
@@ -3,7 +3,8 @@ import { defineStore } from 'pinia'
import { ref } from 'vue'
import { setTabBar } from '../libraries/setTabBar'
import { getApiLoading } from '../libraries/apiLoading'
-const wxAppId = 'wx31500e871924b903' //小程序id
+// const wxAppId = 'wx31500e871924b903' //小程序id
+import config from '@/common/libraries/config'
type DataType = {
user?: {
@@ -19,6 +20,12 @@ type DataType = {
house_register?: boolean
house_occupant?: boolean
is_house_exist?: number
+ address_city?: {
+ city?: string
+ },
+ current_city:{
+ city?: string
+ },
config?: {
companyAction?: {
name?: string
@@ -48,7 +55,9 @@ export const useWeAppAuthStore = defineStore('we_app_auth', () => {
house_occupant: false,
house_register: false,
is_house_exist: 0,
- config: {}
+ config: {},
+ address_city: {},
+ current_city: {}
})
function login(app: any) {
@@ -62,7 +71,7 @@ export const useWeAppAuthStore = defineStore('we_app_auth', () => {
}
const getWXToken = (app: any, code: string) => {
- Apis.Login.Auth.Login({ code: code, app_id: wxAppId })
+ Apis.Login.Auth.Login({ code: code, app_id: config?.WxAppId })
.then(res => {
console.log('登录', res?.data)
uni.setStorageSync(import.meta.env.VITE_ACCESS_TOKEN_KEY, res?.data?.token?.token)
@@ -120,7 +129,7 @@ export const useWeAppAuthStore = defineStore('we_app_auth', () => {
phone_validate_code?: string
}) => {
getApiLoading(Apis.Login.Auth.BindPhoneNumber, {
- app_id: wxAppId,
+ app_id: config?.WxAppId,
...from_data
}).then(res => {
me(() => {
@@ -129,6 +138,45 @@ export const useWeAppAuthStore = defineStore('we_app_auth', () => {
})
}
+
+const SetAddressCity = () =>{
+
+ // 高德配置
+const AMAP_KEY = 'be262c006216c542747fce766130cee3'
+uni.getLocation({
+ type: 'gcj02',
+ altitude: true,
+ isHighAccuracy: true,
+ success(res) {
+ console.log(res, '经纬度')
+ const url = `https://restapi.amap.com/v3/geocode/regeo?location=${res.longitude},${res.latitude}&key=${AMAP_KEY}`
+ uni.request({
+ url: url,
+ method: 'GET',
+ success(res: any) {
+ console.log(res, 'address')
+ data.value.current_city = res?.data?.regeocode?.addressComponent
+ },
+ })
+ },
+ fail(e) {
+ uni.showModal({
+ title: '提示',
+ content: '请先允许定位!',
+ success: function (res) {
+ if (res.confirm) {
+ uni.openSetting()
+ console.log('用户点击确定')
+ } else if (res.cancel) {
+ console.log('用户点击取消')
+ }
+ }
+ })
+ console.log('拒绝定位', e)
+ }
+ })
+}
+
return {
loading,
hasError,
@@ -136,6 +184,7 @@ export const useWeAppAuthStore = defineStore('we_app_auth', () => {
login,
me,
handleUserLogin,
- getIsHouseExist
+ getIsHouseExist,
+ SetAddressCity
}
})
diff --git a/src/components/hs-date-picker/hs-date-picker.vue b/src/components/hs-date-picker/hs-date-picker.vue
index 9ac67cb..595b8a4 100644
--- a/src/components/hs-date-picker/hs-date-picker.vue
+++ b/src/components/hs-date-picker/hs-date-picker.vue
@@ -6,11 +6,18 @@
:start="startDate"
:end="endDate"
>
-
-
+
+
diff --git a/src/components/hs-popup-buttom-custom/hs-popup-buttom-custom.vue b/src/components/hs-popup-buttom-custom/hs-popup-buttom-custom.vue
new file mode 100644
index 0000000..4bbfe6e
--- /dev/null
+++ b/src/components/hs-popup-buttom-custom/hs-popup-buttom-custom.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/hs-popup-project/hs-popup-project.vue b/src/components/hs-popup-project/hs-popup-project.vue
index e935d92..e16c3a4 100644
--- a/src/components/hs-popup-project/hs-popup-project.vue
+++ b/src/components/hs-popup-project/hs-popup-project.vue
@@ -13,14 +13,19 @@
diff --git a/src/components/hs-steps/hs-steps.vue b/src/components/hs-steps/hs-steps.vue
new file mode 100644
index 0000000..e6d8e74
--- /dev/null
+++ b/src/components/hs-steps/hs-steps.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+ {{ index + 1 }}
+
+ {{ i }}
+
+
+
+
+
+
+
+ {{ index + 1 }}
+
+ {{ i }}
+
+
+
+
+
+
+
+
diff --git a/src/components/hs-upload-id-card/hs-upload-id-card.vue b/src/components/hs-upload-id-card/hs-upload-id-card.vue
index 830ae28..0d79798 100644
--- a/src/components/hs-upload-id-card/hs-upload-id-card.vue
+++ b/src/components/hs-upload-id-card/hs-upload-id-card.vue
@@ -73,6 +73,37 @@ const handleUpload = async (type: number) => {
}
}
+
+
+watch(
+ () => props?.valueFrontModel?.[0]?.uid,
+ () => {
+ frontImg.value = props?.valueFrontModel?.[0] || {}
+ },
+ {
+ deep: true
+ }
+)
+
+watch(
+ () => props?.valueBackModel?.[0]?.uid,
+ () => {
+ backImg.value = props?.valueBackModel?.[0] || {}
+ },
+ {
+ deep: true
+ }
+)
+
+onMounted(() => {
+ if (props?.valueBackModel && props?.valueBackModel?.length) {
+ backImg.value = props?.valueBackModel?.[0] || {}
+ }
+ if (props?.valueFrontModel && props?.valueFrontModel?.length) {
+ frontImg.value = props?.valueFrontModel?.[0] || {}
+ }
+})
+
const onPreviewMedia = (url?: string) => {
console.log(url, 'url1')
if (url) {
diff --git a/src/gen/ApiTypes.d.ts b/src/gen/ApiTypes.d.ts
index 4761b8c..b096be0 100644
--- a/src/gen/ApiTypes.d.ts
+++ b/src/gen/ApiTypes.d.ts
@@ -2,10 +2,12 @@ declare namespace ApiTypes {
namespace Activity {
namespace Activities {
type List = {
+ "app_id"?: string; // 小程序app_id(未登录时必传)
"title"?: string; // 模糊搜索:名称
"asset_projects_id"?: number; // 模糊搜索:项目id,[ref:asset_projects]
};
type Show = {
+ "app_id"?: string; // 小程序app_id(未登录时必传)
"id": number; // id
};
}
@@ -48,6 +50,7 @@ declare namespace ApiTypes {
};
type Show = {
"id": number; // id
+ "asset_houses_id": number; // 房屋的id
};
type DeleteOccupant = {
"asset_houses_id": number; // 房屋的id
@@ -90,10 +93,16 @@ declare namespace ApiTypes {
}
namespace Asset {
namespace AssetHouses {
+ type GetCities = {
+ "city"?: string; // -
+ "city_id"?: string; // -
+ "app_id": string; // -
+ };
type SelectProject = {
- "name"?: string; // 项目名称
- "city"?: string; // 城市名称
- "city_id"?: string; // 城市id
+ "name"?: string; // -
+ "city"?: string; // -
+ "city_id"?: string; // -
+ "app_id": string; // -
};
type SelectProjectByLocation = {
"name"?: string; // -
@@ -101,7 +110,8 @@ declare namespace ApiTypes {
"city_id"?: string; // -
"longitude": number; // -
"latitude": number; // -
- "radius"?: number; // 搜索半径(km),可选
+ "radius"?: number; // -
+ "app_id": string; // -
};
type SelectBuilding = {
"asset_projects_id": number; // 所属项目ID
@@ -136,6 +146,18 @@ declare namespace ApiTypes {
}
}
namespace Bill {
+ namespace Bills {
+ type List = {
+ "status"?: string; // 账单状态,[enum:BillsStatusEnum]
+ };
+ type Payment = {
+ "bill_id": number; // 账单ID
+ "payment_method": string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum]
+ };
+ type Show = {
+ "bill_id": number; // 账单ID
+ };
+ }
namespace HouseBills {
type List = {
"asset_houses_id": number; // 房屋ID
@@ -168,6 +190,7 @@ declare namespace ApiTypes {
namespace Common {
namespace ConvenienceServices {
type List = {
+ "app_id"?: string; // 小程序app_id(未登录时必传)
"asset_projects_id": number; // 项目ID
"type"?: string; // 模糊搜索:名称
};
@@ -323,6 +346,10 @@ declare namespace ApiTypes {
};
}
}
+ namespace Loop {
+ namespace CCB {
+ }
+ }
namespace Msg {
namespace MsgPropertyAnnouncements {
type List = {
@@ -332,6 +359,180 @@ declare namespace ApiTypes {
type Show = {
"id": number; // id
};
+ type MarkAsRead = {
+ "id": number; // 公告ID
+ };
+ }
+ }
+ namespace Renovation {
+ namespace RenovationApplies {
+ type List = {
+ "full_name"?: string; // 模糊搜索:房屋名称
+ "status"?: string; // 状态,[enum:RenovationAppliesStatusEnum]
+ "construction_status"?: string; // 施工状态,[enum:RenovationAppliesConstructionStatusEnum]
+ "acceptance_status"?: string; // 验收状态,[enum:RenovationAppliesAcceptanceStatusEnum]
+ };
+ type Store = {
+ "asset_houses_id": number; // 所属房屋id,[ref:asset_houses]
+ "type": string; // 装修类型,[enum:RenovationAppliesTypeEnum]
+ "process_type": string; // 办理类型,[enum:RenovationAppliesProcessTypeEnum]
+ "is_deposit"?: boolean; // 是否有保证金
+ "deposit_amount"?: number; // 保证金金额
+ "owner_name"?: string; // 业主名称
+ "owner_phone"?: string; // 业主手机
+ "card_type"?: string; // 证件类型,[enum:HouseOccupantsCardTypeEnum]
+ "owner_id_card"?: string; // 业主身份证
+ "id_card_front"?: string[]; // 身份证正面
+ "id_card_back"?: string[]; // 身份证反面
+ "property_certificate"?: string[]; // 产权证明
+ "agent_name"?: string; // 代理人名称
+ "agent_phone"?: string; // 代理人手机
+ "agent_card_type"?: string; // 代理人证件类型,[enum:HouseOccupantsCardTypeEnum]
+ "agent_id_card"?: string; // 代理人身份证
+ "agent_id_card_front"?: string[]; // 代理人身份证正面
+ "agent_id_card_back"?: string[]; // 代理人身份证反面
+ "power_attorney"?: string[]; // 代理人授权书
+ "construction_principal_name"?: string; // 施工负责人名称
+ "construction_principal_phone"?: string; // 施工负责人手机
+ "construction_principal_card_type"?: string; // 施工负责人证件类型,[enum:HouseOccupantsCardTypeEnum]
+ "construction_principal_id_card"?: string; // 施工负责人身份证
+ "construction_principal_id_card_front"?: string[]; // 施工负责人身份证正面
+ "construction_principal_id_card_back"?: string[]; // 施工负责人身份证反面
+ "construction_start_date"?: Date; // 施工开始时间
+ "construction_end_date"?: Date; // 施工结束时间
+ "renovation_content"?: string; // 装修内容,[enum:RenovationAppliesRenovationContentEnum]
+ "renovation_remark"?: string; // 装修备注
+ "construction_draw"?: string[]; // 施工图
+ "construction_commitment_letter"?: string[]; // 施工承诺书
+ "company_name"?: string; // 装修公司名称
+ "company_principal_name"?: string; // 装修公司负责人名称
+ "company_principal_phone"?: string; // 装修公司负责人手机
+ "company_business_license_num"?: string; // 装修公司营业执照号
+ "company_business_license"?: string[]; // 装修公司营业执照
+ "company_asset_certificate"?: string[]; // 装修公司资产证明
+ "company_power_attorney"?: string[]; // 装修公司装修授权书
+ "other_attachments"?: string[]; // 其他附件
+ "major_construction"?: string[]; // 主要施工项
+ };
+ type Update = {
+ "id": number; // id
+ "type"?: string; // 装修类型,[enum:RenovationAppliesTypeEnum]
+ "process_type"?: string; // 办理类型,[enum:RenovationAppliesProcessTypeEnum]
+ "is_deposit"?: boolean; // 是否有保证金
+ "deposit_amount"?: number; // 保证金金额
+ "status"?: string; // 状态,[enum:RenovationAppliesStatusEnum]
+ "owner_name"?: string; // 业主名称
+ "owner_phone"?: string; // 业主手机
+ "card_type"?: string; // 证件类型,[enum:HouseOccupantsCardTypeEnum]
+ "owner_id_card"?: string; // 业主身份证
+ "id_card_front"?: string[]; // 身份证正面
+ "id_card_back"?: string[]; // 身份证反面
+ "property_certificate"?: string[]; // 产权证明
+ "agent_name"?: string; // 代理人名称
+ "agent_phone"?: string; // 代理人手机
+ "agent_card_type"?: string; // 代理人证件类型,[enum:HouseOccupantsCardTypeEnum]
+ "agent_id_card"?: string; // 代理人身份证
+ "agent_id_card_front"?: string[]; // 代理人身份证正面
+ "agent_id_card_back"?: string[]; // 代理人身份证反面
+ "power_attorney"?: string[]; // 代理人授权书
+ "construction_principal_name"?: string; // 施工负责人名称
+ "construction_principal_phone"?: string; // 施工负责人手机
+ "construction_principal_card_type"?: string; // 施工负责人证件类型,[enum:HouseOccupantsCardTypeEnum]
+ "construction_principal_id_card"?: string; // 施工负责人身份证
+ "construction_principal_id_card_front"?: string[]; // 施工负责人身份证正面
+ "construction_principal_id_card_back"?: string[]; // 施工负责人身份证反面
+ "construction_start_date"?: Date; // 施工开始时间
+ "construction_end_date"?: Date; // 施工结束时间
+ "renovation_content"?: string; // 装修内容,[enum:RenovationAppliesRenovationContentEnum]
+ "renovation_remark"?: string; // 装修备注
+ "construction_draw"?: string[]; // 施工图
+ "construction_commitment_letter"?: string[]; // 施工承诺书
+ "company_name"?: string; // 装修公司名称
+ "company_principal_name"?: string; // 装修公司负责人名称
+ "company_principal_phone"?: string; // 装修公司负责人手机
+ "company_business_license_num"?: string; // 装修公司营业执照号
+ "company_business_license"?: string[]; // 装修公司营业执照
+ "company_asset_certificate"?: string[]; // 装修公司资产证明
+ "company_power_attorney"?: string[]; // 装修公司装修授权书
+ "other_attachments"?: string[]; // 其他附件
+ "major_construction"?: string[]; // 主要施工项
+ };
+ type Show = {
+ "id": number; // id
+ };
+ type ApplyAccept = {
+ "id": number; // 装修申请id
+ "expect_start_time"?: Date; // 期望开始时间
+ "expect_end_time"?: Date; // 期望结束时间
+ };
+ type ApplyExtension = {
+ "id": number; // 装修申请id
+ "extension_date": Date; // 延期日期
+ };
+ type SoftDelete = {
+ "id": number; // id
+ };
+ }
+ namespace RenovationWorkers {
+ type List = {
+ "renovation_applies_id"?: number; // 装修申请id,[ref:renovation_applies]
+ "worker_name"?: string; // 模糊搜索:工人姓名
+ "worker_phone"?: string; // 模糊搜索:工人电话
+ };
+ type Store = {
+ "renovation_applies_id": number; // 装修申请id,[ref:renovation_applies]
+ "worker_name": string; // 工人姓名
+ "worker_phone": string; // 工人电话
+ "card_type": string; // 证件类型,[enum:HouseOccupantsCardTypeEnum]
+ "id_card": string; // 证件号
+ "card_front"?: string[]; // 证件正面
+ "card_back"?: string[]; // 证件反面
+ "valid_from"?: Date; // 证件有效期开始
+ "valid_to"?: Date; // 证件有效期结束
+ "worker_photo"?: string[]; // 工人照片
+ };
+ type BatchStore = {
+ "renovation_applies_id": number; // 装修申请id,[ref:renovation_applies]
+ "workers": string[]; // 工人列表
+ };
+ type Update = {
+ "id": number; // id
+ "worker_name": string; // 工人姓名
+ "worker_phone": string; // 工人电话
+ "card_type": string; // 证件类型,[enum:HouseOccupantsCardTypeEnum]
+ "id_card": string; // 证件号
+ "card_front"?: string[]; // 证件正面
+ "card_back"?: string[]; // 证件反面
+ "valid_from"?: Date; // 证件有效期开始
+ "valid_to"?: Date; // 证件有效期结束
+ "worker_photo"?: string[]; // 工人照片
+ };
+ type Show = {
+ "id": number; // id
+ };
+ type StopVisitor = {
+ "id": number; // 工人id
+ };
+ type EnableVisitor = {
+ "id": number; // 工人id
+ };
+ type UpdateVisitorTime = {
+ "id": number; // 工人id
+ "visitor_start_time": string; // 访客开始时间
+ "visitor_end_time": string; // 访客结束时间
+ };
+ }
+ }
+ namespace Survey {
+ namespace Surveys {
+ type Questions = {
+ "release_id": number; // -
+ };
+ type SubmitResponse = {
+ "surveyId": number; // -
+ "release_id"?: number; // -
+ "answers": string[]; // -
+ };
}
}
namespace Visitor {
diff --git a/src/gen/Apis.ts b/src/gen/Apis.ts
index 9f30e61..40e50d3 100644
--- a/src/gen/Apis.ts
+++ b/src/gen/Apis.ts
@@ -81,7 +81,10 @@ export const Apis = {
},
Asset: {
AssetHouses: {
- SelectProject(data?: ApiTypes.Asset.AssetHouses.SelectProject): Promise {
+ GetCities(data: ApiTypes.Asset.AssetHouses.GetCities): Promise {
+ return request('customer/asset/asset_houses/get_cities', { data });
+ },
+ SelectProject(data: ApiTypes.Asset.AssetHouses.SelectProject): Promise {
return request('customer/asset/asset_houses/select_project', { data });
},
SelectProjectByLocation(data: ApiTypes.Asset.AssetHouses.SelectProjectByLocation): Promise {
@@ -114,6 +117,20 @@ export const Apis = {
},
},
Bill: {
+ Bills: {
+ List(data?: ApiTypes.Bill.Bills.List): Promise {
+ return request('customer/bill/bills/list', { data });
+ },
+ Payment(data: ApiTypes.Bill.Bills.Payment): Promise {
+ return request('customer/bill/bills/payment', { data });
+ },
+ PaymentCallback(): Promise {
+ return request('customer/bill/bills/payment_callback', {});
+ },
+ Show(data: ApiTypes.Bill.Bills.Show): Promise {
+ return request('customer/bill/bills/show', { data });
+ },
+ },
HouseBills: {
List(data: ApiTypes.Bill.HouseBills.List): Promise {
return request('customer/bill/house_bills/list', { data });
@@ -271,6 +288,16 @@ export const Apis = {
},
},
},
+ Loop: {
+ CCB: {
+ PaymentCallback(): Promise {
+ return request('customer/loop/c_c_b/payment_callback', {});
+ },
+ HsbPaymentCallback(): Promise {
+ return request('customer/loop/c_c_b/hsb_payment_callback', {});
+ },
+ },
+ },
Msg: {
MsgPropertyAnnouncements: {
List(data?: ApiTypes.Msg.MsgPropertyAnnouncements.List): Promise {
@@ -279,11 +306,78 @@ export const Apis = {
Show(data: ApiTypes.Msg.MsgPropertyAnnouncements.Show): Promise {
return request('customer/msg/msg_property_announcements/show', { data });
},
+ MarkAsRead(data: ApiTypes.Msg.MsgPropertyAnnouncements.MarkAsRead): Promise {
+ return request('customer/msg/msg_property_announcements/mark_as_read', { data });
+ },
CountMsg(): Promise {
return request('customer/msg/msg_property_announcements/count_msg', {});
},
},
},
+ Renovation: {
+ RenovationApplies: {
+ List(data?: ApiTypes.Renovation.RenovationApplies.List): Promise {
+ return request('customer/renovation/renovation_applies/list', { data });
+ },
+ Store(data: ApiTypes.Renovation.RenovationApplies.Store): Promise {
+ return request('customer/renovation/renovation_applies/store', { data });
+ },
+ Update(data: ApiTypes.Renovation.RenovationApplies.Update): Promise {
+ return request('customer/renovation/renovation_applies/update', { data });
+ },
+ Show(data: ApiTypes.Renovation.RenovationApplies.Show): Promise {
+ return request('customer/renovation/renovation_applies/show', { data });
+ },
+ ApplyAccept(data: ApiTypes.Renovation.RenovationApplies.ApplyAccept): Promise {
+ return request('customer/renovation/renovation_applies/apply_accept', { data });
+ },
+ ApplyExtension(data: ApiTypes.Renovation.RenovationApplies.ApplyExtension): Promise {
+ return request('customer/renovation/renovation_applies/apply_extension', { data });
+ },
+ SoftDelete(data: ApiTypes.Renovation.RenovationApplies.SoftDelete): Promise {
+ return request('customer/renovation/renovation_applies/soft_delete', { data });
+ },
+ },
+ RenovationWorkers: {
+ List(data?: ApiTypes.Renovation.RenovationWorkers.List): Promise {
+ return request('customer/renovation/renovation_workers/list', { data });
+ },
+ Store(data: ApiTypes.Renovation.RenovationWorkers.Store): Promise {
+ return request('customer/renovation/renovation_workers/store', { data });
+ },
+ BatchStore(data: ApiTypes.Renovation.RenovationWorkers.BatchStore): Promise {
+ return request('customer/renovation/renovation_workers/batch_store', { data });
+ },
+ Update(data: ApiTypes.Renovation.RenovationWorkers.Update): Promise {
+ return request('customer/renovation/renovation_workers/update', { data });
+ },
+ Show(data: ApiTypes.Renovation.RenovationWorkers.Show): Promise {
+ return request('customer/renovation/renovation_workers/show', { data });
+ },
+ StopVisitor(data: ApiTypes.Renovation.RenovationWorkers.StopVisitor): Promise {
+ return request('customer/renovation/renovation_workers/stop_visitor', { data });
+ },
+ EnableVisitor(data: ApiTypes.Renovation.RenovationWorkers.EnableVisitor): Promise {
+ return request('customer/renovation/renovation_workers/enable_visitor', { data });
+ },
+ UpdateVisitorTime(data: ApiTypes.Renovation.RenovationWorkers.UpdateVisitorTime): Promise {
+ return request('customer/renovation/renovation_workers/update_visitor_time', { data });
+ },
+ },
+ },
+ Survey: {
+ Surveys: {
+ List(): Promise {
+ return request('customer/survey/surveys/list', {});
+ },
+ Questions(data: ApiTypes.Survey.Surveys.Questions): Promise {
+ return request('customer/survey/surveys/questions', { data });
+ },
+ SubmitResponse(data: ApiTypes.Survey.Surveys.SubmitResponse): Promise {
+ return request('customer/survey/surveys/submit_response', { data });
+ },
+ },
+ },
Visitor: {
VisitorApplies: {
Invite(data: ApiTypes.Visitor.VisitorApplies.Invite): Promise {
diff --git a/src/gen/Enums.ts b/src/gen/Enums.ts
index 6b91005..d9a3a94 100644
--- a/src/gen/Enums.ts
+++ b/src/gen/Enums.ts
@@ -26,6 +26,13 @@ export const ActivityEnrollsStatusEnum = {
'Cancelled': {"text":"取消","color":"#ff9800","value":"Cancelled"},
};
+// API凭证状态枚举
+export const ApiCredentialStatusEnum = {
+ 'Active': {"text":"启用","color":"#28A745","value":"Active"},
+ 'Inactive': {"text":"禁用","color":"#6C757D","value":"Inactive"},
+ 'Expired': {"text":"已过期","color":"#DC3545","value":"Expired"},
+};
+
// 审批实例状态枚举
export const ApprovalInstancesStatusEnum = {
'Pending': {"text":"待审批","color":"#ff9800","value":"Pending"},
@@ -59,6 +66,11 @@ export const ApprovalTemplatesTypeEnum = {
'Contract': {"text":"合同","color":"#2196f3","value":"Contract"},
'Finance': {"text":"财务","color":"#4caf50","value":"Finance"},
'Refund': {"text":"退款","color":"#f44336","value":"Refund"},
+ 'ContractTermination': {"text":"合同终止","color":"#ff9800","value":"ContractTermination"},
+ 'ContractBorrow': {"text":"合同借用","color":"#9c27b0","value":"ContractBorrow"},
+ 'ContractPayment': {"text":"合同支付","color":"#00bcd4","value":"ContractPayment"},
+ 'OtherContractSeal': {"text":"其它合同用印","color":"#795548","value":"OtherContractSeal"},
+ 'HouseBillUpdate': {"text":"物业账单修改","color":"#607d8b","value":"HouseBillUpdate"},
};
// 车位产权类型
@@ -227,6 +239,37 @@ export const AssetUnitsBuildingTypeEnum = {
'Tower': {"text":"塔楼","color":"#ffc107","value":"Tower"},
};
+// AttendanceRecordsCheckinTypeEnum
+export const AttendanceRecordsCheckinTypeEnum = {
+ 'CheckIn': {"text":"上班","color":"#1890ff","value":"CheckIn"},
+ 'CheckOut': {"text":"下班","color":"#52c41a","value":"CheckOut"},
+};
+
+// AttendanceRecordsStatusEnum
+export const AttendanceRecordsStatusEnum = {
+ 'Normal': {"text":"正常","color":"#52c41a","value":"Normal"},
+ 'Late': {"text":"迟到","color":"#faad14","value":"Late"},
+ 'EarlyLeave': {"text":"早退","color":"#fa8c16","value":"EarlyLeave"},
+ 'OutOfRange': {"text":"范围外","color":"#ff4d4f","value":"OutOfRange"},
+ 'Reissue': {"text":"补卡","color":"#1890ff","value":"Reissue"},
+};
+
+// AttendanceSchedulesStatusEnum
+export const AttendanceSchedulesStatusEnum = {
+ 'Pending': {"text":"待生效","color":"#faad14","value":"Pending"},
+ 'Active': {"text":"生效中","color":"#52c41a","value":"Active"},
+ 'Cancelled': {"text":"已取消","color":"#ff4d4f","value":"Cancelled"},
+};
+
+// 打卡状态枚举
+export const AttendanceStatusEnum = {
+ 'Normal': {"text":"正常","color":"#52c41a","value":"Normal"},
+ 'Late': {"text":"迟到","color":"#faad14","value":"Late"},
+ 'Early': {"text":"早退","color":"#faad14","value":"Early"},
+ 'OutOfRange': {"text":"范围外","color":"#ff4d4f","value":"OutOfRange"},
+ 'MakeUp': {"text":"补卡","color":"#722ed1","value":"MakeUp"},
+};
+
// BannerSpacesTypeEnum
export const BannerSpacesTypeEnum = {
'Popup': {"text":"弹窗","color":"#ff0000","value":"Popup"},
@@ -251,7 +294,7 @@ export const BannersTypeEnum = {
// 缓存类型
export const CacheTypeEnum = {
- 'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#1de962","value":"MobilePhoneVerificationCode"},
+ 'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#16df7a","value":"MobilePhoneVerificationCode"},
};
// CompaniesMerchantTypeEnum
@@ -297,12 +340,214 @@ export const CompanyEmployeeBacklogsTypeEnum = {
'MomentTask': {"text":"朋友圈任务","color":"#FF6600","value":"MomentTask"},
};
+// CompanyEmployeesTypeEnum
+export const CompanyEmployeesTypeEnum = {
+ 'Staff': {"text":"员工","color":"#1890ff","value":"Staff"},
+ 'WeCom': {"text":"企微","color":"#2196f3","value":"WeCom"},
+ 'External': {"text":"外部","color":"#4caf50","value":"External"},
+};
+
// CompanyReceiptAccountsPayChannelEnum
export const CompanyReceiptAccountsPayChannelEnum = {
'WeChat': {"text":"微信","color":"#07c160","value":"WeChat"},
'Alipay': {"text":"支付宝","color":"#1677ff","value":"Alipay"},
'BankTransfer': {"text":"银行转账","color":"#6c757d","value":"BankTransfer"},
'TongLian': {"text":"通联支付","color":"#ff9f0a","value":"TongLian"},
+ 'CCB': {"text":"建行惠市宝","color":"#003da5","value":"CCB"},
+};
+
+// 公司印章类型枚举
+export const CompanySealsTypeEnum = {
+ 'OfficialSeal': {"text":"公章","color":"#007bff","value":"OfficialSeal"},
+ 'FinanceSeal': {"text":"财务专用章","color":"#28a745","value":"FinanceSeal"},
+ 'ContractSeal': {"text":"合同专用章","color":"#17a2b8","value":"ContractSeal"},
+ 'LegalRepresentativeSeal': {"text":"法定代表人章","color":"#ffc107","value":"LegalRepresentativeSeal"},
+ 'InvoiceSeal': {"text":"发票专用章","color":"#dc3545","value":"InvoiceSeal"},
+ 'HRSeal': {"text":"人事专用章","color":"#6f42c1","value":"HRSeal"},
+};
+
+// CompanySuppliersCertificateTypeEnum
+export const CompanySuppliersCertificateTypeEnum = {
+ 'IdCard': {"text":"身份证","color":"#1e90ff","value":"IdCard"},
+ 'BusinessLicense': {"text":"营业执照","color":"#32cd32","value":"BusinessLicense"},
+};
+
+// CompanySuppliersCounterpartyEnum
+export const CompanySuppliersCounterpartyEnum = {
+ 'Supplier': {"text":"供应商","color":"#1e90ff","value":"Supplier"},
+ 'InternalCompany': {"text":"内部企业","color":"#32cd32","value":"InternalCompany"},
+ 'CustomerCompany': {"text":"客户单位","color":"#ff8c00","value":"CustomerCompany"},
+ 'Other': {"text":"其他","color":"#808080","value":"Other"},
+};
+
+// CompanySuppliersGradeEnum
+export const CompanySuppliersGradeEnum = {
+ 'Excellent': {"text":"优秀","color":"#10b981","value":"Excellent"},
+ 'Qualified': {"text":"合格","color":"#3b82f6","value":"Qualified"},
+ 'ToImprove': {"text":"待整改","color":"#f59e0b","value":"ToImprove"},
+ 'Eliminated': {"text":"淘汰","color":"#ef4444","value":"Eliminated"},
+};
+
+// CompanySuppliersSupplierTypeEnum
+export const CompanySuppliersSupplierTypeEnum = {
+ 'Individual': {"text":"个人","color":"#1e90ff","value":"Individual"},
+ 'Enterprise': {"text":"企业","color":"#32cd32","value":"Enterprise"},
+};
+
+// 合同归档借用状态枚举
+export const ContractArchiveBorrowStatusEnum = {
+ 'Pending': {"text":"审批中","color":"#f59e0b","value":"Pending"},
+ 'Approved': {"text":"已通过","color":"#10b981","value":"Approved"},
+ 'Rejected': {"text":"已驳回","color":"#ef4444","value":"Rejected"},
+ 'Borrowing': {"text":"借用中","color":"#007bff","value":"Borrowing"},
+ 'Returned': {"text":"已归还","color":"#28a745","value":"Returned"},
+ 'Overdue': {"text":"已逾期","color":"#dc3545","value":"Overdue"},
+};
+
+// 合同归档文件归还状态枚举
+export const ContractArchiveFileReturnStatusEnum = {
+ 'NotReturned': {"text":"未归还","color":"#6c757d","value":"NotReturned"},
+ 'Intact': {"text":"完好","color":"#28a745","value":"Intact"},
+ 'PartialLost': {"text":"部分遗失","color":"#ffc107","value":"PartialLost"},
+ 'AllLost': {"text":"全部遗失","color":"#dc3545","value":"AllLost"},
+ 'AllDamaged': {"text":"全部损毁","color":"#dc3545","value":"AllDamaged"},
+ 'PartialDamaged': {"text":"部分损毁","color":"#fd7e14","value":"PartialDamaged"},
+ 'NoNeedReturn': {"text":"无需归还","color":"#17a2b8","value":"NoNeedReturn"},
+};
+
+// 合同归档归还状态枚举
+export const ContractArchiveReturnStatusEnum = {
+ 'NotReturned': {"text":"未归还","color":"#6c757d","value":"NotReturned"},
+ 'Returned': {"text":"已归还","color":"#28a745","value":"Returned"},
+};
+
+// ContractArchivesConfidentialityLevelEnum
+export const ContractArchivesConfidentialityLevelEnum = {
+ 'TopSecret': {"text":"绝密","color":"#dc3545","value":"TopSecret"},
+ 'Confidential': {"text":"机密","color":"#fd7e14","value":"Confidential"},
+ 'Secret': {"text":"保密","color":"#ffc107","value":"Secret"},
+ 'Internal': {"text":"内部公开","color":"#17a2b8","value":"Internal"},
+ 'Public': {"text":"公开","color":"#28a745","value":"Public"},
+};
+
+// ContractArchivesFileStatusEnum
+export const ContractArchivesFileStatusEnum = {
+ 'Intact': {"text":"完好","color":"#28a745","value":"Intact"},
+ 'SlightDamage': {"text":"轻度损伤","color":"#ffc107","value":"SlightDamage"},
+ 'ModerateDamage': {"text":"中度损伤","color":"#fd7e14","value":"ModerateDamage"},
+ 'SevereDamage': {"text":"重度损伤","color":"#dc3545","value":"SevereDamage"},
+};
+
+// ContractArchivesFileTypeEnum
+export const ContractArchivesFileTypeEnum = {
+ 'PaperOriginal': {"text":"纸质原件","color":"#007bff","value":"PaperOriginal"},
+ 'ElectronicOriginal': {"text":"电子原件","color":"#28a745","value":"ElectronicOriginal"},
+ 'Copy': {"text":"复印件","color":"#ffc107","value":"Copy"},
+};
+
+// ContractArchivesPeriodTypeEnum
+export const ContractArchivesPeriodTypeEnum = {
+ 'FixedTerm': {"text":"定期","color":"#007bff","value":"FixedTerm"},
+ 'Permanent': {"text":"永久","color":"#28a745","value":"Permanent"},
+};
+
+// ContractBillObjectsAuditStatusEnum
+export const ContractBillObjectsAuditStatusEnum = {
+ 'Pending': {"text":"审批中","color":"#f59e0b","value":"Pending"},
+ 'Approved': {"text":"已通过","color":"#10b981","value":"Approved"},
+ 'Rejected': {"text":"已驳回","color":"#ef4444","value":"Rejected"},
+};
+
+// ContractBillObjectsStatusEnum
+export const ContractBillObjectsStatusEnum = {
+ 'Pending': {"text":"待执行","color":"#6c757d","value":"Pending"},
+ 'InProgress': {"text":"执行中","color":"#007bff","value":"InProgress"},
+ 'Completed': {"text":"已完成","color":"#28a745","value":"Completed"},
+ 'Cancelled': {"text":"已取消","color":"#dc3545","value":"Cancelled"},
+};
+
+// ContractBillPaymentsStatusEnum
+export const ContractBillPaymentsStatusEnum = {
+ 'Pending': {"text":"待审","color":"#faad14","value":"Pending"},
+ 'Approved': {"text":"已审","color":"#52c41a","value":"Approved"},
+ 'Rejected': {"text":"驳回","color":"#f5222d","value":"Rejected"},
+};
+
+// ContractBillsAuditStatusEnum
+export const ContractBillsAuditStatusEnum = {
+ 'NotApplied': {"text":"未申请","color":"#9ca3af","value":"NotApplied"},
+ 'Pending': {"text":"审批中","color":"#f59e0b","value":"Pending"},
+ 'Approved': {"text":"已通过","color":"#10b981","value":"Approved"},
+ 'Rejected': {"text":"已驳回","color":"#ef4444","value":"Rejected"},
+};
+
+// ContractBillsCostTypeEnum
+export const ContractBillsCostTypeEnum = {
+ 'Income': {"text":"收入","color":"#52c41a","value":"Income"},
+ 'Expense': {"text":"支出","color":"#f5222d","value":"Expense"},
+};
+
+// ContractBillsIncomeExpenseTypeEnum
+export const ContractBillsIncomeExpenseTypeEnum = {
+ 'Increase': {"text":"增加","color":"#10b981","value":"Increase"},
+ 'Decrease': {"text":"减少","color":"#ef4444","value":"Decrease"},
+ 'Neutral': {"text":"不变","color":"#9ca3af","value":"Neutral"},
+};
+
+// ContractOthersStatusEnum
+export const ContractOthersStatusEnum = {
+ 'Pending': {"text":"审批中","color":"#f59e0b","value":"Pending"},
+ 'Approved': {"text":"已通过","color":"#10b981","value":"Approved"},
+ 'Rejected': {"text":"已驳回","color":"#ef4444","value":"Rejected"},
+};
+
+// ContractPeoplesSignPartyEnum
+export const ContractPeoplesSignPartyEnum = {
+ 'PartyA': {"text":"甲方","color":"#007bff","value":"PartyA"},
+ 'PartyB': {"text":"乙方","color":"#28a745","value":"PartyB"},
+ 'PartyC': {"text":"丙方","color":"#ffc107","value":"PartyC"},
+ 'PartyD': {"text":"丁方","color":"#dc3545","value":"PartyD"},
+};
+
+// ContractTemplatesIncomeExpenseTypeEnum
+export const ContractTemplatesIncomeExpenseTypeEnum = {
+ 'Income': {"text":"收入类","color":"#32cd32","value":"Income"},
+ 'Expense': {"text":"支出类","color":"#ff4500","value":"Expense"},
+ 'None': {"text":"无收无支","color":"#808080","value":"None"},
+};
+
+// ContractTemplatesSourceEnum
+export const ContractTemplatesSourceEnum = {
+ 'Internal': {"text":"内部","color":"#1e90ff","value":"Internal"},
+ 'External': {"text":"外部","color":"#32cd32","value":"External"},
+};
+
+// ContractsContractNatureEnum
+export const ContractsContractNatureEnum = {
+ 'RegularContract': {"text":"常规合同","color":"#007bff","value":"RegularContract"},
+ 'FrameworkAgreement': {"text":"框架协议","color":"#28a745","value":"FrameworkAgreement"},
+ 'Other': {"text":"其它","color":"#28a745","value":"Other"},
+};
+
+// ContractsSettlementModeEnum
+export const ContractsSettlementModeEnum = {
+ 'LumpSumContract': {"text":"总价合同","color":"#007bff","value":"LumpSumContract"},
+ 'OpenContract': {"text":"开口合同","color":"#28a745","value":"OpenContract"},
+};
+
+// ContractsStatusEnum
+export const ContractsStatusEnum = {
+ 'TemporaryStorage': {"text":"暂存","color":"#6c757d","value":"TemporaryStorage"},
+ 'UnderApproval': {"text":"审核中","color":"#007bff","value":"UnderApproval"},
+ 'Approved': {"text":"已通过","color":"#28a745","value":"Approved"},
+ 'Rejected': {"text":"已退回","color":"#dc3545","value":"Rejected"},
+ 'Signed': {"text":"已签约","color":"#17a2b8","value":"Signed"},
+ 'Archived': {"text":"已归档","color":"#20c997","value":"Archived"},
+ 'Terminating': {"text":"解除中","color":"#ffc107","value":"Terminating"},
+ 'Terminated': {"text":"已解除","color":"#fd7e14","value":"Terminated"},
+ 'Closed': {"text":"已终止","color":"#343a40","value":"Closed"},
+ 'Voided': {"text":"已撤销","color":"#6610f2","value":"Voided"},
+ 'Cancelled': {"text":"已取消","color":"#e83e8c","value":"Cancelled"},
};
// ConvenienceServicesTypeEnum
@@ -381,6 +626,69 @@ export const CustomerOpinionsTypeEnum = {
'FeatureSuggestion': {"text":"新功能建议","color":"#00bfff","value":"FeatureSuggestion"},
};
+// 突发事件账单收支类型
+export const EmergencyEventBillsCostTypeEnum = {
+ 'Income': {"text":"收入","color":"#4caf50","value":"Income"},
+ 'Expense': {"text":"支出","color":"#f44336","value":"Expense"},
+};
+
+// 突发事件账单费用类型
+export const EmergencyEventBillsFeeTypeEnum = {
+ 'Compensation': {"text":"赔偿","color":"#f44336","value":"Compensation"},
+ 'Penalty': {"text":"罚款","color":"#ff9800","value":"Penalty"},
+};
+
+// 突发事件账单支付方式
+export const EmergencyEventBillsPaymentMethodEnum = {
+ 'WeChat': {"text":"微信支付","color":"#07c160","value":"WeChat"},
+ 'Alipay': {"text":"支付宝","color":"#1677ff","value":"Alipay"},
+ 'BankTransfer': {"text":"银行转账","color":"#2196f3","value":"BankTransfer"},
+ 'TongLian': {"text":"通联支付","color":"#ff9800","value":"TongLian"},
+ 'Prepayment': {"text":"预付款","color":"#9c27b0","value":"Prepayment"},
+ 'POS': {"text":"POS机","color":"#607d8b","value":"POS"},
+ 'Cash': {"text":"现金","color":"#4caf50","value":"Cash"},
+};
+
+// 突发事件账单支付状态
+export const EmergencyEventBillsPaymentStatusEnum = {
+ 'Pending': {"text":"待支付","color":"#ff9800","value":"Pending"},
+ 'ToBeConfirmed': {"text":"待确认","color":"#2196f3","value":"ToBeConfirmed"},
+ 'Paid': {"text":"已支付","color":"#4caf50","value":"Paid"},
+ 'Refunded': {"text":"已退款","color":"#9c27b0","value":"Refunded"},
+ 'Cancelled': {"text":"已取消","color":"#9e9e9e","value":"Cancelled"},
+ 'Failed': {"text":"支付失败","color":"#f44336","value":"Failed"},
+};
+
+// 突发事件审核状态
+export const EmergencyEventsAuditStatusEnum = {
+ 'Pending': {"text":"待审","color":"#ff9800","value":"Pending"},
+ 'Approved': {"text":"通过","color":"#4caf50","value":"Approved"},
+ 'Rejected': {"text":"驳回","color":"#f44336","value":"Rejected"},
+};
+
+// 突发事件赔偿类型
+export const EmergencyEventsCompensationTypeEnum = {
+ 'Ours': {"text":"我方","color":"#2196f3","value":"Ours"},
+ 'Others': {"text":"他方","color":"#9c27b0","value":"Others"},
+};
+
+// 突发事件状态
+export const EmergencyEventsStatusEnum = {
+ 'PendingFollowUp': {"text":"待跟进","color":"#ff9800","value":"PendingFollowUp"},
+ 'InProgress': {"text":"跟进中","color":"#2196f3","value":"InProgress"},
+ 'PendingReview': {"text":"待审核","color":"#9c27b0","value":"PendingReview"},
+ 'Closed': {"text":"已关闭","color":"#9e9e9e","value":"Closed"},
+};
+
+// 突发事件行动组成员职位
+export const EmergencyTeamMembersPositionEnum = {
+ 'Leader': {"text":"应急组长","color":"#f44336","value":"Leader"},
+ 'Member': {"text":"现场处置员","color":"#2196f3","value":"Member"},
+ 'Liaison': {"text":"信息联络员","color":"#ffeb3b","value":"Liaison"},
+ 'Support': {"text":"后勤保障员","color":"#4caf50","value":"Support"},
+ 'Reserve': {"text":"机动预备员","color":"#9c27b0","value":"Reserve"},
+};
+
// 物品放行审核状态
export const GoodsReleasesAuditStatusEnum = {
'Pending': {"text":"待审核","color":"#faad14","value":"Pending"},
@@ -411,6 +719,7 @@ export const HouseBillsBillStatusEnum = {
'PartiallyPaid': {"text":"部分收款","color":"#60a5fa","value":"PartiallyPaid"},
'Paid': {"text":"已收款","color":"#10b981","value":"Paid"},
'Overdue': {"text":"已逾期","color":"#ef4444","value":"Overdue"},
+ 'UnderApproval': {"text":"审批中","color":"#8b5cf6","value":"UnderApproval"},
'Cancelled': {"text":"已取消","color":"#9ca3af","value":"Cancelled"},
};
@@ -643,6 +952,7 @@ export const HouseOrdersPaymentMethodEnum = {
'Prepayment': {"text":"预缴支付","color":"#f59e0b","value":"Prepayment"},
'POS': {"text":"POS机","color":"#8b5cf6","value":"POS"},
'Cash': {"text":"现金","color":"#dc2626","value":"Cash"},
+ 'CCB': {"text":"建行惠市宝","color":"#003da5","value":"CCB"},
};
// HousePrepaymentLogsTypeEnum
@@ -691,6 +1001,8 @@ export const HouseRegistersTypeEnum = {
'UpdateInfo': {"text":"修改信息","color":"#722ed1","value":"UpdateInfo"},
'UpdatePhone': {"text":"修改电话","color":"#13c2c2","value":"UpdatePhone"},
'GoodsRelease': {"text":"物品放行","color":"#a0d911","value":"GoodsRelease"},
+ 'VisitorApplies': {"text":"来访申请","color":"#a0d911","value":"VisitorApplies"},
+ 'Transfer': {"text":"过户","color":"#1890ff","value":"Transfer"},
};
// HouseRegistersUsagePlanEnum
@@ -760,6 +1072,16 @@ export const HouseWorkOrdersTypeEnum = {
'Repair': {"text":"报修","color":"#ff0000","value":"Repair"},
'Incident': {"text":"报事","color":"#00aaff","value":"Incident"},
'Complaint': {"text":"投诉","color":"#aa00ff","value":"Complaint"},
+ 'QualityCheck': {"text":"品质检查","color":"#16a085","value":"QualityCheck"},
+ 'RenovationInspection': {"text":"装修巡检","color":"#8e44ad","value":"RenovationInspection"},
+ 'RenovationAcceptance': {"text":"装修验收","color":"#2980b9","value":"RenovationAcceptance"},
+ 'SecurityInspection': {"text":"安全巡检","color":"#e67e22","value":"SecurityInspection"},
+};
+
+// 公告阅读者类型
+export const MsgPropertyAnnouncementReadsReaderTypeEnum = {
+ 'Customer': {"text":"客户","color":"#3b82f6","value":"Customer"},
+ 'Employee': {"text":"员工","color":"#10b981","value":"Employee"},
};
// 公告接收对象
@@ -782,6 +1104,47 @@ export const OrganizationsTypeEnum = {
'Department': {"text":"部门","color":"#dc3545","value":"Department"},
};
+// 巡逻路线生成方式
+export const PatrolRoutesGenerationMethodEnum = {
+ 'Daily': {"text":"按天","color":"#007bff","value":"Daily"},
+ 'Weekly': {"text":"按周","color":"#28a745","value":"Weekly"},
+ 'Monthly': {"text":"按月","color":"#ffc107","value":"Monthly"},
+};
+
+// 巡逻任务地点状态
+export const PatrolTaskLocationsStatusEnum = {
+ 'Incomplete': {"text":"未完成","color":"#ff9800","value":"Incomplete"},
+ 'Completed': {"text":"已完成","color":"#4caf50","value":"Completed"},
+};
+
+// 巡逻任务创建方式
+export const PatrolTasksCreateTypeEnum = {
+ 'Auto': {"text":"定时生成","color":"#2196f3","value":"Auto"},
+ 'Manual': {"text":"手动创建","color":"#4caf50","value":"Manual"},
+};
+
+// 巡逻任务状态
+export const PatrolTasksStatusEnum = {
+ 'Unassigned': {"text":"未分配","color":"#9e9e9e","value":"Unassigned"},
+ 'Pending': {"text":"待执行","color":"#ff9800","value":"Pending"},
+ 'InProgress': {"text":"进行中","color":"#2196f3","value":"InProgress"},
+ 'Completed': {"text":"已完成","color":"#4caf50","value":"Completed"},
+ 'Canceled': {"text":"已取消","color":"#f44336","value":"Canceled"},
+ 'Overdue': {"text":"已超期","color":"#e91e63","value":"Overdue"},
+};
+
+// PayTypeEnum
+export const PayTypeEnum = {
+ 'WeChat': {"text":"微信","color":"#07c160","value":"WeChat"},
+ 'Alipay': {"text":"支付宝","color":"#1677ff","value":"Alipay"},
+};
+
+// 题目类型枚举
+export const QuestionsTypeEnum = {
+ 'Score': {"text":"评分题","color":"#4caf50","value":"Score"},
+ 'Fill': {"text":"填空题","color":"#2196f3","value":"Fill"},
+};
+
// 退款状态枚举
export const RefundsStatusEnum = {
'Pending': {"text":"待审批","color":"#ff9800","value":"Pending"},
@@ -806,17 +1169,121 @@ export const RefundsTypeEnum = {
'Other': {"text":"其他退款","color":"#607d8b","value":"Other"},
};
+// 装修验收状态
+export const RenovationAppliesAcceptanceStatusEnum = {
+ 'PendingAcceptance': {"text":"待验收","color":"#f1c40f","value":"PendingAcceptance"},
+ 'Accepted': {"text":"验收合格","color":"#2ecc71","value":"Accepted"},
+ 'Rejected': {"text":"验收不合格","color":"#e74c3c","value":"Rejected"},
+ 'Cancelled': {"text":"已取消","color":"#95a5a6","value":"Cancelled"},
+};
+
+// 装修施工状态
+export const RenovationAppliesConstructionStatusEnum = {
+ 'PendingConstruction': {"text":"待施工","color":"#f1c40f","value":"PendingConstruction"},
+ 'NormalConstruction': {"text":"正常施工","color":"#2ecc71","value":"NormalConstruction"},
+ 'StoppedConstruction': {"text":"已停工","color":"#e74c3c","value":"StoppedConstruction"},
+ 'CompletedConstruction': {"text":"已竣工","color":"#3498db","value":"CompletedConstruction"},
+};
+
+// 装修办理类型
+export const RenovationAppliesProcessTypeEnum = {
+ 'OwnerProcess': {"text":"业主办理","color":"#3498db","value":"OwnerProcess"},
+ 'AgentProcess': {"text":"代理人办理","color":"#9b59b6","value":"AgentProcess"},
+};
+
+// 装修内容
+export const RenovationAppliesRenovationContentEnum = {
+ 'PartialRenovation': {"text":"局部装修","color":"#f39c12","value":"PartialRenovation"},
+ 'FullHouseRenovation': {"text":"全屋装修","color":"#2ecc71","value":"FullHouseRenovation"},
+ 'PartialRefurbishment': {"text":"部分翻新","color":"#3498db","value":"PartialRefurbishment"},
+};
+
+// 装修申请状态
+export const RenovationAppliesStatusEnum = {
+ 'Draft': {"text":"暂存","color":"#f39c12","value":"Draft"},
+ 'Pending': {"text":"审核中","color":"#faad14","value":"Pending"},
+ 'Approved': {"text":"已完成","color":"#52c41a","value":"Approved"},
+ 'Rejected': {"text":"驳回","color":"#f5222d","value":"Rejected"},
+ 'Cancelled': {"text":"作废","color":"#9b59b6","value":"Cancelled"},
+};
+
+// 装修类型
+export const RenovationAppliesTypeEnum = {
+ 'SelfRenovation': {"text":"自装","color":"#1abc9c","value":"SelfRenovation"},
+ 'RenovationCompany': {"text":"装修公司","color":"#e67e22","value":"RenovationCompany"},
+};
+
+// ResourceOrdersPaymentStatusEnum
+export const ResourceOrdersPaymentStatusEnum = {
+ 'Unpaid': {"text":"未支付","color":"#f59e0b","value":"Unpaid"},
+ 'Paid': {"text":"已支付","color":"#10b981","value":"Paid"},
+ 'Refunded': {"text":"已退款","color":"#3b82f6","value":"Refunded"},
+};
+
+// ResourceOrdersStatusEnum
+export const ResourceOrdersStatusEnum = {
+ 'Locked': {"text":"已锁定","color":"#8b5cf6","value":"Locked"},
+ 'Reserved': {"text":"已预约","color":"#3b82f6","value":"Reserved"},
+ 'Used': {"text":"已使用","color":"#10b981","value":"Used"},
+ 'Overed': {"text":"已结束","color":"#fca5a5","value":"Overed"},
+ 'Refunding': {"text":"退订中","color":"#f59e0b","value":"Refunding"},
+ 'Refunded': {"text":"已退订","color":"#ef4444","value":"Refunded"},
+ 'Closed': {"text":"已关闭","color":"#6b7280","value":"Closed"},
+};
+
+// ResourceTypesTypeEnum
+export const ResourceTypesCategoryEnum = {
+ 'Advertising': {"text":"广告","color":"#ff9800","value":"Advertising"},
+ 'Venue': {"text":"场地","color":"#4caf50","value":"Venue"},
+};
+
+// ResourcesChannelEnum
+export const ResourcesChannelEnum = {
+ 'Consumer': {"text":"ToC","color":"#3b82f6","value":"Consumer"},
+ 'Business': {"text":"ToB","color":"#10b981","value":"Business"},
+};
+
+// ResourcesOpenDaysEnum
+export const ResourcesOpenDaysEnum = {
+ 'Monday': {"text":"星期一","color":"#3b82f6","value":"Monday"},
+ 'Tuesday': {"text":"星期二","color":"#3b82f6","value":"Tuesday"},
+ 'Wednesday': {"text":"星期三","color":"#3b82f6","value":"Wednesday"},
+ 'Thursday': {"text":"星期四","color":"#3b82f6","value":"Thursday"},
+ 'Friday': {"text":"星期五","color":"#3b82f6","value":"Friday"},
+ 'Saturday': {"text":"星期六","color":"#10b981","value":"Saturday"},
+ 'Sunday': {"text":"星期日","color":"#ef4444","value":"Sunday"},
+};
+
+// ResourcesReservationRuleEnum
+export const ResourcesReservationRuleEnum = {
+ 'ByDay': {"text":"按天","color":"#3b82f6","value":"ByDay"},
+ 'BySession': {"text":"按场次","color":"#10b981","value":"BySession"},
+};
+
+// ResourcesReservationStatusEnum
+export const ResourcesReservationStatusEnum = {
+ 'Fully': {"text":"全部预约","color":"#4caf50","value":"Fully"},
+ 'Partially': {"text":"部分预约","color":"#ff9800","value":"Partially"},
+ 'Not': {"text":"无预约","color":"#f44336","value":"Not"},
+};
+
// 性别
export const SexEnum = {
'Male': {"text":"男","color":"#0000ff","value":"Male"},
'FeMale': {"text":"女","color":"#ff0000","value":"FeMale"},
};
+// 问卷发布方式枚举
+export const SurveyReleasesTypeEnum = {
+ 'Manual': {"text":"手动发布","color":"#4caf50","value":"Manual"},
+ 'Timing': {"text":"定时发布","color":"#2196f3","value":"Timing"},
+};
+
// SysModuleEnum
export const SysModuleEnum = {
'Admin': {"text":"管理员","color":"#cf1322","value":"Admin"},
- 'Customer': {"text":"客户","color":"#d4b106","value":"Customer"},
'Company': {"text":"机构","color":"#1890ff","value":"Company"},
+ 'Employee': {"text":"员工","color":"#1890ff","value":"Employee"},
};
// SysPermissionsTypeEnum
@@ -824,6 +1291,8 @@ export const SysPermissionsTypeEnum = {
'Directory': {"text":"目录","color":"#6d7e14","value":"Directory"},
'Page': {"text":"页面","color":"#4d9a13","value":"Page"},
'Button': {"text":"按钮","color":"#97224f","value":"Button"},
+ 'QuickAction': {"text":"金刚区","color":"#2563eb","value":"QuickAction"},
+ 'Module': {"text":"模块","color":"#0d9488","value":"Module"},
};
// 来访事由
diff --git a/src/manifest.json b/src/manifest.json
index 01f9585..f8b39d4 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -54,7 +54,13 @@
"setting": {
"urlCheck": false
},
- "usingComponents": true
+ "permission": {
+ "scope.userLocation": {
+ "desc": "获取用户位置信息"
+ }
+ },
+ "usingComponents": true,
+ "requiredPrivateInfos": ["getLocation", "chooseLocation"]
},
"mp-alipay": {
"usingComponents": true
diff --git a/src/pages.json b/src/pages.json
index 0bcba19..23ad652 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -110,6 +110,12 @@
"navigationBarTitleText": "意见反馈"
}
},
+ {
+ "path": "surveys/index",
+ "style": {
+ "navigationBarTitleText": "问卷调查"
+ }
+ },
{
"path": "activities_show/index",
"style": {
@@ -165,6 +171,42 @@
"navigationBarTitleText": "车辆管理"
}
},
+ {
+ "path": "decoration/list/index",
+ "style": {
+ "navigationBarTitleText": "装修登记"
+ }
+ },
+ {
+ "path": "decoration/add/index",
+ "style": {
+ "navigationBarTitleText": "装修登记"
+ }
+ },
+ {
+ "path": "decoration/update/index",
+ "style": {
+ "navigationBarTitleText": "装修登记"
+ }
+ },
+ {
+ "path": "decoration/show/index",
+ "style": {
+ "navigationBarTitleText": "登记详情"
+ }
+ },
+ {
+ "path": "decoration/add_worker/index",
+ "style": {
+ "navigationBarTitleText": "添加装修工人"
+ }
+ },
+ {
+ "path": "decoration/decoration_share/index",
+ "style": {
+ "navigationBarTitleText": "装修登记"
+ }
+ },
{
"path": "vehicle_management/add/index",
"style": {
@@ -248,6 +290,11 @@
"style": {
"navigationBarTitleText": "入住登记"
}
+ },{
+ "path": "address_city/index",
+ "style": {
+ "navigationBarTitleText": "选择城市"
+ }
},
{
"path": "binding/success",
diff --git a/src/pages/ai/chat.vue b/src/pages/ai/chat.vue
index 8299eb2..a3030c0 100644
--- a/src/pages/ai/chat.vue
+++ b/src/pages/ai/chat.vue
@@ -5,7 +5,7 @@
-
+
{{ i?.label }}
-
-
-
-
-
-
- {{ question }}
-
-
-
-
+
否
+
+
+
+
+
+
+
+ {{ question }}
+
+
+
+
+
{
const hasImages = useModel?.selectedImages?.value?.length > 0
if ((!message && !hasImages) || loading.value) return
-
const userPhone = auth.data?.user?.phone
const projectId = auth.data?.selected_house?.asset_projects_id
const projectName = auth.data?.selected_house?.full_name
-
- if (!userPhone || !projectId) {
+ if (!userPhone) {
uni.showToast({
- title: '请先登录并绑定房屋',
+ title: '请先登录!',
+ icon: 'none'
+ })
+ return
+ }
+
+ if (!projectId) {
+ uni.showToast({
+ title: '请绑定房屋!',
icon: 'none'
})
return
@@ -1096,16 +1105,16 @@ onUnmounted(() => {
})
-// 监听页面滚动
-onPageScroll((e) => {
- if( e.scrollTop > useModel.scrollTopNumber.value){
- useModel.scrollTopNumber.value = e.scrollTop
- return
- }
- if ( useModel.scrollTopNumber.value - e.scrollTop > 60 && !showOpeningRemarks.value) {
- showOpeningRemarks.value = true
- }
-})
+// // 监听页面滚动
+// onPageScroll((e) => {
+// if( e.scrollTop > useModel.scrollTopNumber.value){
+// useModel.scrollTopNumber.value = e.scrollTop
+// return
+// }
+// if ( useModel.scrollTopNumber.value - e.scrollTop > 60 && !showOpeningRemarks.value) {
+// showOpeningRemarks.value = true
+// }
+// })
onShow(() =>{
showOpeningRemarks.value = false
@@ -1116,7 +1125,7 @@ onLoad(async op => {
await getCurrentInstance()?.appContext.config.globalProperties.$onLaunched
if (getLoginStatus?.getLoginStatus()) {
userLoginStatus.value = true
- quickQuestionsData.value = await method?.getQuickQuestions()
+ useModel.quickQuestionsData.value = await method?.getQuickQuestions()
// 获取历史记录(如果有历史记录,会在接口返回成功后自动在最前方插入开场白)
getHistoryMessages(1)
if (op?.message) {
diff --git a/src/pages/ai/index.vue b/src/pages/ai/index.vue
index 2417879..d2369f9 100644
--- a/src/pages/ai/index.vue
+++ b/src/pages/ai/index.vue
@@ -6,7 +6,7 @@
-
+
{{ i?.label }}
-
-
-
- {{ question }}
-
-
-
-
+
否
+
+
+
+
+
+
+ {{ question }}
+
+
+
+
{
}
// 监听页面滚动
-onPageScroll((e) => {
- if( e.scrollTop > useModel.scrollTopNumber.value){
- useModel.scrollTopNumber.value = e.scrollTop
- return
- }
- if ( useModel.scrollTopNumber.value - e.scrollTop > 60 && !showOpeningRemarks.value) {
- showOpeningRemarks.value = true
- }
-})
+// onPageScroll((e) => {
+// if( e.scrollTop > useModel.scrollTopNumber.value){
+// useModel.scrollTopNumber.value = e.scrollTop
+// return
+// }
+// if ( useModel.scrollTopNumber.value - e.scrollTop > 60 && !showOpeningRemarks.value) {
+// showOpeningRemarks.value = true
+// }
+// })
// 时间格式化函数
@@ -920,9 +924,16 @@ const handleSendMessage = async () => {
const projectId = auth.data?.selected_house?.asset_projects_id
const projectName = auth.data?.selected_house?.full_name
- if (!userPhone || !projectId) {
+ if (!userPhone) {
uni.showToast({
- title: '请先登录并绑定房屋',
+ title: '请先登录!',
+ icon: 'none'
+ })
+ return
+ }
+ if (!projectId) {
+ uni.showToast({
+ title: '请绑定房屋!',
icon: 'none'
})
return
diff --git a/src/pages/ai/model.ts b/src/pages/ai/model.ts
index 68eb108..74679bf 100644
--- a/src/pages/ai/model.ts
+++ b/src/pages/ai/model.ts
@@ -3,10 +3,10 @@ export default {
selectedImages: ref([]), // 选中的图片
quickQuestionsData: ref({}),
scrollTopNumber: ref(0),
- API_BASE_URL: 'http://10.39.13.78:8000', //dev环境
- WS_BASE_URL: 'wss://10.39.13.78:8000' //dev环境
+ // API_BASE_URL: 'http://10.39.13.78:8000', //dev环境
+ // WS_BASE_URL: 'wss://10.39.13.78:8000' //dev环境
// API_BASE_URL: 'https://kf-api-test.linyikj.com.cn', //测试环境
// WS_BASE_URL: 'wss://kf-api-test.linyikj.com.cn' //测试环境
- // API_BASE_URL: 'https://kf-api.linyikj.com.cn', //正式环境
- // WS_BASE_URL: 'wss://kf-api.linyikj.com.cn' //正式环境
+ API_BASE_URL: 'https://kf-api.linyikj.com.cn', //正式环境
+ WS_BASE_URL: 'wss://kf-api.linyikj.com.cn' //正式环境
}
\ No newline at end of file
diff --git a/src/pages/ai/style.scss b/src/pages/ai/style.scss
index a518913..d756e84 100644
--- a/src/pages/ai/style.scss
+++ b/src/pages/ai/style.scss
@@ -246,48 +246,6 @@
-
-.confirmation-buttons {
- margin-top: 16rpx;
- display: flex;
- gap: 16rpx;
- justify-content: flex-start;
- padding-left: 12rpx;
-}
-
-.confirmation-btn {
- width: 38rpx;
- border-radius: 10rpx;
- padding: 16rpx 22rpx;
- font-size: 24rpx;
- line-height: 1.4;
- text-align: center;
- transition: all 0.2s ease;
- background-color: #fff;
- color: #000;
- border: 1px solid #e5e5e5;
-
- &:active:not(.disabled) {
- transform: scale(0.98);
- }
-
- &.selected {
- background-color: #1c64f2;
- color: #fff;
- border-color: #1c64f2;
- }
-
- &.disabled {
- opacity: 0.6;
- cursor: not-allowed;
- }
-
- text {
- display: block;
- font-weight: 500;
- }
-}
-
.chat-input-area {
position: fixed;
bottom: 0;
@@ -616,3 +574,49 @@
margin-bottom: 0rpx;
}
}
+
+
+
+.message-content .confirmation-buttons {
+ margin-top: 16rpx;
+ display: flex;
+ align-items: center;
+}
+
+.message-content .confirmation-btn {
+ width: 100%;
+ border-radius: 10rpx;
+ padding: 14rpx 20rpx;
+ font-size: 24rpx;
+ line-height: 1.4;
+ text-align: center;
+ transition: all 0.2s ease;
+ background-color: #fff;
+ color: #000;
+ border: 1px solid #e5e5e5;
+ margin-bottom: 0 !important;
+ margin-right: 30rpx;
+ &:active:not(.disabled) {
+ transform: scale(0.98);
+ }
+
+ &.selected {
+ background-color: #1c64f2;
+ color: #fff;
+ border-color: #1c64f2;
+ }
+
+ &.disabled {
+ opacity: 0.6;
+ cursor: not-allowed;
+ }
+
+ text {
+ display: block;
+ font-weight: 500;
+ }
+ &:last-child {
+ margin-right: 0 !important;
+ }
+}
+
diff --git a/src/pages/index/components/Classification.vue b/src/pages/index/components/Classification.vue
index 2caca8c..24e9c64 100644
--- a/src/pages/index/components/Classification.vue
+++ b/src/pages/index/components/Classification.vue
@@ -15,7 +15,7 @@
-
+