Prechádzať zdrojové kódy

添加项目页面,项目地区
表单校验大坑

XuZinan 3 rokov pred
rodič
commit
1b68ffa4b9
3 zmenil súbory, kde vykonal 560 pridanie a 18 odobranie
  1. 59 18
      pages/Project/add.vue
  2. 497 0
      pages/Project/provinces.js
  3. 4 0
      services/project.js

+ 59 - 18
pages/Project/add.vue

@@ -60,8 +60,22 @@
         label="项目地区"
         name="location"
         v-show="!formData.type || (formData.type && formData.type.id != 7)"
+        required
       >
-        <picker> <view class="select"></view></picker>
+        <picker
+          mode="multiSelector"
+          @columnchange="bindChangeLocationColumn"
+          @change="selectChangeLocation"
+          :range="locationList"
+          :range-key="'name'"
+        >
+          <view class="select">
+            {{
+              formData.location &&
+              `${formData.location.name}(${formData.code.location})`
+            }}
+          </view>
+        </picker>
       </uni-forms-item>
       <uni-forms-item
         label="项目简称"
@@ -111,7 +125,8 @@
 </template>
 
 <script>
-import { queryProjectType, queryIndustry } from "@/services/project";
+import { queryProjectType, queryIndustry, queryFlow } from "@/services/project";
+import provinces from "./provinces";
 import { mapState } from "vuex";
 const versionList = ["一期", "二期", "三期", "四期", "五期"];
 export default {
@@ -153,16 +168,24 @@ export default {
         industry: {
           rules: [
             {
-              required: this.formData?.type_id != 7,
-              errorMessage: "请选择行业",
+              required: true,
+              errorMessage: "请选择行业名称",
+            },
+          ],
+        },
+        location: {
+          rules: [
+            {
+              required: true,
+              errorMessage: "请选择地区",
             },
           ],
         },
         name: {
           rules: [
             {
-              required: this.formData?.type_id != 7,
-              errorMessage: "请填写项目简称",
+              required: true,
+              errorMessage: "请输入项目简称",
             },
             {
               maxLength: 3,
@@ -182,17 +205,19 @@ export default {
         version: {
           rules: [
             {
-              required: this.formdata?.type_id != 7,
+              required: true,
               errorMessage: "请选择期数",
             },
           ],
         },
       },
       project_id: 0,
-
       typeList: [],
       industryList: [],
+      flowList: [],
       versionList,
+      provinces,
+      locationList: [provinces, []],
     };
   },
   computed: {
@@ -214,13 +239,18 @@ export default {
             uni.navigateTo({
               url: "./list",
             });
-          } else {
-            console.log(err, formData);
           }
         });
       } else uni.navigateTo({ url: "./list" });
     },
     async init(options) {
+      let res;
+      res = await queryProjectType();
+      this.typeList = res.data;
+      res = await queryIndustry();
+      this.industryList = res.data;
+      res = await queryFlow();
+      this.flowList = res.data;
       let form = this.formData;
       let code = this.formData.code;
       let current = this.currentProject;
@@ -229,7 +259,7 @@ export default {
         form.type = this.typeList.find(
           (item) => item.id == this.currentProject.type_id
         );
-        form.flow = this.typeList.find(
+        form.flow = this.flowList.find(
           (item) => item.id == this.currentProject.flow_id
         );
         if (current.type.id != 7) {
@@ -246,11 +276,6 @@ export default {
           code.version = form.version;
         }
       }
-      let res;
-      res = await queryProjectType();
-      this.typeList = res.data;
-      res = await queryIndustry();
-      this.industryList = res.data;
     },
     binddata(name, value) {
       this.$refs.form.setValue(name, value);
@@ -262,7 +287,7 @@ export default {
       code.type = form.type.code;
       this.binddata("type", e.target.value);
       if (form.type.id == 7) {
-        form.flow = this.typeList.find((item) => item.id == 1);
+        form.flow = this.flowList.find((item) => item.id == 1);
         form.industry = null;
         form.location = null;
         form.name = null;
@@ -271,7 +296,7 @@ export default {
         code.location = "***";
         code.name = "***";
         code.version = "*";
-      } else form.flow = this.typeList.find((item) => item.id == 4);
+      } else form.flow = this.flowList.find((item) => item.id == 4);
     },
     selectChangeIndustry(e) {
       this.formData.industry = this.industryList[e.target.value];
@@ -289,6 +314,22 @@ export default {
       this.formData.code.version = this.formData.version + "";
       this.binddata("version", e.target.value);
     },
+    bindChangeLocationColumn(e) {
+      e.target.column == 0 &&
+        (this.locationList[1] = this.provinces[e.target.value].children || []);
+    },
+    selectChangeLocation(e) {
+      let multiIndex = e.target.value;
+      // let location = this.formData.location;
+      // let locationCode = this.formData.code.location;
+      let location = provinces[multiIndex[0]].children
+        ? provinces[multiIndex[0]].children[multiIndex[1]]
+        : provinces[multiIndex[0]];
+      let code =
+        location.code.length == 4 ? location.code.substr(1) : location.code;
+      this.formData.location = location;
+      this.formData.code.location = code;
+    },
   },
 };
 </script>

+ 497 - 0
pages/Project/provinces.js

@@ -0,0 +1,497 @@
+export default [
+  { code: '010', name: '北京' },
+  { code: '021', name: '上海' },
+  { code: '022', name: '天津' },
+  { code: '023', name: '重庆' },
+  {
+    name: '安徽',
+    children: [
+      { code: '0551', name: '合肥' },
+      { code: '0553', name: '芜湖' },
+      { code: '0556', name: '安庆' },
+      { code: '0552', name: '蚌埠' },
+      { code: '0558', name: '亳州' },
+      { code: '0565', name: '巢湖' },
+      { code: '0566', name: '池州' },
+      { code: '0550', name: '滁州' },
+      { code: '0558', name: '阜阳' },
+      { code: '0559', name: '黄山' },
+      { code: '0561', name: '淮北' },
+      { code: '0554', name: '淮南' },
+      { code: '0564', name: '六安' },
+      { code: '0555', name: '马鞍山' },
+      { code: '0557', name: '宿州' },
+      { code: '0562', name: '铜陵' },
+      { code: '0563', name: '宣城' },
+    ],
+  },
+  {
+    name: '福建',
+    children: [
+      { code: '0591', name: '福州' },
+      { code: '0592', name: '厦门' },
+      { code: '0595', name: '泉州' },
+      { code: '0597', name: '龙岩' },
+      { code: '0593', name: '宁德' },
+      { code: '0599', name: '南平' },
+      { code: '0594', name: '莆田' },
+      { code: '0598', name: '三明' },
+      { code: '0596', name: '漳州' },
+    ],
+  },
+  {
+    name: '甘肃',
+    children: [
+      { code: '0931', name: '兰州' },
+      { code: '0943', name: '白银' },
+      { code: '0932', name: '定西' },
+      { code: '0935', name: '金昌' },
+      { code: '0937', name: '酒泉' },
+      { code: '0933', name: '平凉' },
+      { code: '0934', name: '庆阳' },
+      { code: '0935', name: '武威' },
+      { code: '0938', name: '天水' },
+      { code: '0936', name: '张掖' },
+      { code: '0941', name: '甘南' },
+      { code: '0937', name: '嘉峪关' },
+      { code: '0930', name: '临夏' },
+      { code: '0939', name: '陇南' },
+    ],
+  },
+  {
+    name: '广东',
+    children: [
+      { code: '020', name: '广州' },
+      { code: '0755', name: '深圳' },
+      { code: '0756', name: '珠海' },
+      { code: '0769', name: '东莞' },
+      { code: '0757', name: '佛山' },
+      { code: '0752', name: '惠州' },
+      { code: '0750', name: '江门' },
+      { code: '0760', name: '中山' },
+      { code: '0754', name: '汕头' },
+      { code: '0759', name: '湛江' },
+      { code: '0768', name: '潮州' },
+      { code: '0762', name: '河源' },
+      { code: '0663', name: '揭阳' },
+      { code: '0668', name: '茂名' },
+      { code: '0753', name: '梅州' },
+      { code: '0763', name: '清远' },
+      { code: '0751', name: '韶关' },
+      { code: '0660', name: '汕尾' },
+      { code: '0662', name: '阳江' },
+      { code: '0766', name: '云浮' },
+      { code: '0758', name: '肇庆' },
+    ],
+  },
+  {
+    name: '广西',
+    children: [
+      { code: '0771', name: '南宁' },
+      { code: '0779', name: '北海' },
+      { code: '0770', name: '防城港' },
+      { code: '0773', name: '桂林' },
+      { code: '0772', name: '柳州' },
+      { code: '0771', name: '崇左' },
+      { code: '0772', name: '来宾' },
+      { code: '0774', name: '梧州' },
+      { code: '0778', name: '河池' },
+      { code: '0775', name: '玉林' },
+      { code: '0755', name: '贵港' },
+      { code: '0774', name: '贺州' },
+      { code: '0777', name: '钦州' },
+      { code: '0776', name: '百色' },
+    ],
+  },
+  {
+    name: '贵州',
+    children: [
+      { code: '0851', name: '贵阳' },
+      { code: '0851', name: '安顺' },
+      { code: '0851', name: '遵义' },
+      { code: '0858', name: '六盘水' },
+      { code: '0857', name: '毕节' },
+      { code: '0855', name: '黔东南' },
+      { code: '0859', name: '黔西南' },
+      { code: '0854', name: '黔南' },
+      { code: '0856', name: '铜仁' },
+    ],
+  },
+  {
+    name: '海南',
+    children: [
+      { code: '0898', name: '海口' },
+      { code: '0899', name: '三亚' },
+      { code: '0802', name: '白沙县' },
+      { code: '0801', name: '保亭县' },
+      { code: '0803', name: '昌江县' },
+      { code: '0804', name: '澄迈县' },
+      { code: '0806', name: '定安县' },
+      { code: '0807', name: '东方' },
+      { code: '0898', name: '乐东县' },
+      { code: '0898', name: '临高县' },
+      { code: '0809', name: '陵水县' },
+      { code: '0898', name: '琼海' },
+      { code: '0898', name: '琼中县' },
+      { code: '0898', name: '屯昌县' },
+      { code: '0898', name: '万宁' },
+      { code: '0898', name: '文昌' },
+      { code: '0898', name: '五指山' },
+      { code: '0805', name: '儋州' },
+    ],
+  },
+  {
+    name: '河北',
+    children: [
+      { code: '0311', name: '石家庄' },
+      { code: '0312', name: '保定' },
+      { code: '0314', name: '承德' },
+      { code: '0310', name: '邯郸' },
+      { code: '0315', name: '唐山' },
+      { code: '0335', name: '秦皇岛' },
+      { code: '0317', name: '沧州' },
+      { code: '0318', name: '衡水' },
+      { code: '0316', name: '廊坊' },
+      { code: '0319', name: '邢台' },
+      { code: '0313', name: '张家口' },
+    ],
+  },
+  {
+    name: '河南',
+    children: [
+      { code: '0371', name: '郑州' },
+      { code: '0379', name: '洛阳' },
+      { code: '0378', name: '开封' },
+      { code: '0374', name: '许昌' },
+      { code: '0372', name: '安阳' },
+      { code: '0375', name: '平顶山' },
+      { code: '0392', name: '鹤壁' },
+      { code: '0391', name: '焦作' },
+      { code: '0391', name: '济源' },
+      { code: '0395', name: '漯河' },
+      { code: '0377', name: '南阳' },
+      { code: '0393', name: '濮阳' },
+      { code: '0398', name: '三门峡' },
+      { code: '0370', name: '商丘' },
+      { code: '0373', name: '新乡' },
+      { code: '0376', name: '信阳' },
+      { code: '0396', name: '驻马店' },
+      { code: '0394', name: '周口' },
+    ],
+  },
+  {
+    name: '黑龙江',
+    children: [
+      { code: '0451', name: '哈尔滨' },
+      { code: '0459', name: '大庆' },
+      { code: '0452', name: '齐齐哈尔' },
+      { code: '0454', name: '佳木斯' },
+      { code: '0457', name: '大兴安岭' },
+      { code: '0456', name: '黑河' },
+      { code: '0468', name: '鹤岗' },
+      { code: '0467', name: '鸡西' },
+      { code: '0453', name: '牡丹江' },
+      { code: '0464', name: '七台河' },
+      { code: '0455', name: '绥化' },
+      { code: '0469', name: '双鸭山' },
+      { code: '0458', name: '伊春' },
+    ],
+  },
+  {
+    name: '湖北',
+    children: [
+      { code: '027', name: '武汉' },
+      { code: '0710', name: '襄阳' },
+      { code: '0719', name: '十堰' },
+      { code: '0714', name: '黄石' },
+      { code: '0711', name: '鄂州' },
+      { code: '0718', name: '恩施' },
+      { code: '0713', name: '黄冈' },
+      { code: '0716', name: '荆州' },
+      { code: '0724', name: '荆门' },
+      { code: '0722', name: '随州' },
+      { code: '0717', name: '宜昌' },
+      { code: '0728', name: '天门' },
+      { code: '0728', name: '潜江' },
+      { code: '0728', name: '仙桃' },
+      { code: '0712', name: '孝感' },
+      { code: '0715', name: '咸宁' },
+      { code: '0719', name: '神农架' },
+    ],
+  },
+  {
+    name: '湖南',
+    children: [
+      { code: '0731', name: '长沙' },
+      { code: '0730', name: '岳阳' },
+      { code: '0732', name: '湘潭' },
+      { code: '0736', name: '常德' },
+      { code: '0735', name: '郴州' },
+      { code: '0734', name: '衡阳' },
+      { code: '0745', name: '怀化' },
+      { code: '0738', name: '娄底' },
+      { code: '0739', name: '邵阳' },
+      { code: '0737', name: '益阳' },
+      { code: '0746', name: '永州' },
+      { code: '0733', name: '株洲' },
+      { code: '0744', name: '张家界' },
+      { code: '0743', name: '湘西' },
+    ],
+  },
+  {
+    name: '吉林',
+    children: [
+      { code: '0431', name: '长春' },
+      { code: '0432', name: '吉林' },
+      { code: '0433', name: '延边' },
+      { code: '0436', name: '白城' },
+      { code: '0439', name: '白山' },
+      { code: '0437', name: '辽源' },
+      { code: '0434', name: '四平' },
+      { code: '0438', name: '松原' },
+      { code: '0435', name: '通化' },
+    ],
+  },
+  {
+    name: '江苏',
+    children: [
+      { code: '025', name: '南京' },
+      { code: '0512', name: '苏州' },
+      { code: '0519', name: '常州' },
+      { code: '0518', name: '连云港' },
+      { code: '0523', name: '泰州' },
+      { code: '0510', name: '无锡' },
+      { code: '0516', name: '徐州' },
+      { code: '0514', name: '扬州' },
+      { code: '0511', name: '镇江' },
+      { code: '0517', name: '淮安' },
+      { code: '0513', name: '南通' },
+      { code: '0527', name: '宿迁' },
+      { code: '0515', name: '盐城' },
+    ],
+  },
+  {
+    name: '江西',
+    children: [
+      { code: '0791', name: '南昌' },
+      { code: '0797', name: '赣州' },
+      { code: '0792', name: '九江' },
+      { code: '0798', name: '景德镇' },
+      { code: '0796', name: '吉安' },
+      { code: '0799', name: '萍乡' },
+      { code: '0793', name: '上饶' },
+      { code: '0790', name: '新余' },
+      { code: '0795', name: '宜春' },
+      { code: '0701', name: '鹰潭' },
+      { code: '0794', name: '抚州' },
+    ],
+  },
+  {
+    name: '辽宁',
+    children: [
+      { code: '024', name: '沈阳' },
+      { code: '0411', name: '大连' },
+      { code: '0412', name: '鞍山' },
+      { code: '0415', name: '丹东' },
+      { code: '0413', name: '抚顺' },
+      { code: '0416', name: '锦州' },
+      { code: '0417', name: '营口' },
+      { code: '0414', name: '本溪' },
+      { code: '0421', name: '朝阳' },
+      { code: '0418', name: '阜新' },
+      { code: '0429', name: '葫芦岛' },
+      { code: '0419', name: '辽阳' },
+      { code: '0427', name: '盘锦' },
+      { code: '0410', name: '铁岭' },
+    ],
+  },
+  {
+    name: '内蒙古',
+    children: [
+      { code: '0471', name: '呼和浩特' },
+      { code: '0472', name: '包头' },
+      { code: '0476', name: '赤峰' },
+      { code: '0477', name: '鄂尔多斯' },
+      { code: '0474', name: '乌兰察布' },
+      { code: '0473', name: '乌海' },
+      { code: '0482', name: '兴安盟' },
+      { code: '0470', name: '呼伦贝尔' },
+      { code: '0475', name: '通辽' },
+      { code: '0483', name: '阿拉善盟' },
+      { code: '0478', name: '巴彦淖尔' },
+      { code: '0479', name: '锡林郭勒' },
+    ],
+  },
+  {
+    name: '宁夏',
+    children: [
+      { code: '0951', name: '银川' },
+      { code: '0952', name: '石嘴山' },
+      { code: '0954', name: '固原' },
+      { code: '0953', name: '吴忠' },
+      { code: '0955', name: '中卫' },
+    ],
+  },
+  {
+    name: '青海',
+    children: [
+      { code: '0971', name: '西宁' },
+      { code: '0973', name: '黄南' },
+      { code: '0976', name: '玉树' },
+      { code: '0975', name: '果洛' },
+      { code: '0972', name: '海东' },
+      { code: '0977', name: '海西' },
+      { code: '0974', name: '海南' },
+      { code: '0970', name: '海北' },
+    ],
+  },
+  {
+    name: '山东',
+    children: [
+      { code: '0531', name: '济南' },
+      { code: '0532', name: '青岛' },
+      { code: '0631', name: '威海' },
+      { code: '0535', name: '烟台' },
+      { code: '0536', name: '潍坊' },
+      { code: '0538', name: '泰安' },
+      { code: '0543', name: '滨州' },
+      { code: '0534', name: '德州' },
+      { code: '0546', name: '东营' },
+      { code: '0530', name: '菏泽' },
+      { code: '0537', name: '济宁' },
+      { code: '0635', name: '聊城' },
+      { code: '0539', name: '临沂' },
+      { code: '0634', name: '莱芜' },
+      { code: '0633', name: '日照' },
+      { code: '0533', name: '淄博' },
+      { code: '0632', name: '枣庄' },
+    ],
+  },
+  {
+    name: '山西',
+    children: [
+      { code: '0351', name: '太原' },
+      { code: '0355', name: '长治' },
+      { code: '0352', name: '大同' },
+      { code: '0356', name: '晋城' },
+      { code: '0354', name: '晋中' },
+      { code: '0357', name: '临汾' },
+      { code: '0358', name: '吕梁' },
+      { code: '0349', name: '朔州' },
+      { code: '0350', name: '忻州' },
+      { code: '0359', name: '运城' },
+      { code: '0353', name: '阳泉' },
+    ],
+  },
+  {
+    name: '陕西',
+    children: [
+      { code: '029', name: '西安' },
+      { code: '0915', name: '安康' },
+      { code: '0917', name: '宝鸡' },
+      { code: '0916', name: '汉中' },
+      { code: '0914', name: '商洛' },
+      { code: '0919', name: '铜川' },
+      { code: '0913', name: '渭南' },
+      { code: '0910', name: '咸阳' },
+      { code: '0911', name: '延安' },
+      { code: '0912', name: '榆林' },
+    ],
+  },
+  {
+    name: '四川',
+    children: [
+      { code: '028', name: '成都' },
+      { code: '0816', name: '绵阳' },
+      { code: '0832', name: '资阳' },
+      { code: '0827', name: '巴中' },
+      { code: '0838', name: '德阳' },
+      { code: '0818', name: '达州' },
+      { code: '0826', name: '广安' },
+      { code: '0839', name: '广元' },
+      { code: '0833', name: '乐山' },
+      { code: '0830', name: '泸州' },
+      { code: '028', name: '眉山' },
+      { code: '0832', name: '内江' },
+      { code: '0817', name: '南充' },
+      { code: '0812', name: '攀枝花' },
+      { code: '0825', name: '遂宁' },
+      { code: '0831', name: '宜宾' },
+      { code: '0835', name: '雅安' },
+      { code: '0813', name: '自贡' },
+      { code: '0837', name: '阿坝' },
+      { code: '0836', name: '甘孜' },
+      { code: '0834', name: '凉山' },
+    ],
+  },
+  {
+    name: '西藏',
+    children: [
+      { code: '0891', name: '拉萨' },
+      { code: '0897', name: '阿里' },
+      { code: '0895', name: '昌都' },
+      { code: '0894', name: '林芝' },
+      { code: '0896', name: '那曲' },
+      { code: '0893', name: '山南' },
+    ],
+  },
+  {
+    name: '新疆',
+    children: [
+      { code: '0991', name: '乌鲁木齐' },
+      { code: '0993', name: '石河子' },
+      { code: '0995', name: '吐鲁番' },
+      { code: '0999', name: '伊犁' },
+      { code: '0997', name: '阿克苏' },
+      { code: '0906', name: '阿勒泰' },
+      { code: '0996', name: '巴音' },
+      { code: '0909', name: '博尔塔拉' },
+      { code: '0994', name: '昌吉' },
+      { code: '0902', name: '哈密' },
+      { code: '0903', name: '和田' },
+      { code: '0998', name: '喀什' },
+      { code: '0990', name: '克拉玛依' },
+      { code: '0908', name: '克孜勒' },
+      { code: '0901', name: '塔城' },
+    ],
+  },
+  {
+    name: '云南',
+    children: [
+      { code: '0871', name: '昆明' },
+      { code: '0877', name: '玉溪' },
+      { code: '0878', name: '楚雄' },
+      { code: '0872', name: '大理' },
+      { code: '0873', name: '红河' },
+      { code: '0874', name: '曲靖' },
+      { code: '0691', name: '西双版纳' },
+      { code: '0870', name: '昭通' },
+      { code: '0875', name: '保山' },
+      { code: '0692', name: '德宏' },
+      { code: '0887', name: '迪庆' },
+      { code: '0888', name: '丽江' },
+      { code: '0883', name: '临沧' },
+      { code: '0886', name: '怒江' },
+      { code: '0879', name: '普洱' },
+      { code: '0876', name: '文山' },
+    ],
+  },
+  {
+    name: '浙江',
+    children: [
+      { code: '0571', name: '杭州' },
+      { code: '0574', name: '宁波' },
+      { code: '0573', name: '嘉兴' },
+      { code: '0575', name: '绍兴' },
+      { code: '0577', name: '温州' },
+      { code: '0580', name: '舟山' },
+      { code: '0572', name: '湖州' },
+      { code: '0579', name: '金华' },
+      { code: '0578', name: '丽水' },
+      { code: '0576', name: '台州' },
+      { code: '0570', name: '衢州' },
+    ],
+  },
+  { code: '852', name: '香港' },
+  { code: '853', name: '澳门' },
+];

+ 4 - 0
services/project.js

@@ -15,3 +15,7 @@ export async function queryProjectType() {
 export async function queryIndustry() {
   return await request("v2/approval/industry/dic", "GET");
 }
+
+export async function queryFlow() {
+  return await request("v2/approval/flow", "GET");
+}