FSQStoreEdit.vue 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. <template>
  2. <div class="FSQStoreDetailCont">
  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. <div class="detailHeader">
  14. <van-icon name="volume" color="#64a8eb" size="18" />
  15. <span>如需修改服务商的姓名和手机号,请提IT工单到低代码合同系统修改</span>
  16. </div>
  17. <van-tabs
  18. class="myTab"
  19. v-model="tabVal"
  20. color="#0057ba"
  21. @change="tabChange"
  22. :lazy-render="false">
  23. <van-tab title="基础信息" name="insidePlan" ref="dispsps">
  24. <van-form
  25. ref="tabstoreVal"
  26. @submit="onSubmit"
  27. :scroll-to-error="true"
  28. :show-error="false">
  29. <van-field disabled :value="fromData.storeCode" label="编号">
  30. <template #left-icon>
  31. <span class="van-f-red"></span>
  32. </template>
  33. </van-field>
  34. <van-field
  35. v-model="fromData.storeName"
  36. label="名称"
  37. placeholder="请输入名称"
  38. disabled
  39. :rules="[{ required: true, message: '请输入名称' }]">
  40. <template #left-icon>
  41. <span class="van-f-red"></span>
  42. </template>
  43. </van-field>
  44. <van-field
  45. disabled
  46. clickable
  47. name="picker"
  48. :value="fromData.storeCategoryName"
  49. label="类型"
  50. placeholder="点击选择类型">
  51. <template #left-icon>
  52. <span class="van-f-red"></span>
  53. </template>
  54. </van-field>
  55. <van-field
  56. v-model="fromData.orgName"
  57. label="销售部"
  58. placeholder="请输入销售部"
  59. disabled
  60. :rules="[{ required: true, message: '请输入销售部' }]">
  61. <template #left-icon>
  62. <span class="van-f-red"></span>
  63. </template>
  64. </van-field>
  65. <van-row style="border-bottom: 1px solid #ebedf0">
  66. <van-field
  67. rows="1"
  68. autosize
  69. type="textarea"
  70. disabled
  71. clickable
  72. name="picker"
  73. :value="fromData.chainName"
  74. label="经销商名称"
  75. placeholder="点击选择经销商名称"
  76. :rules="[
  77. {
  78. required: true,
  79. message: '请选择经销商',
  80. },
  81. ]">
  82. <template #left-icon>
  83. <span class="van-f-red"></span>
  84. </template>
  85. </van-field>
  86. </van-row>
  87. <van-field
  88. disabled
  89. clickable
  90. name="picker"
  91. :value="fromData.provinceName"
  92. label="省(州)"
  93. placeholder="点击选择省(州)">
  94. <template #left-icon>
  95. <span class="van-f-red"></span>
  96. </template>
  97. </van-field>
  98. <van-field
  99. disabled
  100. clickable
  101. name="picker"
  102. :value="fromData.cityName"
  103. label="城市"
  104. placeholder="点击选择城市">
  105. <template #left-icon>
  106. <span class="van-f-red"></span>
  107. </template>
  108. </van-field>
  109. <van-field
  110. disabled
  111. clickable
  112. name="picker"
  113. :value="fromData.districtName"
  114. label="区(县)"
  115. placeholder="点击选择区(县)">
  116. <template #left-icon>
  117. <span class="van-f-red"></span>
  118. </template>
  119. </van-field>
  120. <van-field
  121. disabled
  122. clickable
  123. name="picker"
  124. :value="fromData.townName"
  125. label="街道"
  126. placeholder="点击选择街道">
  127. <template #left-icon>
  128. <span class="van-f-red"></span>
  129. </template>
  130. </van-field>
  131. <van-field
  132. v-model="fromData.addressLine"
  133. label="地址"
  134. placeholder="请输入地址"
  135. rows="1"
  136. autosize
  137. type="textarea">
  138. <template #left-icon>
  139. <span class="van-f-red"></span>
  140. </template>
  141. </van-field>
  142. <van-field disabled v-model="fromData.contactName" label="实际经营人">
  143. <template #left-icon>
  144. <span class="van-f-red"></span>
  145. </template>
  146. </van-field>
  147. <van-field
  148. disabled
  149. type="tel"
  150. v-model="fromData.telephone"
  151. label="实际经营人电话"
  152. placeholder="请输入实际经营人电话"
  153. :rules="[
  154. {
  155. required: false,
  156. validator: FSQValidatePhone,
  157. message: '请输入手机号',
  158. },
  159. ]">
  160. <template #left-icon>
  161. <span class="van-f-red"></span>
  162. </template>
  163. </van-field>
  164. <van-field
  165. disabled
  166. v-model="fromData.salesmanName"
  167. label="所属销售员"
  168. placeholder="所属销售员">
  169. <template #left-icon>
  170. <span class="van-f-red"></span>
  171. </template>
  172. </van-field>
  173. </van-form>
  174. </van-tab>
  175. <!-- 质感服务商档案 -->
  176. <van-tab title="服务商档案" name="outsidePlan">
  177. <FSQattributeEdit
  178. ref="FSQattribute"
  179. :storeArchives="fromData.serviceProviderArchives"
  180. :fromData="fromData"
  181. @onClickLeft="onClickLeft"></FSQattributeEdit>
  182. </van-tab>
  183. </van-tabs>
  184. </div>
  185. </div>
  186. </template>
  187. <script>
  188. import { getById, phoneCheck } from '@/api/index';
  189. import FSQattributeEdit from './FSQattributeEdit.vue';
  190. export default {
  191. components: { FSQattributeEdit },
  192. data() {
  193. return {
  194. tabVal: 'insidePlan',
  195. fromData: {
  196. storeCode: '',
  197. storeName: '',
  198. telephone: '',
  199. storeCategoryName: '',
  200. provinceName: '',
  201. cityName: '',
  202. districtName: '',
  203. addressLine: '',
  204. orgName: '',
  205. chainName: '',
  206. townName: '',
  207. contactName: '',
  208. salesmanName: '',
  209. },
  210. };
  211. },
  212. activated() {
  213. this.tabVal = 'insidePlan';
  214. this.toastLoading(0, '加载中...', true);
  215. // 获取详情
  216. this.getDetail();
  217. },
  218. methods: {
  219. editorFn() {
  220. this.$router.push({
  221. path: '/addDesignerEdit',
  222. query: { id: this.$route.query.id },
  223. });
  224. },
  225. getDetail() {
  226. getById({ storeId: this.$route.query.id }).then((res) => {
  227. this.toastLoading().clear();
  228. if (res.code == 200) {
  229. this.fromData = res.data;
  230. }
  231. });
  232. },
  233. clickSubmit(values) {
  234. // 基础信息校验
  235. this.$refs.tabstoreVal.submit();
  236. },
  237. onSubmit(value) {
  238. //属性信息校验
  239. this.$refs.FSQattribute.$refs.tabstoreVal.submit();
  240. },
  241. FSQValidatePhone(telephone) {
  242. return new Promise((resolve, reject) => {
  243. if (telephone == '') {
  244. resolve();
  245. }
  246. 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}$/;
  247. if (telephone.trim() == '') {
  248. reject();
  249. } else if (!telrg.test(telephone)) {
  250. this.Toast('手机号格式错误');
  251. reject();
  252. } else {
  253. phoneCheck({ phoneNumber: telephone }).then((res) => {
  254. if (res.code == 200) {
  255. resolve();
  256. } else {
  257. this.Toast('手机号格式错误');
  258. reject();
  259. }
  260. });
  261. }
  262. });
  263. },
  264. tabChange(name, title) {},
  265. onClickLeft() {
  266. this.$router.go(-1);
  267. },
  268. },
  269. };
  270. </script>
  271. <style lang="scss">
  272. .FSQStoreDetailCont {
  273. display: flex;
  274. flex-direction: column;
  275. width: 100%;
  276. height: 100%;
  277. .header {
  278. height: 46px;
  279. }
  280. .detailHeader {
  281. padding: 10px 20px;
  282. background: #dfeeff;
  283. font-size: 14px;
  284. display: flex;
  285. flex-direction: row;
  286. .van-icon {
  287. margin-right: 8px;
  288. }
  289. span {
  290. line-height: 20px;
  291. color: #323233;
  292. }
  293. }
  294. .content {
  295. flex: 1;
  296. overflow-y: auto;
  297. }
  298. .myTab {
  299. height: 100%;
  300. .van-tabs__content {
  301. height: 100%;
  302. .van-tab__pane {
  303. height: 100%;
  304. }
  305. }
  306. }
  307. .myTab .van-tabs__nav--card {
  308. margin: 0 !important;
  309. border-left: 0;
  310. border-right: 0;
  311. }
  312. .myTab .van-tabs__wrap,
  313. .myTab .van-tabs__nav--card {
  314. height: 40px;
  315. }
  316. .myTab .van-tab {
  317. // line-height: 40px;
  318. }
  319. .van-f-red {
  320. color: red;
  321. width: 4px;
  322. display: inline-block;
  323. }
  324. }
  325. </style>