opendd.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. <template>
  2. <view class="content">
  3. <view class="jg"></view>
  4. <view class="tab">
  5. <view class="tab-item flex">
  6. <view class="item-name">机构名称</view>
  7. <input type="text" placeholder="请输入机构全称" class="item-val" v-model="organ_name">
  8. </view>
  9. <view class="tab-item flex" @tap="showPicker('region')">
  10. <text class="item-name">所在地区</text>
  11. <input class="input item-val" @focus='outFocus' v-model="addr" placeholder="请选择省市区"></input>
  12. </view>
  13. <w-picker mode="region" :value="defaultRegion" default-type="value" @confirm="onConfirm($event,'region')"
  14. @cancel="handleCancel" ref="region"></w-picker>
  15. <view class="tab-item flex">
  16. <view class="item-name">通知范围</view>
  17. <input type="text" placeholder="请选择通知范围" class="item-val" v-model="fbfw" @click="handleTap2('picker5')"
  18. disabled>
  19. <lb-picker ref="picker5" mode="selector" :list="fbfwList" @change="handleChange5" @touchmove.prevent
  20. @confirm="handleConfirm5" @cancel="handleCancel">
  21. </lb-picker>
  22. </view>
  23. <!-- <view class="tab-item flex">
  24. <view class="item-name">所在地区</view>
  25. <pickerAddress class="item-val" @change="onCityClick">{{addressDetail || '请选择地址'}}</pickerAddress>
  26. </view> -->
  27. <view class="tab-item flex">
  28. <view class="item-name">服务日期</view>
  29. <picker mode="date" @change="bindDateChange">
  30. <input type="text" placeholder="请输入服务日期" class="item-val" v-model="fwData">
  31. </picker>
  32. </view>
  33. <view class="tab-item flex">
  34. <view class="item-name">服务时间</view>
  35. <!-- <input type="text" placeholder="请输入服务时间" class="item-val" v-model="time_area"> -->
  36. <picker mode="time" @change="bindfwtimeChange">
  37. <input type="text" placeholder="请输入服务时间" class="item-val" v-model="fwtime">
  38. </picker>
  39. </view>
  40. <view class="tab-item flex">
  41. <view class="item-name">职称(以上)</view>
  42. <input type="text" placeholder="请选择职称" class="item-val" v-model="doctor_level"
  43. @click="handleTap2('picker3')" disabled>
  44. <lb-picker ref="picker3" mode="selector" :list="levelList" @change="handleChange2" @touchmove.prevent
  45. @confirm="handleConfirm2" @cancel="handleCancel">
  46. </lb-picker>
  47. </view>
  48. <view class="tab-item flex">
  49. <view class="item-name">专业</view>
  50. <input type="text" placeholder="请选择专业" class="item-val" v-model="zyname" @click="handleTap2('picker4')"
  51. disabled>
  52. <lb-picker ref="picker4" mode="selector" :list="zyList" @change="handleChange3" @touchmove.prevent
  53. @confirm="handleConfirm3" @cancel="handleCancel">
  54. </lb-picker>
  55. </view>
  56. <view class="tab-item flex">
  57. <view class="item-name">劳务费用</view>
  58. <input type="number" placeholder="请输入劳务费用" class="item-val" v-model="brokerage">
  59. </view>
  60. <view class="tab-item flex">
  61. <view class="item-name">设备说明标签</view>
  62. <input type="text" placeholder="标签请以逗号间隔" class="item-val" v-model="tags">
  63. </view>
  64. <view class="tab-item flex">
  65. <view class="item-name">要求</view>
  66. <textarea type="text" placeholder="请输入要求" class="item-val" v-model="content">></textarea>
  67. </view>
  68. </view>
  69. <view class="sub" @click="sub">
  70. 确认发布
  71. </view>
  72. </view>
  73. </template>
  74. <script>
  75. import {
  76. mapState,
  77. mapMutations
  78. } from 'vuex';
  79. import wPicker from "@/components/w-picker/w-picker.vue"
  80. import pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue';
  81. import zhilinPicker from "@/components/zhilin-picker/zhilin-picker.vue"
  82. import LbPicker from '@/components/lb-picker/index.vue'
  83. import {
  84. getDocterTypeList
  85. } from '@/api/doctor.js'
  86. import {
  87. ddsub
  88. } from '@/api/dd.js'
  89. export default {
  90. components: {
  91. pickerAddress,
  92. zhilinPicker,
  93. LbPicker,
  94. wPicker
  95. },
  96. data() {
  97. return {
  98. fwtime: '',
  99. fwData: '',
  100. defaultRegion: [],
  101. addr: '',
  102. fbfwList: [{
  103. id: 1,
  104. name: '全国'
  105. }, {
  106. id: 2,
  107. name: '省级'
  108. }, {
  109. id: 3,
  110. name: '市级'
  111. },
  112. {
  113. id: 4,
  114. name: '区级'
  115. }
  116. ],
  117. fbfw: '',
  118. fbfwid: '',
  119. zyname: '',
  120. zyid: '',
  121. level_id: 0,
  122. load: false,
  123. organ_name: '',
  124. addressDetail: '',
  125. province: '',
  126. province_id: '',
  127. city: '',
  128. city_id: '',
  129. district: '',
  130. district_id: '',
  131. time_area: '',
  132. doctor_level: '', //需求的医生职称
  133. tags: '',
  134. brokerage: '', // 报酬
  135. content: '',
  136. levelList: [{
  137. id: 1,
  138. name: '初级'
  139. }, {
  140. id: 2,
  141. name: '中级'
  142. }, {
  143. id: 3,
  144. name: '副高级'
  145. }, {
  146. id: 4,
  147. name: '正高级'
  148. }],
  149. zyList: [],
  150. }
  151. },
  152. onLoad() {
  153. this.load = false
  154. this.getDocterTypeList()
  155. this.organ_name = this.userInfo.ext_info.name
  156. this.province = this.userInfo.ext_info.province
  157. this.province_id = this.userInfo.ext_info.province_id
  158. this.city = this.userInfo.ext_info.city
  159. this.city_id = this.userInfo.ext_info.city_id
  160. this.district = this.userInfo.ext_info.district
  161. this.district_id = this.userInfo.ext_info.district_id
  162. this.addr = this.province + this.city + this.district
  163. },
  164. onShow() {
  165. console.log(this.userInfo,'userInfo')
  166. },
  167. computed: {
  168. ...mapState(['hasLogin', 'userInfo'])
  169. },
  170. methods: {
  171. bindDateChange(e) {
  172. console.log(e)
  173. this.fwData = e.detail.value
  174. },
  175. bindfwtimeChange(e) {
  176. console.log(e)
  177. this.fwtime = e.detail.value
  178. },
  179. outFocus(e) {
  180. console.log(event.target)
  181. event.target.blur()
  182. },
  183. //省市区选择确定
  184. onConfirm(res, type) {
  185. let obj = this;
  186. obj.result = res;
  187. obj.addr = res.result;
  188. if (res.name) {
  189. obj.province = res.name[0];
  190. obj.city = res.name[1];
  191. obj.district = res.name[2];
  192. } else {
  193. obj.province = '北京市';
  194. obj.city = '北京市';
  195. obj.district = '东城区';
  196. }
  197. obj.province_id = res.value[0];
  198. obj.city_id = res.value[1];
  199. obj.district_id = res.value[2];
  200. console.log(obj.province_id, obj.city_id, obj.district_id)
  201. // obj.hospital = '';//重置医院
  202. },
  203. //省市区弹窗
  204. showPicker(type) {
  205. this.$refs[type].show();
  206. },
  207. handleConfirm5(item) {
  208. let obj = this;
  209. obj.fbfwid = item.item.id
  210. obj.fbfw = item.item.name
  211. console.log(item)
  212. },
  213. handleChange5(item) {
  214. },
  215. getDocterTypeList() {
  216. getDocterTypeList().then(res => {
  217. console.log(res)
  218. this.zyList = res.data.data.map(item => {
  219. item.name = item.text
  220. return item
  221. })
  222. console.log(this.zyList, 'this.zyList')
  223. })
  224. },
  225. //职称选择
  226. handleTap2(name) {
  227. this.$refs[name].show()
  228. },
  229. handleChange3() {
  230. },
  231. handleConfirm3(item) {
  232. let obj = this;
  233. obj.zyid = item.item.id
  234. obj.zyname = item.item.name
  235. console.log(item)
  236. },
  237. //职称选择
  238. handleChange2(item) {},
  239. //职称选择
  240. handleConfirm2(item) {
  241. let obj = this;
  242. obj.doctor_level = item.item.name;
  243. obj.level_id = item.item.id;
  244. console.log(obj.doctor_level, obj.level_id)
  245. },
  246. // 选中城市切换
  247. onCityClick({
  248. data
  249. }) {
  250. console.log(data, 'data')
  251. // let address = this.addressData.address;
  252. // address.province = data[0];
  253. // address.city = data[1];
  254. // address.district = data[2];
  255. // this.addressDetail = data.join('');
  256. let obj = this
  257. // let address = this.addressData.address;
  258. obj.province = data[0];
  259. obj.city = data[1];
  260. obj.district = data[2];
  261. this.addressDetail = obj.province.name + ' ' + obj.city.name + ' ' + obj.district.name;
  262. },
  263. // 发布
  264. sub() {
  265. let obj = this
  266. // console.log('obj.province',obj.province)
  267. if (obj.load) {
  268. return
  269. }
  270. if (obj.organ_name == '') {
  271. return obj.$api.msg('请输入机构全称')
  272. }
  273. if (obj.fbfw == '') {
  274. return obj.$api.msg('请选择通知范围')
  275. }
  276. if (obj.province == '') {
  277. return obj.$api.msg('请选择地址')
  278. }
  279. if (obj.city == '') {
  280. return obj.$api.msg('请选择地址')
  281. }
  282. if (obj.district == '') {
  283. return obj.$api.msg('请选择地址')
  284. }
  285. if(obj.fwData == '') {
  286. return obj.$api.msg('请选择服务日期')
  287. }
  288. if(obj.fwtime == '') {
  289. return obj.$api.msg('请选择服务时间')
  290. }
  291. // if (obj.time_area == '') {
  292. // return obj.$api.msg('请输入服务时间')
  293. // }
  294. if (obj.doctor_level == '') {
  295. return obj.$api.msg('请输入职称')
  296. }
  297. if (obj.brokerage == '') {
  298. return obj.$api.msg('请输入劳务费用')
  299. }
  300. // if (obj.content == '') {
  301. // return obj.$api.msg('请输入要求')
  302. // }
  303. // if (obj.tags == '') {
  304. // return obj.$api.msg('请输入要求')
  305. // }
  306. obj.time_area = obj.fwData + ' ' + obj.fwtime
  307. let tags = obj.tags.replace(/,/g, ',')
  308. // obj.load = true
  309. console.log()
  310. ddsub({
  311. organ_name: obj.organ_name,
  312. province: obj.province,
  313. province_id: obj.province_id,
  314. city: obj.city,
  315. city_id: obj.city_id,
  316. district: obj.district,
  317. district_id: obj.district_id,
  318. time_area: obj.time_area,
  319. doctor_level: obj.level_id, //需求的医生职称
  320. tags: tags,
  321. brokerage: obj.brokerage, // 报酬
  322. content: obj.content,
  323. type: obj.zyid,
  324. rge: obj.fbfwid
  325. }).then(res => {
  326. // obj.load = false
  327. uni.showToast({
  328. title: '发布成功',
  329. duration: 2000
  330. });
  331. setTimeout(() => {
  332. uni.navigateBack()
  333. }, 1500)
  334. }).catch(err => {
  335. obj.load = false
  336. })
  337. }
  338. }
  339. }
  340. </script>
  341. <style lang="scss">
  342. .jg {
  343. height: 20rpx;
  344. }
  345. .tab {
  346. width: 750rpx;
  347. background-color: #fff;
  348. .tab-item {
  349. padding: 20rpx 30rpx;
  350. font-size: 30rpx;
  351. align-items: flex-start;
  352. .item-name {
  353. flex-shrink: 0;
  354. width: 220rpx;
  355. color: #333333;
  356. }
  357. .item-val {
  358. display: inline-block;
  359. flex-grow: 1;
  360. text-align: right;
  361. }
  362. }
  363. }
  364. .sub {
  365. text-align: center;
  366. width: 560rpx;
  367. line-height: 80rpx;
  368. background: #6786fb;
  369. border-radius: 40rpx;
  370. color: #fff;
  371. font-size: 30rpx;
  372. font-weight: 500;
  373. margin: 80rpx auto 0;
  374. }
  375. </style>