<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      釘釘開發之java制作審批表單模板

      一、目的:學習釘釘API開發,考慮制作一個出差申請表單模板

      二、代碼:

      1、新建獲取token的類Mytoken

      package sfccl.api;
      
      import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
      import com.aliyun.tea.TeaException;
      
      public class Mytoken {
      //    public static String accessToken;
          String AppKey = "ding************5";
          String AppSecret = "ZM1i*************p";
          String accessToken = "";
      
          public static com.aliyun.dingtalkoauth2_1_0.Client createClient() throws Exception {
              com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
              config.protocol = "https";
              config.regionId = "central";
              return new com.aliyun.dingtalkoauth2_1_0.Client(config);
          }
      
          public String accessToken() throws Exception {
              //java.util.List<String> args = java.util.Arrays.asList(args_);
              com.aliyun.dingtalkoauth2_1_0.Client client = Mytoken.createClient();
              com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest getAccessTokenRequest = new com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest()
                      .setAppKey(AppKey)
                      .setAppSecret(AppSecret);
              try {
                  GetAccessTokenResponse tokenResponse = client.getAccessToken(getAccessTokenRequest);
      //            System.out.println(tokenResponse.body);
      //            System.out.println(tokenResponse.getHeaders());
      //            System.out.println(tokenResponse.getBody());
                  System.out.println(tokenResponse.getBody().accessToken);
                  System.out.println(tokenResponse.getBody().expireIn);
                  accessToken = tokenResponse.getBody().accessToken;
              } catch (TeaException err) {
                  if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                      // err 中含有 code 和 message 屬性,可幫助開發定位問題
                      System.out.println("TeaException:"+err.message);
                  }
      
              } catch (Exception _err) {
                  TeaException err = new TeaException(_err.getMessage(), _err);
                  if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                      // err 中含有 code 和 message 屬性,可幫助開發定位問題
                      System.out.println("TeaException:" + err.message);
                  }
      
              }
              return accessToken;
          }
      }

       

      2、新建類Chuchai_Schema1

      package sfccl.api;
      
      import com.aliyun.dingtalkworkflow_1_0.models.*;
      import com.aliyun.tea.TeaException;
      import com.aliyun.teaopenapi.models.Config;
      import com.aliyun.teautil.models.RuntimeOptions;
      
      public class Chuchai_Schema1 {
      
               /**
               * 使用 Token 初始化賬號Client
               * @return Client
               * @throws Exception
               */
              public static com.aliyun.dingtalkworkflow_1_0.Client createClient() throws Exception {
                  Config config = new Config();
                  config.protocol = "https";
                  config.regionId = "central";
                  return new com.aliyun.dingtalkworkflow_1_0.Client(config);
              }
      
              public static void main(String[] args_) throws Exception {
                  java.util.List<String> args = java.util.Arrays.asList(args_);
                  Mytoken mytoken = new Mytoken();
                  String token = mytoken.accessToken();
                  com.aliyun.dingtalkworkflow_1_0.Client client = Chuchai_Schema1.createClient();
                  FormCreateHeaders formCreateHeaders = new FormCreateHeaders();
                  formCreateHeaders.xAcsDingtalkAccessToken = token;
      
                  // 1. 明細控件
                  // 1.1. 明細中子控件 單行輸入控件
                  FormComponentProps childFormComponentProps1 = new FormComponentProps()
                          .setComponentId("TextField-child-1")
                          .setPlaceholder("請輸入")
                          .setLabel("出差地點")
                          .setRequired(true);
                  FormComponent childFormComponent1 = new FormComponent()
                          .setComponentType("TextField")
                          .setProps(childFormComponentProps1);
      
                  // 1.2. 明細中子控件 圖片控件
                  FormComponentProps childFormComponentProps2 = new FormComponentProps()
                          .setComponentId("DDPhotoField-abcd")
                          .setLabel("圖片");
                  FormComponent childFormComponent2 = new FormComponent()
                          .setComponentType("DDPhotoField")
                          .setProps(childFormComponentProps2);
      
                  // 1.3. 明細中子控件 數字輸入控件
                  FormComponentProps childFormComponentProps3 = new FormComponentProps()
                          .setComponentId("NumberField-child-1")
                          .setPlaceholder("請輸入")
                          .setLabel("出差次數")
      //                    .setUnit("元")
                          .setRequired(true);
                  FormComponent childFormComponent3 = new FormComponent()
                          .setComponentType("NumberField")
                          .setProps(childFormComponentProps3);
      
                  // 1.3.1 明細中匯總子控件數字統計
                  FormComponentProps.FormComponentPropsStatField statField1 = new FormComponentProps.FormComponentPropsStatField();
                  statField1.setComponentId("NumberField-child-1");
                  statField1.setLabel("出差次數");
      
                  FormComponentProps formComponentProps1 = new FormComponentProps()
                          .setComponentId("TableField-abcd")
                          .setUpper("0")
                          .setTableViewMode("table")
                          .setLabel("出差明細")
                          .setStatField(java.util.Arrays.asList(statField1));
                  FormComponent formComponent1 = new FormComponent()
                          .setComponentType("TableField")
                          .setProps(formComponentProps1)
                          .setChildren(java.util.Arrays.asList(childFormComponent1,childFormComponent2,childFormComponent3));
      
                  // 2. 單行輸入控件
                  FormComponentProps formComponentProps2 = new FormComponentProps()
                          .setComponentId("TextField-abcd")
                          .setPlaceholder("請輸入")
                          .setLabel("出差人姓名")
                          .setRequired(true);
                  FormComponent formComponent2 = new FormComponent()
                          .setComponentType("TextField")
                          .setProps(formComponentProps2);
      
                  // 3. 時間區間控件
                  FormComponentProps formComponentProps3 = new FormComponentProps()
                          .setComponentId("DDDateRangeField-abcd")
                          .setPlaceholder("請選擇")
                          .setLabel("[\"開始時間\",\"結束時間\"]")
                          .setUnit("小時")
                          .setFormat("yyyy-MM-dd HH:mm")
                          .setRequired(true);
                  FormComponent formComponent3 = new FormComponent()
                          .setComponentType("DDDateRangeField")
                          .setProps(formComponentProps3);
      
                  // 4. 數字輸入控件
                  FormComponentProps formComponentProps4 = new FormComponentProps()
                          .setComponentId("NumberField-abcd")
                          .setPlaceholder("請輸入")
                          .setLabel("出差人數")
                          .setUnit("人")
                          .setRequired(true);
                  FormComponent formComponent4 = new FormComponent()
                          .setComponentType("NumberField")
                          .setProps(formComponentProps4);
      
                  // 5. 金額控件
                  FormComponentProps formComponentProps5 = new FormComponentProps()
                          .setComponentId("MoneyField-abcd")
                          .setUpper("0")
                          .setPlaceholder("請輸入金額")
                          .setLabel("差旅費(元)");
                  FormComponent formComponent5 = new FormComponent()
                          .setComponentType("MoneyField")
                          .setProps(formComponentProps5);
      
                  // 6. 單選控件
                  SelectOption option1 = new SelectOption();
                  option1.setKey("option1");
                  option1.setValue("A");
                  SelectOption option2 = new SelectOption();
                  option2.setKey("option2");
                  option2.setValue("B");
                  SelectOption option3 = new SelectOption();
                  option3.setKey("option3");
                  option3.setValue("C");
                  FormComponentProps formComponentProps6 = new FormComponentProps()
                          .setComponentId("DDSelectField-abcd")
                          .setPlaceholder("請選擇")
                          .setLabel("出差同伴")
                          .setBizAlias("staff_type")
                          .setOptions(java.util.Arrays.asList(option1, option2, option3))
                          .setRequired(true);
                  FormComponent formComponent6 = new FormComponent()
                          .setComponentType("DDSelectField")
                          .setProps(formComponentProps6);
      
                  // 7. 單行輸入控件(交通工具)
                  FormComponentProps formComponentProps7 = new FormComponentProps()
                          .setComponentId("TextField-abce")
                          .setPlaceholder("請輸入")
                          .setLabel("交通工具")
                          .setRequired(true);
                  FormComponent formComponent7 = new FormComponent()
                          .setComponentType("TextField")
                          .setProps(formComponentProps7);
      
                  // 8. 多行輸入控件
                  FormComponentProps formComponentProps8 = new FormComponentProps()
                          .setComponentId("TextareaField-abcd")
                          .setPlaceholder("請輸入")
                          .setLabel("出差事由")
                          .setRequired(true);
                  FormComponent formComponent8 = new FormComponent()
                          .setComponentType("TextareaField")
                          .setProps(formComponentProps8);
      
                  FormCreateRequest formCreateRequest = new FormCreateRequest()
                          .setName("出差報銷審批_測試1")
                          .setDescription("用于員工差旅費用報銷使用_模板1")
                          .setFormComponents(java.util.Arrays.asList(
                                  formComponent1, formComponent2, formComponent3, formComponent4, formComponent5,
                                  formComponent6, formComponent7, formComponent8
                          ));
                  try {
                      client.formCreateWithOptions(formCreateRequest, formCreateHeaders, new RuntimeOptions());
                  } catch (TeaException err) {
                      if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                          // err 中含有 code 和 message 屬性,可幫助開發定位問題
                          System.out.println(err.message);
                      }
      
                  } catch (Exception _err) {
                      TeaException err = new TeaException(_err.getMessage(), _err);
                      if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                          // err 中含有 code 和 message 屬性,可幫助開發定位問題
                          System.out.println(err.message);
                      }
      
                  }
              }
      }

      三、結果

      僅出現“Process finished with exit code 0”提示,則程序運行成功。若出現400等結果提示,則需要查找原因,很可能時某個控件的參數錯誤導致(程序暫時無法直接提示是哪個控件出問題,可在公共錯誤碼 (aliyun.com)查看代碼提示)。

      點擊釘釘app——“更多”——“管理后臺”在彈出的頁面中,點擊快捷入口的“OA審批”進入“表單管理”界面的“其他”欄目中,即可看到新增了“出差報銷審批_測試1”應用。點擊該應用下的編輯按鈕,進入表單設計頁面,可看到表單如下:

       

      posted @ 2022-12-12 17:24  sfccl  閱讀(1253)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 长海县| 色午夜一av男人的天堂| 午夜福利宅福利国产精品| 男人用嘴添女人下身免费视频| 久久亚洲av综合悠悠色| 中文字幕国产日韩精品| 国产一国产精品免费播放| 亚洲最大日韩精品一区| 国产精品中文字幕综合| 人妻少妇精品无码专区二区| 一本久久a久久精品亚洲| 综合久久av一区二区三区| 亚洲av产在线精品亚洲第一站| 五月综合激情婷婷六月| 精品人妻伦九区久久aaa片69| 亚洲一二三区精品与老人| 国产成人午夜精品福利| 激情五月开心综合亚洲| 国产精品国产亚洲区久久| 亚洲夂夂婷婷色拍ww47| 色噜噜狠狠成人综合| 精品国产一区二区三区香蕉 | 不卡av电影在线| 国产九九视频一区二区三区| 国产99在线 | 亚洲| 国偷自产一区二区三区在线视频 | 久久精品一区二区东京热| 日本一区二区三区四区黄色| 国产精品久久国产三级国不卡顿| 一区二区三区岛国av毛片| 国产四虎永久免费观看| 日日躁狠狠躁狠狠爱| 亚洲五月丁香综合视频| 亚洲欧美色综合影院| 毛片网站在线观看| 大肉大捧一进一出视频| 人妻中文字幕精品一页| 干老熟女干老穴干老女人| 99精品久久精品| 少妇熟女天堂网av| 狠狠躁夜夜躁人人爽天天5|