FSQStoreEdit.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. <template>
  2. <div class="FSQStoreDetail">
  3. <div class="header">
  4. <van-nav-bar
  5. class="navBar"
  6. title="仿石漆服务商编辑"
  7. left-arrow
  8. @click-left="onClickLeft"
  9. right-text="保存"
  10. @click-right="clickSubmit" />
  11. </div>
  12. <div class="content">
  13. <van-form ref="tabstoreVal" @submit="onSubmit" :scroll-to-error="true" :show-error="false">
  14. <van-field readonly :value="fromData.storeCode" label="编号">
  15. <template #left-icon>
  16. <span class="van-f-red"></span>
  17. </template>
  18. </van-field>
  19. <van-field
  20. v-model="fromData.storeName"
  21. label="名称"
  22. placeholder="请输入名称"
  23. readonly
  24. :rules="[{ required: true, message: '请输入名称' }]">
  25. <template #left-icon>
  26. <span class="van-f-red"></span>
  27. </template>
  28. </van-field>
  29. <van-field
  30. readonly
  31. clickable
  32. name="picker"
  33. :value="fromData.storeCategoryName"
  34. label="类型"
  35. placeholder="点击选择类型">
  36. <template #left-icon>
  37. <span class="van-f-red"></span>
  38. </template>
  39. </van-field>
  40. <van-field
  41. v-model="fromData.orgName"
  42. label="销售部"
  43. placeholder="请输入销售部"
  44. readonly
  45. :rules="[{ required: true, message: '请输入销售部' }]">
  46. <template #left-icon>
  47. <span class="van-f-red"></span>
  48. </template>
  49. </van-field>
  50. <van-row style="border-bottom: 1px solid #ebedf0">
  51. <van-field
  52. rows="1"
  53. autosize
  54. type="textarea"
  55. readonly
  56. clickable
  57. name="picker"
  58. :value="fromData.chainName"
  59. label="经销商名称"
  60. placeholder="点击选择经销商名称"
  61. :rules="[
  62. {
  63. required: true,
  64. message: '请选择经销商',
  65. },
  66. ]">
  67. <template #left-icon>
  68. <span class="van-f-red"></span>
  69. </template>
  70. </van-field>
  71. </van-row>
  72. <van-field
  73. readonly
  74. clickable
  75. name="picker"
  76. :value="fromData.provinceName"
  77. label="省(州)"
  78. placeholder="点击选择省(州)">
  79. <template #left-icon>
  80. <span class="van-f-red"></span>
  81. </template>
  82. </van-field>
  83. <van-field
  84. readonly
  85. clickable
  86. name="picker"
  87. :value="fromData.cityName"
  88. label="城市"
  89. placeholder="点击选择城市">
  90. <template #left-icon>
  91. <span class="van-f-red"></span>
  92. </template>
  93. </van-field>
  94. <van-field
  95. readonly
  96. clickable
  97. name="picker"
  98. :value="fromData.districtName"
  99. label="区(县)"
  100. placeholder="点击选择区(县)">
  101. <template #left-icon>
  102. <span class="van-f-red"></span>
  103. </template>
  104. </van-field>
  105. <van-field
  106. readonly
  107. clickable
  108. name="picker"
  109. :value="fromData.townName"
  110. label="街道"
  111. placeholder="点击选择街道">
  112. <template #left-icon>
  113. <span class="van-f-red"></span>
  114. </template>
  115. </van-field>
  116. <van-field
  117. v-model="fromData.addressLine"
  118. label="地址"
  119. placeholder="请输入地址"
  120. rows="1"
  121. autosize
  122. type="textarea">
  123. <template #left-icon>
  124. <span class="van-f-red"></span>
  125. </template>
  126. </van-field>
  127. <van-field readonly v-model="fromData.contactName" label="实际经营人">
  128. <template #left-icon>
  129. <span class="van-f-red"></span>
  130. </template>
  131. </van-field>
  132. <van-field
  133. readonly
  134. type="tel"
  135. v-model="fromData.telephone"
  136. label="实际经营人电话"
  137. placeholder="请输入实际经营人电话"
  138. :rules="[
  139. {
  140. required: false,
  141. validator: FSQValidatePhone,
  142. message: '请输入手机号',
  143. },
  144. ]">
  145. <template #left-icon>
  146. <span class="van-f-red"></span>
  147. </template>
  148. </van-field>
  149. <van-field
  150. readonly
  151. v-model="fromData.salesmanName"
  152. label="所属销售员"
  153. placeholder="所属销售员">
  154. <template #left-icon>
  155. <span class="van-f-red"></span>
  156. </template>
  157. </van-field>
  158. </van-form>
  159. </div>
  160. </div>
  161. </template>
  162. <script>
  163. import { getById, phoneCheck } from '@/api/index';
  164. import { updateStore } from '@/api/FSQStore';
  165. export default {
  166. data() {
  167. return {
  168. fromData: {
  169. storeCode: '',
  170. storeName: '',
  171. telephone: '',
  172. storeCategoryName: '',
  173. provinceName: '',
  174. cityName: '',
  175. districtName: '',
  176. addressLine: '',
  177. orgName: '',
  178. chainName: '',
  179. townName: '',
  180. contactName: '',
  181. salesmanName: '',
  182. },
  183. };
  184. },
  185. activated() {
  186. this.toastLoading(0, '加载中...', true);
  187. // 获取详情
  188. this.getDetail();
  189. },
  190. methods: {
  191. editorFn() {
  192. this.$router.push({
  193. path: '/addDesignerEdit',
  194. query: { id: this.$route.query.id },
  195. });
  196. },
  197. getDetail() {
  198. getById({ storeId: this.$route.query.id }).then((res) => {
  199. this.toastLoading().clear();
  200. if (res.code == 200) {
  201. this.fromData = res.data;
  202. }
  203. });
  204. },
  205. clickSubmit(values) {
  206. this.$refs.tabstoreVal.submit();
  207. },
  208. onSubmit(value) {
  209. this.toastLoading(0, '提交中...', true);
  210. this.fromData.storeId = this.$route.query.id;
  211. updateStore(this.fromData).then((res) => {
  212. this.toastLoading().clear();
  213. if (res.code == 200) {
  214. this.$dialog
  215. .confirm({
  216. title: '系统提示',
  217. message: '修改成功',
  218. showCancelButton: false,
  219. })
  220. .then(() => {
  221. this.onClickLeft();
  222. });
  223. }
  224. });
  225. },
  226. FSQValidatePhone(telephone) {
  227. return new Promise((resolve, reject) => {
  228. if (telephone == '') {
  229. resolve();
  230. }
  231. var telrg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
  232. if (telephone.trim() == '') {
  233. reject();
  234. } else if (!telrg.test(telephone)) {
  235. this.Toast('手机号格式错误');
  236. reject();
  237. } else {
  238. phoneCheck({ phoneNumber: telephone }).then((res) => {
  239. if (res.code == 200) {
  240. resolve();
  241. } else {
  242. this.Toast('手机号格式错误');
  243. reject();
  244. }
  245. });
  246. }
  247. });
  248. },
  249. onClickLeft() {
  250. this.$router.go(-1);
  251. },
  252. },
  253. };
  254. </script>
  255. <style lang="scss" scoped>
  256. .FSQStoreDetail {
  257. display: flex;
  258. flex-direction: column;
  259. width: 100%;
  260. height: 100%;
  261. .header {
  262. height: 46px;
  263. }
  264. .content {
  265. flex: 1;
  266. overflow-y: auto;
  267. }
  268. }
  269. </style>