opendd.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  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="text" placeholder="标签请以逗号间隔" class="item-val" v-model="tags">
  59. </view>
  60. <view class="tab-item flex">
  61. <view class="item-name">回报金额</view>
  62. <input type="text" placeholder="请输入回报金额" class="item-val" v-model="brokerage">
  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. },
  157. computed: {
  158. ...mapState(['hasLogin', 'userInfo'])
  159. },
  160. methods: {
  161. bindDateChange(e) {
  162. console.log(e)
  163. this.fwData = e.detail.value
  164. },
  165. bindfwtimeChange(e) {
  166. console.log(e)
  167. this.fwtime = e.detail.value
  168. },
  169. outFocus(e) {
  170. console.log(event.target)
  171. event.target.blur()
  172. },
  173. //省市区选择确定
  174. onConfirm(res, type) {
  175. let obj = this;
  176. obj.result = res;
  177. obj.addr = res.result;
  178. if (res.name) {
  179. obj.province = res.name[0];
  180. obj.city = res.name[1];
  181. obj.district = res.name[2];
  182. } else {
  183. obj.province = '北京市';
  184. obj.city = '北京市';
  185. obj.district = '东城区';
  186. }
  187. obj.province_id = res.value[0];
  188. obj.city_id = res.value[1];
  189. obj.district_id = res.value[2];
  190. console.log(obj.province_id, obj.city_id, obj.district_id)
  191. // obj.hospital = '';//重置医院
  192. },
  193. //省市区弹窗
  194. showPicker(type) {
  195. this.$refs[type].show();
  196. },
  197. handleConfirm5(item) {
  198. let obj = this;
  199. obj.fbfwid = item.item.id
  200. obj.fbfw = item.item.name
  201. console.log(item)
  202. },
  203. handleChange5(item) {
  204. },
  205. getDocterTypeList() {
  206. getDocterTypeList().then(res => {
  207. console.log(res)
  208. this.zyList = res.data.data.map(item => {
  209. item.name = item.text
  210. return item
  211. })
  212. console.log(this.zyList, 'this.zyList')
  213. })
  214. },
  215. //职称选择
  216. handleTap2(name) {
  217. this.$refs[name].show()
  218. },
  219. handleChange3() {
  220. },
  221. handleConfirm3(item) {
  222. let obj = this;
  223. obj.zyid = item.item.id
  224. obj.zyname = item.item.name
  225. console.log(item)
  226. },
  227. //职称选择
  228. handleChange2(item) {},
  229. //职称选择
  230. handleConfirm2(item) {
  231. let obj = this;
  232. obj.doctor_level = item.item.name;
  233. obj.level_id = item.item.id;
  234. console.log(obj.doctor_level, obj.level_id)
  235. },
  236. // 选中城市切换
  237. onCityClick({
  238. data
  239. }) {
  240. console.log(data, 'data')
  241. // let address = this.addressData.address;
  242. // address.province = data[0];
  243. // address.city = data[1];
  244. // address.district = data[2];
  245. // this.addressDetail = data.join('');
  246. let obj = this
  247. // let address = this.addressData.address;
  248. obj.province = data[0];
  249. obj.city = data[1];
  250. obj.district = data[2];
  251. this.addressDetail = obj.province.name + ' ' + obj.city.name + ' ' + obj.district.name;
  252. },
  253. // 发布
  254. sub() {
  255. let obj = this
  256. // console.log('obj.province',obj.province)
  257. if (obj.load) {
  258. return
  259. }
  260. if (obj.organ_name == '') {
  261. return obj.$api.msg('请输入机构全称')
  262. }
  263. if (obj.fbfw == '') {
  264. return obj.$api.msg('请选择通知范围')
  265. }
  266. if (obj.province == '') {
  267. return obj.$api.msg('请选择地址')
  268. }
  269. if (obj.city == '') {
  270. return obj.$api.msg('请选择地址')
  271. }
  272. if (obj.district == '') {
  273. return obj.$api.msg('请选择地址')
  274. }
  275. if(obj.fwData == '') {
  276. return obj.$api.msg('请选择服务日期')
  277. }
  278. if(obj.fwtime == '') {
  279. return obj.$api.msg('请选择服务时间')
  280. }
  281. // if (obj.time_area == '') {
  282. // return obj.$api.msg('请输入服务时间')
  283. // }
  284. if (obj.doctor_level == '') {
  285. return obj.$api.msg('请输入职称')
  286. }
  287. if (obj.brokerage == '') {
  288. return obj.$api.msg('请输入报酬')
  289. }
  290. if (obj.content == '') {
  291. return obj.$api.msg('请输入要求')
  292. }
  293. if (obj.tags == '') {
  294. return obj.$api.msg('请输入要求')
  295. }
  296. obj.time_area = obj.fwData + ' ' + obj.fwtime
  297. let tags = obj.tags.replace(/,/g, ',')
  298. // obj.load = true
  299. console.log()
  300. ddsub({
  301. organ_name: obj.organ_name,
  302. province: obj.province,
  303. province_id: obj.province_id,
  304. city: obj.city,
  305. city_id: obj.city_id,
  306. district: obj.district,
  307. district_id: obj.district_id,
  308. time_area: obj.time_area,
  309. doctor_level: obj.level_id, //需求的医生职称
  310. tags: tags,
  311. brokerage: obj.brokerage, // 报酬
  312. content: obj.content,
  313. type: obj.zyid,
  314. rge: obj.fbfwid
  315. }).then(res => {
  316. // obj.load = false
  317. uni.showToast({
  318. title: '发布成功',
  319. duration: 2000
  320. });
  321. setTimeout(() => {
  322. uni.navigateBack()
  323. }, 1500)
  324. }).catch(err => {
  325. obj.load = false
  326. })
  327. }
  328. }
  329. }
  330. </script>
  331. <style lang="scss">
  332. .jg {
  333. height: 20rpx;
  334. }
  335. .tab {
  336. width: 750rpx;
  337. background-color: #fff;
  338. .tab-item {
  339. padding: 20rpx 30rpx;
  340. font-size: 30rpx;
  341. align-items: flex-start;
  342. .item-name {
  343. flex-shrink: 0;
  344. width: 220rpx;
  345. color: #333333;
  346. }
  347. .item-val {
  348. display: inline-block;
  349. flex-grow: 1;
  350. text-align: right;
  351. }
  352. }
  353. }
  354. .sub {
  355. text-align: center;
  356. width: 560rpx;
  357. line-height: 80rpx;
  358. background: #6786fb;
  359. border-radius: 40rpx;
  360. color: #fff;
  361. font-size: 30rpx;
  362. font-weight: 500;
  363. margin: 80rpx auto 0;
  364. }
  365. </style>